Merge "[956] Support for failure propagation analysis" into develop
diff --git a/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/.project b/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/.project
new file mode 100644
index 0000000..019b081
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/.project
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.polarsys.chess.fla.FPTC2FLABehavior</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2m.qvt.oml.project.QVTOBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>src_container</key>
+ <value>transforms</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.m2m.qvt.oml.project.QVTONature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/META-INF/MANIFEST.MF b/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..0c457d2
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: FPTC2FLABehavior Plug-in
+Bundle-SymbolicName: org.polarsys.chess.fla.FPTC2FLABehavior;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor:
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.m2m.qvt.oml,
+ org.eclipse.m2m.qvt.oml.project,
+ org.eclipse.m2m.qvt.oml.runtime
diff --git a/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/about.html b/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/about.html
new file mode 100644
index 0000000..dd3c089
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/build.properties b/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/build.properties
new file mode 100644
index 0000000..5cb777a
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/build.properties
@@ -0,0 +1,3 @@
+bin.includes = META-INF/,\
+ transforms/,\
+ plugin.xml
diff --git a/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/plugin.xml b/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/plugin.xml
new file mode 100644
index 0000000..c9a0837
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/plugin.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.m2m.qvt.oml.runtime.qvtTransformation">
+ <transformation
+ file="transforms/FPTC2FLABehavior.qvto"
+ id="org.polarsys.chess.fla.FPTC2FLABehavior/transforms/FPTC2FLABehavior">
+ </transformation>
+ </extension>
+
+</plugin>
diff --git a/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/transforms/FPTC2FLABehavior.qvto b/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/transforms/FPTC2FLABehavior.qvto
new file mode 100644
index 0000000..d72b4d7
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/transforms/FPTC2FLABehavior.qvto
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+modeltype UML uses 'http://www.eclipse.org/uml2/5.0.0/UML';
+modeltype Chess uses chessmlprofile('http://CHESS');
+modeltype ChessFailurePropagation uses 'http://CHESS/Dependability/FailurePropagation';
+
+transformation FPTC2FLABehavior(inout model : Chess);
+
+property FLA_BEHAVIOUR_SPECIFICATION = "CHESS::Dependability::FailurePropagation::FLABehavior";
+
+main() {
+ model.objectsOfType(FailurePropagation::FPTC).map fptc2flabehavior();
+}
+
+mapping FailurePropagation::FPTC::fptc2flabehavior() {
+ var element : Element;
+ if (self.base_Component <> null) {
+ element := self.base_Component;
+ } else if (self.base_Property <> null) {
+ element := self.base_Property;
+ } else if (self.base_Connector <> null) {
+ element := self.base_Connector;
+ } else if (self.base_Comment <> null) {
+ element := self.base_Comment.owner;
+ };
+ var stereotype := element.getApplicableStereotype(FLA_BEHAVIOUR_SPECIFICATION);
+ var flabehavior := element.applyStereotype(stereotype).oclAsType(FLABehavior);
+ flabehavior.fptc := self.fptc;
+ model.removeElement(self);
+}
diff --git a/plugins/org.polarsys.chess.fla.feature/.project b/plugins/org.polarsys.chess.fla.feature/.project
new file mode 100644
index 0000000..41e829c
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.polarsys.chess.fla.feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.polarsys.chess.fla.feature/about.html b/plugins/org.polarsys.chess.fla.feature/about.html
new file mode 100644
index 0000000..dd3c089
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.feature/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.polarsys.chess.fla.feature/build.properties b/plugins/org.polarsys.chess.fla.feature/build.properties
new file mode 100644
index 0000000..64f93a9
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.feature/build.properties
@@ -0,0 +1 @@
+bin.includes = feature.xml
diff --git a/plugins/org.polarsys.chess.fla.feature/epl-v10.html b/plugins/org.polarsys.chess.fla.feature/epl-v10.html
new file mode 100644
index 0000000..cb1073a
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.feature/epl-v10.html
@@ -0,0 +1,304 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<link rel=File-List
+href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
+<title>Eclipse Public License - Version 1.0</title>
+<style>
+<!--
+ /* Font Definitions */
+@font-face
+ {
+ panose-1:2 11 6 4 3 5 4 4 2 4;
+ mso-font-charset:0;
+ mso-font-pitch:variable;
+ mso-font-signature:553679495 -2147483648 8 0 66047 0;}
+ /* Style Definitions */
+p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-parent:"";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ }
+p
+ {margin-right:0in;
+ mso-margin-top-alt:auto;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ }
+p.BalloonText, li.BalloonText, div.BalloonText
+ {mso-style-name:"Balloon Text";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:8.0pt;
+
+ }
+@page Section1
+ {size:8.5in 11.0in;
+ margin:1.0in 1.25in 1.0in 1.25in;
+ mso-header-margin:.5in;
+ mso-footer-margin:.5in;
+ mso-paper-source:0;}
+div.Section1
+ {page:Section1;}
+-->
+</style>
+</head>
+
+<body lang="EN-US" style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
+</p>
+
+<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
+THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE,
+REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
+OF THIS AGREEMENT.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
+
+<p><span style='font-size:10.0pt'>"Contribution" means:</span> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+in the case of the initial Contributor, the initial code and documentation
+distributed under this Agreement, and<br clear=left>
+b) in the case of each subsequent Contributor:</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
+changes to the Program, and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
+additions to the Program;</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
+such changes and/or additions to the Program originate from and are distributed
+by that particular Contributor. A Contribution 'originates' from a Contributor
+if it was added to the Program by such Contributor itself or anyone acting on
+such Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in conjunction
+with the Program under their own license agreement, and (ii) are not derivative
+works of the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>"Contributor" means any person or
+entity that distributes the Program.</span> </p>
+
+<p><span style='font-size:10.0pt'>"Licensed Patents " mean patent
+claims licensable by a Contributor which are necessarily infringed by the use
+or sale of its Contribution alone or when combined with the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>"Program" means the Contributions
+distributed in accordance with this Agreement.</span> </p>
+
+<p><span style='font-size:10.0pt'>"Recipient" means anyone who
+receives the Program under this Agreement, including all Contributors.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+Subject to the terms of this Agreement, each Contributor hereby grants Recipient
+a non-exclusive, worldwide, royalty-free copyright license to<span
+style='color:red'> </span>reproduce, prepare derivative works of, publicly
+display, publicly perform, distribute and sublicense the Contribution of such
+Contributor, if any, and such derivative works, in source code and object code
+form.</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
+Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
+patent license under Licensed Patents to make, use, sell, offer to sell, import
+and otherwise transfer the Contribution of such Contributor, if any, in source
+code and object code form. This patent license shall apply to the combination
+of the Contribution and the Program if, at the time the Contribution is added
+by the Contributor, such addition of the Contribution causes such combination
+to be covered by the Licensed Patents. The patent license shall not apply to
+any other combinations which include the Contribution. No hardware per se is
+licensed hereunder. </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
+Recipient understands that although each Contributor grants the licenses to its
+Contributions set forth herein, no assurances are provided by any Contributor
+that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient
+for claims brought by any other entity based on infringement of intellectual
+property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility
+to secure any other intellectual property rights needed, if any. For example,
+if a third party patent license is required to allow Recipient to distribute
+the Program, it is Recipient's responsibility to acquire that license before
+distributing the Program.</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
+Each Contributor represents that to its knowledge it has sufficient copyright
+rights in its Contribution, if any, to grant the copyright license set forth in
+this Agreement. </span></p>
+
+<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
+
+<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
+Program in object code form under its own license agreement, provided that:</span>
+</p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+it complies with the terms and conditions of this Agreement; and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
+its license agreement:</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
+effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title
+and non-infringement, and implied warranties or conditions of merchantability
+and fitness for a particular purpose; </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
+effectively excludes on behalf of all Contributors all liability for damages,
+including direct, indirect, special, incidental and consequential damages, such
+as lost profits; </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
+states that any provisions which differ from this Agreement are offered by that
+Contributor alone and not by any other party; and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
+states that source code for the Program is available from such Contributor, and
+informs licensees how to obtain it in a reasonable manner on or through a
+medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
+
+<p><span style='font-size:10.0pt'>When the Program is made available in source
+code form:</span> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+it must be made available under this Agreement; and </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
+copy of this Agreement must be included with each copy of the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
+copyright notices contained within the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
+originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution. </span></p>
+
+<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
+
+<p><span style='font-size:10.0pt'>Commercial distributors of software may
+accept certain responsibilities with respect to end users, business partners
+and the like. While this license is intended to facilitate the commercial use
+of the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create potential
+liability for other Contributors. Therefore, if a Contributor includes the
+Program in a commercial product offering, such Contributor ("Commercial
+Contributor") hereby agrees to defend and indemnify every other
+Contributor ("Indemnified Contributor") against any losses, damages and
+costs (collectively "Losses") arising from claims, lawsuits and other
+legal actions brought by a third party against the Indemnified Contributor to
+the extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor
+to control, and cooperate with the Commercial Contributor in, the defense and
+any related settlement negotiations. The Indemnified Contributor may participate
+in any such claim at its own expense.</span> </p>
+
+<p><span style='font-size:10.0pt'>For example, a Contributor might include the
+Program in a commercial product offering, Product X. That Contributor is then a
+Commercial Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance claims and
+warranties are such Commercial Contributor's responsibility alone. Under this
+section, the Commercial Contributor would have to defend claims against the
+other Contributors related to those performance claims and warranties, and if a
+court requires any other Contributor to pay any damages as a result, the
+Commercial Contributor must pay those damages.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
+
+<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and distributing the
+Program and assumes all risks associated with its exercise of rights under this
+Agreement , including but not limited to the risks and costs of program errors,
+compliance with applicable laws, damage to or loss of data, programs or
+equipment, and unavailability or interruption of operations. </span></p>
+
+<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
+
+<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
+THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
+
+<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
+or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without
+further action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.</span> </p>
+
+<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
+against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with
+other software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the date
+such litigation is filed. </span></p>
+
+<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
+shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable
+period of time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive. </span></p>
+
+<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
+copies of this Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The Agreement
+Steward reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement Steward has
+the right to modify this Agreement. The Eclipse Foundation is the initial
+Agreement Steward. The Eclipse Foundation may assign the responsibility to
+serve as the Agreement Steward to a suitable separate entity. Each new version
+of the Agreement will be given a distinguishing version number. The Program
+(including Contributions) may always be distributed subject to the version of
+the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program
+(including its Contributions) under the new version. Except as expressly stated
+in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether
+expressly, by implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.</span> </p>
+
+<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
+State of New York and the intellectual property laws of the United States of
+America. No party to this Agreement will bring a legal action under this
+Agreement more than one year after the cause of action arose. Each party waives
+its rights to a jury trial in any resulting litigation.</span> </p>
+
+<p class=MsoNormal></p>
+
+</div>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/plugins/org.polarsys.chess.fla.feature/feature.xml b/plugins/org.polarsys.chess.fla.feature/feature.xml
new file mode 100644
index 0000000..cf91554
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.feature/feature.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.polarsys.chess.fla.feature"
+ label="CHESS FLA feature (Incubation)"
+ version="0.9.0.qualifier">
+
+ <description>
+ Failure Logic Analysis CHESS plugins.
+ </description>
+
+ <copyright>
+ Copyright (c) 2015 MDH
+ </copyright>
+
+ <license url="http://www.eclipse.org/legal/epl-v10.htm">
+ All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License
+v1.0 which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+ </license>
+
+ <plugin
+ id="org.polarsys.chess.fla"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.polarsys.chess.fla.flamm"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.polarsys.chess.fla.flaxml"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.polarsys.chess.fla.transformations"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.polarsys.chess.fla.FPTC2FLABehavior"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"/>
+
+</feature>
diff --git a/plugins/org.polarsys.chess.fla.feature/license.html b/plugins/org.polarsys.chess.fla.feature/license.html
new file mode 100644
index 0000000..225824a
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.feature/license.html
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>April 9, 2014</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+ OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+ NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+ CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+ ("EPL"). A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+ For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+ repository ("Repository") in software modules ("Modules") and made available as downloadable archives ("Downloads").</p>
+
+<ul>
+ <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</li>
+ <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named "features". Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of the Plug-ins
+ and/or Fragments associated with that Feature.</li>
+ <li>Features may also include other Features ("Included Features"). Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named "about.html" ("Abouts"). The terms and conditions governing Features and
+Included Features should be contained in files named "license.html" ("Feature Licenses"). Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+ <li>The top-level (root) directory</li>
+ <li>Plug-in and Fragment directories</li>
+ <li>Inside Plug-ins and Fragments packaged as JARs</li>
+ <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+ <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license ("Feature Update License") during the
+installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them. Feature Update Licenses may be found in the "license" property of files named "feature.properties" found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+ <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+ <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+ <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+ <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+ <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+ Update Manager ("Provisioning Technology") for the purpose of allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). This capability is provided with the intent of allowing such users to
+ install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+ href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+ ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+ applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+ in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+ Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+ <li>A series of actions may occur ("Provisioning Process") in which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") with the intent of installing, extending or updating the functionality of an Eclipse-based
+ product.</li>
+ <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+ accessed and copied to the Target Machine.</li>
+ <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+ Software ("Installable Software Agreement") and such Installable Software Agreement shall be accessed from the Target
+ Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+ the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+ indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+ another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+ possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.polarsys.chess.fla.flamm/.classpath b/plugins/org.polarsys.chess.fla.flamm/.classpath
new file mode 100644
index 0000000..121e527
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.polarsys.chess.fla.flamm/.project b/plugins/org.polarsys.chess.fla.flamm/.project
new file mode 100644
index 0000000..77a811b
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.polarsys.chess.fla.flamm</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.polarsys.chess.fla.flamm/META-INF/MANIFEST.MF b/plugins/org.polarsys.chess.fla.flamm/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..f1dc7db
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.polarsys.chess.fla.flamm;singleton:=true
+Bundle-Version: 0.1.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.polarsys.chess.fla.flamm,
+ org.polarsys.chess.fla.flamm.FailureTypes,
+ org.polarsys.chess.fla.flamm.analysis,
+ org.polarsys.chess.fla.flamm.util
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport
+Bundle-ActivationPolicy: lazy
+Import-Package: com.google.common.collect
diff --git a/plugins/org.polarsys.chess.fla.flamm/about.html b/plugins/org.polarsys.chess.fla.flamm/about.html
new file mode 100644
index 0000000..dd3c089
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.polarsys.chess.fla.flamm/build.properties b/plugins/org.polarsys.chess.fla.flamm/build.properties
new file mode 100644
index 0000000..c1261d8
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/build.properties
@@ -0,0 +1,22 @@
+###############################################################################
+# CHESS core plugin
+#
+# Copyright (C) 2011-2015
+# Mälardalen University, Sweden
+#
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License
+# v1.0 which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+###############################################################################
+#
+
+bin.includes = .,\
+ model/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/plugins/org.polarsys.chess.fla.flamm/model/flamm class diagram.png b/plugins/org.polarsys.chess.fla.flamm/model/flamm class diagram.png
new file mode 100644
index 0000000..4a381b1
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/model/flamm class diagram.png
Binary files differ
diff --git a/plugins/org.polarsys.chess.fla.flamm/model/flamm.aird b/plugins/org.polarsys.chess.fla.flamm/model/flamm.aird
new file mode 100644
index 0000000..3de58d4
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/model/flamm.aird
@@ -0,0 +1,1476 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<viewpoint:DAnalysis xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style" xmi:id="_a7Q3MARHEeWdu7LwZb7HXA" selectedViews="_b52mYARHEeWdu7LwZb7HXA" version="8.1.1">
+ <models xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+ <models xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+ <ownedViews xmi:type="viewpoint:DRepresentationContainer" xmi:id="_b52mYARHEeWdu7LwZb7HXA" initialized="true">
+ <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_cDcAMARHEeWdu7LwZb7HXA" name="flamm class diagram">
+ <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_cEWmMARHEeWdu7LwZb7HXA" source="GMF_DIAGRAMS">
+ <data xmi:type="notation:Diagram" xmi:id="_cEWmMQRHEeWdu7LwZb7HXA" type="Sirius" element="_cDcAMARHEeWdu7LwZb7HXA" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_iI4UcARHEeWdu7LwZb7HXA" type="2003" element="_iFuSwARHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_iI6JoARHEeWdu7LwZb7HXA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_iI-bEARHEeWdu7LwZb7HXA" type="7004">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iI-bEQRHEeWdu7LwZb7HXA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iI-bEgRHEeWdu7LwZb7HXA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_iI4UcQRHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8" italic="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iI4UcgRHEeWdu7LwZb7HXA" x="216" y="135" width="120" height="30"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iI_pMARHEeWdu7LwZb7HXA" type="2003" element="_iF88QARHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_iJAQQARHEeWdu7LwZb7HXA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_iJA3UARHEeWdu7LwZb7HXA" type="7004">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iJA3UQRHEeWdu7LwZb7HXA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iJA3UgRHEeWdu7LwZb7HXA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_iI_pMQRHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iI_pMgRHEeWdu7LwZb7HXA" x="144" y="216" width="120" height="30"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJA3UwRHEeWdu7LwZb7HXA" type="2003" element="_iF-xcARHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_iJBeYARHEeWdu7LwZb7HXA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_iJCsgARHEeWdu7LwZb7HXA" type="7004">
+ <children xmi:type="notation:Node" xmi:id="_iJNroARHEeWdu7LwZb7HXA" visible="false" type="3010" element="_iGxboARHEeWdu7LwZb7HXA">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iJNroQRHEeWdu7LwZb7HXA"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJNrogRHEeWdu7LwZb7HXA" visible="false" type="3010" element="_iG4wYARHEeWdu7LwZb7HXA">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iJOSsARHEeWdu7LwZb7HXA"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iJCsgQRHEeWdu7LwZb7HXA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iJCsggRHEeWdu7LwZb7HXA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_iJA3VARHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJA3VQRHEeWdu7LwZb7HXA" x="315" y="54" width="120" height="30"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJD6oARHEeWdu7LwZb7HXA" type="2003" element="_iGAmoARHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_iJFIwARHEeWdu7LwZb7HXA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_iJFIwQRHEeWdu7LwZb7HXA" type="7004">
+ <children xmi:type="notation:Node" xmi:id="_iJOSsQRHEeWdu7LwZb7HXA" visible="false" type="3010" element="_iG5-gARHEeWdu7LwZb7HXA">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iJOSsgRHEeWdu7LwZb7HXA"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJO5wARHEeWdu7LwZb7HXA" visible="false" type="3010" element="_iG7MoARHEeWdu7LwZb7HXA">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iJO5wQRHEeWdu7LwZb7HXA"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iJFIwgRHEeWdu7LwZb7HXA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iJFIwwRHEeWdu7LwZb7HXA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_iJD6oQRHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJD6ogRHEeWdu7LwZb7HXA" x="423" y="135" width="120" height="30"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJFv0ARHEeWdu7LwZb7HXA" type="2003" element="_iGDC4ARHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_iJGW4ARHEeWdu7LwZb7HXA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_iJG98ARHEeWdu7LwZb7HXA" type="7004">
+ <children xmi:type="notation:Node" xmi:id="_iJO5wgRHEeWdu7LwZb7HXA" visible="false" type="3010" element="_iG7zsARHEeWdu7LwZb7HXA">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iJO5wwRHEeWdu7LwZb7HXA"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iJG98QRHEeWdu7LwZb7HXA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iJG98gRHEeWdu7LwZb7HXA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_iJFv0QRHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJFv0gRHEeWdu7LwZb7HXA" x="270" y="297" width="120" height="30"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJHlAARHEeWdu7LwZb7HXA" type="2003" element="_iGGtQARHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_iJIzIARHEeWdu7LwZb7HXA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_iJIzIQRHEeWdu7LwZb7HXA" type="7004">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iJIzIgRHEeWdu7LwZb7HXA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iJIzIwRHEeWdu7LwZb7HXA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_iJHlAQRHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJHlAgRHEeWdu7LwZb7HXA" x="270" y="216" width="120" height="30"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJJaMARHEeWdu7LwZb7HXA" type="2003" element="_iGIicARHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_iJKBQARHEeWdu7LwZb7HXA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_iJKoUARHEeWdu7LwZb7HXA" type="7004">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iJKoUQRHEeWdu7LwZb7HXA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iJKoUgRHEeWdu7LwZb7HXA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_iJJaMQRHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJJaMgRHEeWdu7LwZb7HXA" x="423" y="297" width="120" height="30"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJKoUwRHEeWdu7LwZb7HXA" type="2003" element="_iGLlwARHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_iJLPYARHEeWdu7LwZb7HXA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_iJL2cARHEeWdu7LwZb7HXA" type="7004">
+ <children xmi:type="notation:Node" xmi:id="_iJPg0ARHEeWdu7LwZb7HXA" visible="false" type="3010" element="_iG9o4ARHEeWdu7LwZb7HXA">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iJPg0QRHEeWdu7LwZb7HXA"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJPg0gRHEeWdu7LwZb7HXA" visible="false" type="3010" element="_iG-3BARHEeWdu7LwZb7HXA">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iJPg0wRHEeWdu7LwZb7HXA"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iJL2cQRHEeWdu7LwZb7HXA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iJL2cgRHEeWdu7LwZb7HXA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_iJKoVARHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJKoVQRHEeWdu7LwZb7HXA" x="450" y="216" width="120" height="30"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_DXM48BAZEeW3er92bhotdw" type="2003" element="_DVCVwBAZEeW3er92bhotdw">
+ <children xmi:type="notation:Node" xmi:id="_DXkFUBAZEeW3er92bhotdw" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_DXksYBAZEeW3er92bhotdw" type="7004">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_DXksYRAZEeW3er92bhotdw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_DXksYhAZEeW3er92bhotdw"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_DXM48RAZEeW3er92bhotdw" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DXM48hAZEeW3er92bhotdw" x="108" y="378" height="38"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_-bPCQBDpEeW3er92bhotdw" type="2003" element="_-ajFwBDpEeW3er92bhotdw">
+ <children xmi:type="notation:Node" xmi:id="_-baocBDpEeW3er92bhotdw" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_-baocRDpEeW3er92bhotdw" type="7004">
+ <children xmi:type="notation:Node" xmi:id="_-be54BDpEeW3er92bhotdw" type="3010" element="_-a8HUBDpEeW3er92bhotdw">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_-be54RDpEeW3er92bhotdw"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_-bfg8BDpEeW3er92bhotdw" type="3010" element="_-a9VcBDpEeW3er92bhotdw">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_-bfg8RDpEeW3er92bhotdw"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-bbPgBDpEeW3er92bhotdw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-bbPgRDpEeW3er92bhotdw"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_-bPCQRDpEeW3er92bhotdw" fontName=".Helvetica Neue DeskInterface" fontHeight="8" italic="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-bPCQhDpEeW3er92bhotdw" x="108" y="36" width="146" height="65"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_cEWmMgRHEeWdu7LwZb7HXA"/>
+ <edges xmi:type="notation:Edge" xmi:id="_iJbHAARHEeWdu7LwZb7HXA" type="4001" element="_iHYfoARHEeWdu7LwZb7HXA" source="_iI4UcARHEeWdu7LwZb7HXA" target="_iJD6oARHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_iJc8MARHEeWdu7LwZb7HXA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJc8MQRHEeWdu7LwZb7HXA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJeKUARHEeWdu7LwZb7HXA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJeKUQRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJexYARHEeWdu7LwZb7HXA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJexYQRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJbHAQRHEeWdu7LwZb7HXA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_iJbHAgRHEeWdu7LwZb7HXA" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJbHAwRHEeWdu7LwZb7HXA" points="[59, -4, -139, -4]$[139, -4, -59, -4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJq-oARHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJq-oQRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_iJrlsARHEeWdu7LwZb7HXA" type="4001" element="_iHemQARHEeWdu7LwZb7HXA" source="_iI4UcARHEeWdu7LwZb7HXA" target="_iJD6oARHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_iJsMwARHEeWdu7LwZb7HXA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJsMwQRHEeWdu7LwZb7HXA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJsMwgRHEeWdu7LwZb7HXA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJsMwwRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJsz0ARHEeWdu7LwZb7HXA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJsz0QRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJrlsQRHEeWdu7LwZb7HXA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_iJrlsgRHEeWdu7LwZb7HXA" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJrlswRHEeWdu7LwZb7HXA" points="[59, 23, -139, 23]$[139, 23, -59, 23]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJsz0gRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJsz0wRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_iJsz1ARHEeWdu7LwZb7HXA" type="4001" element="_iHf0YARHEeWdu7LwZb7HXA" source="_iJD6oARHEeWdu7LwZb7HXA" target="_iJD6oARHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_iJta4ARHEeWdu7LwZb7HXA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJta4QRHEeWdu7LwZb7HXA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJuB8ARHEeWdu7LwZb7HXA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJuB8QRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJuB8gRHEeWdu7LwZb7HXA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJuB8wRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJsz1QRHEeWdu7LwZb7HXA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_iJsz1gRHEeWdu7LwZb7HXA" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJsz1wRHEeWdu7LwZb7HXA" points="[40, -19, 40, -19]$[40, -37, 40, -37]$[85, -37, 85, -37]$[85, -1, 85, -1]$[59, -1, 59, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJupAARHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJupAQRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_iJupAgRHEeWdu7LwZb7HXA" type="4001" element="_iHhCgARHEeWdu7LwZb7HXA" source="_iJD6oARHEeWdu7LwZb7HXA" target="_iJKoUwRHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_iJvQEARHEeWdu7LwZb7HXA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJvQEQRHEeWdu7LwZb7HXA" x="-5" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJvQEgRHEeWdu7LwZb7HXA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJvQEwRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJv3IARHEeWdu7LwZb7HXA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJv3IQRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJupAwRHEeWdu7LwZb7HXA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_iJupBARHEeWdu7LwZb7HXA" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJupBQRHEeWdu7LwZb7HXA" points="[-26, 16, -23, -61]$[-26, 58, -23, -19]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJv3IgRHEeWdu7LwZb7HXA" id="(0.7583333333333333,0.6097560975609756)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJv3IwRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_iJweMARHEeWdu7LwZb7HXA" visible="false" type="4001" element="_iHiQoARHEeWdu7LwZb7HXA" source="_iJD6oARHEeWdu7LwZb7HXA" target="_iJKoUwRHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_iJxFQARHEeWdu7LwZb7HXA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJxFQQRHEeWdu7LwZb7HXA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJxFQgRHEeWdu7LwZb7HXA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJxFQwRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJxsUARHEeWdu7LwZb7HXA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJxsUQRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJweMQRHEeWdu7LwZb7HXA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_iJweMgRHEeWdu7LwZb7HXA" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJweMwRHEeWdu7LwZb7HXA" points="[-8, 12, -95, -70]$[-8, 27, -95, -55]$[82, 27, -5, -55]$[82, 63, -5, -19]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJxsUgRHEeWdu7LwZb7HXA" id="(0.9833333333333333,0.7073170731707317)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJxsUwRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_iJyTYARHEeWdu7LwZb7HXA" visible="false" type="4001" element="_iHjexgRHEeWdu7LwZb7HXA" source="_iJD6oARHEeWdu7LwZb7HXA" target="_iI4UcARHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_iJy6cARHEeWdu7LwZb7HXA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJy6cQRHEeWdu7LwZb7HXA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJzhgARHEeWdu7LwZb7HXA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJzhgQRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJzhggRHEeWdu7LwZb7HXA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJzhgwRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJyTYQRHEeWdu7LwZb7HXA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_iJyTYgRHEeWdu7LwZb7HXA" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJyTYwRHEeWdu7LwZb7HXA" points="[-59, -31, 139, -31]$[-139, -31, 59, -31]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ0IkARHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ0IkQRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_iJ0voARHEeWdu7LwZb7HXA" type="4001" element="_iHlT8ARHEeWdu7LwZb7HXA" source="_iJFv0ARHEeWdu7LwZb7HXA" target="_iJJaMARHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_iJ1WsARHEeWdu7LwZb7HXA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ1WsQRHEeWdu7LwZb7HXA" x="11" y="25"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJ19wARHEeWdu7LwZb7HXA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ19wQRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJ19wgRHEeWdu7LwZb7HXA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ19wwRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJ0voQRHEeWdu7LwZb7HXA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_iJ0vogRHEeWdu7LwZb7HXA" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJ0vowRHEeWdu7LwZb7HXA" points="[59, 8, -57, -6]$[94, 8, -22, -6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ2k0ARHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ2k0QRHEeWdu7LwZb7HXA" id="(0.19166666666666668,0.8536585365853658)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_iJ3L4ARHEeWdu7LwZb7HXA" type="4001" element="_iHmiEARHEeWdu7LwZb7HXA" source="_iJFv0ARHEeWdu7LwZb7HXA" target="_iJJaMARHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_iJ3y8ARHEeWdu7LwZb7HXA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ3y8QRHEeWdu7LwZb7HXA" x="27" y="-13"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJ3y8gRHEeWdu7LwZb7HXA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ3y8wRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJ4aAARHEeWdu7LwZb7HXA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ4aAQRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJ3L4QRHEeWdu7LwZb7HXA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_iJ3L4gRHEeWdu7LwZb7HXA" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJ3L4wRHEeWdu7LwZb7HXA" points="[59, -10, -121, -10]$[121, -10, -59, -10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ4aAgRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ5BEARHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_iJ5BEQRHEeWdu7LwZb7HXA" type="4001" element="_iHnwNgRHEeWdu7LwZb7HXA" source="_iJHlAARHEeWdu7LwZb7HXA" target="_iJFv0ARHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_iJ5oIARHEeWdu7LwZb7HXA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ5oIQRHEeWdu7LwZb7HXA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJ5oIgRHEeWdu7LwZb7HXA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ5oIwRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJ6PMARHEeWdu7LwZb7HXA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ6PMQRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJ5BEgRHEeWdu7LwZb7HXA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_iJ5BEwRHEeWdu7LwZb7HXA" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJ5BFARHEeWdu7LwZb7HXA" points="[-6, 20, -6, -61]$[-6, 62, -6, -19]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ62QARHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ62QQRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_iJ62QgRHEeWdu7LwZb7HXA" type="4001" element="_iHo-VgRHEeWdu7LwZb7HXA" source="_iJJaMARHEeWdu7LwZb7HXA" target="_iJD6oARHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_iJ7dUARHEeWdu7LwZb7HXA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ7dUQRHEeWdu7LwZb7HXA" x="-3" y="-17"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJ7dUgRHEeWdu7LwZb7HXA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ7dUwRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJ7dVARHEeWdu7LwZb7HXA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ7dVQRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJ62QwRHEeWdu7LwZb7HXA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_iJ62RARHEeWdu7LwZb7HXA" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJ62RQRHEeWdu7LwZb7HXA" points="[-1, 0, -23, 126]$[-1, -123, -23, 3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ8EYARHEeWdu7LwZb7HXA" id="(0.16666666666666666,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ8EYQRHEeWdu7LwZb7HXA" id="(0.35,0.926829268292683)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_iJ8EYgRHEeWdu7LwZb7HXA" type="4001" element="_iHqzgARHEeWdu7LwZb7HXA" source="_iJJaMARHEeWdu7LwZb7HXA" target="_iJKoUwRHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_iJ8rcARHEeWdu7LwZb7HXA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ8rcQRHEeWdu7LwZb7HXA" x="2" y="26"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJ8rcgRHEeWdu7LwZb7HXA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ8rcwRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJ9SgARHEeWdu7LwZb7HXA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ9SgQRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJ8EYwRHEeWdu7LwZb7HXA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_iJ8EZARHEeWdu7LwZb7HXA" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJ8EZQRHEeWdu7LwZb7HXA" points="[4, -19, -23, 62]$[4, -61, -23, 20]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ9SggRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ9SgwRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_iJ95kARHEeWdu7LwZb7HXA" type="4001" element="_iHsosARHEeWdu7LwZb7HXA" source="_iI4UcARHEeWdu7LwZb7HXA" target="_iJA3UwRHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_iJ95lARHEeWdu7LwZb7HXA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ95lQRHEeWdu7LwZb7HXA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJ-goARHEeWdu7LwZb7HXA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ-goQRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJ-gogRHEeWdu7LwZb7HXA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ-gowRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJ95kQRHEeWdu7LwZb7HXA" routing="Tree"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_iJ95kgRHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJ95kwRHEeWdu7LwZb7HXA" points="[0, 0, -104, 62]$[0, -19, -104, 43]$[108, -19, 4, 43]$[108, -42, 4, 20]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ_HsARHEeWdu7LwZb7HXA" id="(0.4583333333333333,0.024390243902439025)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ_HsQRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_iJ_HsgRHEeWdu7LwZb7HXA" type="4001" element="_iHt20ARHEeWdu7LwZb7HXA" source="_iI_pMARHEeWdu7LwZb7HXA" target="_iI4UcARHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_iJ_uwARHEeWdu7LwZb7HXA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ_uwQRHEeWdu7LwZb7HXA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iJ_uwgRHEeWdu7LwZb7HXA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ_uwwRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iKAV0ARHEeWdu7LwZb7HXA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iKAV0QRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJ_HswRHEeWdu7LwZb7HXA" routing="Tree"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_iJ_HtARHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJ_HtQRHEeWdu7LwZb7HXA" points="[0, -19, -72, 71]$[0, -46, -72, 44]$[67, -46, -5, 44]$[67, -70, -5, 20]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iKAV0gRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iKAV0wRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_iKA84ARHEeWdu7LwZb7HXA" type="4001" element="_iHvE8ARHEeWdu7LwZb7HXA" source="_iJD6oARHEeWdu7LwZb7HXA" target="_iJA3UwRHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_iKA85ARHEeWdu7LwZb7HXA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iKA85QRHEeWdu7LwZb7HXA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iKBj8ARHEeWdu7LwZb7HXA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iKBj8QRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iKBj8gRHEeWdu7LwZb7HXA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iKBj8wRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_iKA84QRHEeWdu7LwZb7HXA" routing="Tree"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_iKA84gRHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iKA84wRHEeWdu7LwZb7HXA" points="[0, -19, 75, 44]$[0, -38, 75, 25]$[-104, -38, -29, 25]$[-104, -61, -29, 2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iKCLAARHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iKCLAQRHEeWdu7LwZb7HXA" id="(0.7833333333333333,0.95)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_iKCLAgRHEeWdu7LwZb7HXA" type="4001" element="_iHwTEARHEeWdu7LwZb7HXA" source="_iJHlAARHEeWdu7LwZb7HXA" target="_iI4UcARHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_iKCyEARHEeWdu7LwZb7HXA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iKCyEQRHEeWdu7LwZb7HXA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iKCyEgRHEeWdu7LwZb7HXA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iKCyEwRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iKCyFARHEeWdu7LwZb7HXA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iKCyFQRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_iKCLAwRHEeWdu7LwZb7HXA" routing="Tree"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_iKCLBARHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iKCLBQRHEeWdu7LwZb7HXA" points="[-1, -19, 53, 62]$[-1, -38, 53, 43]$[-59, -38, -5, 43]$[-59, -61, -5, 20]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iKDZIARHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iKDZIQRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_iKEnQARHEeWdu7LwZb7HXA" type="4001" element="_iHxhMARHEeWdu7LwZb7HXA" source="_iI4UcARHEeWdu7LwZb7HXA" target="_iI_pMARHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_iKGccARHEeWdu7LwZb7HXA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iKGccQRHEeWdu7LwZb7HXA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iKHDgARHEeWdu7LwZb7HXA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iKHDgQRHEeWdu7LwZb7HXA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_iKHqkARHEeWdu7LwZb7HXA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iKHqkQRHEeWdu7LwZb7HXA" x="-5" y="12"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_iKEnQQRHEeWdu7LwZb7HXA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_iKEnQgRHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iKEnQwRHEeWdu7LwZb7HXA" points="[-59, -1, 13, -91]$[-104, -1, -32, -91]$[-104, 71, -32, -19]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iKIRoARHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iKIRoQRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_DXo90BAZEeW3er92bhotdw" type="4001" element="_DW4v4BAZEeW3er92bhotdw" source="_iI_pMARHEeWdu7LwZb7HXA" target="_DXM48BAZEeW3er92bhotdw">
+ <children xmi:type="notation:Node" xmi:id="_DXsBIBAZEeW3er92bhotdw" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DXsBIRAZEeW3er92bhotdw" x="4" y="4"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_DXt2UBAZEeW3er92bhotdw" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DXt2URAZEeW3er92bhotdw" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_DXvEcBAZEeW3er92bhotdw" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DXvEcRAZEeW3er92bhotdw" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_DXo90RAZEeW3er92bhotdw" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_DXo90hAZEeW3er92bhotdw" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DXo90xAZEeW3er92bhotdw" points="[12, 20, -177, -142]$[12, 161, -177, -1]$[130, 161, -59, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DX1yIBAZEeW3er92bhotdw" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DX2ZMBAZEeW3er92bhotdw" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_DX5cgBAZEeW3er92bhotdw" type="4001" element="_DW9BVhAZEeW3er92bhotdw" source="_DXM48BAZEeW3er92bhotdw" target="_iJFv0ARHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_DX5chBAZEeW3er92bhotdw" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DX5chRAZEeW3er92bhotdw" x="-20" y="8"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_DX6DkBAZEeW3er92bhotdw" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DX6DkRAZEeW3er92bhotdw" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_DX6DkhAZEeW3er92bhotdw" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DX6DkxAZEeW3er92bhotdw" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_DX5cgRAZEeW3er92bhotdw" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_DX5cghAZEeW3er92bhotdw" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DX5cgxAZEeW3er92bhotdw" points="[35, -19, -88, 48]$[35, -37, -88, 30]$[120, -37, -3, 30]$[120, -61, -3, 6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DX6DlBAZEeW3er92bhotdw" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DX6DlRAZEeW3er92bhotdw" id="(0.475,0.8536585365853658)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_GoqnsBAvEeW3er92bhotdw" type="4001" element="_GnKL0BAvEeW3er92bhotdw" source="_iJD6oARHEeWdu7LwZb7HXA" target="_DXM48BAZEeW3er92bhotdw">
+ <children xmi:type="notation:Node" xmi:id="_Gor10BAvEeW3er92bhotdw" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gor10RAvEeW3er92bhotdw" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_Gor10hAvEeW3er92bhotdw" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gor10xAvEeW3er92bhotdw" x="-32" y="23"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_Gosc4BAvEeW3er92bhotdw" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gosc4RAvEeW3er92bhotdw" x="1" y="4"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_GoqnsRAvEeW3er92bhotdw" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_GoqnshAvEeW3er92bhotdw" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GoqnsxAvEeW3er92bhotdw" points="[59, 7, 374, -236]$[102, 7, 417, -236]$[102, 242, 417, -1]$[-256, 242, 59, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GotD8BAvEeW3er92bhotdw" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GotD8RAvEeW3er92bhotdw" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_JbGTEBAvEeW3er92bhotdw" type="4001" element="_JaOwYBAvEeW3er92bhotdw" source="_iJD6oARHEeWdu7LwZb7HXA" target="_DXM48BAZEeW3er92bhotdw">
+ <children xmi:type="notation:Node" xmi:id="_JbHhMBAvEeW3er92bhotdw" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JbHhMRAvEeW3er92bhotdw" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_JbHhMhAvEeW3er92bhotdw" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JbHhMxAvEeW3er92bhotdw" x="-48" y="2"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_JbIIQBAvEeW3er92bhotdw" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JbIIQRAvEeW3er92bhotdw" x="6" y="-6"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_JbGTERAvEeW3er92bhotdw" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_JbGTEhAvEeW3er92bhotdw" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JbGTExAvEeW3er92bhotdw" points="[59, 1, 374, -242]$[111, 1, 426, -242]$[111, 250, 426, 7]$[-256, 250, 59, 7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JbIvUBAvEeW3er92bhotdw" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JbIvURAvEeW3er92bhotdw" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_-bh9MBDpEeW3er92bhotdw" type="4001" element="_-bEqMBDpEeW3er92bhotdw" source="_iI4UcARHEeWdu7LwZb7HXA" target="_-bPCQBDpEeW3er92bhotdw">
+ <children xmi:type="notation:Node" xmi:id="_-bh9NBDpEeW3er92bhotdw" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-bh9NRDpEeW3er92bhotdw" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_-bh9NhDpEeW3er92bhotdw" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-bh9NxDpEeW3er92bhotdw" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_-bikQBDpEeW3er92bhotdw" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-bikQRDpEeW3er92bhotdw" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_-bh9MRDpEeW3er92bhotdw" routing="Rectilinear"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_-bh9MhDpEeW3er92bhotdw" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-bh9MxDpEeW3er92bhotdw" points="[23, -23, 58, 40]$[23, -33, 58, 30]$[-45, -33, -10, 30]$[-45, -59, -10, 4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-bjyYBDpEeW3er92bhotdw" id="(0.08333333333333333,0.6097560975609756)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-bjyYRDpEeW3er92bhotdw" id="(0.5753424657534246,0.9384615384615385)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_-bjyYhDpEeW3er92bhotdw" type="4001" element="_-bHthhDpEeW3er92bhotdw" source="_DXM48BAZEeW3er92bhotdw" target="_-bPCQBDpEeW3er92bhotdw">
+ <children xmi:type="notation:Node" xmi:id="_-bkZcBDpEeW3er92bhotdw" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-bkZcRDpEeW3er92bhotdw" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_-bkZchDpEeW3er92bhotdw" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-bkZcxDpEeW3er92bhotdw" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_-bkZdBDpEeW3er92bhotdw" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-bkZdRDpEeW3er92bhotdw" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_-bjyYxDpEeW3er92bhotdw" routing="Rectilinear"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_-bjyZBDpEeW3er92bhotdw" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-bjyZRDpEeW3er92bhotdw" points="[6, -5, -30, 283]$[6, -258, -30, 30]$[61, -258, 25, 30]$[61, -284, 25, 4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-blAgBDpEeW3er92bhotdw" id="(0.1,0.14634146341463414)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lr164BDqEeW3er92bhotdw" id="(0.3287671232876712,0.9384615384615385)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_rh5CADtMEeWdhpt7FCQG8A" type="4001" element="_rhFJsDtMEeWdhpt7FCQG8A" source="_iJKoUwRHEeWdu7LwZb7HXA" target="_iJKoUwRHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_riuvgDtMEeWdhpt7FCQG8A" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_riuvgTtMEeWdhpt7FCQG8A" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ri0PEDtMEeWdhpt7FCQG8A" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ri0PETtMEeWdhpt7FCQG8A" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ri1dMDtMEeWdhpt7FCQG8A" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ri2EQDtMEeWdhpt7FCQG8A" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_rh5pEDtMEeWdhpt7FCQG8A" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_rh5pETtMEeWdhpt7FCQG8A" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rh5pEjtMEeWdhpt7FCQG8A" points="[450, 216, 450, 216]$[450, 216, 450, 216]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rjK0YDtMEeWdhpt7FCQG8A" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rjK0YTtMEeWdhpt7FCQG8A" id="(0.5,0.5)"/>
+ </edges>
+ </data>
+ </ownedAnnotationEntries>
+ <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_iGypwARHEeWdu7LwZb7HXA" source="DANNOTATION_CUSTOMIZATION_KEY">
+ <data xmi:type="diagram:ComputedStyleDescriptionRegistry" xmi:id="_iGz34ARHEeWdu7LwZb7HXA">
+ <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_6A5k8hDpEeW3er92bhotdw" labelFormat="bold" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+ <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_6A6zEhDpEeW3er92bhotdw" labelFormat="bold" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+ <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_6A8BMhDpEeW3er92bhotdw" labelFormat="bold" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+ <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_6A9PUhDpEeW3er92bhotdw" labelFormat="bold" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+ <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BBgwhDpEeW3er92bhotdw" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_6BBgwxDpEeW3er92bhotdw" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BBgxBDpEeW3er92bhotdw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BCH0hDpEeW3er92bhotdw" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_6BCH0xDpEeW3er92bhotdw" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BCH1BDpEeW3er92bhotdw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BDV8BDpEeW3er92bhotdw" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_6BDV8RDpEeW3er92bhotdw" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BDV8hDpEeW3er92bhotdw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BFLIBDpEeW3er92bhotdw" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_6BFLIRDpEeW3er92bhotdw" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BFLIhDpEeW3er92bhotdw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BFyMhDpEeW3er92bhotdw" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_6BFyMxDpEeW3er92bhotdw" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BFyNBDpEeW3er92bhotdw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BGZQhDpEeW3er92bhotdw" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_6BGZQxDpEeW3er92bhotdw" labelFormat="bold" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BGZRBDpEeW3er92bhotdw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BI1ghDpEeW3er92bhotdw" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_6BI1gxDpEeW3er92bhotdw" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BI1hBDpEeW3er92bhotdw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BKDohDpEeW3er92bhotdw" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_6BKDoxDpEeW3er92bhotdw" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BKDpBDpEeW3er92bhotdw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BKqshDpEeW3er92bhotdw" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_6BLRwBDpEeW3er92bhotdw" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BLRwRDpEeW3er92bhotdw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BL40hDpEeW3er92bhotdw" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_6BL40xDpEeW3er92bhotdw" labelFormat="bold" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BL41BDpEeW3er92bhotdw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BMf4hDpEeW3er92bhotdw" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_6BMf4xDpEeW3er92bhotdw" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BMf5BDpEeW3er92bhotdw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BcXghDpEeW3er92bhotdw" sourceArrow="InputArrow" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_6BcXgxDpEeW3er92bhotdw" labelFormat="bold" showIcon="false" labelExpression="service:renderEOpposite">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </beginLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BcXhBDpEeW3er92bhotdw" labelFormat="bold" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BdlohDpEeW3er92bhotdw" sourceArrow="InputArrow" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_6BdloxDpEeW3er92bhotdw" labelFormat="bold" showIcon="false" labelExpression="service:renderEOpposite">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </beginLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BdlpBDpEeW3er92bhotdw" labelFormat="bold" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BgB4hDpEeW3er92bhotdw" sourceArrow="InputArrow" targetArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_6BgB4xDpEeW3er92bhotdw" showIcon="false" labelExpression="service:renderEOpposite">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </beginLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BgB5BDpEeW3er92bhotdw" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <cache xmi:type="diagram:DiagramElementMapping2ModelElement" xmi:id="_iG1GAARHEeWdu7LwZb7HXA">
+ <key xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6A5k8BDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EAttribute" href="flamm.ecore#//NamedElement/id"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6A5k8RDpEeW3er92bhotdw" key="_iGxboARHEeWdu7LwZb7HXA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6A5k8xDpEeW3er92bhotdw" value="_6A5k8hDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EClass" href="flamm.ecore#//NamedElement"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6A6zEBDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EAttribute" href="flamm.ecore#//NamedElement/name"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6A6zERDpEeW3er92bhotdw" key="_iG4wYARHEeWdu7LwZb7HXA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6A6zExDpEeW3er92bhotdw" value="_6A6zEhDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EClass" href="flamm.ecore#//NamedElement"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6A8BMBDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EAttribute" href="flamm.ecore#//Rule/specificity"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6A8BMRDpEeW3er92bhotdw" key="_iG7zsARHEeWdu7LwZb7HXA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6A8BMxDpEeW3er92bhotdw" value="_6A8BMhDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EClass" href="flamm.ecore#//Rule"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6A9PUBDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EAttribute" href="flamm.ecore#//Failure/type"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6A9PURDpEeW3er92bhotdw" key="_iG9o4ARHEeWdu7LwZb7HXA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6A9PUxDpEeW3er92bhotdw" value="_6A9PUhDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EClass" href="flamm.ecore#//Failure"/>
+ </value>
+ </value>
+ </value>
+ </cache>
+ <cache xmi:type="diagram:DiagramElementMapping2ModelElement" xmi:id="_iHZtwARHEeWdu7LwZb7HXA">
+ <key xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BBgwBDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EReference" href="flamm.ecore#//Component/inputPorts"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BBgwRDpEeW3er92bhotdw" key="_iHYfoARHEeWdu7LwZb7HXA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BBgxRDpEeW3er92bhotdw" value="_6BBgwhDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BCH0BDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EReference" href="flamm.ecore#//Component/outputPorts"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BCH0RDpEeW3er92bhotdw" key="_iHemQARHEeWdu7LwZb7HXA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BCH1RDpEeW3er92bhotdw" value="_6BCH0hDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BCu5hDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EReference" href="flamm.ecore#//CompositeComponent/connections"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BCu5xDpEeW3er92bhotdw" key="_DW4v4BAZEeW3er92bhotdw">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BDV8xDpEeW3er92bhotdw" value="_6BDV8BDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BEkEBDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EReference" href="flamm.ecore#//Port/failures"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BEkERDpEeW3er92bhotdw" key="_iHhCgARHEeWdu7LwZb7HXA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BFLIxDpEeW3er92bhotdw" value="_6BFLIBDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BFyMBDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EReference" href="flamm.ecore#//Port/newFailures"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BFyMRDpEeW3er92bhotdw" key="_iHiQoARHEeWdu7LwZb7HXA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BFyNRDpEeW3er92bhotdw" value="_6BFyMhDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BGZQBDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EReference" href="flamm.ecore#//Port/owner"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BGZQRDpEeW3er92bhotdw" key="_iHjexgRHEeWdu7LwZb7HXA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BGZRRDpEeW3er92bhotdw" value="_6BGZQhDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BI1gBDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EReference" href="flamm.ecore#//Rule/inputExpression"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BI1gRDpEeW3er92bhotdw" key="_iHlT8ARHEeWdu7LwZb7HXA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BI1hRDpEeW3er92bhotdw" value="_6BI1ghDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BKDoBDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EReference" href="flamm.ecore#//Rule/outputExpression"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BKDoRDpEeW3er92bhotdw" key="_iHmiEARHEeWdu7LwZb7HXA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BKDpRDpEeW3er92bhotdw" value="_6BKDohDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BKqsBDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EReference" href="flamm.ecore#//SimpleComponent/rules"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BKqsRDpEeW3er92bhotdw" key="_iHnwNgRHEeWdu7LwZb7HXA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BLRwhDpEeW3er92bhotdw" value="_6BKqshDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BL40BDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EReference" href="flamm.ecore#//Expression/port"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BL40RDpEeW3er92bhotdw" key="_iHo-VgRHEeWdu7LwZb7HXA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BL41RDpEeW3er92bhotdw" value="_6BL40hDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BMf4BDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EReference" href="flamm.ecore#//Expression/failures"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BMf4RDpEeW3er92bhotdw" key="_iHqzgARHEeWdu7LwZb7HXA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BMf5RDpEeW3er92bhotdw" value="_6BMf4hDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ </cache>
+ <cache xmi:type="diagram:DiagramElementMapping2ModelElement" xmi:id="_iHyvUARHEeWdu7LwZb7HXA">
+ <key xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BcXgBDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EReference" href="flamm.ecore#//Port/outgoingConnections"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BcXgRDpEeW3er92bhotdw" key="_GnKL0BAvEeW3er92bhotdw">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BcXhRDpEeW3er92bhotdw" value="_6BcXghDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BdloBDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EReference" href="flamm.ecore#//Port/incomingConnections"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BdloRDpEeW3er92bhotdw" key="_JaOwYBAvEeW3er92bhotdw">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BdlpRDpEeW3er92bhotdw" value="_6BdlohDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BgB4BDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EReference" href="flamm.ecore#//Component/parent"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BgB4RDpEeW3er92bhotdw" key="_iHxhMARHEeWdu7LwZb7HXA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BgB5RDpEeW3er92bhotdw" value="_6BgB4hDpEeW3er92bhotdw">
+ <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ </cache>
+ </data>
+ </ownedAnnotationEntries>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_iFuSwARHEeWdu7LwZb7HXA" name="Component" tooltipText="" outgoingEdges="_iHYfoARHEeWdu7LwZb7HXA _iHemQARHEeWdu7LwZb7HXA _iHsosARHEeWdu7LwZb7HXA _iHxhMARHEeWdu7LwZb7HXA _-bEqMBDpEeW3er92bhotdw" incomingEdges="_iHjexgRHEeWdu7LwZb7HXA _iHt20ARHEeWdu7LwZb7HXA _iHwTEARHEeWdu7LwZb7HXA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flamm.ecore#//Component"/>
+ <semanticElements xmi:type="ecore:EClass" href="flamm.ecore#//Component"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_iF548ARHEeWdu7LwZb7HXA" labelFormat="italic" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iF548QRHEeWdu7LwZb7HXA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_iF548gRHEeWdu7LwZb7HXA" red="125" green="125" blue="125"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iF548wRHEeWdu7LwZb7HXA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iF549ARHEeWdu7LwZb7HXA" red="228" green="228" blue="228"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_iF88QARHEeWdu7LwZb7HXA" name="CompositeComponent" tooltipText="" outgoingEdges="_iHt20ARHEeWdu7LwZb7HXA _DW4v4BAZEeW3er92bhotdw" incomingEdges="_iHxhMARHEeWdu7LwZb7HXA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flamm.ecore#//CompositeComponent"/>
+ <semanticElements xmi:type="ecore:EClass" href="flamm.ecore#//CompositeComponent"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_iF9jUARHEeWdu7LwZb7HXA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iF9jUQRHEeWdu7LwZb7HXA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_iF9jUgRHEeWdu7LwZb7HXA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iF9jUwRHEeWdu7LwZb7HXA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iF9jVARHEeWdu7LwZb7HXA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_iF-xcARHEeWdu7LwZb7HXA" name="NamedElement" tooltipText="" incomingEdges="_iHsosARHEeWdu7LwZb7HXA _iHvE8ARHEeWdu7LwZb7HXA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flamm.ecore#//NamedElement"/>
+ <semanticElements xmi:type="ecore:EClass" href="flamm.ecore#//NamedElement"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_iF_YgARHEeWdu7LwZb7HXA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iF_YgQRHEeWdu7LwZb7HXA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_iF_YggRHEeWdu7LwZb7HXA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iF_YgwRHEeWdu7LwZb7HXA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iF_YhARHEeWdu7LwZb7HXA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_iGxboARHEeWdu7LwZb7HXA" name="id : EString" visible="false" tooltipText="">
+ <target xmi:type="ecore:EAttribute" href="flamm.ecore#//NamedElement/id"/>
+ <semanticElements xmi:type="ecore:EAttribute" href="flamm.ecore#//NamedElement/id"/>
+ <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_yjvkYARHEeWdu7LwZb7HXA"/>
+ <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_6A6MABDpEeW3er92bhotdw" labelFormat="bold" labelAlignment="LEFT" description="_6A5k8hDpEeW3er92bhotdw">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6A6MARDpEeW3er92bhotdw"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_6A6MAhDpEeW3er92bhotdw"/>
+ <color xmi:type="viewpoint:RGBValues" xmi:id="_6A6MAxDpEeW3er92bhotdw"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+ </ownedElements>
+ <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_iG4wYARHEeWdu7LwZb7HXA" name="name : EString" visible="false" tooltipText="">
+ <target xmi:type="ecore:EAttribute" href="flamm.ecore#//NamedElement/name"/>
+ <semanticElements xmi:type="ecore:EAttribute" href="flamm.ecore#//NamedElement/name"/>
+ <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_yjvkYQRHEeWdu7LwZb7HXA"/>
+ <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_6A6zFBDpEeW3er92bhotdw" labelFormat="bold" labelAlignment="LEFT" description="_6A6zEhDpEeW3er92bhotdw">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6A6zFRDpEeW3er92bhotdw"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_6A6zFhDpEeW3er92bhotdw"/>
+ <color xmi:type="viewpoint:RGBValues" xmi:id="_6A6zFxDpEeW3er92bhotdw"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+ </ownedElements>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_iGAmoARHEeWdu7LwZb7HXA" name="Port" tooltipText="" outgoingEdges="_iHf0YARHEeWdu7LwZb7HXA _iHhCgARHEeWdu7LwZb7HXA _iHiQoARHEeWdu7LwZb7HXA _iHjexgRHEeWdu7LwZb7HXA _iHvE8ARHEeWdu7LwZb7HXA _GnKL0BAvEeW3er92bhotdw _JaOwYBAvEeW3er92bhotdw" incomingEdges="_iHYfoARHEeWdu7LwZb7HXA _iHemQARHEeWdu7LwZb7HXA _iHf0YARHEeWdu7LwZb7HXA _iHo-VgRHEeWdu7LwZb7HXA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flamm.ecore#//Port"/>
+ <semanticElements xmi:type="ecore:EClass" href="flamm.ecore#//Port"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_iGB0wARHEeWdu7LwZb7HXA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iGB0wQRHEeWdu7LwZb7HXA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_iGB0wgRHEeWdu7LwZb7HXA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iGB0wwRHEeWdu7LwZb7HXA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iGB0xARHEeWdu7LwZb7HXA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_iG5-gARHEeWdu7LwZb7HXA" name="propagateFailures()" visible="false" tooltipText="propagateFailures()">
+ <target xmi:type="ecore:EOperation" href="flamm.ecore#//Port/propagateFailures"/>
+ <semanticElements xmi:type="ecore:EOperation" href="flamm.ecore#//Port/propagateFailures"/>
+ <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_6pXAoARHEeWdu7LwZb7HXA"/>
+ <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_iG6lkARHEeWdu7LwZb7HXA" labelAlignment="LEFT">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iG6lkQRHEeWdu7LwZb7HXA"/>
+ <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_iG6lkgRHEeWdu7LwZb7HXA"/>
+ <color xmi:type="viewpoint:RGBValues" xmi:id="_iG6lkwRHEeWdu7LwZb7HXA"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']"/>
+ </ownedElements>
+ <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_iG7MoARHEeWdu7LwZb7HXA" name="initialize()" visible="false" tooltipText="initialize()">
+ <target xmi:type="ecore:EOperation" href="flamm.ecore#//Port/initialize"/>
+ <semanticElements xmi:type="ecore:EOperation" href="flamm.ecore#//Port/initialize"/>
+ <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_6pXAoQRHEeWdu7LwZb7HXA"/>
+ <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_iG7MoQRHEeWdu7LwZb7HXA" labelAlignment="LEFT">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iG7MogRHEeWdu7LwZb7HXA"/>
+ <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_iG7MowRHEeWdu7LwZb7HXA"/>
+ <color xmi:type="viewpoint:RGBValues" xmi:id="_iG7MpARHEeWdu7LwZb7HXA"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']"/>
+ </ownedElements>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_iGDC4ARHEeWdu7LwZb7HXA" name="Rule" tooltipText="" outgoingEdges="_iHlT8ARHEeWdu7LwZb7HXA _iHmiEARHEeWdu7LwZb7HXA" incomingEdges="_iHnwNgRHEeWdu7LwZb7HXA _DW9BVhAZEeW3er92bhotdw" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flamm.ecore#//Rule"/>
+ <semanticElements xmi:type="ecore:EClass" href="flamm.ecore#//Rule"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_iGE4EARHEeWdu7LwZb7HXA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iGE4EQRHEeWdu7LwZb7HXA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_iGE4EgRHEeWdu7LwZb7HXA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iGE4EwRHEeWdu7LwZb7HXA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iGE4FARHEeWdu7LwZb7HXA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_iG7zsARHEeWdu7LwZb7HXA" name="specificity : EInt = -1" visible="false" tooltipText="">
+ <target xmi:type="ecore:EAttribute" href="flamm.ecore#//Rule/specificity"/>
+ <semanticElements xmi:type="ecore:EAttribute" href="flamm.ecore#//Rule/specificity"/>
+ <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_6pXnsQRHEeWdu7LwZb7HXA"/>
+ <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_6A8BNBDpEeW3er92bhotdw" labelFormat="bold" labelAlignment="LEFT" description="_6A8BMhDpEeW3er92bhotdw">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6A8BNRDpEeW3er92bhotdw"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_6A8BNhDpEeW3er92bhotdw"/>
+ <color xmi:type="viewpoint:RGBValues" xmi:id="_6A8BNxDpEeW3er92bhotdw"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+ </ownedElements>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_iGGtQARHEeWdu7LwZb7HXA" name="SimpleComponent" tooltipText="" outgoingEdges="_iHnwNgRHEeWdu7LwZb7HXA _iHwTEARHEeWdu7LwZb7HXA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flamm.ecore#//SimpleComponent"/>
+ <semanticElements xmi:type="ecore:EClass" href="flamm.ecore#//SimpleComponent"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_iGH7YARHEeWdu7LwZb7HXA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iGH7YQRHEeWdu7LwZb7HXA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_iGH7YgRHEeWdu7LwZb7HXA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iGH7YwRHEeWdu7LwZb7HXA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iGH7ZARHEeWdu7LwZb7HXA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_iGIicARHEeWdu7LwZb7HXA" name="Expression" tooltipText="" outgoingEdges="_iHo-VgRHEeWdu7LwZb7HXA _iHqzgARHEeWdu7LwZb7HXA" incomingEdges="_iHlT8ARHEeWdu7LwZb7HXA _iHmiEARHEeWdu7LwZb7HXA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flamm.ecore#//Expression"/>
+ <semanticElements xmi:type="ecore:EClass" href="flamm.ecore#//Expression"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_iGKXoARHEeWdu7LwZb7HXA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iGKXoQRHEeWdu7LwZb7HXA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_iGKXogRHEeWdu7LwZb7HXA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iGKXowRHEeWdu7LwZb7HXA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iGKXpARHEeWdu7LwZb7HXA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_iGLlwARHEeWdu7LwZb7HXA" name="Failure" tooltipText="" outgoingEdges="_rhFJsDtMEeWdhpt7FCQG8A" incomingEdges="_iHhCgARHEeWdu7LwZb7HXA _iHiQoARHEeWdu7LwZb7HXA _iHqzgARHEeWdu7LwZb7HXA _rhFJsDtMEeWdhpt7FCQG8A" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flamm.ecore#//Failure"/>
+ <semanticElements xmi:type="ecore:EClass" href="flamm.ecore#//Failure"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_iGMz4ARHEeWdu7LwZb7HXA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iGMz4QRHEeWdu7LwZb7HXA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_iGMz4gRHEeWdu7LwZb7HXA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iGMz4wRHEeWdu7LwZb7HXA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iGMz5ARHEeWdu7LwZb7HXA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_iG9o4ARHEeWdu7LwZb7HXA" name="type : FailureType = noFailure" visible="false" tooltipText="">
+ <target xmi:type="ecore:EAttribute" href="flamm.ecore#//Failure/type"/>
+ <semanticElements xmi:type="ecore:EAttribute" href="flamm.ecore#//Failure/type"/>
+ <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_6pXnsARHEeWdu7LwZb7HXA"/>
+ <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_6A9PVBDpEeW3er92bhotdw" labelFormat="bold" labelAlignment="LEFT" description="_6A9PUhDpEeW3er92bhotdw">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6A9PVRDpEeW3er92bhotdw"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_6A9PVhDpEeW3er92bhotdw"/>
+ <color xmi:type="viewpoint:RGBValues" xmi:id="_6A9PVxDpEeW3er92bhotdw"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+ </ownedElements>
+ <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_iG-3BARHEeWdu7LwZb7HXA" name="id : EString" visible="false" tooltipText="">
+ <target xmi:type="ecore:EAttribute" href="flamm.ecore#//Failure/id"/>
+ <semanticElements xmi:type="ecore:EAttribute" href="flamm.ecore#//Failure/id"/>
+ <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_6pXnsgRHEeWdu7LwZb7HXA"/>
+ <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_iG_eEARHEeWdu7LwZb7HXA" labelAlignment="LEFT">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iG_eEQRHEeWdu7LwZb7HXA"/>
+ <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_iG_eEgRHEeWdu7LwZb7HXA"/>
+ <color xmi:type="viewpoint:RGBValues" xmi:id="_iG_eEwRHEeWdu7LwZb7HXA"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+ </ownedElements>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHYfoARHEeWdu7LwZb7HXA" name="[0..*] inputPorts" sourceNode="_iFuSwARHEeWdu7LwZb7HXA" targetNode="_iGAmoARHEeWdu7LwZb7HXA">
+ <target xmi:type="ecore:EReference" href="flamm.ecore#//Component/inputPorts"/>
+ <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Component/inputPorts"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BBgxhDpEeW3er92bhotdw" description="_6BBgwhDpEeW3er92bhotdw" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BBgxxDpEeW3er92bhotdw"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_6BBgyBDpEeW3er92bhotdw" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BBgyRDpEeW3er92bhotdw"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BBgyhDpEeW3er92bhotdw" labelSize="6" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BBgyxDpEeW3er92bhotdw" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHemQARHEeWdu7LwZb7HXA" name="[0..*] outputPorts" sourceNode="_iFuSwARHEeWdu7LwZb7HXA" targetNode="_iGAmoARHEeWdu7LwZb7HXA">
+ <target xmi:type="ecore:EReference" href="flamm.ecore#//Component/outputPorts"/>
+ <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Component/outputPorts"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BCu4BDpEeW3er92bhotdw" description="_6BCH0hDpEeW3er92bhotdw" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BCu4RDpEeW3er92bhotdw"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_6BCu4hDpEeW3er92bhotdw" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BCu4xDpEeW3er92bhotdw"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BCu5BDpEeW3er92bhotdw" labelSize="6" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BCu5RDpEeW3er92bhotdw" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHf0YARHEeWdu7LwZb7HXA" name="[0..*] connectedPorts" sourceNode="_iGAmoARHEeWdu7LwZb7HXA" targetNode="_iGAmoARHEeWdu7LwZb7HXA">
+ <target xmi:type="ecore:EReference" href="flamm.ecore#//Port/connectedPorts"/>
+ <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Port/connectedPorts"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_iHgbcARHEeWdu7LwZb7HXA" routingStyle="manhattan">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_iHgbcQRHEeWdu7LwZb7HXA"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_iHgbcgRHEeWdu7LwZb7HXA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iHgbcwRHEeWdu7LwZb7HXA"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_iHgbdARHEeWdu7LwZb7HXA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iHgbdQRHEeWdu7LwZb7HXA" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHhCgARHEeWdu7LwZb7HXA" name="[0..*] failures" sourceNode="_iGAmoARHEeWdu7LwZb7HXA" targetNode="_iGLlwARHEeWdu7LwZb7HXA">
+ <target xmi:type="ecore:EReference" href="flamm.ecore#//Port/failures"/>
+ <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Port/failures"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BFLJBDpEeW3er92bhotdw" description="_6BFLIBDpEeW3er92bhotdw" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BFLJRDpEeW3er92bhotdw"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_6BFLJhDpEeW3er92bhotdw" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BFLJxDpEeW3er92bhotdw"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BFLKBDpEeW3er92bhotdw" labelSize="6" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BFLKRDpEeW3er92bhotdw" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHiQoARHEeWdu7LwZb7HXA" name="[0..*] newFailures" visible="false" sourceNode="_iGAmoARHEeWdu7LwZb7HXA" targetNode="_iGLlwARHEeWdu7LwZb7HXA">
+ <target xmi:type="ecore:EReference" href="flamm.ecore#//Port/newFailures"/>
+ <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Port/newFailures"/>
+ <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_suD4gARJEeWdu7LwZb7HXA"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BFyNhDpEeW3er92bhotdw" description="_6BFyMhDpEeW3er92bhotdw" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BFyNxDpEeW3er92bhotdw"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_6BFyOBDpEeW3er92bhotdw" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BFyORDpEeW3er92bhotdw"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BFyOhDpEeW3er92bhotdw" labelSize="6" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BFyOxDpEeW3er92bhotdw" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHjexgRHEeWdu7LwZb7HXA" name="[1..1] owner" visible="false" sourceNode="_iGAmoARHEeWdu7LwZb7HXA" targetNode="_iFuSwARHEeWdu7LwZb7HXA">
+ <target xmi:type="ecore:EReference" href="flamm.ecore#//Port/owner"/>
+ <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Port/owner"/>
+ <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_umkkMARHEeWdu7LwZb7HXA"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BHAUBDpEeW3er92bhotdw" description="_6BGZQhDpEeW3er92bhotdw" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BHAURDpEeW3er92bhotdw"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_6BHAUhDpEeW3er92bhotdw" labelFormat="bold" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BHAUxDpEeW3er92bhotdw"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BHAVBDpEeW3er92bhotdw" labelSize="6" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BHAVRDpEeW3er92bhotdw" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHlT8ARHEeWdu7LwZb7HXA" name="[0..*] inputExpression" sourceNode="_iGDC4ARHEeWdu7LwZb7HXA" targetNode="_iGIicARHEeWdu7LwZb7HXA">
+ <target xmi:type="ecore:EReference" href="flamm.ecore#//Rule/inputExpression"/>
+ <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Rule/inputExpression"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BI1hhDpEeW3er92bhotdw" description="_6BI1ghDpEeW3er92bhotdw" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BJckBDpEeW3er92bhotdw"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_6BJckRDpEeW3er92bhotdw" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BJckhDpEeW3er92bhotdw"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BJckxDpEeW3er92bhotdw" labelSize="6" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BJclBDpEeW3er92bhotdw" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHmiEARHEeWdu7LwZb7HXA" name="[0..*] outputExpression" sourceNode="_iGDC4ARHEeWdu7LwZb7HXA" targetNode="_iGIicARHEeWdu7LwZb7HXA">
+ <target xmi:type="ecore:EReference" href="flamm.ecore#//Rule/outputExpression"/>
+ <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Rule/outputExpression"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BKDphDpEeW3er92bhotdw" description="_6BKDohDpEeW3er92bhotdw" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BKDpxDpEeW3er92bhotdw"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_6BKDqBDpEeW3er92bhotdw" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BKDqRDpEeW3er92bhotdw"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BKDqhDpEeW3er92bhotdw" labelSize="6" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BKDqxDpEeW3er92bhotdw" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHnwNgRHEeWdu7LwZb7HXA" name="[0..*] rules" sourceNode="_iGGtQARHEeWdu7LwZb7HXA" targetNode="_iGDC4ARHEeWdu7LwZb7HXA">
+ <target xmi:type="ecore:EReference" href="flamm.ecore#//SimpleComponent/rules"/>
+ <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//SimpleComponent/rules"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BLRwxDpEeW3er92bhotdw" description="_6BKqshDpEeW3er92bhotdw" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BLRxBDpEeW3er92bhotdw"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_6BLRxRDpEeW3er92bhotdw" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BLRxhDpEeW3er92bhotdw"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BLRxxDpEeW3er92bhotdw" labelSize="6" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BLRyBDpEeW3er92bhotdw" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHo-VgRHEeWdu7LwZb7HXA" name="[1..1] port" sourceNode="_iGIicARHEeWdu7LwZb7HXA" targetNode="_iGAmoARHEeWdu7LwZb7HXA">
+ <target xmi:type="ecore:EReference" href="flamm.ecore#//Expression/port"/>
+ <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Expression/port"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BL41hDpEeW3er92bhotdw" description="_6BL40hDpEeW3er92bhotdw" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BL41xDpEeW3er92bhotdw"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_6BL42BDpEeW3er92bhotdw" labelFormat="bold" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BL42RDpEeW3er92bhotdw"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BL42hDpEeW3er92bhotdw" labelSize="6" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BL42xDpEeW3er92bhotdw" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHqzgARHEeWdu7LwZb7HXA" name="[0..*] failures" sourceNode="_iGIicARHEeWdu7LwZb7HXA" targetNode="_iGLlwARHEeWdu7LwZb7HXA">
+ <target xmi:type="ecore:EReference" href="flamm.ecore#//Expression/failures"/>
+ <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Expression/failures"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BMf5hDpEeW3er92bhotdw" description="_6BMf4hDpEeW3er92bhotdw" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BMf5xDpEeW3er92bhotdw"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_6BMf6BDpEeW3er92bhotdw" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BMf6RDpEeW3er92bhotdw"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BMf6hDpEeW3er92bhotdw" labelSize="6" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BMf6xDpEeW3er92bhotdw" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHsosARHEeWdu7LwZb7HXA" sourceNode="_iFuSwARHEeWdu7LwZb7HXA" targetNode="_iF-xcARHEeWdu7LwZb7HXA">
+ <target xmi:type="ecore:EClass" href="flamm.ecore#//Component"/>
+ <semanticElements xmi:type="ecore:EGenericType" href="flamm.ecore#//Component/@eGenericSuperTypes.0"/>
+ <semanticElements xmi:type="ecore:EGenericType" href="flamm.ecore#//Component/@eGenericSuperTypes.1"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_iHtPwARHEeWdu7LwZb7HXA" targetArrow="InputClosedArrow" routingStyle="tree">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_iHtPwQRHEeWdu7LwZb7HXA" red="136" green="136" blue="136"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_iHtPwgRHEeWdu7LwZb7HXA" labelFormat="italic" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iHtPwwRHEeWdu7LwZb7HXA"/>
+ </beginLabelStyle>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_iHtPxARHEeWdu7LwZb7HXA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iHtPxQRHEeWdu7LwZb7HXA"/>
+ </centerLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHt20ARHEeWdu7LwZb7HXA" sourceNode="_iF88QARHEeWdu7LwZb7HXA" targetNode="_iFuSwARHEeWdu7LwZb7HXA">
+ <target xmi:type="ecore:EClass" href="flamm.ecore#//CompositeComponent"/>
+ <semanticElements xmi:type="ecore:EGenericType" href="flamm.ecore#//CompositeComponent/@eGenericSuperTypes.0"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_iHud4ARHEeWdu7LwZb7HXA" targetArrow="InputClosedArrow" routingStyle="tree">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_iHud4QRHEeWdu7LwZb7HXA" red="136" green="136" blue="136"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_iHud4gRHEeWdu7LwZb7HXA" labelFormat="italic" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iHud4wRHEeWdu7LwZb7HXA"/>
+ </beginLabelStyle>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_iHud5ARHEeWdu7LwZb7HXA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iHud5QRHEeWdu7LwZb7HXA"/>
+ </centerLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHvE8ARHEeWdu7LwZb7HXA" sourceNode="_iGAmoARHEeWdu7LwZb7HXA" targetNode="_iF-xcARHEeWdu7LwZb7HXA">
+ <target xmi:type="ecore:EClass" href="flamm.ecore#//Port"/>
+ <semanticElements xmi:type="ecore:EGenericType" href="flamm.ecore#//Port/@eGenericSuperTypes.0"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_iHvsAARHEeWdu7LwZb7HXA" targetArrow="InputClosedArrow" routingStyle="tree">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_iHvsAQRHEeWdu7LwZb7HXA" red="136" green="136" blue="136"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_iHvsAgRHEeWdu7LwZb7HXA" labelFormat="italic" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iHvsAwRHEeWdu7LwZb7HXA"/>
+ </beginLabelStyle>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_iHvsBARHEeWdu7LwZb7HXA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iHvsBQRHEeWdu7LwZb7HXA"/>
+ </centerLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHwTEARHEeWdu7LwZb7HXA" sourceNode="_iGGtQARHEeWdu7LwZb7HXA" targetNode="_iFuSwARHEeWdu7LwZb7HXA">
+ <target xmi:type="ecore:EClass" href="flamm.ecore#//SimpleComponent"/>
+ <semanticElements xmi:type="ecore:EGenericType" href="flamm.ecore#//SimpleComponent/@eGenericSuperTypes.0"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_iHwTEQRHEeWdu7LwZb7HXA" targetArrow="InputClosedArrow" routingStyle="tree">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_iHwTEgRHEeWdu7LwZb7HXA" red="136" green="136" blue="136"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_iHwTEwRHEeWdu7LwZb7HXA" labelFormat="italic" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iHwTFARHEeWdu7LwZb7HXA"/>
+ </beginLabelStyle>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_iHwTFQRHEeWdu7LwZb7HXA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iHwTFgRHEeWdu7LwZb7HXA"/>
+ </centerLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHxhMARHEeWdu7LwZb7HXA" sourceNode="_iFuSwARHEeWdu7LwZb7HXA" targetNode="_iF88QARHEeWdu7LwZb7HXA" beginLabel="[0..*] components" endLabel="[0..1] parent">
+ <target xmi:type="ecore:EReference" href="flamm.ecore#//Component/parent"/>
+ <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//CompositeComponent/components"/>
+ <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Component/parent"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BgB5hDpEeW3er92bhotdw" description="_6BgB4hDpEeW3er92bhotdw" sourceArrow="InputArrow" targetArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BgB5xDpEeW3er92bhotdw"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_6BgB6BDpEeW3er92bhotdw" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BgB6RDpEeW3er92bhotdw"/>
+ </beginLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BgB6hDpEeW3er92bhotdw" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BgB6xDpEeW3er92bhotdw"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_DVCVwBAZEeW3er92bhotdw" name="Connection" tooltipText="" outgoingEdges="_DW9BVhAZEeW3er92bhotdw _-bHthhDpEeW3er92bhotdw" incomingEdges="_DW4v4BAZEeW3er92bhotdw _GnKL0BAvEeW3er92bhotdw _JaOwYBAvEeW3er92bhotdw" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flamm.ecore#//Connection"/>
+ <semanticElements xmi:type="ecore:EClass" href="flamm.ecore#//Connection"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_DVEyABAZEeW3er92bhotdw" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_DVEyARAZEeW3er92bhotdw"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_DVEyAhAZEeW3er92bhotdw"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_DVEyAxAZEeW3er92bhotdw" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_DVEyBBAZEeW3er92bhotdw" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_DW4v4BAZEeW3er92bhotdw" name="[0..*] connections" sourceNode="_iF88QARHEeWdu7LwZb7HXA" targetNode="_DVCVwBAZEeW3er92bhotdw">
+ <target xmi:type="ecore:EReference" href="flamm.ecore#//CompositeComponent/connections"/>
+ <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//CompositeComponent/connections"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BDV9BDpEeW3er92bhotdw" description="_6BDV8BDpEeW3er92bhotdw" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BDV9RDpEeW3er92bhotdw"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_6BDV9hDpEeW3er92bhotdw" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BDV9xDpEeW3er92bhotdw"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BDV-BDpEeW3er92bhotdw" labelSize="6" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BDV-RDpEeW3er92bhotdw" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_DW9BVhAZEeW3er92bhotdw" name="[0..*] rules" sourceNode="_DVCVwBAZEeW3er92bhotdw" targetNode="_iGDC4ARHEeWdu7LwZb7HXA">
+ <target xmi:type="ecore:EReference" href="flamm.ecore#//Connection/rules"/>
+ <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Connection/rules"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_DW9oYBAZEeW3er92bhotdw" routingStyle="manhattan">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_DW9oYRAZEeW3er92bhotdw"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_DW9oYhAZEeW3er92bhotdw" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_DW9oYxAZEeW3er92bhotdw"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_DW9oZBAZEeW3er92bhotdw" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_DW9oZRAZEeW3er92bhotdw" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_GnKL0BAvEeW3er92bhotdw" sourceNode="_iGAmoARHEeWdu7LwZb7HXA" targetNode="_DVCVwBAZEeW3er92bhotdw" beginLabel="[1..1] from" endLabel="[1..1] outgoingConnections">
+ <target xmi:type="ecore:EReference" href="flamm.ecore#//Port/outgoingConnections"/>
+ <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Connection/from"/>
+ <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Port/outgoingConnections"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BcXhhDpEeW3er92bhotdw" description="_6BcXghDpEeW3er92bhotdw" sourceArrow="InputArrow" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BcXhxDpEeW3er92bhotdw"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_6BcXiBDpEeW3er92bhotdw" labelFormat="bold" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BcXiRDpEeW3er92bhotdw"/>
+ </beginLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BcXihDpEeW3er92bhotdw" labelFormat="bold" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BcXixDpEeW3er92bhotdw"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_JaOwYBAvEeW3er92bhotdw" sourceNode="_iGAmoARHEeWdu7LwZb7HXA" targetNode="_DVCVwBAZEeW3er92bhotdw" beginLabel="[1..1] to" endLabel="[1..1] incomingConnections">
+ <target xmi:type="ecore:EReference" href="flamm.ecore#//Port/incomingConnections"/>
+ <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Port/incomingConnections"/>
+ <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Connection/to"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BezwBDpEeW3er92bhotdw" description="_6BdlohDpEeW3er92bhotdw" sourceArrow="InputArrow" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BezwRDpEeW3er92bhotdw"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_6BezwhDpEeW3er92bhotdw" labelFormat="bold" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BezwxDpEeW3er92bhotdw"/>
+ </beginLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BezxBDpEeW3er92bhotdw" labelFormat="bold" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BezxRDpEeW3er92bhotdw"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_-ajFwBDpEeW3er92bhotdw" name="FlaBehaviour" tooltipText="" incomingEdges="_-bEqMBDpEeW3er92bhotdw _-bHthhDpEeW3er92bhotdw" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flamm.ecore#//FlaBehaviour"/>
+ <semanticElements xmi:type="ecore:EClass" href="flamm.ecore#//FlaBehaviour"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_-ak68BDpEeW3er92bhotdw" labelFormat="italic" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_interface.gif" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_-ak68RDpEeW3er92bhotdw"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.0/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_-ak68hDpEeW3er92bhotdw" red="125" green="125" blue="125"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_-ak68xDpEeW3er92bhotdw" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_-ak69BDpEeW3er92bhotdw" red="228" green="228" blue="228"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_-a8HUBDpEeW3er92bhotdw" name="propagateFailures()" tooltipText="propagateFailures()">
+ <target xmi:type="ecore:EOperation" href="flamm.ecore#//FlaBehaviour/propagateFailures"/>
+ <semanticElements xmi:type="ecore:EOperation" href="flamm.ecore#//FlaBehaviour/propagateFailures"/>
+ <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_-a8uYBDpEeW3er92bhotdw" labelAlignment="LEFT">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_-a8uYRDpEeW3er92bhotdw"/>
+ <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_-a8uYhDpEeW3er92bhotdw"/>
+ <color xmi:type="viewpoint:RGBValues" xmi:id="_-a8uYxDpEeW3er92bhotdw"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']"/>
+ </ownedElements>
+ <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_-a9VcBDpEeW3er92bhotdw" name="initialize(initNoFailure EBoolean)" tooltipText="initialize(initNoFailure)">
+ <target xmi:type="ecore:EOperation" href="flamm.ecore#//FlaBehaviour/initialize"/>
+ <semanticElements xmi:type="ecore:EOperation" href="flamm.ecore#//FlaBehaviour/initialize"/>
+ <semanticElements xmi:type="ecore:EParameter" href="flamm.ecore#//FlaBehaviour/initialize/initNoFailure"/>
+ <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_-a9VcRDpEeW3er92bhotdw" labelAlignment="LEFT">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_-a9VchDpEeW3er92bhotdw"/>
+ <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_-a9VcxDpEeW3er92bhotdw"/>
+ <color xmi:type="viewpoint:RGBValues" xmi:id="_-a9VdBDpEeW3er92bhotdw"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']"/>
+ </ownedElements>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_-bEqMBDpEeW3er92bhotdw" sourceNode="_iFuSwARHEeWdu7LwZb7HXA" targetNode="_-ajFwBDpEeW3er92bhotdw">
+ <target xmi:type="ecore:EClass" href="flamm.ecore#//Component"/>
+ <semanticElements xmi:type="ecore:EGenericType" href="flamm.ecore#//Component/@eGenericSuperTypes.0"/>
+ <semanticElements xmi:type="ecore:EGenericType" href="flamm.ecore#//Component/@eGenericSuperTypes.1"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_-bHtgBDpEeW3er92bhotdw" lineStyle="dash" targetArrow="InputClosedArrow" routingStyle="manhattan">
+ <customFeatures>routingStyle</customFeatures>
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@conditionnalStyles.0/@style"/>
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_-bHtgRDpEeW3er92bhotdw" red="136" green="136" blue="136"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_-bHtghDpEeW3er92bhotdw" labelFormat="italic" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_-bHtgxDpEeW3er92bhotdw"/>
+ </beginLabelStyle>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_-bHthBDpEeW3er92bhotdw" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_-bHthRDpEeW3er92bhotdw"/>
+ </centerLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_-bHthhDpEeW3er92bhotdw" sourceNode="_DVCVwBAZEeW3er92bhotdw" targetNode="_-ajFwBDpEeW3er92bhotdw">
+ <target xmi:type="ecore:EClass" href="flamm.ecore#//Connection"/>
+ <semanticElements xmi:type="ecore:EGenericType" href="flamm.ecore#//Connection/@eGenericSuperTypes.0"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_-bIUkBDpEeW3er92bhotdw" lineStyle="dash" targetArrow="InputClosedArrow" routingStyle="manhattan">
+ <customFeatures>routingStyle</customFeatures>
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@conditionnalStyles.0/@style"/>
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_-bIUkRDpEeW3er92bhotdw" red="136" green="136" blue="136"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_-bIUkhDpEeW3er92bhotdw" labelFormat="italic" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_-bIUkxDpEeW3er92bhotdw"/>
+ </beginLabelStyle>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_-bIUlBDpEeW3er92bhotdw" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_-bIUlRDpEeW3er92bhotdw"/>
+ </centerLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_rhFJsDtMEeWdhpt7FCQG8A" name="[0..*] previousFailures" sourceNode="_iGLlwARHEeWdu7LwZb7HXA" targetNode="_iGLlwARHEeWdu7LwZb7HXA">
+ <target xmi:type="ecore:EReference" href="flamm.ecore#//Failure/previousFailures"/>
+ <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Failure/previousFailures"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_rhGX0DtMEeWdhpt7FCQG8A" routingStyle="manhattan">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_rhG-4DtMEeWdhpt7FCQG8A"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_rhG-4TtMEeWdhpt7FCQG8A" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_rhG-4jtMEeWdhpt7FCQG8A"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_rhG-4ztMEeWdhpt7FCQG8A" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_rhG-5DtMEeWdhpt7FCQG8A" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+ <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_cDcnRARHEeWdu7LwZb7HXA"/>
+ <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
+ <target xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+ </ownedRepresentations>
+ <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_cTOIoARHEeWdu7LwZb7HXA" name="FailureTypes class diagram">
+ <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_cTOvsARHEeWdu7LwZb7HXA" source="GMF_DIAGRAMS">
+ <data xmi:type="notation:Diagram" xmi:id="_cTOvsQRHEeWdu7LwZb7HXA" type="Sirius" element="_cTOIoARHEeWdu7LwZb7HXA" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_cTPWwARHEeWdu7LwZb7HXA" type="2001" element="_cTOIoQRHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_cTP90ARHEeWdu7LwZb7HXA" type="5002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cTP90QRHEeWdu7LwZb7HXA" y="5"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_cTQk4ARHEeWdu7LwZb7HXA" type="3005" element="_cTOIogRHEeWdu7LwZb7HXA">
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_cTQk4QRHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cTQk4gRHEeWdu7LwZb7HXA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_cTPWwQRHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cTPWwgRHEeWdu7LwZb7HXA" width="672" height="67"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_cTOvsgRHEeWdu7LwZb7HXA"/>
+ </data>
+ </ownedAnnotationEntries>
+ <ownedDiagramElements xmi:type="diagram:DNode" xmi:id="_cTOIoQRHEeWdu7LwZb7HXA" width="-1" height="-1">
+ <target xmi:type="ecore:EPackage" href="flamm.ecore#//FailureTypes"/>
+ <semanticElements xmi:type="ecore:EPackage" href="flamm.ecore#//FailureTypes"/>
+ <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_cTOIogRHEeWdu7LwZb7HXA" showIcon="false" labelPosition="node" workspacePath="/org.eclipse.emf.ecoretools.design/icons/full/back/empty.svg">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_cTOIowRHEeWdu7LwZb7HXA"/>
+ <description xmi:type="style:WorkspaceImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_cTOIpARHEeWdu7LwZb7HXA"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']"/>
+ </ownedDiagramElements>
+ <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+ <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_cTOIpQRHEeWdu7LwZb7HXA"/>
+ <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
+ <target xmi:type="ecore:EPackage" href="flamm.ecore#//FailureTypes"/>
+ </ownedRepresentations>
+ <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_cTa88ARHEeWdu7LwZb7HXA" name="ecore class diagram">
+ <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_cTbkAARHEeWdu7LwZb7HXA" source="GMF_DIAGRAMS">
+ <data xmi:type="notation:Diagram" xmi:id="_cTbkAQRHEeWdu7LwZb7HXA" type="Sirius" element="_cTa88ARHEeWdu7LwZb7HXA" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_cTbkAwRHEeWdu7LwZb7HXA" type="2001" element="_cTa88QRHEeWdu7LwZb7HXA">
+ <children xmi:type="notation:Node" xmi:id="_cTcyIARHEeWdu7LwZb7HXA" type="5002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cTcyIQRHEeWdu7LwZb7HXA" y="5"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_cTdZMARHEeWdu7LwZb7HXA" type="3005" element="_cTa88gRHEeWdu7LwZb7HXA">
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_cTeAQARHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cTeAQQRHEeWdu7LwZb7HXA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_cTbkBARHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cTbkBQRHEeWdu7LwZb7HXA" width="672" height="67"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_cTbkAgRHEeWdu7LwZb7HXA"/>
+ </data>
+ </ownedAnnotationEntries>
+ <ownedDiagramElements xmi:type="diagram:DNode" xmi:id="_cTa88QRHEeWdu7LwZb7HXA" width="-1" height="-1">
+ <target xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+ <semanticElements xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+ <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_cTa88gRHEeWdu7LwZb7HXA" showIcon="false" labelPosition="node" workspacePath="/org.eclipse.emf.ecoretools.design/icons/full/back/empty.svg">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_cTa88wRHEeWdu7LwZb7HXA"/>
+ <description xmi:type="style:WorkspaceImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_cTa89ARHEeWdu7LwZb7HXA"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']"/>
+ </ownedDiagramElements>
+ <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+ <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_cTa89QRHEeWdu7LwZb7HXA"/>
+ <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
+ <target xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+ </ownedRepresentations>
+ <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
+ </ownedViews>
+</viewpoint:DAnalysis>
diff --git a/plugins/org.polarsys.chess.fla.flamm/model/flamm.ecore b/plugins/org.polarsys.chess.fla.flamm/model/flamm.ecore
new file mode 100644
index 0000000..d849e92
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/model/flamm.ecore
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="flamm" nsURI="http://www.polarsys.org/chess/fla/flamm" nsPrefix="flamm">
+ <eClassifiers xsi:type="ecore:EClass" name="NamedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FlaBehaviour" abstract="true" interface="true">
+ <eOperations name="propagateFailures"/>
+ <eOperations name="initialize">
+ <eParameters name="initNoFailure" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Component" abstract="true" eSuperTypes="#//NamedElement #//FlaBehaviour">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inputPorts" upperBound="-1"
+ eType="#//Port" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="outputPorts" upperBound="-1"
+ eType="#//Port" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//CompositeComponent"
+ eOpposite="#//CompositeComponent/components"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CompositeComponent" eSuperTypes="#//Component">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="components" upperBound="-1"
+ eType="#//Component" containment="true" eOpposite="#//Component/parent"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="connections" upperBound="-1"
+ eType="#//Connection" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SimpleComponent" eSuperTypes="#//Component">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="rules" upperBound="-1"
+ eType="#//Rule" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Port" eSuperTypes="#//NamedElement">
+ <eOperations name="propagateFailures"/>
+ <eOperations name="initialize"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="connectedPorts" upperBound="-1"
+ eType="#//Port"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="failures" ordered="false"
+ upperBound="-1" eType="#//Failure" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="newFailures" ordered="false"
+ upperBound="-1" eType="#//Failure" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owner" lowerBound="1" eType="#//Component"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="incomingConnections" lowerBound="1"
+ eType="#//Connection" eOpposite="#//Connection/to"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="outgoingConnections" lowerBound="1"
+ eType="#//Connection" eOpposite="#//Connection/from"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Connection" eSuperTypes="#//FlaBehaviour">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="from" lowerBound="1" eType="#//Port"
+ eOpposite="#//Port/outgoingConnections"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="to" lowerBound="1" eType="#//Port"
+ eOpposite="#//Port/incomingConnections"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="rules" upperBound="-1"
+ eType="#//Rule"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Rule">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inputExpression" upperBound="-1"
+ eType="#//Expression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="outputExpression" upperBound="-1"
+ eType="#//Expression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specificity" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" changeable="false"
+ transient="true" defaultValueLiteral="-1"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="port" lowerBound="1" eType="#//Port"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="failures" upperBound="-1"
+ eType="#//Failure" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Failure">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" eType="#//FailureTypes/FailureType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="acidAvoidable" eType="#//ACIDavoidable"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="acidMitigation" eType="#//ACIDmitigation"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="previousFailures" upperBound="-1"
+ eType="#//Failure"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ACIDavoidable">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="a" eType="#//FailureTypes/A_avoidable"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="c" eType="#//FailureTypes/C_avoidable"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="i" eType="#//FailureTypes/I_avoidable"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="d" eType="#//FailureTypes/D_avoidable"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ACIDmitigation">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="a" eType="#//FailureTypes/A_mitigation"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="c" eType="#//FailureTypes/C_mitigation"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="i" eType="#//FailureTypes/I_mitigation"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="d" eType="#//FailureTypes/D_mitigation"/>
+ </eClassifiers>
+ <eSubpackages name="FailureTypes" nsURI="http://www.polarsys.org/chess/fla/flamm/FailureTypes"
+ nsPrefix="FailureTypes">
+ <eClassifiers xsi:type="ecore:EEnum" name="FailureType">
+ <eLiterals name="noFailure"/>
+ <eLiterals name="failure" value="1"/>
+ <eLiterals name="variable" value="2"/>
+ <eLiterals name="wildcard" value="3"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="A_avoidable">
+ <eLiterals name="unspecified"/>
+ <eLiterals name="incompletion" value="1"/>
+ <eLiterals name="none" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="C_avoidable">
+ <eLiterals name="unspecified"/>
+ <eLiterals name="inconsistency" value="1"/>
+ <eLiterals name="none" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="I_avoidable">
+ <eLiterals name="unspecified"/>
+ <eLiterals name="interference" value="1"/>
+ <eLiterals name="none" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="D_avoidable">
+ <eLiterals name="unspecified"/>
+ <eLiterals name="impermanence" value="1"/>
+ <eLiterals name="none" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="A_mitigation">
+ <eLiterals name="unspecified"/>
+ <eLiterals name="all_or_nothing" value="1"/>
+ <eLiterals name="all_or_compensation" value="2"/>
+ <eLiterals name="none" value="3"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="C_mitigation">
+ <eLiterals name="unspecified"/>
+ <eLiterals name="full_consistency" value="1"/>
+ <eLiterals name="range_violation_allowed" value="2"/>
+ <eLiterals name="none" value="3"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="I_mitigation">
+ <eLiterals name="unspecified"/>
+ <eLiterals name="portable_level" value="1"/>
+ <eLiterals name="serializable" value="2"/>
+ <eLiterals name="none" value="3"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="D_mitigation">
+ <eLiterals name="unspecified"/>
+ <eLiterals name="no_loss" value="1"/>
+ <eLiterals name="partial_loss_allowed" value="2"/>
+ <eLiterals name="none" value="3"/>
+ </eClassifiers>
+ </eSubpackages>
+</ecore:EPackage>
diff --git a/plugins/org.polarsys.chess.fla.flamm/model/flamm.genmodel b/plugins/org.polarsys.chess.fla.flamm/model/flamm.genmodel
new file mode 100644
index 0000000..786c706
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/model/flamm.genmodel
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.polarsys.chess.fla.flamm/src" modelPluginID="org.polarsys.chess.fla.flamm"
+ modelName="Flamm" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+ suppressEMFTypes="true" suppressInterfaces="true" booleanFlagsField="" importerID="org.eclipse.emf.importer.ecore"
+ complianceLevel="6.0" copyrightFields="false" publicConstructors="true" interfaceNamePattern=""
+ classNamePattern="" operationReflection="true" importOrganizing="true">
+ <foreignModel>flamm.ecore</foreignModel>
+ <genPackages prefix="Flamm" basePackage="org.polarsys.chess.fla" resource="XML"
+ disposableProviderFactory="true" ecorePackage="flamm.ecore#/" publicationLocation="">
+ <genClasses ecoreClass="flamm.ecore#//NamedElement">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//NamedElement/id"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//NamedElement/name"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="flamm.ecore#//FlaBehaviour">
+ <genOperations ecoreOperation="flamm.ecore#//FlaBehaviour/propagateFailures"/>
+ <genOperations ecoreOperation="flamm.ecore#//FlaBehaviour/initialize">
+ <genParameters ecoreParameter="flamm.ecore#//FlaBehaviour/initialize/initNoFailure"/>
+ </genOperations>
+ </genClasses>
+ <genClasses image="false" ecoreClass="flamm.ecore#//Component">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flamm.ecore#//Component/inputPorts"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flamm.ecore#//Component/outputPorts"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference flamm.ecore#//Component/parent"/>
+ </genClasses>
+ <genClasses ecoreClass="flamm.ecore#//CompositeComponent">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flamm.ecore#//CompositeComponent/components"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flamm.ecore#//CompositeComponent/connections"/>
+ </genClasses>
+ <genClasses ecoreClass="flamm.ecore#//SimpleComponent">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flamm.ecore#//SimpleComponent/rules"/>
+ </genClasses>
+ <genClasses ecoreClass="flamm.ecore#//Port">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference flamm.ecore#//Port/connectedPorts"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flamm.ecore#//Port/failures"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flamm.ecore#//Port/newFailures"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference flamm.ecore#//Port/owner"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference flamm.ecore#//Port/incomingConnections"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference flamm.ecore#//Port/outgoingConnections"/>
+ <genOperations ecoreOperation="flamm.ecore#//Port/propagateFailures"/>
+ <genOperations ecoreOperation="flamm.ecore#//Port/initialize"/>
+ </genClasses>
+ <genClasses ecoreClass="flamm.ecore#//Connection">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference flamm.ecore#//Connection/from"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference flamm.ecore#//Connection/to"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference flamm.ecore#//Connection/rules"/>
+ </genClasses>
+ <genClasses ecoreClass="flamm.ecore#//Rule">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flamm.ecore#//Rule/inputExpression"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flamm.ecore#//Rule/outputExpression"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//Rule/specificity"/>
+ </genClasses>
+ <genClasses ecoreClass="flamm.ecore#//Expression">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference flamm.ecore#//Expression/port"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flamm.ecore#//Expression/failures"/>
+ </genClasses>
+ <genClasses ecoreClass="flamm.ecore#//Failure">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//Failure/type"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//Failure/id"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flamm.ecore#//Failure/acidAvoidable"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flamm.ecore#//Failure/acidMitigation"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference flamm.ecore#//Failure/previousFailures"/>
+ </genClasses>
+ <genClasses ecoreClass="flamm.ecore#//ACIDavoidable">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//ACIDavoidable/a"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//ACIDavoidable/c"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//ACIDavoidable/i"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//ACIDavoidable/d"/>
+ </genClasses>
+ <genClasses ecoreClass="flamm.ecore#//ACIDmitigation">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//ACIDmitigation/a"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//ACIDmitigation/c"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//ACIDmitigation/i"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//ACIDmitigation/d"/>
+ </genClasses>
+ <nestedGenPackages prefix="FailureTypes" disposableProviderFactory="true" ecorePackage="flamm.ecore#//FailureTypes">
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="flamm.ecore#//FailureTypes/FailureType">
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/FailureType/noFailure"/>
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/FailureType/failure"/>
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/FailureType/variable"/>
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/FailureType/wildcard"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="flamm.ecore#//FailureTypes/A_avoidable">
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/A_avoidable/unspecified"/>
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/A_avoidable/incompletion"/>
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/A_avoidable/none"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="flamm.ecore#//FailureTypes/C_avoidable">
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/C_avoidable/unspecified"/>
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/C_avoidable/inconsistency"/>
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/C_avoidable/none"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="flamm.ecore#//FailureTypes/I_avoidable">
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/I_avoidable/unspecified"/>
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/I_avoidable/interference"/>
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/I_avoidable/none"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="flamm.ecore#//FailureTypes/D_avoidable">
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/D_avoidable/unspecified"/>
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/D_avoidable/impermanence"/>
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/D_avoidable/none"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="flamm.ecore#//FailureTypes/A_mitigation">
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/A_mitigation/unspecified"/>
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/A_mitigation/all_or_nothing"/>
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/A_mitigation/all_or_compensation"/>
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/A_mitigation/none"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="flamm.ecore#//FailureTypes/C_mitigation">
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/C_mitigation/unspecified"/>
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/C_mitigation/full_consistency"/>
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/C_mitigation/range_violation_allowed"/>
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/C_mitigation/none"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="flamm.ecore#//FailureTypes/I_mitigation">
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/I_mitigation/unspecified"/>
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/I_mitigation/portable_level"/>
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/I_mitigation/serializable"/>
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/I_mitigation/none"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="flamm.ecore#//FailureTypes/D_mitigation">
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/D_mitigation/unspecified"/>
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/D_mitigation/no_loss"/>
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/D_mitigation/partial_loss_allowed"/>
+ <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/D_mitigation/none"/>
+ </genEnums>
+ </nestedGenPackages>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/org.polarsys.chess.fla.flamm/plugin.properties b/plugins/org.polarsys.chess.fla.flamm/plugin.properties
new file mode 100644
index 0000000..646c966
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/plugin.properties
@@ -0,0 +1,16 @@
+###############################################################################
+# CHESS core plugin
+#
+# Copyright (C) 2011-2015
+# Mälardalen University, Sweden
+#
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License
+# v1.0 which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+###############################################################################
+#
+
+pluginName = Flamm Model
+providerName = www.example.org
diff --git a/plugins/org.polarsys.chess.fla.flamm/plugin.xml b/plugins/org.polarsys.chess.fla.flamm/plugin.xml
new file mode 100644
index 0000000..60d50bf
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/plugin.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <!-- @generated flamm -->
+ <package
+ uri="http://www.polarsys.org/chess/fla/flamm"
+ class="org.polarsys.chess.fla.flamm.FlammPackage"
+ genModel="model/flamm.genmodel"/>
+ </extension>
+
+ <extension point="org.eclipse.emf.ecore.extension_parser">
+ <!-- @generated flamm -->
+ <parser
+ type="flamm"
+ class="org.polarsys.chess.fla.flamm.util.FlammResourceFactoryImpl"/>
+ </extension>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <!-- @generated flamm -->
+ <package
+ uri="http://www.polarsys.org/chess/fla/flamm/FailureTypes"
+ class="org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage"
+ genModel="model/flamm.genmodel"/>
+ </extension>
+</plugin>
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/ACIDavoidable.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/ACIDavoidable.java
new file mode 100644
index 0000000..b0b99a1
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/ACIDavoidable.java
@@ -0,0 +1,398 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.polarsys.chess.fla.flamm.FailureTypes.A_avoidable;
+import org.polarsys.chess.fla.flamm.FailureTypes.C_avoidable;
+import org.polarsys.chess.fla.flamm.FailureTypes.D_avoidable;
+import org.polarsys.chess.fla.flamm.FailureTypes.I_avoidable;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>ACI Davoidable</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flamm.ACIDavoidable#getA <em>A</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flamm.ACIDavoidable#getC <em>C</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flamm.ACIDavoidable#getI <em>I</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flamm.ACIDavoidable#getD <em>D</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDavoidable()
+ * @model kind="class"
+ * @generated
+ */
+public class ACIDavoidable extends MinimalEObjectImpl.Container implements EObject {
+ /**
+ * The default value of the '{@link #getA() <em>A</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getA()
+ * @generated
+ * @ordered
+ */
+ protected static final A_avoidable A_EDEFAULT = A_avoidable.UNSPECIFIED;
+
+ /**
+ * The cached value of the '{@link #getA() <em>A</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getA()
+ * @generated
+ * @ordered
+ */
+ protected A_avoidable a = A_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getC() <em>C</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getC()
+ * @generated
+ * @ordered
+ */
+ protected static final C_avoidable C_EDEFAULT = C_avoidable.UNSPECIFIED;
+
+ /**
+ * The cached value of the '{@link #getC() <em>C</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getC()
+ * @generated
+ * @ordered
+ */
+ protected C_avoidable c = C_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getI() <em>I</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getI()
+ * @generated
+ * @ordered
+ */
+ protected static final I_avoidable I_EDEFAULT = I_avoidable.UNSPECIFIED;
+
+ /**
+ * The cached value of the '{@link #getI() <em>I</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getI()
+ * @generated
+ * @ordered
+ */
+ protected I_avoidable i = I_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getD() <em>D</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getD()
+ * @generated
+ * @ordered
+ */
+ protected static final D_avoidable D_EDEFAULT = D_avoidable.UNSPECIFIED;
+
+ /**
+ * The cached value of the '{@link #getD() <em>D</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getD()
+ * @generated
+ * @ordered
+ */
+ protected D_avoidable d = D_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ACIDavoidable() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlammPackage.Literals.ACI_DAVOIDABLE;
+ }
+
+ /**
+ * Returns the value of the '<em><b>A</b></em>' attribute.
+ * The literals are from the enumeration {@link org.polarsys.chess.fla.flamm.FailureTypes.A_avoidable}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>A</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>A</em>' attribute.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.A_avoidable
+ * @see #setA(A_avoidable)
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDavoidable_A()
+ * @model
+ * @generated
+ */
+ public A_avoidable getA() {
+ return a;
+ }
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flamm.ACIDavoidable#getA <em>A</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>A</em>' attribute.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.A_avoidable
+ * @see #getA()
+ * @generated
+ */
+ public void setA(A_avoidable newA) {
+ A_avoidable oldA = a;
+ a = newA == null ? A_EDEFAULT : newA;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.ACI_DAVOIDABLE__A, oldA, a));
+ }
+
+ /**
+ * Returns the value of the '<em><b>C</b></em>' attribute.
+ * The literals are from the enumeration {@link org.polarsys.chess.fla.flamm.FailureTypes.C_avoidable}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>C</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>C</em>' attribute.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.C_avoidable
+ * @see #setC(C_avoidable)
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDavoidable_C()
+ * @model
+ * @generated
+ */
+ public C_avoidable getC() {
+ return c;
+ }
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flamm.ACIDavoidable#getC <em>C</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>C</em>' attribute.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.C_avoidable
+ * @see #getC()
+ * @generated
+ */
+ public void setC(C_avoidable newC) {
+ C_avoidable oldC = c;
+ c = newC == null ? C_EDEFAULT : newC;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.ACI_DAVOIDABLE__C, oldC, c));
+ }
+
+ /**
+ * Returns the value of the '<em><b>I</b></em>' attribute.
+ * The literals are from the enumeration {@link org.polarsys.chess.fla.flamm.FailureTypes.I_avoidable}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>I</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>I</em>' attribute.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.I_avoidable
+ * @see #setI(I_avoidable)
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDavoidable_I()
+ * @model
+ * @generated
+ */
+ public I_avoidable getI() {
+ return i;
+ }
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flamm.ACIDavoidable#getI <em>I</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>I</em>' attribute.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.I_avoidable
+ * @see #getI()
+ * @generated
+ */
+ public void setI(I_avoidable newI) {
+ I_avoidable oldI = i;
+ i = newI == null ? I_EDEFAULT : newI;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.ACI_DAVOIDABLE__I, oldI, i));
+ }
+
+ /**
+ * Returns the value of the '<em><b>D</b></em>' attribute.
+ * The literals are from the enumeration {@link org.polarsys.chess.fla.flamm.FailureTypes.D_avoidable}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>D</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>D</em>' attribute.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.D_avoidable
+ * @see #setD(D_avoidable)
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDavoidable_D()
+ * @model
+ * @generated
+ */
+ public D_avoidable getD() {
+ return d;
+ }
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flamm.ACIDavoidable#getD <em>D</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>D</em>' attribute.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.D_avoidable
+ * @see #getD()
+ * @generated
+ */
+ public void setD(D_avoidable newD) {
+ D_avoidable oldD = d;
+ d = newD == null ? D_EDEFAULT : newD;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.ACI_DAVOIDABLE__D, oldD, d));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlammPackage.ACI_DAVOIDABLE__A:
+ return getA();
+ case FlammPackage.ACI_DAVOIDABLE__C:
+ return getC();
+ case FlammPackage.ACI_DAVOIDABLE__I:
+ return getI();
+ case FlammPackage.ACI_DAVOIDABLE__D:
+ return getD();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlammPackage.ACI_DAVOIDABLE__A:
+ setA((A_avoidable)newValue);
+ return;
+ case FlammPackage.ACI_DAVOIDABLE__C:
+ setC((C_avoidable)newValue);
+ return;
+ case FlammPackage.ACI_DAVOIDABLE__I:
+ setI((I_avoidable)newValue);
+ return;
+ case FlammPackage.ACI_DAVOIDABLE__D:
+ setD((D_avoidable)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlammPackage.ACI_DAVOIDABLE__A:
+ setA(A_EDEFAULT);
+ return;
+ case FlammPackage.ACI_DAVOIDABLE__C:
+ setC(C_EDEFAULT);
+ return;
+ case FlammPackage.ACI_DAVOIDABLE__I:
+ setI(I_EDEFAULT);
+ return;
+ case FlammPackage.ACI_DAVOIDABLE__D:
+ setD(D_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlammPackage.ACI_DAVOIDABLE__A:
+ return a != A_EDEFAULT;
+ case FlammPackage.ACI_DAVOIDABLE__C:
+ return c != C_EDEFAULT;
+ case FlammPackage.ACI_DAVOIDABLE__I:
+ return i != I_EDEFAULT;
+ case FlammPackage.ACI_DAVOIDABLE__D:
+ return d != D_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (a: ");
+ result.append(a);
+ result.append(", c: ");
+ result.append(c);
+ result.append(", i: ");
+ result.append(i);
+ result.append(", d: ");
+ result.append(d);
+ result.append(')');
+ return result.toString();
+ }
+
+} // ACIDavoidable
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/ACIDmitigation.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/ACIDmitigation.java
new file mode 100644
index 0000000..6931783
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/ACIDmitigation.java
@@ -0,0 +1,398 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.polarsys.chess.fla.flamm.FailureTypes.A_mitigation;
+import org.polarsys.chess.fla.flamm.FailureTypes.C_mitigation;
+import org.polarsys.chess.fla.flamm.FailureTypes.D_mitigation;
+import org.polarsys.chess.fla.flamm.FailureTypes.I_mitigation;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>ACI Dmitigation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flamm.ACIDmitigation#getA <em>A</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flamm.ACIDmitigation#getC <em>C</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flamm.ACIDmitigation#getI <em>I</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flamm.ACIDmitigation#getD <em>D</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDmitigation()
+ * @model kind="class"
+ * @generated
+ */
+public class ACIDmitigation extends MinimalEObjectImpl.Container implements EObject {
+ /**
+ * The default value of the '{@link #getA() <em>A</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getA()
+ * @generated
+ * @ordered
+ */
+ protected static final A_mitigation A_EDEFAULT = A_mitigation.UNSPECIFIED;
+
+ /**
+ * The cached value of the '{@link #getA() <em>A</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getA()
+ * @generated
+ * @ordered
+ */
+ protected A_mitigation a = A_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getC() <em>C</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getC()
+ * @generated
+ * @ordered
+ */
+ protected static final C_mitigation C_EDEFAULT = C_mitigation.UNSPECIFIED;
+
+ /**
+ * The cached value of the '{@link #getC() <em>C</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getC()
+ * @generated
+ * @ordered
+ */
+ protected C_mitigation c = C_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getI() <em>I</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getI()
+ * @generated
+ * @ordered
+ */
+ protected static final I_mitigation I_EDEFAULT = I_mitigation.UNSPECIFIED;
+
+ /**
+ * The cached value of the '{@link #getI() <em>I</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getI()
+ * @generated
+ * @ordered
+ */
+ protected I_mitigation i = I_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getD() <em>D</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getD()
+ * @generated
+ * @ordered
+ */
+ protected static final D_mitigation D_EDEFAULT = D_mitigation.UNSPECIFIED;
+
+ /**
+ * The cached value of the '{@link #getD() <em>D</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getD()
+ * @generated
+ * @ordered
+ */
+ protected D_mitigation d = D_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ACIDmitigation() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlammPackage.Literals.ACI_DMITIGATION;
+ }
+
+ /**
+ * Returns the value of the '<em><b>A</b></em>' attribute.
+ * The literals are from the enumeration {@link org.polarsys.chess.fla.flamm.FailureTypes.A_mitigation}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>A</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>A</em>' attribute.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.A_mitigation
+ * @see #setA(A_mitigation)
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDmitigation_A()
+ * @model
+ * @generated
+ */
+ public A_mitigation getA() {
+ return a;
+ }
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flamm.ACIDmitigation#getA <em>A</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>A</em>' attribute.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.A_mitigation
+ * @see #getA()
+ * @generated
+ */
+ public void setA(A_mitigation newA) {
+ A_mitigation oldA = a;
+ a = newA == null ? A_EDEFAULT : newA;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.ACI_DMITIGATION__A, oldA, a));
+ }
+
+ /**
+ * Returns the value of the '<em><b>C</b></em>' attribute.
+ * The literals are from the enumeration {@link org.polarsys.chess.fla.flamm.FailureTypes.C_mitigation}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>C</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>C</em>' attribute.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.C_mitigation
+ * @see #setC(C_mitigation)
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDmitigation_C()
+ * @model
+ * @generated
+ */
+ public C_mitigation getC() {
+ return c;
+ }
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flamm.ACIDmitigation#getC <em>C</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>C</em>' attribute.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.C_mitigation
+ * @see #getC()
+ * @generated
+ */
+ public void setC(C_mitigation newC) {
+ C_mitigation oldC = c;
+ c = newC == null ? C_EDEFAULT : newC;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.ACI_DMITIGATION__C, oldC, c));
+ }
+
+ /**
+ * Returns the value of the '<em><b>I</b></em>' attribute.
+ * The literals are from the enumeration {@link org.polarsys.chess.fla.flamm.FailureTypes.I_mitigation}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>I</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>I</em>' attribute.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.I_mitigation
+ * @see #setI(I_mitigation)
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDmitigation_I()
+ * @model
+ * @generated
+ */
+ public I_mitigation getI() {
+ return i;
+ }
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flamm.ACIDmitigation#getI <em>I</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>I</em>' attribute.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.I_mitigation
+ * @see #getI()
+ * @generated
+ */
+ public void setI(I_mitigation newI) {
+ I_mitigation oldI = i;
+ i = newI == null ? I_EDEFAULT : newI;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.ACI_DMITIGATION__I, oldI, i));
+ }
+
+ /**
+ * Returns the value of the '<em><b>D</b></em>' attribute.
+ * The literals are from the enumeration {@link org.polarsys.chess.fla.flamm.FailureTypes.D_mitigation}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>D</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>D</em>' attribute.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.D_mitigation
+ * @see #setD(D_mitigation)
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDmitigation_D()
+ * @model
+ * @generated
+ */
+ public D_mitigation getD() {
+ return d;
+ }
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flamm.ACIDmitigation#getD <em>D</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>D</em>' attribute.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.D_mitigation
+ * @see #getD()
+ * @generated
+ */
+ public void setD(D_mitigation newD) {
+ D_mitigation oldD = d;
+ d = newD == null ? D_EDEFAULT : newD;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.ACI_DMITIGATION__D, oldD, d));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlammPackage.ACI_DMITIGATION__A:
+ return getA();
+ case FlammPackage.ACI_DMITIGATION__C:
+ return getC();
+ case FlammPackage.ACI_DMITIGATION__I:
+ return getI();
+ case FlammPackage.ACI_DMITIGATION__D:
+ return getD();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlammPackage.ACI_DMITIGATION__A:
+ setA((A_mitigation)newValue);
+ return;
+ case FlammPackage.ACI_DMITIGATION__C:
+ setC((C_mitigation)newValue);
+ return;
+ case FlammPackage.ACI_DMITIGATION__I:
+ setI((I_mitigation)newValue);
+ return;
+ case FlammPackage.ACI_DMITIGATION__D:
+ setD((D_mitigation)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlammPackage.ACI_DMITIGATION__A:
+ setA(A_EDEFAULT);
+ return;
+ case FlammPackage.ACI_DMITIGATION__C:
+ setC(C_EDEFAULT);
+ return;
+ case FlammPackage.ACI_DMITIGATION__I:
+ setI(I_EDEFAULT);
+ return;
+ case FlammPackage.ACI_DMITIGATION__D:
+ setD(D_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlammPackage.ACI_DMITIGATION__A:
+ return a != A_EDEFAULT;
+ case FlammPackage.ACI_DMITIGATION__C:
+ return c != C_EDEFAULT;
+ case FlammPackage.ACI_DMITIGATION__I:
+ return i != I_EDEFAULT;
+ case FlammPackage.ACI_DMITIGATION__D:
+ return d != D_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (a: ");
+ result.append(a);
+ result.append(", c: ");
+ result.append(c);
+ result.append(", i: ");
+ result.append(i);
+ result.append(", d: ");
+ result.append(d);
+ result.append(')');
+ return result.toString();
+ }
+
+} // ACIDmitigation
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Component.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Component.java
new file mode 100644
index 0000000..ad300c4
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Component.java
@@ -0,0 +1,395 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.polarsys.chess.fla.flamm.analysis.FlaSystem;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Component</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flamm.Component#getInputPorts <em>Input Ports</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flamm.Component#getOutputPorts <em>Output Ports</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flamm.Component#getParent <em>Parent</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getComponent()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class Component extends NamedElement implements FlaBehaviour {
+ /**
+ * The cached value of the '{@link #getInputPorts() <em>Input Ports</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInputPorts()
+ * @generated
+ * @ordered
+ */
+ protected EList<Port> inputPorts;
+
+ /**
+ * The cached value of the '{@link #getOutputPorts() <em>Output Ports</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOutputPorts()
+ * @generated
+ * @ordered
+ */
+ protected EList<Port> outputPorts;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Component() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlammPackage.Literals.COMPONENT;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Input Ports</b></em>' containment reference list.
+ * The list contents are of type {@link org.polarsys.chess.fla.flamm.Port}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Input Ports</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Input Ports</em>' containment reference list.
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getComponent_InputPorts()
+ * @model containment="true"
+ * @generated
+ */
+ public List<Port> getInputPorts() {
+ if (inputPorts == null) {
+ inputPorts = new EObjectContainmentEList<Port>(Port.class, this, FlammPackage.COMPONENT__INPUT_PORTS);
+ }
+ return inputPorts;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Output Ports</b></em>' containment reference list.
+ * The list contents are of type {@link org.polarsys.chess.fla.flamm.Port}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Output Ports</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Output Ports</em>' containment reference list.
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getComponent_OutputPorts()
+ * @model containment="true"
+ * @generated
+ */
+ public List<Port> getOutputPorts() {
+ if (outputPorts == null) {
+ outputPorts = new EObjectContainmentEList<Port>(Port.class, this, FlammPackage.COMPONENT__OUTPUT_PORTS);
+ }
+ return outputPorts;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Parent</b></em>' container reference.
+ * It is bidirectional and its opposite is '{@link org.polarsys.chess.fla.flamm.CompositeComponent#getComponents <em>Components</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Parent</em>' container reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Parent</em>' container reference.
+ * @see #setParent(CompositeComponent)
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getComponent_Parent()
+ * @see org.polarsys.chess.fla.flamm.CompositeComponent#getComponents
+ * @model opposite="components" transient="false"
+ * @generated
+ */
+ public CompositeComponent getParent() {
+ if (eContainerFeatureID() != FlammPackage.COMPONENT__PARENT) return null;
+ return (CompositeComponent)eInternalContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetParent(CompositeComponent newParent, NotificationChain msgs) {
+ msgs = eBasicSetContainer((InternalEObject)newParent, FlammPackage.COMPONENT__PARENT, msgs);
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flamm.Component#getParent <em>Parent</em>}' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Parent</em>' container reference.
+ * @see #getParent()
+ * @generated
+ */
+ public void setParent(CompositeComponent newParent) {
+ if (newParent != eInternalContainer() || (eContainerFeatureID() != FlammPackage.COMPONENT__PARENT && newParent != null)) {
+ if (EcoreUtil.isAncestor(this, newParent))
+ throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
+ NotificationChain msgs = null;
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ if (newParent != null)
+ msgs = ((InternalEObject)newParent).eInverseAdd(this, FlammPackage.COMPOSITE_COMPONENT__COMPONENTS, CompositeComponent.class, msgs);
+ msgs = basicSetParent(newParent, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.COMPONENT__PARENT, newParent, newParent));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public abstract void propagateFailures();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Initialize the Component, clear failures from ports etc.
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void initialize(boolean initNoFailure) {
+ if (this.getParent() == null) {
+ for (Port port : getInputPorts()) {
+ initializeRootComponentInputPort(port, initNoFailure);
+ }
+ } else {
+ for (Port port : getInputPorts()) {
+ initializePort(port, initNoFailure);
+ }
+ }
+ for (Port port : getOutputPorts()) {
+ initializePort(port, initNoFailure);
+ }
+
+ if (initNoFailure) {
+ FlaSystem.addUpdatedComponent(this);
+ }
+ }
+
+ protected void initializeRootComponentInputPort(Port port, boolean initNoFailure) {
+ List<Failure> failures = new ArrayList<Failure>(port.getFailures());
+ initializePort(port, initNoFailure);
+ port.addFailures(failures);
+ }
+
+ protected void initializePort(Port port, boolean initNoFailure) {
+ port.initialize();
+ if (initNoFailure) {
+ port.addFailure(Failure.createNoFailure());
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlammPackage.COMPONENT__PARENT:
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return basicSetParent((CompositeComponent)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlammPackage.COMPONENT__INPUT_PORTS:
+ return ((InternalEList<?>)getInputPorts()).basicRemove(otherEnd, msgs);
+ case FlammPackage.COMPONENT__OUTPUT_PORTS:
+ return ((InternalEList<?>)getOutputPorts()).basicRemove(otherEnd, msgs);
+ case FlammPackage.COMPONENT__PARENT:
+ return basicSetParent(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+ switch (eContainerFeatureID()) {
+ case FlammPackage.COMPONENT__PARENT:
+ return eInternalContainer().eInverseRemove(this, FlammPackage.COMPOSITE_COMPONENT__COMPONENTS, CompositeComponent.class, msgs);
+ }
+ return super.eBasicRemoveFromContainerFeature(msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlammPackage.COMPONENT__INPUT_PORTS:
+ return getInputPorts();
+ case FlammPackage.COMPONENT__OUTPUT_PORTS:
+ return getOutputPorts();
+ case FlammPackage.COMPONENT__PARENT:
+ return getParent();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlammPackage.COMPONENT__INPUT_PORTS:
+ getInputPorts().clear();
+ getInputPorts().addAll((Collection<? extends Port>)newValue);
+ return;
+ case FlammPackage.COMPONENT__OUTPUT_PORTS:
+ getOutputPorts().clear();
+ getOutputPorts().addAll((Collection<? extends Port>)newValue);
+ return;
+ case FlammPackage.COMPONENT__PARENT:
+ setParent((CompositeComponent)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlammPackage.COMPONENT__INPUT_PORTS:
+ getInputPorts().clear();
+ return;
+ case FlammPackage.COMPONENT__OUTPUT_PORTS:
+ getOutputPorts().clear();
+ return;
+ case FlammPackage.COMPONENT__PARENT:
+ setParent((CompositeComponent)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlammPackage.COMPONENT__INPUT_PORTS:
+ return inputPorts != null && !inputPorts.isEmpty();
+ case FlammPackage.COMPONENT__OUTPUT_PORTS:
+ return outputPorts != null && !outputPorts.isEmpty();
+ case FlammPackage.COMPONENT__PARENT:
+ return getParent() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eDerivedOperationID(int baseOperationID, Class<?> baseClass) {
+ if (baseClass == FlaBehaviour.class) {
+ switch (baseOperationID) {
+ case FlammPackage.FLA_BEHAVIOUR___PROPAGATE_FAILURES: return FlammPackage.COMPONENT___PROPAGATE_FAILURES;
+ case FlammPackage.FLA_BEHAVIOUR___INITIALIZE__BOOLEAN: return FlammPackage.COMPONENT___INITIALIZE__BOOLEAN;
+ default: return -1;
+ }
+ }
+ return super.eDerivedOperationID(baseOperationID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case FlammPackage.COMPONENT___PROPAGATE_FAILURES:
+ propagateFailures();
+ return null;
+ case FlammPackage.COMPONENT___INITIALIZE__BOOLEAN:
+ initialize((Boolean)arguments.get(0));
+ return null;
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+} // Component
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/CompositeComponent.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/CompositeComponent.java
new file mode 100644
index 0000000..4397142
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/CompositeComponent.java
@@ -0,0 +1,278 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.polarsys.chess.fla.flamm.analysis.FlaSystem;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Composite Component</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flamm.CompositeComponent#getComponents <em>Components</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flamm.CompositeComponent#getConnections <em>Connections</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getCompositeComponent()
+ * @model kind="class"
+ * @generated
+ */
+public class CompositeComponent extends Component {
+ /**
+ * The cached value of the '{@link #getComponents() <em>Components</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getComponents()
+ * @generated
+ * @ordered
+ */
+ protected EList<Component> components;
+
+ /**
+ * The cached value of the '{@link #getConnections() <em>Connections</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConnections()
+ * @generated
+ * @ordered
+ */
+ protected EList<Connection> connections;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CompositeComponent() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlammPackage.Literals.COMPOSITE_COMPONENT;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Components</b></em>' containment reference list.
+ * The list contents are of type {@link org.polarsys.chess.fla.flamm.Component}.
+ * It is bidirectional and its opposite is '{@link org.polarsys.chess.fla.flamm.Component#getParent <em>Parent</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Components</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Components</em>' containment reference list.
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getCompositeComponent_Components()
+ * @see org.polarsys.chess.fla.flamm.Component#getParent
+ * @model opposite="parent" containment="true"
+ * @generated
+ */
+ public List<Component> getComponents() {
+ if (components == null) {
+ components = new EObjectContainmentWithInverseEList<Component>(Component.class, this, FlammPackage.COMPOSITE_COMPONENT__COMPONENTS, FlammPackage.COMPONENT__PARENT);
+ }
+ return components;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Connections</b></em>' containment reference list.
+ * The list contents are of type {@link org.polarsys.chess.fla.flamm.Connection}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Connections</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Connections</em>' containment reference list.
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getCompositeComponent_Connections()
+ * @model containment="true"
+ * @generated
+ */
+ public List<Connection> getConnections() {
+ if (connections == null) {
+ connections = new EObjectContainmentEList<Connection>(Connection.class, this, FlammPackage.COMPOSITE_COMPONENT__CONNECTIONS);
+ }
+ return connections;
+ }
+
+ @Override
+ public void propagateFailures() {
+ for (Port port : getInputPorts()) {
+ if (port.hasNewFailures()) {
+ propagateInputFailures(port);
+ }
+ }
+ for (Port port : getOutputPorts()) {
+ if (port.hasNewFailures()) {
+ propagateOutputFailures(port);
+ }
+ }
+ }
+
+ private void propagateInputFailures(Port port) {
+ for (Port connectedPort : port.getConnectedPorts()) {
+ if (getComponents().contains(connectedPort.getOwner()) || getOutputPorts().contains(connectedPort)) {
+ propagateNewFailures(port, connectedPort);
+ }
+ }
+ port.clearNewFailures();
+ }
+
+ protected void propagateOutputFailures(Port port) {
+ for (Port connectedPort : port.getConnectedPorts()) {
+ if (!getComponents().contains(connectedPort.getOwner())) {
+ propagateNewFailures(port, connectedPort);
+ }
+ }
+ port.clearNewFailures();
+ }
+
+ public void propagateNewFailures(Port source, Port target) {
+ for (Failure failure : source.getNewFailures()) {
+ if (target.addFailure(failure, failure)) {
+ FlaSystem.addUpdatedComponent(target.getOwner());
+ }
+ }
+ }
+
+ @Override
+ public void initialize(boolean initNoFailure) {
+ super.initialize(initNoFailure);
+ for (Component subComponent : getComponents()) {
+ subComponent.initialize(initNoFailure);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlammPackage.COMPOSITE_COMPONENT__COMPONENTS:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getComponents()).basicAdd(otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlammPackage.COMPOSITE_COMPONENT__COMPONENTS:
+ return ((InternalEList<?>)getComponents()).basicRemove(otherEnd, msgs);
+ case FlammPackage.COMPOSITE_COMPONENT__CONNECTIONS:
+ return ((InternalEList<?>)getConnections()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlammPackage.COMPOSITE_COMPONENT__COMPONENTS:
+ return getComponents();
+ case FlammPackage.COMPOSITE_COMPONENT__CONNECTIONS:
+ return getConnections();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlammPackage.COMPOSITE_COMPONENT__COMPONENTS:
+ getComponents().clear();
+ getComponents().addAll((Collection<? extends Component>)newValue);
+ return;
+ case FlammPackage.COMPOSITE_COMPONENT__CONNECTIONS:
+ getConnections().clear();
+ getConnections().addAll((Collection<? extends Connection>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlammPackage.COMPOSITE_COMPONENT__COMPONENTS:
+ getComponents().clear();
+ return;
+ case FlammPackage.COMPOSITE_COMPONENT__CONNECTIONS:
+ getConnections().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlammPackage.COMPOSITE_COMPONENT__COMPONENTS:
+ return components != null && !components.isEmpty();
+ case FlammPackage.COMPOSITE_COMPONENT__CONNECTIONS:
+ return connections != null && !connections.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // CompositeComponent
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Connection.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Connection.java
new file mode 100644
index 0000000..7b3a046
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Connection.java
@@ -0,0 +1,430 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import java.lang.reflect.InvocationTargetException;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Connection</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flamm.Connection#getFrom <em>From</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flamm.Connection#getTo <em>To</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flamm.Connection#getRules <em>Rules</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getConnection()
+ * @model kind="class"
+ * @generated
+ */
+public class Connection extends MinimalEObjectImpl.Container implements FlaBehaviour {
+ /**
+ * The cached value of the '{@link #getFrom() <em>From</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFrom()
+ * @generated
+ * @ordered
+ */
+ protected Port from;
+
+ /**
+ * The cached value of the '{@link #getTo() <em>To</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTo()
+ * @generated
+ * @ordered
+ */
+ protected Port to;
+
+ /**
+ * The cached value of the '{@link #getRules() <em>Rules</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRules()
+ * @generated
+ * @ordered
+ */
+ protected EList<Rule> rules;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Connection() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlammPackage.Literals.CONNECTION;
+ }
+
+ /**
+ * Returns the value of the '<em><b>From</b></em>' reference.
+ * It is bidirectional and its opposite is '{@link org.polarsys.chess.fla.flamm.Port#getOutgoingConnections <em>Outgoing Connections</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>From</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>From</em>' reference.
+ * @see #setFrom(Port)
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getConnection_From()
+ * @see org.polarsys.chess.fla.flamm.Port#getOutgoingConnections
+ * @model opposite="outgoingConnections" required="true"
+ * @generated
+ */
+ public Port getFrom() {
+ if (from != null && from.eIsProxy()) {
+ InternalEObject oldFrom = (InternalEObject)from;
+ from = (Port)eResolveProxy(oldFrom);
+ if (from != oldFrom) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FlammPackage.CONNECTION__FROM, oldFrom, from));
+ }
+ }
+ return from;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Port basicGetFrom() {
+ return from;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetFrom(Port newFrom, NotificationChain msgs) {
+ Port oldFrom = from;
+ from = newFrom;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlammPackage.CONNECTION__FROM, oldFrom, newFrom);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flamm.Connection#getFrom <em>From</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>From</em>' reference.
+ * @see #getFrom()
+ * @generated
+ */
+ public void setFrom(Port newFrom) {
+ if (newFrom != from) {
+ NotificationChain msgs = null;
+ if (from != null)
+ msgs = ((InternalEObject)from).eInverseRemove(this, FlammPackage.PORT__OUTGOING_CONNECTIONS, Port.class, msgs);
+ if (newFrom != null)
+ msgs = ((InternalEObject)newFrom).eInverseAdd(this, FlammPackage.PORT__OUTGOING_CONNECTIONS, Port.class, msgs);
+ msgs = basicSetFrom(newFrom, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.CONNECTION__FROM, newFrom, newFrom));
+ }
+
+ /**
+ * Returns the value of the '<em><b>To</b></em>' reference.
+ * It is bidirectional and its opposite is '{@link org.polarsys.chess.fla.flamm.Port#getIncomingConnections <em>Incoming Connections</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>To</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>To</em>' reference.
+ * @see #setTo(Port)
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getConnection_To()
+ * @see org.polarsys.chess.fla.flamm.Port#getIncomingConnections
+ * @model opposite="incomingConnections" required="true"
+ * @generated
+ */
+ public Port getTo() {
+ if (to != null && to.eIsProxy()) {
+ InternalEObject oldTo = (InternalEObject)to;
+ to = (Port)eResolveProxy(oldTo);
+ if (to != oldTo) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FlammPackage.CONNECTION__TO, oldTo, to));
+ }
+ }
+ return to;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Port basicGetTo() {
+ return to;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTo(Port newTo, NotificationChain msgs) {
+ Port oldTo = to;
+ to = newTo;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlammPackage.CONNECTION__TO, oldTo, newTo);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flamm.Connection#getTo <em>To</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>To</em>' reference.
+ * @see #getTo()
+ * @generated
+ */
+ public void setTo(Port newTo) {
+ if (newTo != to) {
+ NotificationChain msgs = null;
+ if (to != null)
+ msgs = ((InternalEObject)to).eInverseRemove(this, FlammPackage.PORT__INCOMING_CONNECTIONS, Port.class, msgs);
+ if (newTo != null)
+ msgs = ((InternalEObject)newTo).eInverseAdd(this, FlammPackage.PORT__INCOMING_CONNECTIONS, Port.class, msgs);
+ msgs = basicSetTo(newTo, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.CONNECTION__TO, newTo, newTo));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Rules</b></em>' reference list.
+ * The list contents are of type {@link org.polarsys.chess.fla.flamm.Rule}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Rules</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Rules</em>' reference list.
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getConnection_Rules()
+ * @model
+ * @generated
+ */
+ public List<Rule> getRules() {
+ if (rules == null) {
+ rules = new EObjectResolvingEList<Rule>(Rule.class, this, FlammPackage.CONNECTION__RULES);
+ }
+ return rules;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ public void propagateFailures() {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model initNoFailureRequired="true"
+ * @generated
+ */
+ public void initialize(boolean initNoFailure) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlammPackage.CONNECTION__FROM:
+ if (from != null)
+ msgs = ((InternalEObject)from).eInverseRemove(this, FlammPackage.PORT__OUTGOING_CONNECTIONS, Port.class, msgs);
+ return basicSetFrom((Port)otherEnd, msgs);
+ case FlammPackage.CONNECTION__TO:
+ if (to != null)
+ msgs = ((InternalEObject)to).eInverseRemove(this, FlammPackage.PORT__INCOMING_CONNECTIONS, Port.class, msgs);
+ return basicSetTo((Port)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlammPackage.CONNECTION__FROM:
+ return basicSetFrom(null, msgs);
+ case FlammPackage.CONNECTION__TO:
+ return basicSetTo(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlammPackage.CONNECTION__FROM:
+ if (resolve) return getFrom();
+ return basicGetFrom();
+ case FlammPackage.CONNECTION__TO:
+ if (resolve) return getTo();
+ return basicGetTo();
+ case FlammPackage.CONNECTION__RULES:
+ return getRules();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlammPackage.CONNECTION__FROM:
+ setFrom((Port)newValue);
+ return;
+ case FlammPackage.CONNECTION__TO:
+ setTo((Port)newValue);
+ return;
+ case FlammPackage.CONNECTION__RULES:
+ getRules().clear();
+ getRules().addAll((Collection<? extends Rule>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlammPackage.CONNECTION__FROM:
+ setFrom((Port)null);
+ return;
+ case FlammPackage.CONNECTION__TO:
+ setTo((Port)null);
+ return;
+ case FlammPackage.CONNECTION__RULES:
+ getRules().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlammPackage.CONNECTION__FROM:
+ return from != null;
+ case FlammPackage.CONNECTION__TO:
+ return to != null;
+ case FlammPackage.CONNECTION__RULES:
+ return rules != null && !rules.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case FlammPackage.CONNECTION___PROPAGATE_FAILURES:
+ propagateFailures();
+ return null;
+ case FlammPackage.CONNECTION___INITIALIZE__BOOLEAN:
+ initialize((Boolean)arguments.get(0));
+ return null;
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+} // Connection
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Expression.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Expression.java
new file mode 100644
index 0000000..9c6c2fc
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Expression.java
@@ -0,0 +1,241 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flamm.Expression#getPort <em>Port</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flamm.Expression#getFailures <em>Failures</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getExpression()
+ * @model kind="class"
+ * @generated
+ */
+public class Expression extends MinimalEObjectImpl.Container implements EObject {
+ /**
+ * The cached value of the '{@link #getPort() <em>Port</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPort()
+ * @generated
+ * @ordered
+ */
+ protected Port port;
+
+ /**
+ * The cached value of the '{@link #getFailures() <em>Failures</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFailures()
+ * @generated
+ * @ordered
+ */
+ protected EList<Failure> failures;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Expression() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlammPackage.Literals.EXPRESSION;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Port</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Port</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Port</em>' reference.
+ * @see #setPort(Port)
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getExpression_Port()
+ * @model required="true"
+ * @generated
+ */
+ public Port getPort() {
+ if (port != null && port.eIsProxy()) {
+ InternalEObject oldPort = (InternalEObject)port;
+ port = (Port)eResolveProxy(oldPort);
+ if (port != oldPort) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FlammPackage.EXPRESSION__PORT, oldPort, port));
+ }
+ }
+ return port;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Port basicGetPort() {
+ return port;
+ }
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flamm.Expression#getPort <em>Port</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Port</em>' reference.
+ * @see #getPort()
+ * @generated
+ */
+ public void setPort(Port newPort) {
+ Port oldPort = port;
+ port = newPort;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.EXPRESSION__PORT, oldPort, port));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Failures</b></em>' containment reference list.
+ * The list contents are of type {@link org.polarsys.chess.fla.flamm.Failure}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Failures</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Failures</em>' containment reference list.
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getExpression_Failures()
+ * @model containment="true"
+ * @generated
+ */
+ public List<Failure> getFailures() {
+ if (failures == null) {
+ failures = new EObjectContainmentEList<Failure>(Failure.class, this, FlammPackage.EXPRESSION__FAILURES);
+ }
+ return failures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlammPackage.EXPRESSION__FAILURES:
+ return ((InternalEList<?>)getFailures()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlammPackage.EXPRESSION__PORT:
+ if (resolve) return getPort();
+ return basicGetPort();
+ case FlammPackage.EXPRESSION__FAILURES:
+ return getFailures();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlammPackage.EXPRESSION__PORT:
+ setPort((Port)newValue);
+ return;
+ case FlammPackage.EXPRESSION__FAILURES:
+ getFailures().clear();
+ getFailures().addAll((Collection<? extends Failure>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlammPackage.EXPRESSION__PORT:
+ setPort((Port)null);
+ return;
+ case FlammPackage.EXPRESSION__FAILURES:
+ getFailures().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlammPackage.EXPRESSION__PORT:
+ return port != null;
+ case FlammPackage.EXPRESSION__FAILURES:
+ return failures != null && !failures.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // Expression
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Failure.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Failure.java
new file mode 100644
index 0000000..9a8ba1c
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Failure.java
@@ -0,0 +1,564 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.polarsys.chess.fla.flamm.FailureTypes.FailureType;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Failure</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flamm.Failure#getType <em>Type</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flamm.Failure#getId <em>Id</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flamm.Failure#getAcidAvoidable <em>Acid Avoidable</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flamm.Failure#getAcidMitigation <em>Acid Mitigation</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flamm.Failure#getPreviousFailures <em>Previous Failures</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getFailure()
+ * @model kind="class"
+ * @generated
+ */
+public class Failure extends MinimalEObjectImpl.Container implements EObject {
+ /**
+ * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected static final FailureType TYPE_EDEFAULT = FailureType.NO_FAILURE;
+
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected FailureType type = TYPE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getId()
+ * @generated
+ * @ordered
+ */
+ protected static final String ID_EDEFAULT = null;
+
+ public static Failure createNoFailure() {
+ return new Failure(FailureType.NO_FAILURE, FailureType.NO_FAILURE.getLiteral());
+ }
+
+ public static Failure createWildcard() {
+ return new Failure(FailureType.WILDCARD, FailureType.WILDCARD.getLiteral());
+ }
+
+ /**
+ * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getId()
+ * @generated
+ * @ordered
+ */
+ protected String id = ID_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getAcidAvoidable() <em>Acid Avoidable</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAcidAvoidable()
+ * @generated
+ * @ordered
+ */
+ protected ACIDavoidable acidAvoidable;
+
+ /**
+ * The cached value of the '{@link #getAcidMitigation() <em>Acid Mitigation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAcidMitigation()
+ * @generated
+ * @ordered
+ */
+ protected ACIDmitigation acidMitigation;
+
+ /**
+ * The cached value of the '{@link #getPreviousFailures() <em>Previous Failures</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPreviousFailures()
+ * @generated
+ * @ordered
+ */
+ protected EList<Failure> previousFailures;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Failure() {
+ super();
+ }
+
+ public Failure(FailureType type, String id) {
+ super();
+ this.type = type;
+ this.id = id;
+ }
+
+
+ /**
+ * Copy-constructor
+ * @param oldFailure existing Failure to copy
+ */
+ public Failure(Failure oldFailure) {
+ super();
+ this.type = oldFailure.type;
+ this.id = oldFailure.id;
+ }
+
+ /**
+ * Copy-constructor
+ * @param oldFailure existing Failure to copy
+ */
+ public Failure(Failure oldFailure, Failure previousFailure) {
+ super();
+ this.type = oldFailure.type;
+ this.id = oldFailure.id;
+ this.addPreviousFailure(previousFailure);
+ }
+
+ /**
+ * Copy-constructor
+ * @param oldFailure existing Failure to copy
+ */
+ public Failure(Failure oldFailure, Collection<Failure> previousFailures) {
+ super();
+ this.type = oldFailure.type;
+ this.id = oldFailure.id;
+ this.addPreviousFailures(previousFailures);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlammPackage.Literals.FAILURE;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' attribute.
+ * The literals are from the enumeration {@link org.polarsys.chess.fla.flamm.FailureTypes.FailureType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type</em>' attribute.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureType
+ * @see #setType(FailureType)
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getFailure_Type()
+ * @model required="true"
+ * @generated
+ */
+ public FailureType getType() {
+ return type;
+ }
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flamm.Failure#getType <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type</em>' attribute.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureType
+ * @see #getType()
+ * @generated
+ */
+ public void setType(FailureType newType) {
+ FailureType oldType = type;
+ type = newType == null ? TYPE_EDEFAULT : newType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.FAILURE__TYPE, oldType, type));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Id</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Id</em>' attribute.
+ * @see #setId(String)
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getFailure_Id()
+ * @model
+ * @generated
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flamm.Failure#getId <em>Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Id</em>' attribute.
+ * @see #getId()
+ * @generated
+ */
+ public void setId(String newId) {
+ String oldId = id;
+ id = newId;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.FAILURE__ID, oldId, id));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Acid Avoidable</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Acid Avoidable</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Acid Avoidable</em>' containment reference.
+ * @see #setAcidAvoidable(ACIDavoidable)
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getFailure_AcidAvoidable()
+ * @model containment="true"
+ * @generated
+ */
+ public ACIDavoidable getAcidAvoidable() {
+ return acidAvoidable;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetAcidAvoidable(ACIDavoidable newAcidAvoidable, NotificationChain msgs) {
+ ACIDavoidable oldAcidAvoidable = acidAvoidable;
+ acidAvoidable = newAcidAvoidable;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlammPackage.FAILURE__ACID_AVOIDABLE, oldAcidAvoidable, newAcidAvoidable);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flamm.Failure#getAcidAvoidable <em>Acid Avoidable</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Acid Avoidable</em>' containment reference.
+ * @see #getAcidAvoidable()
+ * @generated
+ */
+ public void setAcidAvoidable(ACIDavoidable newAcidAvoidable) {
+ if (newAcidAvoidable != acidAvoidable) {
+ NotificationChain msgs = null;
+ if (acidAvoidable != null)
+ msgs = ((InternalEObject)acidAvoidable).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FlammPackage.FAILURE__ACID_AVOIDABLE, null, msgs);
+ if (newAcidAvoidable != null)
+ msgs = ((InternalEObject)newAcidAvoidable).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FlammPackage.FAILURE__ACID_AVOIDABLE, null, msgs);
+ msgs = basicSetAcidAvoidable(newAcidAvoidable, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.FAILURE__ACID_AVOIDABLE, newAcidAvoidable, newAcidAvoidable));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Acid Mitigation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Acid Mitigation</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Acid Mitigation</em>' containment reference.
+ * @see #setAcidMitigation(ACIDmitigation)
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getFailure_AcidMitigation()
+ * @model containment="true"
+ * @generated
+ */
+ public ACIDmitigation getAcidMitigation() {
+ return acidMitigation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetAcidMitigation(ACIDmitigation newAcidMitigation, NotificationChain msgs) {
+ ACIDmitigation oldAcidMitigation = acidMitigation;
+ acidMitigation = newAcidMitigation;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlammPackage.FAILURE__ACID_MITIGATION, oldAcidMitigation, newAcidMitigation);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flamm.Failure#getAcidMitigation <em>Acid Mitigation</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Acid Mitigation</em>' containment reference.
+ * @see #getAcidMitigation()
+ * @generated
+ */
+ public void setAcidMitigation(ACIDmitigation newAcidMitigation) {
+ if (newAcidMitigation != acidMitigation) {
+ NotificationChain msgs = null;
+ if (acidMitigation != null)
+ msgs = ((InternalEObject)acidMitigation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FlammPackage.FAILURE__ACID_MITIGATION, null, msgs);
+ if (newAcidMitigation != null)
+ msgs = ((InternalEObject)newAcidMitigation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FlammPackage.FAILURE__ACID_MITIGATION, null, msgs);
+ msgs = basicSetAcidMitigation(newAcidMitigation, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.FAILURE__ACID_MITIGATION, newAcidMitigation, newAcidMitigation));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Previous Failures</b></em>' reference list.
+ * The list contents are of type {@link org.polarsys.chess.fla.flamm.Failure}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Previous Failures</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Previous Failures</em>' reference list.
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getFailure_PreviousFailures()
+ * @model
+ * @generated
+ */
+ public List<Failure> getPreviousFailures() {
+ if (previousFailures == null) {
+ previousFailures = new EObjectResolvingEList<Failure>(Failure.class, this, FlammPackage.FAILURE__PREVIOUS_FAILURES);
+ }
+ return previousFailures;
+ }
+
+ public void addPreviousFailure(Failure previousFailure) {
+ if (!getPreviousFailures().contains(previousFailure)) {
+ getPreviousFailures().add(previousFailure);
+ }
+ }
+
+ public void addPreviousFailures(Collection<Failure> previousFailures) {
+ for (Failure failure : previousFailures) {
+ addPreviousFailure(failure);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlammPackage.FAILURE__ACID_AVOIDABLE:
+ return basicSetAcidAvoidable(null, msgs);
+ case FlammPackage.FAILURE__ACID_MITIGATION:
+ return basicSetAcidMitigation(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ public boolean isSameFailure(Failure other) {
+ if (this == other)
+ return true;
+ if (other == null)
+ return false;
+ if (type != other.type)
+ return false;
+ if (id == null)
+ return false;
+ if (!id.equals(other.id))
+ return false;
+ return true;
+ }
+
+ public static boolean doCollectionContainFailure(Collection<Failure> collection, Failure failure) {
+ for (Failure listFailure : collection) {
+ if (listFailure.getId().equals(failure.getId())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static Failure getFailureInCollection(Collection<Failure> collection, Failure failure) {
+ for (Failure listFailure : collection) {
+ if (listFailure.getId().equals(failure.getId())) {
+ return listFailure;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlammPackage.FAILURE__TYPE:
+ return getType();
+ case FlammPackage.FAILURE__ID:
+ return getId();
+ case FlammPackage.FAILURE__ACID_AVOIDABLE:
+ return getAcidAvoidable();
+ case FlammPackage.FAILURE__ACID_MITIGATION:
+ return getAcidMitigation();
+ case FlammPackage.FAILURE__PREVIOUS_FAILURES:
+ return getPreviousFailures();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlammPackage.FAILURE__TYPE:
+ setType((FailureType)newValue);
+ return;
+ case FlammPackage.FAILURE__ID:
+ setId((String)newValue);
+ return;
+ case FlammPackage.FAILURE__ACID_AVOIDABLE:
+ setAcidAvoidable((ACIDavoidable)newValue);
+ return;
+ case FlammPackage.FAILURE__ACID_MITIGATION:
+ setAcidMitigation((ACIDmitigation)newValue);
+ return;
+ case FlammPackage.FAILURE__PREVIOUS_FAILURES:
+ getPreviousFailures().clear();
+ getPreviousFailures().addAll((Collection<? extends Failure>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlammPackage.FAILURE__TYPE:
+ setType(TYPE_EDEFAULT);
+ return;
+ case FlammPackage.FAILURE__ID:
+ setId(ID_EDEFAULT);
+ return;
+ case FlammPackage.FAILURE__ACID_AVOIDABLE:
+ setAcidAvoidable((ACIDavoidable)null);
+ return;
+ case FlammPackage.FAILURE__ACID_MITIGATION:
+ setAcidMitigation((ACIDmitigation)null);
+ return;
+ case FlammPackage.FAILURE__PREVIOUS_FAILURES:
+ getPreviousFailures().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlammPackage.FAILURE__TYPE:
+ return type != TYPE_EDEFAULT;
+ case FlammPackage.FAILURE__ID:
+ return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id);
+ case FlammPackage.FAILURE__ACID_AVOIDABLE:
+ return acidAvoidable != null;
+ case FlammPackage.FAILURE__ACID_MITIGATION:
+ return acidMitigation != null;
+ case FlammPackage.FAILURE__PREVIOUS_FAILURES:
+ return previousFailures != null && !previousFailures.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (type: ");
+ result.append(type);
+ result.append(", id: ");
+ result.append(id);
+ result.append(')');
+ return result.toString();
+ }
+
+} // Failure
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/A_avoidable.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/A_avoidable.java
new file mode 100644
index 0000000..cf99324
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/A_avoidable.java
@@ -0,0 +1,245 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.FailureTypes;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Aavoidable</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getA_avoidable()
+ * @model
+ * @generated
+ */
+public enum A_avoidable implements Enumerator {
+ /**
+ * The '<em><b>Unspecified</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #UNSPECIFIED_VALUE
+ * @generated
+ * @ordered
+ */
+ UNSPECIFIED(0, "unspecified", "unspecified"),
+
+ /**
+ * The '<em><b>Incompletion</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #INCOMPLETION_VALUE
+ * @generated
+ * @ordered
+ */
+ INCOMPLETION(1, "incompletion", "incompletion"),
+
+ /**
+ * The '<em><b>None</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #NONE_VALUE
+ * @generated
+ * @ordered
+ */
+ NONE(2, "none", "none");
+
+ /**
+ * The '<em><b>Unspecified</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Unspecified</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #UNSPECIFIED
+ * @model name="unspecified"
+ * @generated
+ * @ordered
+ */
+ public static final int UNSPECIFIED_VALUE = 0;
+
+ /**
+ * The '<em><b>Incompletion</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Incompletion</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #INCOMPLETION
+ * @model name="incompletion"
+ * @generated
+ * @ordered
+ */
+ public static final int INCOMPLETION_VALUE = 1;
+
+ /**
+ * The '<em><b>None</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>None</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #NONE
+ * @model name="none"
+ * @generated
+ * @ordered
+ */
+ public static final int NONE_VALUE = 2;
+
+ /**
+ * An array of all the '<em><b>Aavoidable</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final A_avoidable[] VALUES_ARRAY =
+ new A_avoidable[] {
+ UNSPECIFIED,
+ INCOMPLETION,
+ NONE,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Aavoidable</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<A_avoidable> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Aavoidable</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static A_avoidable get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ A_avoidable result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Aavoidable</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static A_avoidable getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ A_avoidable result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Aavoidable</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static A_avoidable get(int value) {
+ switch (value) {
+ case UNSPECIFIED_VALUE: return UNSPECIFIED;
+ case INCOMPLETION_VALUE: return INCOMPLETION;
+ case NONE_VALUE: return NONE;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private A_avoidable(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} //A_avoidable
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/A_mitigation.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/A_mitigation.java
new file mode 100644
index 0000000..cc97b35
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/A_mitigation.java
@@ -0,0 +1,272 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.FailureTypes;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Amitigation</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getA_mitigation()
+ * @model
+ * @generated
+ */
+public enum A_mitigation implements Enumerator {
+ /**
+ * The '<em><b>Unspecified</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #UNSPECIFIED_VALUE
+ * @generated
+ * @ordered
+ */
+ UNSPECIFIED(0, "unspecified", "unspecified"),
+
+ /**
+ * The '<em><b>All or nothing</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #ALL_OR_NOTHING_VALUE
+ * @generated
+ * @ordered
+ */
+ ALL_OR_NOTHING(1, "all_or_nothing", "all_or_nothing"),
+
+ /**
+ * The '<em><b>All or compensation</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #ALL_OR_COMPENSATION_VALUE
+ * @generated
+ * @ordered
+ */
+ ALL_OR_COMPENSATION(2, "all_or_compensation", "all_or_compensation"),
+
+ /**
+ * The '<em><b>None</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #NONE_VALUE
+ * @generated
+ * @ordered
+ */
+ NONE(3, "none", "none");
+
+ /**
+ * The '<em><b>Unspecified</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Unspecified</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #UNSPECIFIED
+ * @model name="unspecified"
+ * @generated
+ * @ordered
+ */
+ public static final int UNSPECIFIED_VALUE = 0;
+
+ /**
+ * The '<em><b>All or nothing</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>All or nothing</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #ALL_OR_NOTHING
+ * @model name="all_or_nothing"
+ * @generated
+ * @ordered
+ */
+ public static final int ALL_OR_NOTHING_VALUE = 1;
+
+ /**
+ * The '<em><b>All or compensation</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>All or compensation</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #ALL_OR_COMPENSATION
+ * @model name="all_or_compensation"
+ * @generated
+ * @ordered
+ */
+ public static final int ALL_OR_COMPENSATION_VALUE = 2;
+
+ /**
+ * The '<em><b>None</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>None</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #NONE
+ * @model name="none"
+ * @generated
+ * @ordered
+ */
+ public static final int NONE_VALUE = 3;
+
+ /**
+ * An array of all the '<em><b>Amitigation</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final A_mitigation[] VALUES_ARRAY =
+ new A_mitigation[] {
+ UNSPECIFIED,
+ ALL_OR_NOTHING,
+ ALL_OR_COMPENSATION,
+ NONE,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Amitigation</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<A_mitigation> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Amitigation</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static A_mitigation get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ A_mitigation result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Amitigation</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static A_mitigation getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ A_mitigation result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Amitigation</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static A_mitigation get(int value) {
+ switch (value) {
+ case UNSPECIFIED_VALUE: return UNSPECIFIED;
+ case ALL_OR_NOTHING_VALUE: return ALL_OR_NOTHING;
+ case ALL_OR_COMPENSATION_VALUE: return ALL_OR_COMPENSATION;
+ case NONE_VALUE: return NONE;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private A_mitigation(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} //A_mitigation
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/C_avoidable.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/C_avoidable.java
new file mode 100644
index 0000000..cdef4d0
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/C_avoidable.java
@@ -0,0 +1,245 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.FailureTypes;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Cavoidable</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getC_avoidable()
+ * @model
+ * @generated
+ */
+public enum C_avoidable implements Enumerator {
+ /**
+ * The '<em><b>Unspecified</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #UNSPECIFIED_VALUE
+ * @generated
+ * @ordered
+ */
+ UNSPECIFIED(0, "unspecified", "unspecified"),
+
+ /**
+ * The '<em><b>Inconsistency</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #INCONSISTENCY_VALUE
+ * @generated
+ * @ordered
+ */
+ INCONSISTENCY(1, "inconsistency", "inconsistency"),
+
+ /**
+ * The '<em><b>None</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #NONE_VALUE
+ * @generated
+ * @ordered
+ */
+ NONE(2, "none", "none");
+
+ /**
+ * The '<em><b>Unspecified</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Unspecified</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #UNSPECIFIED
+ * @model name="unspecified"
+ * @generated
+ * @ordered
+ */
+ public static final int UNSPECIFIED_VALUE = 0;
+
+ /**
+ * The '<em><b>Inconsistency</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Inconsistency</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #INCONSISTENCY
+ * @model name="inconsistency"
+ * @generated
+ * @ordered
+ */
+ public static final int INCONSISTENCY_VALUE = 1;
+
+ /**
+ * The '<em><b>None</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>None</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #NONE
+ * @model name="none"
+ * @generated
+ * @ordered
+ */
+ public static final int NONE_VALUE = 2;
+
+ /**
+ * An array of all the '<em><b>Cavoidable</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final C_avoidable[] VALUES_ARRAY =
+ new C_avoidable[] {
+ UNSPECIFIED,
+ INCONSISTENCY,
+ NONE,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Cavoidable</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<C_avoidable> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Cavoidable</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static C_avoidable get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ C_avoidable result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Cavoidable</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static C_avoidable getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ C_avoidable result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Cavoidable</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static C_avoidable get(int value) {
+ switch (value) {
+ case UNSPECIFIED_VALUE: return UNSPECIFIED;
+ case INCONSISTENCY_VALUE: return INCONSISTENCY;
+ case NONE_VALUE: return NONE;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private C_avoidable(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} //C_avoidable
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/C_mitigation.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/C_mitigation.java
new file mode 100644
index 0000000..a6b3282
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/C_mitigation.java
@@ -0,0 +1,272 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.FailureTypes;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Cmitigation</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getC_mitigation()
+ * @model
+ * @generated
+ */
+public enum C_mitigation implements Enumerator {
+ /**
+ * The '<em><b>Unspecified</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #UNSPECIFIED_VALUE
+ * @generated
+ * @ordered
+ */
+ UNSPECIFIED(0, "unspecified", "unspecified"),
+
+ /**
+ * The '<em><b>Full consistency</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #FULL_CONSISTENCY_VALUE
+ * @generated
+ * @ordered
+ */
+ FULL_CONSISTENCY(1, "full_consistency", "full_consistency"),
+
+ /**
+ * The '<em><b>Range violation allowed</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #RANGE_VIOLATION_ALLOWED_VALUE
+ * @generated
+ * @ordered
+ */
+ RANGE_VIOLATION_ALLOWED(2, "range_violation_allowed", "range_violation_allowed"),
+
+ /**
+ * The '<em><b>None</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #NONE_VALUE
+ * @generated
+ * @ordered
+ */
+ NONE(3, "none", "none");
+
+ /**
+ * The '<em><b>Unspecified</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Unspecified</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #UNSPECIFIED
+ * @model name="unspecified"
+ * @generated
+ * @ordered
+ */
+ public static final int UNSPECIFIED_VALUE = 0;
+
+ /**
+ * The '<em><b>Full consistency</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Full consistency</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #FULL_CONSISTENCY
+ * @model name="full_consistency"
+ * @generated
+ * @ordered
+ */
+ public static final int FULL_CONSISTENCY_VALUE = 1;
+
+ /**
+ * The '<em><b>Range violation allowed</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Range violation allowed</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #RANGE_VIOLATION_ALLOWED
+ * @model name="range_violation_allowed"
+ * @generated
+ * @ordered
+ */
+ public static final int RANGE_VIOLATION_ALLOWED_VALUE = 2;
+
+ /**
+ * The '<em><b>None</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>None</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #NONE
+ * @model name="none"
+ * @generated
+ * @ordered
+ */
+ public static final int NONE_VALUE = 3;
+
+ /**
+ * An array of all the '<em><b>Cmitigation</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final C_mitigation[] VALUES_ARRAY =
+ new C_mitigation[] {
+ UNSPECIFIED,
+ FULL_CONSISTENCY,
+ RANGE_VIOLATION_ALLOWED,
+ NONE,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Cmitigation</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<C_mitigation> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Cmitigation</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static C_mitigation get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ C_mitigation result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Cmitigation</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static C_mitigation getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ C_mitigation result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Cmitigation</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static C_mitigation get(int value) {
+ switch (value) {
+ case UNSPECIFIED_VALUE: return UNSPECIFIED;
+ case FULL_CONSISTENCY_VALUE: return FULL_CONSISTENCY;
+ case RANGE_VIOLATION_ALLOWED_VALUE: return RANGE_VIOLATION_ALLOWED;
+ case NONE_VALUE: return NONE;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private C_mitigation(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} //C_mitigation
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/D_avoidable.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/D_avoidable.java
new file mode 100644
index 0000000..796ccce
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/D_avoidable.java
@@ -0,0 +1,245 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.FailureTypes;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Davoidable</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getD_avoidable()
+ * @model
+ * @generated
+ */
+public enum D_avoidable implements Enumerator {
+ /**
+ * The '<em><b>Unspecified</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #UNSPECIFIED_VALUE
+ * @generated
+ * @ordered
+ */
+ UNSPECIFIED(0, "unspecified", "unspecified"),
+
+ /**
+ * The '<em><b>Impermanence</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #IMPERMANENCE_VALUE
+ * @generated
+ * @ordered
+ */
+ IMPERMANENCE(1, "impermanence", "impermanence"),
+
+ /**
+ * The '<em><b>None</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #NONE_VALUE
+ * @generated
+ * @ordered
+ */
+ NONE(2, "none", "none");
+
+ /**
+ * The '<em><b>Unspecified</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Unspecified</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #UNSPECIFIED
+ * @model name="unspecified"
+ * @generated
+ * @ordered
+ */
+ public static final int UNSPECIFIED_VALUE = 0;
+
+ /**
+ * The '<em><b>Impermanence</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Impermanence</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #IMPERMANENCE
+ * @model name="impermanence"
+ * @generated
+ * @ordered
+ */
+ public static final int IMPERMANENCE_VALUE = 1;
+
+ /**
+ * The '<em><b>None</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>None</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #NONE
+ * @model name="none"
+ * @generated
+ * @ordered
+ */
+ public static final int NONE_VALUE = 2;
+
+ /**
+ * An array of all the '<em><b>Davoidable</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final D_avoidable[] VALUES_ARRAY =
+ new D_avoidable[] {
+ UNSPECIFIED,
+ IMPERMANENCE,
+ NONE,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Davoidable</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<D_avoidable> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Davoidable</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static D_avoidable get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ D_avoidable result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Davoidable</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static D_avoidable getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ D_avoidable result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Davoidable</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static D_avoidable get(int value) {
+ switch (value) {
+ case UNSPECIFIED_VALUE: return UNSPECIFIED;
+ case IMPERMANENCE_VALUE: return IMPERMANENCE;
+ case NONE_VALUE: return NONE;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private D_avoidable(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} //D_avoidable
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/D_mitigation.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/D_mitigation.java
new file mode 100644
index 0000000..5e155cc
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/D_mitigation.java
@@ -0,0 +1,272 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.FailureTypes;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Dmitigation</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getD_mitigation()
+ * @model
+ * @generated
+ */
+public enum D_mitigation implements Enumerator {
+ /**
+ * The '<em><b>Unspecified</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #UNSPECIFIED_VALUE
+ * @generated
+ * @ordered
+ */
+ UNSPECIFIED(0, "unspecified", "unspecified"),
+
+ /**
+ * The '<em><b>No loss</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #NO_LOSS_VALUE
+ * @generated
+ * @ordered
+ */
+ NO_LOSS(1, "no_loss", "no_loss"),
+
+ /**
+ * The '<em><b>Partial loss allowed</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #PARTIAL_LOSS_ALLOWED_VALUE
+ * @generated
+ * @ordered
+ */
+ PARTIAL_LOSS_ALLOWED(2, "partial_loss_allowed", "partial_loss_allowed"),
+
+ /**
+ * The '<em><b>None</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #NONE_VALUE
+ * @generated
+ * @ordered
+ */
+ NONE(3, "none", "none");
+
+ /**
+ * The '<em><b>Unspecified</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Unspecified</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #UNSPECIFIED
+ * @model name="unspecified"
+ * @generated
+ * @ordered
+ */
+ public static final int UNSPECIFIED_VALUE = 0;
+
+ /**
+ * The '<em><b>No loss</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>No loss</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #NO_LOSS
+ * @model name="no_loss"
+ * @generated
+ * @ordered
+ */
+ public static final int NO_LOSS_VALUE = 1;
+
+ /**
+ * The '<em><b>Partial loss allowed</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Partial loss allowed</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #PARTIAL_LOSS_ALLOWED
+ * @model name="partial_loss_allowed"
+ * @generated
+ * @ordered
+ */
+ public static final int PARTIAL_LOSS_ALLOWED_VALUE = 2;
+
+ /**
+ * The '<em><b>None</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>None</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #NONE
+ * @model name="none"
+ * @generated
+ * @ordered
+ */
+ public static final int NONE_VALUE = 3;
+
+ /**
+ * An array of all the '<em><b>Dmitigation</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final D_mitigation[] VALUES_ARRAY =
+ new D_mitigation[] {
+ UNSPECIFIED,
+ NO_LOSS,
+ PARTIAL_LOSS_ALLOWED,
+ NONE,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Dmitigation</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<D_mitigation> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Dmitigation</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static D_mitigation get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ D_mitigation result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Dmitigation</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static D_mitigation getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ D_mitigation result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Dmitigation</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static D_mitigation get(int value) {
+ switch (value) {
+ case UNSPECIFIED_VALUE: return UNSPECIFIED;
+ case NO_LOSS_VALUE: return NO_LOSS;
+ case PARTIAL_LOSS_ALLOWED_VALUE: return PARTIAL_LOSS_ALLOWED;
+ case NONE_VALUE: return NONE;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private D_mitigation(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} //D_mitigation
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/FailureType.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/FailureType.java
new file mode 100644
index 0000000..285cc09
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/FailureType.java
@@ -0,0 +1,272 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.FailureTypes;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Failure Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getFailureType()
+ * @model
+ * @generated
+ */
+public enum FailureType implements Enumerator {
+ /**
+ * The '<em><b>No Failure</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #NO_FAILURE_VALUE
+ * @generated
+ * @ordered
+ */
+ NO_FAILURE(0, "noFailure", "noFailure"),
+
+ /**
+ * The '<em><b>Failure</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #FAILURE_VALUE
+ * @generated
+ * @ordered
+ */
+ FAILURE(1, "failure", "failure"),
+
+ /**
+ * The '<em><b>Variable</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #VARIABLE_VALUE
+ * @generated
+ * @ordered
+ */
+ VARIABLE(2, "variable", "variable"),
+
+ /**
+ * The '<em><b>Wildcard</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #WILDCARD_VALUE
+ * @generated
+ * @ordered
+ */
+ WILDCARD(3, "wildcard", "wildcard");
+
+ /**
+ * The '<em><b>No Failure</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>No Failure</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #NO_FAILURE
+ * @model name="noFailure"
+ * @generated
+ * @ordered
+ */
+ public static final int NO_FAILURE_VALUE = 0;
+
+ /**
+ * The '<em><b>Failure</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Failure</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #FAILURE
+ * @model name="failure"
+ * @generated
+ * @ordered
+ */
+ public static final int FAILURE_VALUE = 1;
+
+ /**
+ * The '<em><b>Variable</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Variable</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #VARIABLE
+ * @model name="variable"
+ * @generated
+ * @ordered
+ */
+ public static final int VARIABLE_VALUE = 2;
+
+ /**
+ * The '<em><b>Wildcard</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Wildcard</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #WILDCARD
+ * @model name="wildcard"
+ * @generated
+ * @ordered
+ */
+ public static final int WILDCARD_VALUE = 3;
+
+ /**
+ * An array of all the '<em><b>Failure Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final FailureType[] VALUES_ARRAY =
+ new FailureType[] {
+ NO_FAILURE,
+ FAILURE,
+ VARIABLE,
+ WILDCARD,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Failure Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<FailureType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Failure Type</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static FailureType get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ FailureType result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Failure Type</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static FailureType getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ FailureType result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Failure Type</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static FailureType get(int value) {
+ switch (value) {
+ case NO_FAILURE_VALUE: return NO_FAILURE;
+ case FAILURE_VALUE: return FAILURE;
+ case VARIABLE_VALUE: return VARIABLE;
+ case WILDCARD_VALUE: return WILDCARD;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private FailureType(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} //FailureType
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/FailureTypesFactory.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/FailureTypesFactory.java
new file mode 100644
index 0000000..1f3f303
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/FailureTypesFactory.java
@@ -0,0 +1,345 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.FailureTypes;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage
+ * @generated
+ */
+public class FailureTypesFactory extends EFactoryImpl {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final FailureTypesFactory eINSTANCE = init();
+
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static FailureTypesFactory init() {
+ try {
+ FailureTypesFactory theFailureTypesFactory = (FailureTypesFactory)EPackage.Registry.INSTANCE.getEFactory(FailureTypesPackage.eNS_URI);
+ if (theFailureTypesFactory != null) {
+ return theFailureTypesFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new FailureTypesFactory();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FailureTypesFactory() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object createFromString(EDataType eDataType, String initialValue) {
+ switch (eDataType.getClassifierID()) {
+ case FailureTypesPackage.FAILURE_TYPE:
+ return createFailureTypeFromString(eDataType, initialValue);
+ case FailureTypesPackage.AAVOIDABLE:
+ return createA_avoidableFromString(eDataType, initialValue);
+ case FailureTypesPackage.CAVOIDABLE:
+ return createC_avoidableFromString(eDataType, initialValue);
+ case FailureTypesPackage.IAVOIDABLE:
+ return createI_avoidableFromString(eDataType, initialValue);
+ case FailureTypesPackage.DAVOIDABLE:
+ return createD_avoidableFromString(eDataType, initialValue);
+ case FailureTypesPackage.AMITIGATION:
+ return createA_mitigationFromString(eDataType, initialValue);
+ case FailureTypesPackage.CMITIGATION:
+ return createC_mitigationFromString(eDataType, initialValue);
+ case FailureTypesPackage.IMITIGATION:
+ return createI_mitigationFromString(eDataType, initialValue);
+ case FailureTypesPackage.DMITIGATION:
+ return createD_mitigationFromString(eDataType, initialValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String convertToString(EDataType eDataType, Object instanceValue) {
+ switch (eDataType.getClassifierID()) {
+ case FailureTypesPackage.FAILURE_TYPE:
+ return convertFailureTypeToString(eDataType, instanceValue);
+ case FailureTypesPackage.AAVOIDABLE:
+ return convertA_avoidableToString(eDataType, instanceValue);
+ case FailureTypesPackage.CAVOIDABLE:
+ return convertC_avoidableToString(eDataType, instanceValue);
+ case FailureTypesPackage.IAVOIDABLE:
+ return convertI_avoidableToString(eDataType, instanceValue);
+ case FailureTypesPackage.DAVOIDABLE:
+ return convertD_avoidableToString(eDataType, instanceValue);
+ case FailureTypesPackage.AMITIGATION:
+ return convertA_mitigationToString(eDataType, instanceValue);
+ case FailureTypesPackage.CMITIGATION:
+ return convertC_mitigationToString(eDataType, instanceValue);
+ case FailureTypesPackage.IMITIGATION:
+ return convertI_mitigationToString(eDataType, instanceValue);
+ case FailureTypesPackage.DMITIGATION:
+ return convertD_mitigationToString(eDataType, instanceValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FailureType createFailureTypeFromString(EDataType eDataType, String initialValue) {
+ FailureType result = FailureType.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertFailureTypeToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public A_avoidable createA_avoidableFromString(EDataType eDataType, String initialValue) {
+ A_avoidable result = A_avoidable.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertA_avoidableToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public C_avoidable createC_avoidableFromString(EDataType eDataType, String initialValue) {
+ C_avoidable result = C_avoidable.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertC_avoidableToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public I_avoidable createI_avoidableFromString(EDataType eDataType, String initialValue) {
+ I_avoidable result = I_avoidable.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertI_avoidableToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public D_avoidable createD_avoidableFromString(EDataType eDataType, String initialValue) {
+ D_avoidable result = D_avoidable.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertD_avoidableToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public A_mitigation createA_mitigationFromString(EDataType eDataType, String initialValue) {
+ A_mitigation result = A_mitigation.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertA_mitigationToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public C_mitigation createC_mitigationFromString(EDataType eDataType, String initialValue) {
+ C_mitigation result = C_mitigation.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertC_mitigationToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public I_mitigation createI_mitigationFromString(EDataType eDataType, String initialValue) {
+ I_mitigation result = I_mitigation.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertI_mitigationToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public D_mitigation createD_mitigationFromString(EDataType eDataType, String initialValue) {
+ D_mitigation result = D_mitigation.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertD_mitigationToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FailureTypesPackage getFailureTypesPackage() {
+ return (FailureTypesPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static FailureTypesPackage getPackage() {
+ return FailureTypesPackage.eINSTANCE;
+ }
+
+} //FailureTypesFactory
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/FailureTypesPackage.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/FailureTypesPackage.java
new file mode 100644
index 0000000..d4fe1a6
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/FailureTypesPackage.java
@@ -0,0 +1,619 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.FailureTypes;
+
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.polarsys.chess.fla.flamm.FlammPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesFactory
+ * @model kind="package"
+ * @generated
+ */
+public class FailureTypesPackage extends EPackageImpl {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNAME = "FailureTypes";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_URI = "http://polarsys.org/chess/fla/flamm/FailureTypes";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_PREFIX = "FailureTypes";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final FailureTypesPackage eINSTANCE = org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage.init();
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.FailureType <em>Failure Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureType
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getFailureType()
+ * @generated
+ */
+ public static final int FAILURE_TYPE = 0;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.A_avoidable <em>Aavoidable</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.A_avoidable
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getA_avoidable()
+ * @generated
+ */
+ public static final int AAVOIDABLE = 1;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.C_avoidable <em>Cavoidable</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.C_avoidable
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getC_avoidable()
+ * @generated
+ */
+ public static final int CAVOIDABLE = 2;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.I_avoidable <em>Iavoidable</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.I_avoidable
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getI_avoidable()
+ * @generated
+ */
+ public static final int IAVOIDABLE = 3;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.D_avoidable <em>Davoidable</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.D_avoidable
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getD_avoidable()
+ * @generated
+ */
+ public static final int DAVOIDABLE = 4;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.A_mitigation <em>Amitigation</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.A_mitigation
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getA_mitigation()
+ * @generated
+ */
+ public static final int AMITIGATION = 5;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.C_mitigation <em>Cmitigation</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.C_mitigation
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getC_mitigation()
+ * @generated
+ */
+ public static final int CMITIGATION = 6;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.I_mitigation <em>Imitigation</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.I_mitigation
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getI_mitigation()
+ * @generated
+ */
+ public static final int IMITIGATION = 7;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.D_mitigation <em>Dmitigation</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.D_mitigation
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getD_mitigation()
+ * @generated
+ */
+ public static final int DMITIGATION = 8;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum failureTypeEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum a_avoidableEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum c_avoidableEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum i_avoidableEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum d_avoidableEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum a_mitigationEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum c_mitigationEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum i_mitigationEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum d_mitigationEEnum = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private FailureTypesPackage() {
+ super(eNS_URI, FailureTypesFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link FailureTypesPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static FailureTypesPackage init() {
+ if (isInited) return (FailureTypesPackage)EPackage.Registry.INSTANCE.getEPackage(FailureTypesPackage.eNS_URI);
+
+ // Obtain or create and register package
+ FailureTypesPackage theFailureTypesPackage = (FailureTypesPackage)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof FailureTypesPackage ? EPackage.Registry.INSTANCE.get(eNS_URI) : new FailureTypesPackage());
+
+ isInited = true;
+
+ // Obtain or create and register interdependencies
+ FlammPackage theFlammPackage = (FlammPackage)(EPackage.Registry.INSTANCE.getEPackage(FlammPackage.eNS_URI) instanceof FlammPackage ? EPackage.Registry.INSTANCE.getEPackage(FlammPackage.eNS_URI) : FlammPackage.eINSTANCE);
+
+ // Create package meta-data objects
+ theFailureTypesPackage.createPackageContents();
+ theFlammPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theFailureTypesPackage.initializePackageContents();
+ theFlammPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theFailureTypesPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(FailureTypesPackage.eNS_URI, theFailureTypesPackage);
+ return theFailureTypesPackage;
+ }
+
+
+ /**
+ * Returns the meta object for enum '{@link org.polarsys.chess.fla.flamm.FailureTypes.FailureType <em>Failure Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Failure Type</em>'.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureType
+ * @generated
+ */
+ public EEnum getFailureType() {
+ return failureTypeEEnum;
+ }
+
+ /**
+ * Returns the meta object for enum '{@link org.polarsys.chess.fla.flamm.FailureTypes.A_avoidable <em>Aavoidable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Aavoidable</em>'.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.A_avoidable
+ * @generated
+ */
+ public EEnum getA_avoidable() {
+ return a_avoidableEEnum;
+ }
+
+ /**
+ * Returns the meta object for enum '{@link org.polarsys.chess.fla.flamm.FailureTypes.C_avoidable <em>Cavoidable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Cavoidable</em>'.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.C_avoidable
+ * @generated
+ */
+ public EEnum getC_avoidable() {
+ return c_avoidableEEnum;
+ }
+
+ /**
+ * Returns the meta object for enum '{@link org.polarsys.chess.fla.flamm.FailureTypes.I_avoidable <em>Iavoidable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Iavoidable</em>'.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.I_avoidable
+ * @generated
+ */
+ public EEnum getI_avoidable() {
+ return i_avoidableEEnum;
+ }
+
+ /**
+ * Returns the meta object for enum '{@link org.polarsys.chess.fla.flamm.FailureTypes.D_avoidable <em>Davoidable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Davoidable</em>'.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.D_avoidable
+ * @generated
+ */
+ public EEnum getD_avoidable() {
+ return d_avoidableEEnum;
+ }
+
+ /**
+ * Returns the meta object for enum '{@link org.polarsys.chess.fla.flamm.FailureTypes.A_mitigation <em>Amitigation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Amitigation</em>'.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.A_mitigation
+ * @generated
+ */
+ public EEnum getA_mitigation() {
+ return a_mitigationEEnum;
+ }
+
+ /**
+ * Returns the meta object for enum '{@link org.polarsys.chess.fla.flamm.FailureTypes.C_mitigation <em>Cmitigation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Cmitigation</em>'.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.C_mitigation
+ * @generated
+ */
+ public EEnum getC_mitigation() {
+ return c_mitigationEEnum;
+ }
+
+ /**
+ * Returns the meta object for enum '{@link org.polarsys.chess.fla.flamm.FailureTypes.I_mitigation <em>Imitigation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Imitigation</em>'.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.I_mitigation
+ * @generated
+ */
+ public EEnum getI_mitigation() {
+ return i_mitigationEEnum;
+ }
+
+ /**
+ * Returns the meta object for enum '{@link org.polarsys.chess.fla.flamm.FailureTypes.D_mitigation <em>Dmitigation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Dmitigation</em>'.
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.D_mitigation
+ * @generated
+ */
+ public EEnum getD_mitigation() {
+ return d_mitigationEEnum;
+ }
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ public FailureTypesFactory getFailureTypesFactory() {
+ return (FailureTypesFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create enums
+ failureTypeEEnum = createEEnum(FAILURE_TYPE);
+ a_avoidableEEnum = createEEnum(AAVOIDABLE);
+ c_avoidableEEnum = createEEnum(CAVOIDABLE);
+ i_avoidableEEnum = createEEnum(IAVOIDABLE);
+ d_avoidableEEnum = createEEnum(DAVOIDABLE);
+ a_mitigationEEnum = createEEnum(AMITIGATION);
+ c_mitigationEEnum = createEEnum(CMITIGATION);
+ i_mitigationEEnum = createEEnum(IMITIGATION);
+ d_mitigationEEnum = createEEnum(DMITIGATION);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Initialize enums and add enum literals
+ initEEnum(failureTypeEEnum, FailureType.class, "FailureType");
+ addEEnumLiteral(failureTypeEEnum, FailureType.NO_FAILURE);
+ addEEnumLiteral(failureTypeEEnum, FailureType.FAILURE);
+ addEEnumLiteral(failureTypeEEnum, FailureType.VARIABLE);
+ addEEnumLiteral(failureTypeEEnum, FailureType.WILDCARD);
+
+ initEEnum(a_avoidableEEnum, A_avoidable.class, "A_avoidable");
+ addEEnumLiteral(a_avoidableEEnum, A_avoidable.UNSPECIFIED);
+ addEEnumLiteral(a_avoidableEEnum, A_avoidable.INCOMPLETION);
+ addEEnumLiteral(a_avoidableEEnum, A_avoidable.NONE);
+
+ initEEnum(c_avoidableEEnum, C_avoidable.class, "C_avoidable");
+ addEEnumLiteral(c_avoidableEEnum, C_avoidable.UNSPECIFIED);
+ addEEnumLiteral(c_avoidableEEnum, C_avoidable.INCONSISTENCY);
+ addEEnumLiteral(c_avoidableEEnum, C_avoidable.NONE);
+
+ initEEnum(i_avoidableEEnum, I_avoidable.class, "I_avoidable");
+ addEEnumLiteral(i_avoidableEEnum, I_avoidable.UNSPECIFIED);
+ addEEnumLiteral(i_avoidableEEnum, I_avoidable.INTERFERENCE);
+ addEEnumLiteral(i_avoidableEEnum, I_avoidable.NONE);
+
+ initEEnum(d_avoidableEEnum, D_avoidable.class, "D_avoidable");
+ addEEnumLiteral(d_avoidableEEnum, D_avoidable.UNSPECIFIED);
+ addEEnumLiteral(d_avoidableEEnum, D_avoidable.IMPERMANENCE);
+ addEEnumLiteral(d_avoidableEEnum, D_avoidable.NONE);
+
+ initEEnum(a_mitigationEEnum, A_mitigation.class, "A_mitigation");
+ addEEnumLiteral(a_mitigationEEnum, A_mitigation.UNSPECIFIED);
+ addEEnumLiteral(a_mitigationEEnum, A_mitigation.ALL_OR_NOTHING);
+ addEEnumLiteral(a_mitigationEEnum, A_mitigation.ALL_OR_COMPENSATION);
+ addEEnumLiteral(a_mitigationEEnum, A_mitigation.NONE);
+
+ initEEnum(c_mitigationEEnum, C_mitigation.class, "C_mitigation");
+ addEEnumLiteral(c_mitigationEEnum, C_mitigation.UNSPECIFIED);
+ addEEnumLiteral(c_mitigationEEnum, C_mitigation.FULL_CONSISTENCY);
+ addEEnumLiteral(c_mitigationEEnum, C_mitigation.RANGE_VIOLATION_ALLOWED);
+ addEEnumLiteral(c_mitigationEEnum, C_mitigation.NONE);
+
+ initEEnum(i_mitigationEEnum, I_mitigation.class, "I_mitigation");
+ addEEnumLiteral(i_mitigationEEnum, I_mitigation.UNSPECIFIED);
+ addEEnumLiteral(i_mitigationEEnum, I_mitigation.PORTABLE_LEVEL);
+ addEEnumLiteral(i_mitigationEEnum, I_mitigation.SERIALIZABLE);
+ addEEnumLiteral(i_mitigationEEnum, I_mitigation.NONE);
+
+ initEEnum(d_mitigationEEnum, D_mitigation.class, "D_mitigation");
+ addEEnumLiteral(d_mitigationEEnum, D_mitigation.UNSPECIFIED);
+ addEEnumLiteral(d_mitigationEEnum, D_mitigation.NO_LOSS);
+ addEEnumLiteral(d_mitigationEEnum, D_mitigation.PARTIAL_LOSS_ALLOWED);
+ addEEnumLiteral(d_mitigationEEnum, D_mitigation.NONE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public interface Literals {
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.FailureType <em>Failure Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureType
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getFailureType()
+ * @generated
+ */
+ public static final EEnum FAILURE_TYPE = eINSTANCE.getFailureType();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.A_avoidable <em>Aavoidable</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.A_avoidable
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getA_avoidable()
+ * @generated
+ */
+ public static final EEnum AAVOIDABLE = eINSTANCE.getA_avoidable();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.C_avoidable <em>Cavoidable</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.C_avoidable
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getC_avoidable()
+ * @generated
+ */
+ public static final EEnum CAVOIDABLE = eINSTANCE.getC_avoidable();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.I_avoidable <em>Iavoidable</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.I_avoidable
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getI_avoidable()
+ * @generated
+ */
+ public static final EEnum IAVOIDABLE = eINSTANCE.getI_avoidable();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.D_avoidable <em>Davoidable</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.D_avoidable
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getD_avoidable()
+ * @generated
+ */
+ public static final EEnum DAVOIDABLE = eINSTANCE.getD_avoidable();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.A_mitigation <em>Amitigation</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.A_mitigation
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getA_mitigation()
+ * @generated
+ */
+ public static final EEnum AMITIGATION = eINSTANCE.getA_mitigation();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.C_mitigation <em>Cmitigation</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.C_mitigation
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getC_mitigation()
+ * @generated
+ */
+ public static final EEnum CMITIGATION = eINSTANCE.getC_mitigation();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.I_mitigation <em>Imitigation</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.I_mitigation
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getI_mitigation()
+ * @generated
+ */
+ public static final EEnum IMITIGATION = eINSTANCE.getI_mitigation();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.D_mitigation <em>Dmitigation</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.D_mitigation
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getD_mitigation()
+ * @generated
+ */
+ public static final EEnum DMITIGATION = eINSTANCE.getD_mitigation();
+
+ }
+
+} //FailureTypesPackage
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/I_avoidable.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/I_avoidable.java
new file mode 100644
index 0000000..038a6ae
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/I_avoidable.java
@@ -0,0 +1,245 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.FailureTypes;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Iavoidable</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getI_avoidable()
+ * @model
+ * @generated
+ */
+public enum I_avoidable implements Enumerator {
+ /**
+ * The '<em><b>Unspecified</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #UNSPECIFIED_VALUE
+ * @generated
+ * @ordered
+ */
+ UNSPECIFIED(0, "unspecified", "unspecified"),
+
+ /**
+ * The '<em><b>Interference</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #INTERFERENCE_VALUE
+ * @generated
+ * @ordered
+ */
+ INTERFERENCE(1, "interference", "interference"),
+
+ /**
+ * The '<em><b>None</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #NONE_VALUE
+ * @generated
+ * @ordered
+ */
+ NONE(2, "none", "none");
+
+ /**
+ * The '<em><b>Unspecified</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Unspecified</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #UNSPECIFIED
+ * @model name="unspecified"
+ * @generated
+ * @ordered
+ */
+ public static final int UNSPECIFIED_VALUE = 0;
+
+ /**
+ * The '<em><b>Interference</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Interference</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #INTERFERENCE
+ * @model name="interference"
+ * @generated
+ * @ordered
+ */
+ public static final int INTERFERENCE_VALUE = 1;
+
+ /**
+ * The '<em><b>None</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>None</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #NONE
+ * @model name="none"
+ * @generated
+ * @ordered
+ */
+ public static final int NONE_VALUE = 2;
+
+ /**
+ * An array of all the '<em><b>Iavoidable</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final I_avoidable[] VALUES_ARRAY =
+ new I_avoidable[] {
+ UNSPECIFIED,
+ INTERFERENCE,
+ NONE,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Iavoidable</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<I_avoidable> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Iavoidable</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static I_avoidable get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ I_avoidable result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Iavoidable</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static I_avoidable getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ I_avoidable result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Iavoidable</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static I_avoidable get(int value) {
+ switch (value) {
+ case UNSPECIFIED_VALUE: return UNSPECIFIED;
+ case INTERFERENCE_VALUE: return INTERFERENCE;
+ case NONE_VALUE: return NONE;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private I_avoidable(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} //I_avoidable
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/I_mitigation.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/I_mitigation.java
new file mode 100644
index 0000000..4bd6b3e
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/I_mitigation.java
@@ -0,0 +1,272 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.FailureTypes;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Imitigation</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getI_mitigation()
+ * @model
+ * @generated
+ */
+public enum I_mitigation implements Enumerator {
+ /**
+ * The '<em><b>Unspecified</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #UNSPECIFIED_VALUE
+ * @generated
+ * @ordered
+ */
+ UNSPECIFIED(0, "unspecified", "unspecified"),
+
+ /**
+ * The '<em><b>Portable level</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #PORTABLE_LEVEL_VALUE
+ * @generated
+ * @ordered
+ */
+ PORTABLE_LEVEL(1, "portable_level", "portable_level"),
+
+ /**
+ * The '<em><b>Serializable</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #SERIALIZABLE_VALUE
+ * @generated
+ * @ordered
+ */
+ SERIALIZABLE(2, "serializable", "serializable"),
+
+ /**
+ * The '<em><b>None</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #NONE_VALUE
+ * @generated
+ * @ordered
+ */
+ NONE(3, "none", "none");
+
+ /**
+ * The '<em><b>Unspecified</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Unspecified</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #UNSPECIFIED
+ * @model name="unspecified"
+ * @generated
+ * @ordered
+ */
+ public static final int UNSPECIFIED_VALUE = 0;
+
+ /**
+ * The '<em><b>Portable level</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Portable level</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #PORTABLE_LEVEL
+ * @model name="portable_level"
+ * @generated
+ * @ordered
+ */
+ public static final int PORTABLE_LEVEL_VALUE = 1;
+
+ /**
+ * The '<em><b>Serializable</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Serializable</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #SERIALIZABLE
+ * @model name="serializable"
+ * @generated
+ * @ordered
+ */
+ public static final int SERIALIZABLE_VALUE = 2;
+
+ /**
+ * The '<em><b>None</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>None</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #NONE
+ * @model name="none"
+ * @generated
+ * @ordered
+ */
+ public static final int NONE_VALUE = 3;
+
+ /**
+ * An array of all the '<em><b>Imitigation</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final I_mitigation[] VALUES_ARRAY =
+ new I_mitigation[] {
+ UNSPECIFIED,
+ PORTABLE_LEVEL,
+ SERIALIZABLE,
+ NONE,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Imitigation</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<I_mitigation> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Imitigation</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static I_mitigation get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ I_mitigation result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Imitigation</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static I_mitigation getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ I_mitigation result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Imitigation</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static I_mitigation get(int value) {
+ switch (value) {
+ case UNSPECIFIED_VALUE: return UNSPECIFIED;
+ case PORTABLE_LEVEL_VALUE: return PORTABLE_LEVEL;
+ case SERIALIZABLE_VALUE: return SERIALIZABLE;
+ case NONE_VALUE: return NONE;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private I_mitigation(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} //I_mitigation
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FlaBehaviour.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FlaBehaviour.java
new file mode 100644
index 0000000..05ac37b
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FlaBehaviour.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Fla Behaviour</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getFlaBehaviour()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface FlaBehaviour extends EObject {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ void propagateFailures();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model initNoFailureRequired="true"
+ * @generated
+ */
+ void initialize(boolean initNoFailure);
+
+} // FlaBehaviour
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FlammFactory.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FlammFactory.java
new file mode 100644
index 0000000..d4e7085
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FlammFactory.java
@@ -0,0 +1,210 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FlammPackage
+ * @generated
+ */
+public class FlammFactory extends EFactoryImpl {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final FlammFactory eINSTANCE = init();
+
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static FlammFactory init() {
+ try {
+ FlammFactory theFlammFactory = (FlammFactory)EPackage.Registry.INSTANCE.getEFactory(FlammPackage.eNS_URI);
+ if (theFlammFactory != null) {
+ return theFlammFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new FlammFactory();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FlammFactory() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case FlammPackage.NAMED_ELEMENT: return createNamedElement();
+ case FlammPackage.COMPOSITE_COMPONENT: return createCompositeComponent();
+ case FlammPackage.SIMPLE_COMPONENT: return createSimpleComponent();
+ case FlammPackage.PORT: return createPort();
+ case FlammPackage.CONNECTION: return createConnection();
+ case FlammPackage.RULE: return createRule();
+ case FlammPackage.EXPRESSION: return createExpression();
+ case FlammPackage.FAILURE: return createFailure();
+ case FlammPackage.ACI_DAVOIDABLE: return createACIDavoidable();
+ case FlammPackage.ACI_DMITIGATION: return createACIDmitigation();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CompositeComponent createCompositeComponent() {
+ CompositeComponent compositeComponent = new CompositeComponent();
+ return compositeComponent;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NamedElement createNamedElement() {
+ NamedElement namedElement = new NamedElement();
+ return namedElement;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Port createPort() {
+ Port port = new Port();
+ return port;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Connection createConnection() {
+ Connection connection = new Connection();
+ return connection;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Rule createRule() {
+ Rule rule = new Rule();
+ return rule;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SimpleComponent createSimpleComponent() {
+ SimpleComponent simpleComponent = new SimpleComponent();
+ return simpleComponent;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Expression createExpression() {
+ Expression expression = new Expression();
+ return expression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Failure createFailure() {
+ Failure failure = new Failure();
+ return failure;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ACIDavoidable createACIDavoidable() {
+ ACIDavoidable aciDavoidable = new ACIDavoidable();
+ return aciDavoidable;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ACIDmitigation createACIDmitigation() {
+ ACIDmitigation aciDmitigation = new ACIDmitigation();
+ return aciDmitigation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FlammPackage getFlammPackage() {
+ return (FlammPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static FlammPackage getPackage() {
+ return FlammPackage.eINSTANCE;
+ }
+
+} //FlammFactory
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FlammPackage.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FlammPackage.java
new file mode 100644
index 0000000..e98bd16
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FlammPackage.java
@@ -0,0 +1,2422 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FlammFactory
+ * @model kind="package"
+ * @generated
+ */
+public class FlammPackage extends EPackageImpl {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNAME = "flamm";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_URI = "http://www.polarsys.org/chess/fla/flamm";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_PREFIX = "flamm";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final FlammPackage eINSTANCE = org.polarsys.chess.fla.flamm.FlammPackage.init();
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flamm.NamedElement <em>Named Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.NamedElement
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getNamedElement()
+ * @generated
+ */
+ public static final int NAMED_ELEMENT = 0;
+
+ /**
+ * The feature id for the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int NAMED_ELEMENT__ID = 0;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int NAMED_ELEMENT__NAME = 1;
+
+ /**
+ * The number of structural features of the '<em>Named Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int NAMED_ELEMENT_FEATURE_COUNT = 2;
+
+ /**
+ * The number of operations of the '<em>Named Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int NAMED_ELEMENT_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flamm.FlaBehaviour <em>Fla Behaviour</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FlaBehaviour
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getFlaBehaviour()
+ * @generated
+ */
+ public static final int FLA_BEHAVIOUR = 1;
+
+ /**
+ * The number of structural features of the '<em>Fla Behaviour</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int FLA_BEHAVIOUR_FEATURE_COUNT = 0;
+
+ /**
+ * The operation id for the '<em>Propagate Failures</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int FLA_BEHAVIOUR___PROPAGATE_FAILURES = 0;
+
+ /**
+ * The operation id for the '<em>Initialize</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int FLA_BEHAVIOUR___INITIALIZE__BOOLEAN = 1;
+
+ /**
+ * The number of operations of the '<em>Fla Behaviour</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int FLA_BEHAVIOUR_OPERATION_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flamm.Component <em>Component</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.Component
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getComponent()
+ * @generated
+ */
+ public static final int COMPONENT = 2;
+
+ /**
+ * The feature id for the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int COMPONENT__ID = NAMED_ELEMENT__ID;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int COMPONENT__NAME = NAMED_ELEMENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Input Ports</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int COMPONENT__INPUT_PORTS = NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Output Ports</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int COMPONENT__OUTPUT_PORTS = NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Parent</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int COMPONENT__PARENT = NAMED_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Component</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int COMPONENT_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 3;
+
+ /**
+ * The operation id for the '<em>Propagate Failures</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int COMPONENT___PROPAGATE_FAILURES = NAMED_ELEMENT_OPERATION_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Initialize</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int COMPONENT___INITIALIZE__BOOLEAN = NAMED_ELEMENT_OPERATION_COUNT + 1;
+
+ /**
+ * The number of operations of the '<em>Component</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int COMPONENT_OPERATION_COUNT = NAMED_ELEMENT_OPERATION_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flamm.CompositeComponent <em>Composite Component</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.CompositeComponent
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getCompositeComponent()
+ * @generated
+ */
+ public static final int COMPOSITE_COMPONENT = 3;
+
+ /**
+ * The feature id for the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int COMPOSITE_COMPONENT__ID = COMPONENT__ID;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int COMPOSITE_COMPONENT__NAME = COMPONENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Input Ports</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int COMPOSITE_COMPONENT__INPUT_PORTS = COMPONENT__INPUT_PORTS;
+
+ /**
+ * The feature id for the '<em><b>Output Ports</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int COMPOSITE_COMPONENT__OUTPUT_PORTS = COMPONENT__OUTPUT_PORTS;
+
+ /**
+ * The feature id for the '<em><b>Parent</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int COMPOSITE_COMPONENT__PARENT = COMPONENT__PARENT;
+
+ /**
+ * The feature id for the '<em><b>Components</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int COMPOSITE_COMPONENT__COMPONENTS = COMPONENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Connections</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int COMPOSITE_COMPONENT__CONNECTIONS = COMPONENT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Composite Component</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int COMPOSITE_COMPONENT_FEATURE_COUNT = COMPONENT_FEATURE_COUNT + 2;
+
+ /**
+ * The operation id for the '<em>Propagate Failures</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int COMPOSITE_COMPONENT___PROPAGATE_FAILURES = COMPONENT___PROPAGATE_FAILURES;
+
+ /**
+ * The operation id for the '<em>Initialize</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int COMPOSITE_COMPONENT___INITIALIZE__BOOLEAN = COMPONENT___INITIALIZE__BOOLEAN;
+
+ /**
+ * The number of operations of the '<em>Composite Component</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int COMPOSITE_COMPONENT_OPERATION_COUNT = COMPONENT_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flamm.Port <em>Port</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.Port
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getPort()
+ * @generated
+ */
+ public static final int PORT = 5;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flamm.Connection <em>Connection</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.Connection
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getConnection()
+ * @generated
+ */
+ public static final int CONNECTION = 6;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flamm.Rule <em>Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.Rule
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getRule()
+ * @generated
+ */
+ public static final int RULE = 7;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flamm.SimpleComponent <em>Simple Component</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.SimpleComponent
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getSimpleComponent()
+ * @generated
+ */
+ public static final int SIMPLE_COMPONENT = 4;
+
+ /**
+ * The feature id for the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int SIMPLE_COMPONENT__ID = COMPONENT__ID;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int SIMPLE_COMPONENT__NAME = COMPONENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Input Ports</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int SIMPLE_COMPONENT__INPUT_PORTS = COMPONENT__INPUT_PORTS;
+
+ /**
+ * The feature id for the '<em><b>Output Ports</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int SIMPLE_COMPONENT__OUTPUT_PORTS = COMPONENT__OUTPUT_PORTS;
+
+ /**
+ * The feature id for the '<em><b>Parent</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int SIMPLE_COMPONENT__PARENT = COMPONENT__PARENT;
+
+ /**
+ * The feature id for the '<em><b>Rules</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int SIMPLE_COMPONENT__RULES = COMPONENT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Simple Component</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int SIMPLE_COMPONENT_FEATURE_COUNT = COMPONENT_FEATURE_COUNT + 1;
+
+ /**
+ * The operation id for the '<em>Propagate Failures</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int SIMPLE_COMPONENT___PROPAGATE_FAILURES = COMPONENT___PROPAGATE_FAILURES;
+
+ /**
+ * The operation id for the '<em>Initialize</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int SIMPLE_COMPONENT___INITIALIZE__BOOLEAN = COMPONENT___INITIALIZE__BOOLEAN;
+
+ /**
+ * The number of operations of the '<em>Simple Component</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int SIMPLE_COMPONENT_OPERATION_COUNT = COMPONENT_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PORT__ID = NAMED_ELEMENT__ID;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PORT__NAME = NAMED_ELEMENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Connected Ports</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PORT__CONNECTED_PORTS = NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Failures</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PORT__FAILURES = NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>New Failures</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PORT__NEW_FAILURES = NAMED_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Owner</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PORT__OWNER = NAMED_ELEMENT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Incoming Connections</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PORT__INCOMING_CONNECTIONS = NAMED_ELEMENT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Outgoing Connections</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PORT__OUTGOING_CONNECTIONS = NAMED_ELEMENT_FEATURE_COUNT + 5;
+
+ /**
+ * The number of structural features of the '<em>Port</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PORT_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 6;
+
+ /**
+ * The operation id for the '<em>Propagate Failures</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PORT___PROPAGATE_FAILURES = NAMED_ELEMENT_OPERATION_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Initialize</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PORT___INITIALIZE = NAMED_ELEMENT_OPERATION_COUNT + 1;
+
+ /**
+ * The number of operations of the '<em>Port</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PORT_OPERATION_COUNT = NAMED_ELEMENT_OPERATION_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>From</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int CONNECTION__FROM = FLA_BEHAVIOUR_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>To</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int CONNECTION__TO = FLA_BEHAVIOUR_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Rules</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int CONNECTION__RULES = FLA_BEHAVIOUR_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Connection</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int CONNECTION_FEATURE_COUNT = FLA_BEHAVIOUR_FEATURE_COUNT + 3;
+
+ /**
+ * The operation id for the '<em>Propagate Failures</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int CONNECTION___PROPAGATE_FAILURES = FLA_BEHAVIOUR___PROPAGATE_FAILURES;
+
+ /**
+ * The operation id for the '<em>Initialize</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int CONNECTION___INITIALIZE__BOOLEAN = FLA_BEHAVIOUR___INITIALIZE__BOOLEAN;
+
+ /**
+ * The number of operations of the '<em>Connection</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int CONNECTION_OPERATION_COUNT = FLA_BEHAVIOUR_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Input Expression</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int RULE__INPUT_EXPRESSION = 0;
+
+ /**
+ * The feature id for the '<em><b>Output Expression</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int RULE__OUTPUT_EXPRESSION = 1;
+
+ /**
+ * The feature id for the '<em><b>Specificity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int RULE__SPECIFICITY = 2;
+
+ /**
+ * The number of structural features of the '<em>Rule</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int RULE_FEATURE_COUNT = 3;
+
+ /**
+ * The number of operations of the '<em>Rule</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int RULE_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flamm.Expression <em>Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.Expression
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getExpression()
+ * @generated
+ */
+ public static final int EXPRESSION = 8;
+
+ /**
+ * The feature id for the '<em><b>Port</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int EXPRESSION__PORT = 0;
+
+ /**
+ * The feature id for the '<em><b>Failures</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int EXPRESSION__FAILURES = 1;
+
+ /**
+ * The number of structural features of the '<em>Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int EXPRESSION_FEATURE_COUNT = 2;
+
+ /**
+ * The number of operations of the '<em>Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int EXPRESSION_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flamm.Failure <em>Failure</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.Failure
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getFailure()
+ * @generated
+ */
+ public static final int FAILURE = 9;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int FAILURE__TYPE = 0;
+
+ /**
+ * The feature id for the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int FAILURE__ID = 1;
+
+ /**
+ * The feature id for the '<em><b>Acid Avoidable</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int FAILURE__ACID_AVOIDABLE = 2;
+
+ /**
+ * The feature id for the '<em><b>Acid Mitigation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int FAILURE__ACID_MITIGATION = 3;
+
+ /**
+ * The feature id for the '<em><b>Previous Failures</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int FAILURE__PREVIOUS_FAILURES = 4;
+
+ /**
+ * The number of structural features of the '<em>Failure</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int FAILURE_FEATURE_COUNT = 5;
+
+ /**
+ * The number of operations of the '<em>Failure</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int FAILURE_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flamm.ACIDavoidable <em>ACI Davoidable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.ACIDavoidable
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDavoidable()
+ * @generated
+ */
+ public static final int ACI_DAVOIDABLE = 10;
+
+ /**
+ * The feature id for the '<em><b>A</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ACI_DAVOIDABLE__A = 0;
+
+ /**
+ * The feature id for the '<em><b>C</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ACI_DAVOIDABLE__C = 1;
+
+ /**
+ * The feature id for the '<em><b>I</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ACI_DAVOIDABLE__I = 2;
+
+ /**
+ * The feature id for the '<em><b>D</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ACI_DAVOIDABLE__D = 3;
+
+ /**
+ * The number of structural features of the '<em>ACI Davoidable</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ACI_DAVOIDABLE_FEATURE_COUNT = 4;
+
+ /**
+ * The number of operations of the '<em>ACI Davoidable</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ACI_DAVOIDABLE_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flamm.ACIDmitigation <em>ACI Dmitigation</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.ACIDmitigation
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDmitigation()
+ * @generated
+ */
+ public static final int ACI_DMITIGATION = 11;
+
+ /**
+ * The feature id for the '<em><b>A</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ACI_DMITIGATION__A = 0;
+
+ /**
+ * The feature id for the '<em><b>C</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ACI_DMITIGATION__C = 1;
+
+ /**
+ * The feature id for the '<em><b>I</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ACI_DMITIGATION__I = 2;
+
+ /**
+ * The feature id for the '<em><b>D</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ACI_DMITIGATION__D = 3;
+
+ /**
+ * The number of structural features of the '<em>ACI Dmitigation</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ACI_DMITIGATION_FEATURE_COUNT = 4;
+
+ /**
+ * The number of operations of the '<em>ACI Dmitigation</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ACI_DMITIGATION_OPERATION_COUNT = 0;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass componentEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass compositeComponentEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass namedElementEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass flaBehaviourEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass portEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass connectionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass ruleEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass simpleComponentEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass expressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass failureEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass aciDavoidableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass aciDmitigationEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private FlammPackage() {
+ super(eNS_URI, FlammFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link FlammPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static FlammPackage init() {
+ if (isInited) return (FlammPackage)EPackage.Registry.INSTANCE.getEPackage(FlammPackage.eNS_URI);
+
+ // Obtain or create and register package
+ FlammPackage theFlammPackage = (FlammPackage)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof FlammPackage ? EPackage.Registry.INSTANCE.get(eNS_URI) : new FlammPackage());
+
+ isInited = true;
+
+ // Obtain or create and register interdependencies
+ FailureTypesPackage theFailureTypesPackage = (FailureTypesPackage)(EPackage.Registry.INSTANCE.getEPackage(FailureTypesPackage.eNS_URI) instanceof FailureTypesPackage ? EPackage.Registry.INSTANCE.getEPackage(FailureTypesPackage.eNS_URI) : FailureTypesPackage.eINSTANCE);
+
+ // Create package meta-data objects
+ theFlammPackage.createPackageContents();
+ theFailureTypesPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theFlammPackage.initializePackageContents();
+ theFailureTypesPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theFlammPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(FlammPackage.eNS_URI, theFlammPackage);
+ return theFlammPackage;
+ }
+
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flamm.Component <em>Component</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Component</em>'.
+ * @see org.polarsys.chess.fla.flamm.Component
+ * @generated
+ */
+ public EClass getComponent() {
+ return componentEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flamm.Component#getInputPorts <em>Input Ports</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Input Ports</em>'.
+ * @see org.polarsys.chess.fla.flamm.Component#getInputPorts()
+ * @see #getComponent()
+ * @generated
+ */
+ public EReference getComponent_InputPorts() {
+ return (EReference)componentEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flamm.Component#getOutputPorts <em>Output Ports</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Output Ports</em>'.
+ * @see org.polarsys.chess.fla.flamm.Component#getOutputPorts()
+ * @see #getComponent()
+ * @generated
+ */
+ public EReference getComponent_OutputPorts() {
+ return (EReference)componentEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the container reference '{@link org.polarsys.chess.fla.flamm.Component#getParent <em>Parent</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the container reference '<em>Parent</em>'.
+ * @see org.polarsys.chess.fla.flamm.Component#getParent()
+ * @see #getComponent()
+ * @generated
+ */
+ public EReference getComponent_Parent() {
+ return (EReference)componentEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flamm.CompositeComponent <em>Composite Component</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Composite Component</em>'.
+ * @see org.polarsys.chess.fla.flamm.CompositeComponent
+ * @generated
+ */
+ public EClass getCompositeComponent() {
+ return compositeComponentEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flamm.CompositeComponent#getComponents <em>Components</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Components</em>'.
+ * @see org.polarsys.chess.fla.flamm.CompositeComponent#getComponents()
+ * @see #getCompositeComponent()
+ * @generated
+ */
+ public EReference getCompositeComponent_Components() {
+ return (EReference)compositeComponentEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flamm.CompositeComponent#getConnections <em>Connections</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Connections</em>'.
+ * @see org.polarsys.chess.fla.flamm.CompositeComponent#getConnections()
+ * @see #getCompositeComponent()
+ * @generated
+ */
+ public EReference getCompositeComponent_Connections() {
+ return (EReference)compositeComponentEClass.getEStructuralFeatures().get(1);
+ }
+
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flamm.NamedElement <em>Named Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Named Element</em>'.
+ * @see org.polarsys.chess.fla.flamm.NamedElement
+ * @generated
+ */
+ public EClass getNamedElement() {
+ return namedElementEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.NamedElement#getId <em>Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Id</em>'.
+ * @see org.polarsys.chess.fla.flamm.NamedElement#getId()
+ * @see #getNamedElement()
+ * @generated
+ */
+ public EAttribute getNamedElement_Id() {
+ return (EAttribute)namedElementEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.NamedElement#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.polarsys.chess.fla.flamm.NamedElement#getName()
+ * @see #getNamedElement()
+ * @generated
+ */
+ public EAttribute getNamedElement_Name() {
+ return (EAttribute)namedElementEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flamm.FlaBehaviour <em>Fla Behaviour</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Fla Behaviour</em>'.
+ * @see org.polarsys.chess.fla.flamm.FlaBehaviour
+ * @generated
+ */
+ public EClass getFlaBehaviour() {
+ return flaBehaviourEClass;
+ }
+
+
+ /**
+ * Returns the meta object for the '{@link org.polarsys.chess.fla.flamm.FlaBehaviour#propagateFailures() <em>Propagate Failures</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Propagate Failures</em>' operation.
+ * @see org.polarsys.chess.fla.flamm.FlaBehaviour#propagateFailures()
+ * @generated
+ */
+ public EOperation getFlaBehaviour__PropagateFailures() {
+ return flaBehaviourEClass.getEOperations().get(0);
+ }
+
+
+ /**
+ * Returns the meta object for the '{@link org.polarsys.chess.fla.flamm.FlaBehaviour#initialize(boolean) <em>Initialize</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Initialize</em>' operation.
+ * @see org.polarsys.chess.fla.flamm.FlaBehaviour#initialize(boolean)
+ * @generated
+ */
+ public EOperation getFlaBehaviour__Initialize__boolean() {
+ return flaBehaviourEClass.getEOperations().get(1);
+ }
+
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flamm.Port <em>Port</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Port</em>'.
+ * @see org.polarsys.chess.fla.flamm.Port
+ * @generated
+ */
+ public EClass getPort() {
+ return portEClass;
+ }
+
+ /**
+ * Returns the meta object for the reference list '{@link org.polarsys.chess.fla.flamm.Port#getConnectedPorts <em>Connected Ports</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Connected Ports</em>'.
+ * @see org.polarsys.chess.fla.flamm.Port#getConnectedPorts()
+ * @see #getPort()
+ * @generated
+ */
+ public EReference getPort_ConnectedPorts() {
+ return (EReference)portEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flamm.Port#getFailures <em>Failures</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Failures</em>'.
+ * @see org.polarsys.chess.fla.flamm.Port#getFailures()
+ * @see #getPort()
+ * @generated
+ */
+ public EReference getPort_Failures() {
+ return (EReference)portEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flamm.Port#getNewFailures <em>New Failures</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>New Failures</em>'.
+ * @see org.polarsys.chess.fla.flamm.Port#getNewFailures()
+ * @see #getPort()
+ * @generated
+ */
+ public EReference getPort_NewFailures() {
+ return (EReference)portEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the reference '{@link org.polarsys.chess.fla.flamm.Port#getOwner <em>Owner</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Owner</em>'.
+ * @see org.polarsys.chess.fla.flamm.Port#getOwner()
+ * @see #getPort()
+ * @generated
+ */
+ public EReference getPort_Owner() {
+ return (EReference)portEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for the reference '{@link org.polarsys.chess.fla.flamm.Port#getIncomingConnections <em>Incoming Connections</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Incoming Connections</em>'.
+ * @see org.polarsys.chess.fla.flamm.Port#getIncomingConnections()
+ * @see #getPort()
+ * @generated
+ */
+ public EReference getPort_IncomingConnections() {
+ return (EReference)portEClass.getEStructuralFeatures().get(4);
+ }
+
+
+ /**
+ * Returns the meta object for the reference '{@link org.polarsys.chess.fla.flamm.Port#getOutgoingConnections <em>Outgoing Connections</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Outgoing Connections</em>'.
+ * @see org.polarsys.chess.fla.flamm.Port#getOutgoingConnections()
+ * @see #getPort()
+ * @generated
+ */
+ public EReference getPort_OutgoingConnections() {
+ return (EReference)portEClass.getEStructuralFeatures().get(5);
+ }
+
+
+ /**
+ * Returns the meta object for the '{@link org.polarsys.chess.fla.flamm.Port#propagateFailures() <em>Propagate Failures</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Propagate Failures</em>' operation.
+ * @see org.polarsys.chess.fla.flamm.Port#propagateFailures()
+ * @generated
+ */
+ public EOperation getPort__PropagateFailures() {
+ return portEClass.getEOperations().get(0);
+ }
+
+
+ /**
+ * Returns the meta object for the '{@link org.polarsys.chess.fla.flamm.Port#initialize() <em>Initialize</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Initialize</em>' operation.
+ * @see org.polarsys.chess.fla.flamm.Port#initialize()
+ * @generated
+ */
+ public EOperation getPort__Initialize() {
+ return portEClass.getEOperations().get(1);
+ }
+
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flamm.Connection <em>Connection</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Connection</em>'.
+ * @see org.polarsys.chess.fla.flamm.Connection
+ * @generated
+ */
+ public EClass getConnection() {
+ return connectionEClass;
+ }
+
+
+ /**
+ * Returns the meta object for the reference '{@link org.polarsys.chess.fla.flamm.Connection#getFrom <em>From</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>From</em>'.
+ * @see org.polarsys.chess.fla.flamm.Connection#getFrom()
+ * @see #getConnection()
+ * @generated
+ */
+ public EReference getConnection_From() {
+ return (EReference)connectionEClass.getEStructuralFeatures().get(0);
+ }
+
+
+ /**
+ * Returns the meta object for the reference '{@link org.polarsys.chess.fla.flamm.Connection#getTo <em>To</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>To</em>'.
+ * @see org.polarsys.chess.fla.flamm.Connection#getTo()
+ * @see #getConnection()
+ * @generated
+ */
+ public EReference getConnection_To() {
+ return (EReference)connectionEClass.getEStructuralFeatures().get(1);
+ }
+
+
+ /**
+ * Returns the meta object for the reference list '{@link org.polarsys.chess.fla.flamm.Connection#getRules <em>Rules</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Rules</em>'.
+ * @see org.polarsys.chess.fla.flamm.Connection#getRules()
+ * @see #getConnection()
+ * @generated
+ */
+ public EReference getConnection_Rules() {
+ return (EReference)connectionEClass.getEStructuralFeatures().get(2);
+ }
+
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flamm.Rule <em>Rule</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Rule</em>'.
+ * @see org.polarsys.chess.fla.flamm.Rule
+ * @generated
+ */
+ public EClass getRule() {
+ return ruleEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flamm.Rule#getInputExpression <em>Input Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Input Expression</em>'.
+ * @see org.polarsys.chess.fla.flamm.Rule#getInputExpression()
+ * @see #getRule()
+ * @generated
+ */
+ public EReference getRule_InputExpression() {
+ return (EReference)ruleEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flamm.Rule#getOutputExpression <em>Output Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Output Expression</em>'.
+ * @see org.polarsys.chess.fla.flamm.Rule#getOutputExpression()
+ * @see #getRule()
+ * @generated
+ */
+ public EReference getRule_OutputExpression() {
+ return (EReference)ruleEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.Rule#getSpecificity <em>Specificity</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specificity</em>'.
+ * @see org.polarsys.chess.fla.flamm.Rule#getSpecificity()
+ * @see #getRule()
+ * @generated
+ */
+ public EAttribute getRule_Specificity() {
+ return (EAttribute)ruleEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flamm.SimpleComponent <em>Simple Component</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Simple Component</em>'.
+ * @see org.polarsys.chess.fla.flamm.SimpleComponent
+ * @generated
+ */
+ public EClass getSimpleComponent() {
+ return simpleComponentEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flamm.SimpleComponent#getRules <em>Rules</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Rules</em>'.
+ * @see org.polarsys.chess.fla.flamm.SimpleComponent#getRules()
+ * @see #getSimpleComponent()
+ * @generated
+ */
+ public EReference getSimpleComponent_Rules() {
+ return (EReference)simpleComponentEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flamm.Expression <em>Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Expression</em>'.
+ * @see org.polarsys.chess.fla.flamm.Expression
+ * @generated
+ */
+ public EClass getExpression() {
+ return expressionEClass;
+ }
+
+ /**
+ * Returns the meta object for the reference '{@link org.polarsys.chess.fla.flamm.Expression#getPort <em>Port</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Port</em>'.
+ * @see org.polarsys.chess.fla.flamm.Expression#getPort()
+ * @see #getExpression()
+ * @generated
+ */
+ public EReference getExpression_Port() {
+ return (EReference)expressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flamm.Expression#getFailures <em>Failures</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Failures</em>'.
+ * @see org.polarsys.chess.fla.flamm.Expression#getFailures()
+ * @see #getExpression()
+ * @generated
+ */
+ public EReference getExpression_Failures() {
+ return (EReference)expressionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flamm.Failure <em>Failure</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Failure</em>'.
+ * @see org.polarsys.chess.fla.flamm.Failure
+ * @generated
+ */
+ public EClass getFailure() {
+ return failureEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.Failure#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Type</em>'.
+ * @see org.polarsys.chess.fla.flamm.Failure#getType()
+ * @see #getFailure()
+ * @generated
+ */
+ public EAttribute getFailure_Type() {
+ return (EAttribute)failureEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.Failure#getId <em>Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Id</em>'.
+ * @see org.polarsys.chess.fla.flamm.Failure#getId()
+ * @see #getFailure()
+ * @generated
+ */
+ public EAttribute getFailure_Id() {
+ return (EAttribute)failureEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.polarsys.chess.fla.flamm.Failure#getAcidAvoidable <em>Acid Avoidable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Acid Avoidable</em>'.
+ * @see org.polarsys.chess.fla.flamm.Failure#getAcidAvoidable()
+ * @see #getFailure()
+ * @generated
+ */
+ public EReference getFailure_AcidAvoidable() {
+ return (EReference)failureEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.polarsys.chess.fla.flamm.Failure#getAcidMitigation <em>Acid Mitigation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Acid Mitigation</em>'.
+ * @see org.polarsys.chess.fla.flamm.Failure#getAcidMitigation()
+ * @see #getFailure()
+ * @generated
+ */
+ public EReference getFailure_AcidMitigation() {
+ return (EReference)failureEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for the reference list '{@link org.polarsys.chess.fla.flamm.Failure#getPreviousFailures <em>Previous Failures</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Previous Failures</em>'.
+ * @see org.polarsys.chess.fla.flamm.Failure#getPreviousFailures()
+ * @see #getFailure()
+ * @generated
+ */
+ public EReference getFailure_PreviousFailures() {
+ return (EReference)failureEClass.getEStructuralFeatures().get(4);
+ }
+
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flamm.ACIDavoidable <em>ACI Davoidable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>ACI Davoidable</em>'.
+ * @see org.polarsys.chess.fla.flamm.ACIDavoidable
+ * @generated
+ */
+ public EClass getACIDavoidable() {
+ return aciDavoidableEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.ACIDavoidable#getA <em>A</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>A</em>'.
+ * @see org.polarsys.chess.fla.flamm.ACIDavoidable#getA()
+ * @see #getACIDavoidable()
+ * @generated
+ */
+ public EAttribute getACIDavoidable_A() {
+ return (EAttribute)aciDavoidableEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.ACIDavoidable#getC <em>C</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>C</em>'.
+ * @see org.polarsys.chess.fla.flamm.ACIDavoidable#getC()
+ * @see #getACIDavoidable()
+ * @generated
+ */
+ public EAttribute getACIDavoidable_C() {
+ return (EAttribute)aciDavoidableEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.ACIDavoidable#getI <em>I</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>I</em>'.
+ * @see org.polarsys.chess.fla.flamm.ACIDavoidable#getI()
+ * @see #getACIDavoidable()
+ * @generated
+ */
+ public EAttribute getACIDavoidable_I() {
+ return (EAttribute)aciDavoidableEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.ACIDavoidable#getD <em>D</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>D</em>'.
+ * @see org.polarsys.chess.fla.flamm.ACIDavoidable#getD()
+ * @see #getACIDavoidable()
+ * @generated
+ */
+ public EAttribute getACIDavoidable_D() {
+ return (EAttribute)aciDavoidableEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flamm.ACIDmitigation <em>ACI Dmitigation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>ACI Dmitigation</em>'.
+ * @see org.polarsys.chess.fla.flamm.ACIDmitigation
+ * @generated
+ */
+ public EClass getACIDmitigation() {
+ return aciDmitigationEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.ACIDmitigation#getA <em>A</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>A</em>'.
+ * @see org.polarsys.chess.fla.flamm.ACIDmitigation#getA()
+ * @see #getACIDmitigation()
+ * @generated
+ */
+ public EAttribute getACIDmitigation_A() {
+ return (EAttribute)aciDmitigationEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.ACIDmitigation#getC <em>C</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>C</em>'.
+ * @see org.polarsys.chess.fla.flamm.ACIDmitigation#getC()
+ * @see #getACIDmitigation()
+ * @generated
+ */
+ public EAttribute getACIDmitigation_C() {
+ return (EAttribute)aciDmitigationEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.ACIDmitigation#getI <em>I</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>I</em>'.
+ * @see org.polarsys.chess.fla.flamm.ACIDmitigation#getI()
+ * @see #getACIDmitigation()
+ * @generated
+ */
+ public EAttribute getACIDmitigation_I() {
+ return (EAttribute)aciDmitigationEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.ACIDmitigation#getD <em>D</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>D</em>'.
+ * @see org.polarsys.chess.fla.flamm.ACIDmitigation#getD()
+ * @see #getACIDmitigation()
+ * @generated
+ */
+ public EAttribute getACIDmitigation_D() {
+ return (EAttribute)aciDmitigationEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ public FlammFactory getFlammFactory() {
+ return (FlammFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ namedElementEClass = createEClass(NAMED_ELEMENT);
+ createEAttribute(namedElementEClass, NAMED_ELEMENT__ID);
+ createEAttribute(namedElementEClass, NAMED_ELEMENT__NAME);
+
+ flaBehaviourEClass = createEClass(FLA_BEHAVIOUR);
+ createEOperation(flaBehaviourEClass, FLA_BEHAVIOUR___PROPAGATE_FAILURES);
+ createEOperation(flaBehaviourEClass, FLA_BEHAVIOUR___INITIALIZE__BOOLEAN);
+
+ componentEClass = createEClass(COMPONENT);
+ createEReference(componentEClass, COMPONENT__INPUT_PORTS);
+ createEReference(componentEClass, COMPONENT__OUTPUT_PORTS);
+ createEReference(componentEClass, COMPONENT__PARENT);
+
+ compositeComponentEClass = createEClass(COMPOSITE_COMPONENT);
+ createEReference(compositeComponentEClass, COMPOSITE_COMPONENT__COMPONENTS);
+ createEReference(compositeComponentEClass, COMPOSITE_COMPONENT__CONNECTIONS);
+
+ simpleComponentEClass = createEClass(SIMPLE_COMPONENT);
+ createEReference(simpleComponentEClass, SIMPLE_COMPONENT__RULES);
+
+ portEClass = createEClass(PORT);
+ createEReference(portEClass, PORT__CONNECTED_PORTS);
+ createEReference(portEClass, PORT__FAILURES);
+ createEReference(portEClass, PORT__NEW_FAILURES);
+ createEReference(portEClass, PORT__OWNER);
+ createEReference(portEClass, PORT__INCOMING_CONNECTIONS);
+ createEReference(portEClass, PORT__OUTGOING_CONNECTIONS);
+ createEOperation(portEClass, PORT___PROPAGATE_FAILURES);
+ createEOperation(portEClass, PORT___INITIALIZE);
+
+ connectionEClass = createEClass(CONNECTION);
+ createEReference(connectionEClass, CONNECTION__FROM);
+ createEReference(connectionEClass, CONNECTION__TO);
+ createEReference(connectionEClass, CONNECTION__RULES);
+
+ ruleEClass = createEClass(RULE);
+ createEReference(ruleEClass, RULE__INPUT_EXPRESSION);
+ createEReference(ruleEClass, RULE__OUTPUT_EXPRESSION);
+ createEAttribute(ruleEClass, RULE__SPECIFICITY);
+
+ expressionEClass = createEClass(EXPRESSION);
+ createEReference(expressionEClass, EXPRESSION__PORT);
+ createEReference(expressionEClass, EXPRESSION__FAILURES);
+
+ failureEClass = createEClass(FAILURE);
+ createEAttribute(failureEClass, FAILURE__TYPE);
+ createEAttribute(failureEClass, FAILURE__ID);
+ createEReference(failureEClass, FAILURE__ACID_AVOIDABLE);
+ createEReference(failureEClass, FAILURE__ACID_MITIGATION);
+ createEReference(failureEClass, FAILURE__PREVIOUS_FAILURES);
+
+ aciDavoidableEClass = createEClass(ACI_DAVOIDABLE);
+ createEAttribute(aciDavoidableEClass, ACI_DAVOIDABLE__A);
+ createEAttribute(aciDavoidableEClass, ACI_DAVOIDABLE__C);
+ createEAttribute(aciDavoidableEClass, ACI_DAVOIDABLE__I);
+ createEAttribute(aciDavoidableEClass, ACI_DAVOIDABLE__D);
+
+ aciDmitigationEClass = createEClass(ACI_DMITIGATION);
+ createEAttribute(aciDmitigationEClass, ACI_DMITIGATION__A);
+ createEAttribute(aciDmitigationEClass, ACI_DMITIGATION__C);
+ createEAttribute(aciDmitigationEClass, ACI_DMITIGATION__I);
+ createEAttribute(aciDmitigationEClass, ACI_DMITIGATION__D);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ FailureTypesPackage theFailureTypesPackage = (FailureTypesPackage)EPackage.Registry.INSTANCE.getEPackage(FailureTypesPackage.eNS_URI);
+
+ // Add subpackages
+ getESubpackages().add(theFailureTypesPackage);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ componentEClass.getESuperTypes().add(this.getNamedElement());
+ componentEClass.getESuperTypes().add(this.getFlaBehaviour());
+ compositeComponentEClass.getESuperTypes().add(this.getComponent());
+ simpleComponentEClass.getESuperTypes().add(this.getComponent());
+ portEClass.getESuperTypes().add(this.getNamedElement());
+ connectionEClass.getESuperTypes().add(this.getFlaBehaviour());
+
+ // Initialize classes, features, and operations; add parameters
+ initEClass(namedElementEClass, NamedElement.class, "NamedElement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getNamedElement_Id(), ecorePackage.getEString(), "id", null, 1, 1, NamedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getNamedElement_Name(), ecorePackage.getEString(), "name", null, 1, 1, NamedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(flaBehaviourEClass, FlaBehaviour.class, "FlaBehaviour", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEOperation(getFlaBehaviour__PropagateFailures(), null, "propagateFailures", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ EOperation op = initEOperation(getFlaBehaviour__Initialize__boolean(), null, "initialize", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEBoolean(), "initNoFailure", 1, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(componentEClass, Component.class, "Component", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getComponent_InputPorts(), this.getPort(), null, "inputPorts", null, 0, -1, Component.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getComponent_OutputPorts(), this.getPort(), null, "outputPorts", null, 0, -1, Component.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getComponent_Parent(), this.getCompositeComponent(), this.getCompositeComponent_Components(), "parent", null, 0, 1, Component.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(compositeComponentEClass, CompositeComponent.class, "CompositeComponent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getCompositeComponent_Components(), this.getComponent(), this.getComponent_Parent(), "components", null, 0, -1, CompositeComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getCompositeComponent_Connections(), this.getConnection(), null, "connections", null, 0, -1, CompositeComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(simpleComponentEClass, SimpleComponent.class, "SimpleComponent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getSimpleComponent_Rules(), this.getRule(), null, "rules", null, 0, -1, SimpleComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(portEClass, Port.class, "Port", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getPort_ConnectedPorts(), this.getPort(), null, "connectedPorts", null, 0, -1, Port.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getPort_Failures(), this.getFailure(), null, "failures", null, 0, -1, Port.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getPort_NewFailures(), this.getFailure(), null, "newFailures", null, 0, -1, Port.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getPort_Owner(), this.getComponent(), null, "owner", null, 1, 1, Port.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getPort_IncomingConnections(), this.getConnection(), this.getConnection_To(), "incomingConnections", null, 1, 1, Port.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getPort_OutgoingConnections(), this.getConnection(), this.getConnection_From(), "outgoingConnections", null, 1, 1, Port.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEOperation(getPort__PropagateFailures(), null, "propagateFailures", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEOperation(getPort__Initialize(), null, "initialize", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(connectionEClass, Connection.class, "Connection", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getConnection_From(), this.getPort(), this.getPort_OutgoingConnections(), "from", null, 1, 1, Connection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getConnection_To(), this.getPort(), this.getPort_IncomingConnections(), "to", null, 1, 1, Connection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getConnection_Rules(), this.getRule(), null, "rules", null, 0, -1, Connection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(ruleEClass, Rule.class, "Rule", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getRule_InputExpression(), this.getExpression(), null, "inputExpression", null, 0, -1, Rule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getRule_OutputExpression(), this.getExpression(), null, "outputExpression", null, 0, -1, Rule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getRule_Specificity(), ecorePackage.getEInt(), "specificity", "-1", 1, 1, Rule.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(expressionEClass, Expression.class, "Expression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getExpression_Port(), this.getPort(), null, "port", null, 1, 1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getExpression_Failures(), this.getFailure(), null, "failures", null, 0, -1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(failureEClass, Failure.class, "Failure", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getFailure_Type(), theFailureTypesPackage.getFailureType(), "type", null, 1, 1, Failure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getFailure_Id(), ecorePackage.getEString(), "id", null, 0, 1, Failure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getFailure_AcidAvoidable(), this.getACIDavoidable(), null, "acidAvoidable", null, 0, 1, Failure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getFailure_AcidMitigation(), this.getACIDmitigation(), null, "acidMitigation", null, 0, 1, Failure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getFailure_PreviousFailures(), this.getFailure(), null, "previousFailures", null, 0, -1, Failure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(aciDavoidableEClass, ACIDavoidable.class, "ACIDavoidable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getACIDavoidable_A(), theFailureTypesPackage.getA_avoidable(), "a", null, 0, 1, ACIDavoidable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getACIDavoidable_C(), theFailureTypesPackage.getC_avoidable(), "c", null, 0, 1, ACIDavoidable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getACIDavoidable_I(), theFailureTypesPackage.getI_avoidable(), "i", null, 0, 1, ACIDavoidable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getACIDavoidable_D(), theFailureTypesPackage.getD_avoidable(), "d", null, 0, 1, ACIDavoidable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(aciDmitigationEClass, ACIDmitigation.class, "ACIDmitigation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getACIDmitigation_A(), theFailureTypesPackage.getA_mitigation(), "a", null, 0, 1, ACIDmitigation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getACIDmitigation_C(), theFailureTypesPackage.getC_mitigation(), "c", null, 0, 1, ACIDmitigation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getACIDmitigation_I(), theFailureTypesPackage.getI_mitigation(), "i", null, 0, 1, ACIDmitigation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getACIDmitigation_D(), theFailureTypesPackage.getD_mitigation(), "d", null, 0, 1, ACIDmitigation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public interface Literals {
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.Component <em>Component</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.Component
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getComponent()
+ * @generated
+ */
+ public static final EClass COMPONENT = eINSTANCE.getComponent();
+
+ /**
+ * The meta object literal for the '<em><b>Input Ports</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference COMPONENT__INPUT_PORTS = eINSTANCE.getComponent_InputPorts();
+
+ /**
+ * The meta object literal for the '<em><b>Output Ports</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference COMPONENT__OUTPUT_PORTS = eINSTANCE.getComponent_OutputPorts();
+
+ /**
+ * The meta object literal for the '<em><b>Parent</b></em>' container reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference COMPONENT__PARENT = eINSTANCE.getComponent_Parent();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.CompositeComponent <em>Composite Component</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.CompositeComponent
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getCompositeComponent()
+ * @generated
+ */
+ public static final EClass COMPOSITE_COMPONENT = eINSTANCE.getCompositeComponent();
+
+ /**
+ * The meta object literal for the '<em><b>Components</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference COMPOSITE_COMPONENT__COMPONENTS = eINSTANCE.getCompositeComponent_Components();
+
+ /**
+ * The meta object literal for the '<em><b>Connections</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference COMPOSITE_COMPONENT__CONNECTIONS = eINSTANCE.getCompositeComponent_Connections();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.NamedElement <em>Named Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.NamedElement
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getNamedElement()
+ * @generated
+ */
+ public static final EClass NAMED_ELEMENT = eINSTANCE.getNamedElement();
+
+ /**
+ * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute NAMED_ELEMENT__ID = eINSTANCE.getNamedElement_Id();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute NAMED_ELEMENT__NAME = eINSTANCE.getNamedElement_Name();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.FlaBehaviour <em>Fla Behaviour</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FlaBehaviour
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getFlaBehaviour()
+ * @generated
+ */
+ public static final EClass FLA_BEHAVIOUR = eINSTANCE.getFlaBehaviour();
+
+ /**
+ * The meta object literal for the '<em><b>Propagate Failures</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EOperation FLA_BEHAVIOUR___PROPAGATE_FAILURES = eINSTANCE.getFlaBehaviour__PropagateFailures();
+
+ /**
+ * The meta object literal for the '<em><b>Initialize</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EOperation FLA_BEHAVIOUR___INITIALIZE__BOOLEAN = eINSTANCE.getFlaBehaviour__Initialize__boolean();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.Port <em>Port</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.Port
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getPort()
+ * @generated
+ */
+ public static final EClass PORT = eINSTANCE.getPort();
+
+ /**
+ * The meta object literal for the '<em><b>Connected Ports</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference PORT__CONNECTED_PORTS = eINSTANCE.getPort_ConnectedPorts();
+
+ /**
+ * The meta object literal for the '<em><b>Failures</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference PORT__FAILURES = eINSTANCE.getPort_Failures();
+
+ /**
+ * The meta object literal for the '<em><b>New Failures</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference PORT__NEW_FAILURES = eINSTANCE.getPort_NewFailures();
+
+ /**
+ * The meta object literal for the '<em><b>Owner</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference PORT__OWNER = eINSTANCE.getPort_Owner();
+
+ /**
+ * The meta object literal for the '<em><b>Incoming Connections</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference PORT__INCOMING_CONNECTIONS = eINSTANCE.getPort_IncomingConnections();
+
+ /**
+ * The meta object literal for the '<em><b>Outgoing Connections</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference PORT__OUTGOING_CONNECTIONS = eINSTANCE.getPort_OutgoingConnections();
+
+ /**
+ * The meta object literal for the '<em><b>Propagate Failures</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EOperation PORT___PROPAGATE_FAILURES = eINSTANCE.getPort__PropagateFailures();
+
+ /**
+ * The meta object literal for the '<em><b>Initialize</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EOperation PORT___INITIALIZE = eINSTANCE.getPort__Initialize();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.Connection <em>Connection</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.Connection
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getConnection()
+ * @generated
+ */
+ public static final EClass CONNECTION = eINSTANCE.getConnection();
+
+ /**
+ * The meta object literal for the '<em><b>From</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference CONNECTION__FROM = eINSTANCE.getConnection_From();
+
+ /**
+ * The meta object literal for the '<em><b>To</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference CONNECTION__TO = eINSTANCE.getConnection_To();
+
+ /**
+ * The meta object literal for the '<em><b>Rules</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference CONNECTION__RULES = eINSTANCE.getConnection_Rules();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.Rule <em>Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.Rule
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getRule()
+ * @generated
+ */
+ public static final EClass RULE = eINSTANCE.getRule();
+
+ /**
+ * The meta object literal for the '<em><b>Input Expression</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference RULE__INPUT_EXPRESSION = eINSTANCE.getRule_InputExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Output Expression</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference RULE__OUTPUT_EXPRESSION = eINSTANCE.getRule_OutputExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Specificity</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute RULE__SPECIFICITY = eINSTANCE.getRule_Specificity();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.SimpleComponent <em>Simple Component</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.SimpleComponent
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getSimpleComponent()
+ * @generated
+ */
+ public static final EClass SIMPLE_COMPONENT = eINSTANCE.getSimpleComponent();
+
+ /**
+ * The meta object literal for the '<em><b>Rules</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference SIMPLE_COMPONENT__RULES = eINSTANCE.getSimpleComponent_Rules();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.Expression <em>Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.Expression
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getExpression()
+ * @generated
+ */
+ public static final EClass EXPRESSION = eINSTANCE.getExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Port</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference EXPRESSION__PORT = eINSTANCE.getExpression_Port();
+
+ /**
+ * The meta object literal for the '<em><b>Failures</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference EXPRESSION__FAILURES = eINSTANCE.getExpression_Failures();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.Failure <em>Failure</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.Failure
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getFailure()
+ * @generated
+ */
+ public static final EClass FAILURE = eINSTANCE.getFailure();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute FAILURE__TYPE = eINSTANCE.getFailure_Type();
+
+ /**
+ * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute FAILURE__ID = eINSTANCE.getFailure_Id();
+
+ /**
+ * The meta object literal for the '<em><b>Acid Avoidable</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference FAILURE__ACID_AVOIDABLE = eINSTANCE.getFailure_AcidAvoidable();
+
+ /**
+ * The meta object literal for the '<em><b>Acid Mitigation</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference FAILURE__ACID_MITIGATION = eINSTANCE.getFailure_AcidMitigation();
+
+ /**
+ * The meta object literal for the '<em><b>Previous Failures</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference FAILURE__PREVIOUS_FAILURES = eINSTANCE.getFailure_PreviousFailures();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.ACIDavoidable <em>ACI Davoidable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.ACIDavoidable
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDavoidable()
+ * @generated
+ */
+ public static final EClass ACI_DAVOIDABLE = eINSTANCE.getACIDavoidable();
+
+ /**
+ * The meta object literal for the '<em><b>A</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ACI_DAVOIDABLE__A = eINSTANCE.getACIDavoidable_A();
+
+ /**
+ * The meta object literal for the '<em><b>C</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ACI_DAVOIDABLE__C = eINSTANCE.getACIDavoidable_C();
+
+ /**
+ * The meta object literal for the '<em><b>I</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ACI_DAVOIDABLE__I = eINSTANCE.getACIDavoidable_I();
+
+ /**
+ * The meta object literal for the '<em><b>D</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ACI_DAVOIDABLE__D = eINSTANCE.getACIDavoidable_D();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.ACIDmitigation <em>ACI Dmitigation</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.ACIDmitigation
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDmitigation()
+ * @generated
+ */
+ public static final EClass ACI_DMITIGATION = eINSTANCE.getACIDmitigation();
+
+ /**
+ * The meta object literal for the '<em><b>A</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ACI_DMITIGATION__A = eINSTANCE.getACIDmitigation_A();
+
+ /**
+ * The meta object literal for the '<em><b>C</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ACI_DMITIGATION__C = eINSTANCE.getACIDmitigation_C();
+
+ /**
+ * The meta object literal for the '<em><b>I</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ACI_DMITIGATION__I = eINSTANCE.getACIDmitigation_I();
+
+ /**
+ * The meta object literal for the '<em><b>D</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ACI_DMITIGATION__D = eINSTANCE.getACIDmitigation_D();
+
+ }
+
+} //FlammPackage
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/NamedElement.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/NamedElement.java
new file mode 100644
index 0000000..83f484e
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/NamedElement.java
@@ -0,0 +1,251 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Named Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flamm.NamedElement#getId <em>Id</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flamm.NamedElement#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getNamedElement()
+ * @model kind="class"
+ * @generated
+ */
+public class NamedElement extends MinimalEObjectImpl.Container implements EObject {
+ /**
+ * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getId()
+ * @generated
+ * @ordered
+ */
+ protected static final String ID_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getId()
+ * @generated
+ * @ordered
+ */
+ protected String id = ID_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NamedElement() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlammPackage.Literals.NAMED_ELEMENT;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Id</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Id</em>' attribute.
+ * @see #setId(String)
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getNamedElement_Id()
+ * @model required="true"
+ * @generated
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flamm.NamedElement#getId <em>Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Id</em>' attribute.
+ * @see #getId()
+ * @generated
+ */
+ public void setId(String newId) {
+ String oldId = id;
+ id = newId;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.NAMED_ELEMENT__ID, oldId, id));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getNamedElement_Name()
+ * @model required="true"
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flamm.NamedElement#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.NAMED_ELEMENT__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlammPackage.NAMED_ELEMENT__ID:
+ return getId();
+ case FlammPackage.NAMED_ELEMENT__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlammPackage.NAMED_ELEMENT__ID:
+ setId((String)newValue);
+ return;
+ case FlammPackage.NAMED_ELEMENT__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlammPackage.NAMED_ELEMENT__ID:
+ setId(ID_EDEFAULT);
+ return;
+ case FlammPackage.NAMED_ELEMENT__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlammPackage.NAMED_ELEMENT__ID:
+ return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id);
+ case FlammPackage.NAMED_ELEMENT__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (id: ");
+ result.append(id);
+ result.append(", name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} // NamedElement
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Port.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Port.java
new file mode 100644
index 0000000..b9c2a7d
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Port.java
@@ -0,0 +1,671 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Port</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flamm.Port#getConnectedPorts <em>Connected Ports</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flamm.Port#getFailures <em>Failures</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flamm.Port#getNewFailures <em>New Failures</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flamm.Port#getOwner <em>Owner</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flamm.Port#getIncomingConnections <em>Incoming Connections</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flamm.Port#getOutgoingConnections <em>Outgoing Connections</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getPort()
+ * @model kind="class"
+ * @generated
+ */
+public class Port extends NamedElement {
+ /**
+ * The cached value of the '{@link #getConnectedPorts() <em>Connected Ports</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConnectedPorts()
+ * @generated
+ * @ordered
+ */
+ protected EList<Port> connectedPorts;
+
+ /**
+ * The cached value of the '{@link #getFailures() <em>Failures</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFailures()
+ * @generated
+ * @ordered
+ */
+ protected EList<Failure> failures;
+
+ /**
+ * The cached value of the '{@link #getNewFailures() <em>New Failures</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNewFailures()
+ * @generated
+ * @ordered
+ */
+ protected EList<Failure> newFailures;
+
+ /**
+ * The cached value of the '{@link #getOwner() <em>Owner</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOwner()
+ * @generated
+ * @ordered
+ */
+ protected Component owner;
+
+ /**
+ * The cached value of the '{@link #getIncomingConnections() <em>Incoming Connections</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIncomingConnections()
+ * @generated
+ * @ordered
+ */
+ protected Connection incomingConnections;
+
+ /**
+ * The cached value of the '{@link #getOutgoingConnections() <em>Outgoing Connections</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOutgoingConnections()
+ * @generated
+ * @ordered
+ */
+ protected Connection outgoingConnections;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Port() {
+ super();
+ }
+
+ public Port(String name, String id, Component owner) {
+ super();
+ setName(name);
+ setId(id);
+ setOwner(owner);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlammPackage.Literals.PORT;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Connected Ports</b></em>' reference list.
+ * The list contents are of type {@link org.polarsys.chess.fla.flamm.Port}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Connected Ports</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Connected Ports</em>' reference list.
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getPort_ConnectedPorts()
+ * @model
+ * @generated
+ */
+ public List<Port> getConnectedPorts() {
+ if (connectedPorts == null) {
+ connectedPorts = new EObjectResolvingEList<Port>(Port.class, this, FlammPackage.PORT__CONNECTED_PORTS);
+ }
+ return connectedPorts;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Failures</b></em>' containment reference list.
+ * The list contents are of type {@link org.polarsys.chess.fla.flamm.Failure}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Failures</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Failures</em>' containment reference list.
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getPort_Failures()
+ * @model containment="true" ordered="false"
+ * @generated
+ */
+ public List<Failure> getFailures() {
+ if (failures == null) {
+ failures = new EObjectContainmentEList<Failure>(Failure.class, this, FlammPackage.PORT__FAILURES);
+ }
+ return failures;
+ }
+
+ /**
+ * Returns the value of the '<em><b>New Failures</b></em>' containment reference list.
+ * The list contents are of type {@link org.polarsys.chess.fla.flamm.Failure}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>New Failures</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>New Failures</em>' containment reference list.
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getPort_NewFailures()
+ * @model containment="true" ordered="false"
+ * @generated
+ */
+ public List<Failure> getNewFailures() {
+ if (newFailures == null) {
+ newFailures = new EObjectContainmentEList<Failure>(Failure.class, this, FlammPackage.PORT__NEW_FAILURES);
+ }
+ return newFailures;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Owner</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Owner</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Owner</em>' reference.
+ * @see #setOwner(Component)
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getPort_Owner()
+ * @model required="true"
+ * @generated
+ */
+ public Component getOwner() {
+ if (owner != null && owner.eIsProxy()) {
+ InternalEObject oldOwner = (InternalEObject)owner;
+ owner = (Component)eResolveProxy(oldOwner);
+ if (owner != oldOwner) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FlammPackage.PORT__OWNER, oldOwner, owner));
+ }
+ }
+ return owner;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Component basicGetOwner() {
+ return owner;
+ }
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flamm.Port#getOwner <em>Owner</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Owner</em>' reference.
+ * @see #getOwner()
+ * @generated
+ */
+ public void setOwner(Component newOwner) {
+ Component oldOwner = owner;
+ owner = newOwner;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.PORT__OWNER, oldOwner, owner));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Incoming Connections</b></em>' reference.
+ * It is bidirectional and its opposite is '{@link org.polarsys.chess.fla.flamm.Connection#getTo <em>To</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Incoming Connections</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Incoming Connections</em>' reference.
+ * @see #setIncomingConnections(Connection)
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getPort_IncomingConnections()
+ * @see org.polarsys.chess.fla.flamm.Connection#getTo
+ * @model opposite="to" required="true"
+ * @generated
+ */
+ public Connection getIncomingConnections() {
+ if (incomingConnections != null && incomingConnections.eIsProxy()) {
+ InternalEObject oldIncomingConnections = (InternalEObject)incomingConnections;
+ incomingConnections = (Connection)eResolveProxy(oldIncomingConnections);
+ if (incomingConnections != oldIncomingConnections) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FlammPackage.PORT__INCOMING_CONNECTIONS, oldIncomingConnections, incomingConnections));
+ }
+ }
+ return incomingConnections;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Connection basicGetIncomingConnections() {
+ return incomingConnections;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetIncomingConnections(Connection newIncomingConnections, NotificationChain msgs) {
+ Connection oldIncomingConnections = incomingConnections;
+ incomingConnections = newIncomingConnections;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlammPackage.PORT__INCOMING_CONNECTIONS, oldIncomingConnections, newIncomingConnections);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flamm.Port#getIncomingConnections <em>Incoming Connections</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Incoming Connections</em>' reference.
+ * @see #getIncomingConnections()
+ * @generated
+ */
+ public void setIncomingConnections(Connection newIncomingConnections) {
+ if (newIncomingConnections != incomingConnections) {
+ NotificationChain msgs = null;
+ if (incomingConnections != null)
+ msgs = ((InternalEObject)incomingConnections).eInverseRemove(this, FlammPackage.CONNECTION__TO, Connection.class, msgs);
+ if (newIncomingConnections != null)
+ msgs = ((InternalEObject)newIncomingConnections).eInverseAdd(this, FlammPackage.CONNECTION__TO, Connection.class, msgs);
+ msgs = basicSetIncomingConnections(newIncomingConnections, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.PORT__INCOMING_CONNECTIONS, newIncomingConnections, newIncomingConnections));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Outgoing Connections</b></em>' reference.
+ * It is bidirectional and its opposite is '{@link org.polarsys.chess.fla.flamm.Connection#getFrom <em>From</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Outgoing Connections</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Outgoing Connections</em>' reference.
+ * @see #setOutgoingConnections(Connection)
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getPort_OutgoingConnections()
+ * @see org.polarsys.chess.fla.flamm.Connection#getFrom
+ * @model opposite="from" required="true"
+ * @generated
+ */
+ public Connection getOutgoingConnections() {
+ if (outgoingConnections != null && outgoingConnections.eIsProxy()) {
+ InternalEObject oldOutgoingConnections = (InternalEObject)outgoingConnections;
+ outgoingConnections = (Connection)eResolveProxy(oldOutgoingConnections);
+ if (outgoingConnections != oldOutgoingConnections) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FlammPackage.PORT__OUTGOING_CONNECTIONS, oldOutgoingConnections, outgoingConnections));
+ }
+ }
+ return outgoingConnections;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Connection basicGetOutgoingConnections() {
+ return outgoingConnections;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetOutgoingConnections(Connection newOutgoingConnections, NotificationChain msgs) {
+ Connection oldOutgoingConnections = outgoingConnections;
+ outgoingConnections = newOutgoingConnections;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlammPackage.PORT__OUTGOING_CONNECTIONS, oldOutgoingConnections, newOutgoingConnections);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flamm.Port#getOutgoingConnections <em>Outgoing Connections</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Outgoing Connections</em>' reference.
+ * @see #getOutgoingConnections()
+ * @generated
+ */
+ public void setOutgoingConnections(Connection newOutgoingConnections) {
+ if (newOutgoingConnections != outgoingConnections) {
+ NotificationChain msgs = null;
+ if (outgoingConnections != null)
+ msgs = ((InternalEObject)outgoingConnections).eInverseRemove(this, FlammPackage.CONNECTION__FROM, Connection.class, msgs);
+ if (newOutgoingConnections != null)
+ msgs = ((InternalEObject)newOutgoingConnections).eInverseAdd(this, FlammPackage.CONNECTION__FROM, Connection.class, msgs);
+ msgs = basicSetOutgoingConnections(newOutgoingConnections, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.PORT__OUTGOING_CONNECTIONS, newOutgoingConnections, newOutgoingConnections));
+ }
+
+ public boolean hasNewFailures() {
+ return !getNewFailures().isEmpty();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ public void propagateFailures() {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * Marks all new failures as handled.
+ */
+ public void clearNewFailures() {
+ getFailures().addAll(getNewFailures());
+ getNewFailures().clear();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void initialize() {
+ this.getFailures().clear();
+ this.getNewFailures().clear();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlammPackage.PORT__INCOMING_CONNECTIONS:
+ if (incomingConnections != null)
+ msgs = ((InternalEObject)incomingConnections).eInverseRemove(this, FlammPackage.CONNECTION__TO, Connection.class, msgs);
+ return basicSetIncomingConnections((Connection)otherEnd, msgs);
+ case FlammPackage.PORT__OUTGOING_CONNECTIONS:
+ if (outgoingConnections != null)
+ msgs = ((InternalEObject)outgoingConnections).eInverseRemove(this, FlammPackage.CONNECTION__FROM, Connection.class, msgs);
+ return basicSetOutgoingConnections((Connection)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlammPackage.PORT__FAILURES:
+ return ((InternalEList<?>)getFailures()).basicRemove(otherEnd, msgs);
+ case FlammPackage.PORT__NEW_FAILURES:
+ return ((InternalEList<?>)getNewFailures()).basicRemove(otherEnd, msgs);
+ case FlammPackage.PORT__INCOMING_CONNECTIONS:
+ return basicSetIncomingConnections(null, msgs);
+ case FlammPackage.PORT__OUTGOING_CONNECTIONS:
+ return basicSetOutgoingConnections(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * Add a new failure to this port.<br/>
+ * A copy of the failure will be created and added to handle EMF containment relationship.
+ * @param failure
+ * @return <code>true</code> if the failure was added to the set of new failures.
+ */
+ public boolean addFailure(Failure failure) {
+ if (Failure.doCollectionContainFailure(getFailures(), failure) || Failure.doCollectionContainFailure(getNewFailures(), failure)) {
+ return false;
+ }
+ return getNewFailures().add(new Failure(failure));
+ }
+
+ /**
+ * Add a new failure to this port.<br/>
+ * A copy of the failure will be created and added to handle EMF containment relationship.
+ * @param failure
+ * @return <code>true</code> if the failure was added to the set of new failures.
+ */
+ public boolean addFailure(Failure failure, Failure previousFailure) {
+ if (Failure.doCollectionContainFailure(getFailures(), failure)) {
+ Failure existingFailure = Failure.getFailureInCollection(getFailures(), failure);
+ existingFailure.addPreviousFailure(previousFailure);
+ return false;
+ } else if (Failure.doCollectionContainFailure(getNewFailures(), failure)) {
+ Failure existingFailure = Failure.getFailureInCollection(getNewFailures(), failure);
+ existingFailure.addPreviousFailure(previousFailure);
+ return false;
+ }
+ return getNewFailures().add(new Failure(failure, previousFailure));
+ }
+
+ /**
+ * Add a new failure to this port.<br/>
+ * A copy of the failure will be created and added to handle EMF containment relationship.
+ * @param failure
+ * @return <code>true</code> if the failure was added to the set of new failures.
+ */
+ public boolean addFailure(Failure failure, Collection<Failure> previousFailures) {
+ if (Failure.doCollectionContainFailure(getFailures(), failure)) {
+ Failure existingFailure = Failure.getFailureInCollection(getFailures(), failure);
+ existingFailure.addPreviousFailures(previousFailures);
+ return false;
+ } else if (Failure.doCollectionContainFailure(getNewFailures(), failure)) {
+ Failure existingFailure = Failure.getFailureInCollection(getNewFailures(), failure);
+ existingFailure.addPreviousFailures(previousFailures);
+ return false;
+ }
+ return getNewFailures().add(new Failure(failure, previousFailures));
+ }
+
+ /**
+ * Add new failures to this port.<br/>
+ * All failures will be copied and added to handle EMF containment relationship.
+ * @param failure
+ * @return <code>true</code> if at least one of the failures was added to the set of new failures.
+ */
+ public boolean addFailures(Collection<Failure> failures) {
+ boolean hasFailureBeenAdded = false;
+ for (Failure failure : failures) {
+ if (this.addFailure(failure)) {
+ hasFailureBeenAdded = true;
+ }
+ }
+ return hasFailureBeenAdded;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlammPackage.PORT__CONNECTED_PORTS:
+ return getConnectedPorts();
+ case FlammPackage.PORT__FAILURES:
+ return getFailures();
+ case FlammPackage.PORT__NEW_FAILURES:
+ return getNewFailures();
+ case FlammPackage.PORT__OWNER:
+ if (resolve) return getOwner();
+ return basicGetOwner();
+ case FlammPackage.PORT__INCOMING_CONNECTIONS:
+ if (resolve) return getIncomingConnections();
+ return basicGetIncomingConnections();
+ case FlammPackage.PORT__OUTGOING_CONNECTIONS:
+ if (resolve) return getOutgoingConnections();
+ return basicGetOutgoingConnections();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlammPackage.PORT__CONNECTED_PORTS:
+ getConnectedPorts().clear();
+ getConnectedPorts().addAll((Collection<? extends Port>)newValue);
+ return;
+ case FlammPackage.PORT__FAILURES:
+ getFailures().clear();
+ getFailures().addAll((Collection<? extends Failure>)newValue);
+ return;
+ case FlammPackage.PORT__NEW_FAILURES:
+ getNewFailures().clear();
+ getNewFailures().addAll((Collection<? extends Failure>)newValue);
+ return;
+ case FlammPackage.PORT__OWNER:
+ setOwner((Component)newValue);
+ return;
+ case FlammPackage.PORT__INCOMING_CONNECTIONS:
+ setIncomingConnections((Connection)newValue);
+ return;
+ case FlammPackage.PORT__OUTGOING_CONNECTIONS:
+ setOutgoingConnections((Connection)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlammPackage.PORT__CONNECTED_PORTS:
+ getConnectedPorts().clear();
+ return;
+ case FlammPackage.PORT__FAILURES:
+ getFailures().clear();
+ return;
+ case FlammPackage.PORT__NEW_FAILURES:
+ getNewFailures().clear();
+ return;
+ case FlammPackage.PORT__OWNER:
+ setOwner((Component)null);
+ return;
+ case FlammPackage.PORT__INCOMING_CONNECTIONS:
+ setIncomingConnections((Connection)null);
+ return;
+ case FlammPackage.PORT__OUTGOING_CONNECTIONS:
+ setOutgoingConnections((Connection)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlammPackage.PORT__CONNECTED_PORTS:
+ return connectedPorts != null && !connectedPorts.isEmpty();
+ case FlammPackage.PORT__FAILURES:
+ return failures != null && !failures.isEmpty();
+ case FlammPackage.PORT__NEW_FAILURES:
+ return newFailures != null && !newFailures.isEmpty();
+ case FlammPackage.PORT__OWNER:
+ return owner != null;
+ case FlammPackage.PORT__INCOMING_CONNECTIONS:
+ return incomingConnections != null;
+ case FlammPackage.PORT__OUTGOING_CONNECTIONS:
+ return outgoingConnections != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case FlammPackage.PORT___PROPAGATE_FAILURES:
+ propagateFailures();
+ return null;
+ case FlammPackage.PORT___INITIALIZE:
+ initialize();
+ return null;
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+} // Port
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/PortFailureTuple.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/PortFailureTuple.java
new file mode 100644
index 0000000..8d9f48d
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/PortFailureTuple.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+
+public class PortFailureTuple {
+ Port port;
+ Failure failure;
+
+ PortFailureTuple(Port port, Failure failureType) {
+ this.port = port;
+ this.failure = failureType;
+ }
+
+ static List<PortFailureTuple> fromMap(Map<Port, Failure> map) {
+ List<PortFailureTuple> list = new ArrayList<PortFailureTuple>(map.size());
+ for (Port port : map.keySet()) {
+ list.add(new PortFailureTuple(port, map.get(port)));
+ }
+ return list;
+ }
+
+ static Set<PortFailureTuple> fromCollection(Port port, Collection<Failure> failures) {
+ Set<PortFailureTuple> set = new HashSet<PortFailureTuple>(failures.size());
+ for (Failure failure : failures) {
+ set.add(new PortFailureTuple(port, failure));
+ }
+ return set;
+ }
+
+ public Port getPort() {
+ return port;
+ }
+
+ public Failure getFailure() {
+ return failure;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((failure == null) ? 0 : failure.getId().hashCode());
+ result = prime * result + ((port == null) ? 0 : port.getId().hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ PortFailureTuple other = (PortFailureTuple) obj;
+ if (failure == null) {
+ if (other.failure != null) {
+ return false;
+ }
+ } else if (!failure.getId().equals(other.failure.getId())) {
+ return false;
+ }
+ if (port == null) {
+ if (other.port != null) {
+ return false;
+ }
+ } else if (!port.equals(other.port)) {
+ return false;
+ }
+ return true;
+ }
+
+
+}
\ No newline at end of file
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Rule.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Rule.java
new file mode 100644
index 0000000..d52ef94
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Rule.java
@@ -0,0 +1,401 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.polarsys.chess.fla.flamm.FailureTypes.FailureType;
+import org.polarsys.chess.fla.flamm.analysis.FlaSystem;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Rule</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flamm.Rule#getInputExpression <em>Input Expression</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flamm.Rule#getOutputExpression <em>Output Expression</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flamm.Rule#getSpecificity <em>Specificity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getRule()
+ * @model kind="class"
+ * @generated
+ */
+public class Rule extends MinimalEObjectImpl.Container implements EObject {
+ /**
+ * The cached value of the '{@link #getInputExpression() <em>Input Expression</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInputExpression()
+ * @generated
+ * @ordered
+ */
+ protected EList<Expression> inputExpression;
+
+ /**
+ * The cached value of the '{@link #getOutputExpression() <em>Output Expression</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOutputExpression()
+ * @generated
+ * @ordered
+ */
+ protected EList<Expression> outputExpression;
+
+ /**
+ * Used to keep information about failure types matched to variables.
+ */
+ private transient Map<String, Failure> variableAssignments = new HashMap<String, Failure>();
+
+ /**
+ * The default value of the '{@link #getSpecificity() <em>Specificity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecificity()
+ * @generated
+ * @ordered
+ */
+ protected static final int SPECIFICITY_EDEFAULT = -1;
+
+ /**
+ * The cached value of the '{@link #getSpecificity() <em>Specificity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecificity()
+ * @generated
+ * @ordered
+ */
+ protected int specificity = SPECIFICITY_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Rule() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlammPackage.Literals.RULE;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Input Expression</b></em>' containment reference list.
+ * The list contents are of type {@link org.polarsys.chess.fla.flamm.Expression}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Input Expression</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Input Expression</em>' containment reference list.
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getRule_InputExpression()
+ * @model containment="true"
+ * @generated
+ */
+ public List<Expression> getInputExpression() {
+ if (inputExpression == null) {
+ inputExpression = new EObjectContainmentEList<Expression>(Expression.class, this, FlammPackage.RULE__INPUT_EXPRESSION);
+ }
+ return inputExpression;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Output Expression</b></em>' containment reference list.
+ * The list contents are of type {@link org.polarsys.chess.fla.flamm.Expression}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Output Expression</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Output Expression</em>' containment reference list.
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getRule_OutputExpression()
+ * @model containment="true"
+ * @generated
+ */
+ public List<Expression> getOutputExpression() {
+ if (outputExpression == null) {
+ outputExpression = new EObjectContainmentEList<Expression>(Expression.class, this, FlammPackage.RULE__OUTPUT_EXPRESSION);
+ }
+ return outputExpression;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specificity</b></em>' attribute.
+ * The default value is <code>"-1"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specificity</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specificity</em>' attribute.
+ * @see #setSpecificity(int)
+ * @generated NOT
+ */
+ public int getSpecificity() {
+ if (specificity == -1) {
+ calculateSpecificity();
+ }
+ return specificity;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlammPackage.RULE__INPUT_EXPRESSION:
+ return ((InternalEList<?>)getInputExpression()).basicRemove(otherEnd, msgs);
+ case FlammPackage.RULE__OUTPUT_EXPRESSION:
+ return ((InternalEList<?>)getOutputExpression()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ protected void calculateSpecificity() {
+ int calculatedSpecificity = 0;
+ for (Expression inputExpression : inputExpression) {
+ if (!expressionContainsVariableOrWildcard(inputExpression)) {
+ calculatedSpecificity++;
+ }
+ }
+ this.specificity = calculatedSpecificity;
+ }
+
+ private boolean expressionContainsVariableOrWildcard(Expression expression) {
+ for (Failure failure : expression.getFailures()) {
+ if (FailureType.WILDCARD == failure.getType() || FailureType.VARIABLE == failure.getType()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Check if the list of failures are matched by this rule.
+ * @param failuresetToMatch list of PortFailureTuples to check
+ * @return <code>true</code> if this rule is covering the failuresetToMatch failures
+ */
+ public boolean matchFailure(List<PortFailureTuple> failuresetToMatch) {
+ variableAssignments.clear();
+ for (PortFailureTuple failureTupleToMatch : failuresetToMatch) {
+ Expression portInputExpression = getInputExpressionForPort(failureTupleToMatch.getPort());
+ if (portInputExpression == null || portInputExpression.getFailures().isEmpty()) {
+ // port not present in this transformation rule
+ // treat as wildcard
+ if (FlaSystem.treatUnmentionedPortsAsWildcards()){
+ continue;
+ } else {
+ // TODO: warn user
+ return false;
+ }
+ }
+
+ List<Failure> rulePortFailures = portInputExpression.getFailures();
+ boolean match = false;
+ for (Failure ruleFailure : rulePortFailures) {
+ if (ruleFailure.getType() == FailureType.WILDCARD) {
+ match = true;
+ break;
+ } else if (ruleFailure.getType() == FailureType.VARIABLE) {
+ Failure prevVariableAssignment = variableAssignments.get(ruleFailure.getId());
+ if (prevVariableAssignment != null && ! prevVariableAssignment.isSameFailure(failureTupleToMatch.getFailure())) {
+ // The same variable cannot map to different failure types simultaneously
+ continue;
+ }
+ variableAssignments.put(ruleFailure.getId(), failureTupleToMatch.getFailure());
+ match = true;
+ break;
+ } else if (ruleFailure.isSameFailure(failureTupleToMatch.getFailure())) {
+ match = true;
+ break;
+ }
+ }
+ if (!match) {
+ // Failure is not matched with rule for current port.
+ return false;
+ }
+ }
+ return true;
+ }
+
+ protected Expression getInputExpressionForPort(Port port) {
+ return getExpressionForPort(inputExpression, port);
+ }
+
+ protected Expression getOutputExpressionForPort(Port port) {
+ return getExpressionForPort(outputExpression, port);
+ }
+
+ private Expression getExpressionForPort(List<Expression> expressions, Port port) {
+ if (port != null) {
+ for (Expression expression : expressions) {
+ if (port.equals(expression.getPort())) {
+ return expression;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Transform and propagate failures to the output ports according to this rule.
+ */
+ public void fire() {
+ for (Expression expression : getOutputExpression()) {
+ Port port = expression.getPort();
+ for (Failure failure : expression.getFailures()) {
+ if (failure.getType() == FailureType.VARIABLE) {
+ port.addFailure(variableAssignments.get(failure.getId()));
+ } else {
+ port.addFailure(failure);
+ }
+ }
+ }
+ }
+
+ /**
+ * Transform and propagate failures to the output ports according to this rule.
+ */
+ public void fire(Collection<Failure> previousFailures) {
+ for (Expression expression : getOutputExpression()) {
+ Port port = expression.getPort();
+ for (Failure failure : expression.getFailures()) {
+ if (failure.getType() == FailureType.VARIABLE) {
+ port.addFailure(variableAssignments.get(failure.getId()), previousFailures);
+ } else {
+ port.addFailure(failure, previousFailures);
+ }
+ }
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlammPackage.RULE__INPUT_EXPRESSION:
+ return getInputExpression();
+ case FlammPackage.RULE__OUTPUT_EXPRESSION:
+ return getOutputExpression();
+ case FlammPackage.RULE__SPECIFICITY:
+ return getSpecificity();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlammPackage.RULE__INPUT_EXPRESSION:
+ getInputExpression().clear();
+ getInputExpression().addAll((Collection<? extends Expression>)newValue);
+ return;
+ case FlammPackage.RULE__OUTPUT_EXPRESSION:
+ getOutputExpression().clear();
+ getOutputExpression().addAll((Collection<? extends Expression>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlammPackage.RULE__INPUT_EXPRESSION:
+ getInputExpression().clear();
+ return;
+ case FlammPackage.RULE__OUTPUT_EXPRESSION:
+ getOutputExpression().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlammPackage.RULE__INPUT_EXPRESSION:
+ return inputExpression != null && !inputExpression.isEmpty();
+ case FlammPackage.RULE__OUTPUT_EXPRESSION:
+ return outputExpression != null && !outputExpression.isEmpty();
+ case FlammPackage.RULE__SPECIFICITY:
+ return specificity != SPECIFICITY_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (specificity: ");
+ result.append(specificity);
+ result.append(')');
+ return result.toString();
+ }
+
+} // Rule
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/SimpleComponent.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/SimpleComponent.java
new file mode 100644
index 0000000..87efe3b
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/SimpleComponent.java
@@ -0,0 +1,366 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.BasicInternalEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.polarsys.chess.fla.flamm.analysis.FlaSystem;
+
+import com.google.common.collect.Sets;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Simple Component</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flamm.SimpleComponent#getRules <em>Rules</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SimpleComponent extends Component {
+ /**
+ * The cached value of the '{@link #getRules() <em>Rules</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRules()
+ * @generated
+ * @ordered
+ */
+ protected EList<Rule> rules;
+
+ List<Set<PortFailureTuple>> propagatedInputPortFailures = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SimpleComponent() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlammPackage.Literals.SIMPLE_COMPONENT;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Rules</b></em>' containment reference list.
+ * The list contents are of type {@link org.polarsys.chess.fla.flamm.Rule}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Rules</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Rules</em>' containment reference list.
+ * @generated
+ */
+ public List<Rule> getRules() {
+ if (rules == null) {
+ rules = new BasicInternalEList<Rule>(Rule.class);
+ }
+ return rules;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlammPackage.SIMPLE_COMPONENT__INPUT_PORTS:
+ return ((InternalEList<?>)getInputPorts()).basicRemove(otherEnd, msgs);
+ case FlammPackage.SIMPLE_COMPONENT__OUTPUT_PORTS:
+ return ((InternalEList<?>)getOutputPorts()).basicRemove(otherEnd, msgs);
+ case FlammPackage.SIMPLE_COMPONENT__PARENT:
+ return basicSetParent(null, msgs);
+ case FlammPackage.SIMPLE_COMPONENT__RULES:
+ return ((InternalEList<?>)getRules()).basicRemove(otherEnd, msgs);
+ }
+ return eDynamicInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ private List<Set<PortFailureTuple>> getPropagatedInputPortFailures() {
+ if (propagatedInputPortFailures == null) {
+ propagatedInputPortFailures = new ArrayList<Set<PortFailureTuple>>();
+ for (int i = 0; i < getInputPorts().size(); i++) {
+ propagatedInputPortFailures.add(new HashSet<PortFailureTuple>());
+ }
+ }
+ return propagatedInputPortFailures;
+ }
+
+ @Override
+ public void propagateFailures() {
+ propagateInputFailures();
+ propagateOutputFailures();
+ }
+
+ /**
+ * Calculates Cartesian product (cross product / all combinations) for the input ports failures.<br/>
+ * These combinations are used to match and fire transformation rules.
+ * <p>The combinations of propagated combinations are updated.
+ */
+ void propagateInputFailures() {
+
+ for (int i = 0; i < inputPorts.size(); i++) {
+ Port port = inputPorts.get(i);
+ Set<PortFailureTuple> newPortFailures = PortFailureTuple.fromCollection(port, port.getNewFailures());
+ Set<PortFailureTuple> oldPortFailures = getPropagatedInputPortFailures().get(i);
+ propagatedInputPortFailures.set(i, newPortFailures);
+ Set<List<PortFailureTuple>> newFailureCombinations = getNewInputFailureCombinations(propagatedInputPortFailures);
+ for (List<PortFailureTuple> portFailureCombination : newFailureCombinations) {
+ propagateFailureCombination(portFailureCombination);
+ }
+ port.clearNewFailures();
+ propagatedInputPortFailures.set(i, Sets.union(oldPortFailures, newPortFailures));
+ }
+ }
+
+ /**
+ * New failures on output ports are propagated to all connected ports.
+ */
+ protected void propagateOutputFailures() {
+ for (Port port : outputPorts) {
+ for (Failure failure : port.getNewFailures()) {
+ for (Port connectedPort : port.getConnectedPorts()) {
+ if (connectedPort.addFailure(failure, failure)) {
+ FlaSystem.addUpdatedComponent(connectedPort.getOwner());
+ }
+ }
+ }
+ port.clearNewFailures();
+ }
+ }
+
+ Set<List<PortFailureTuple>> getNewInputFailureCombinations(List<Set<PortFailureTuple>> failures) {
+ Set<List<PortFailureTuple>> failureCombinations = Sets.cartesianProduct(failures);
+ return failureCombinations;
+ }
+
+ /**
+ * Propagates a list of port-failure combinations via transformation rules to corresponding output ports.
+ * <p>If no rule matches {@link #HandleUnmatchedFailureCombination} is called.
+ * @param failuresetToMatch
+ */
+ void propagateFailureCombination(List<PortFailureTuple> failuresetToMatch) {
+ List<Rule> rules = getMostSpecificMatchingRules(failuresetToMatch);
+ if (rules != null && !rules.isEmpty()) {
+ List<Failure> previousFailures = portfailuresToFailureList(failuresetToMatch);
+ for(Rule rule : rules) {
+ rule.fire(previousFailures);
+ }
+ } else {
+ HandleUnmatchedFailureCombination(failuresetToMatch);
+ }
+ }
+
+ List<Failure> portfailuresToFailureList(List<PortFailureTuple> failureSet) {
+ List<Failure> failures = new ArrayList<Failure>();
+ for (PortFailureTuple portFailure : failureSet) {
+ failures.add(portFailure.getFailure());
+ }
+ return failures;
+ }
+
+ protected void HandleUnmatchedFailureCombination(List<PortFailureTuple> failuresetToMatch) {
+ if (FlaSystem.propagateUnmatchedFailures()) {
+ for (Port port : outputPorts) {
+ for (PortFailureTuple portFailure : failuresetToMatch) {
+ port.addFailure(portFailure.getFailure(), portFailure.getFailure());
+ }
+ }
+ } else {
+ // TODO: alert user
+ log("Unmatched failure set: " + failuresetToMatch);
+ }
+ }
+
+ List<Rule> getMostSpecificMatchingRules(List<PortFailureTuple> failuresetToMatch) {
+ List<Rule> matchingRules = getAllMatchingRules(failuresetToMatch);
+ if (matchingRules == null || matchingRules.isEmpty()) {
+ return null;
+ }
+
+ int highestSpecificity = matchingRules.get(0).getSpecificity();
+ for (Rule matchingRule : matchingRules) {
+ if (matchingRule.getSpecificity() > highestSpecificity) {
+ highestSpecificity = matchingRule.getSpecificity();
+ }
+ }
+
+ List<Rule> mostSpecificRules = new ArrayList<Rule>();
+ for (Rule matchingRule : matchingRules) {
+ if (matchingRule.getSpecificity() == highestSpecificity) {
+ mostSpecificRules.add(matchingRule);
+ }
+ }
+ return mostSpecificRules;
+ }
+
+ List<Rule> getAllMatchingRules(List<PortFailureTuple> failuresetToMatch) {
+ List<Rule> matchingRules = new ArrayList<Rule>();
+ if (this.rules != null) {
+ for (Rule rule : rules) {
+ if (rule.matchFailure(failuresetToMatch)) {
+ matchingRules.add(rule);
+ }
+ }
+ }
+
+ return matchingRules;
+ }
+
+ protected void log(String message) {
+ // TODO: implement
+// if (logger != null) {
+// logger.logWarning(message);
+// }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlammPackage.SIMPLE_COMPONENT__ID:
+ return getId();
+ case FlammPackage.SIMPLE_COMPONENT__NAME:
+ return getName();
+ case FlammPackage.SIMPLE_COMPONENT__INPUT_PORTS:
+ return getInputPorts();
+ case FlammPackage.SIMPLE_COMPONENT__OUTPUT_PORTS:
+ return getOutputPorts();
+ case FlammPackage.SIMPLE_COMPONENT__PARENT:
+ return getParent();
+ case FlammPackage.SIMPLE_COMPONENT__RULES:
+ return getRules();
+ }
+ return eDynamicGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlammPackage.SIMPLE_COMPONENT__ID:
+ setId((String)newValue);
+ return;
+ case FlammPackage.SIMPLE_COMPONENT__NAME:
+ setName((String)newValue);
+ return;
+ case FlammPackage.SIMPLE_COMPONENT__INPUT_PORTS:
+ getInputPorts().clear();
+ getInputPorts().addAll((Collection<? extends Port>)newValue);
+ return;
+ case FlammPackage.SIMPLE_COMPONENT__OUTPUT_PORTS:
+ getOutputPorts().clear();
+ getOutputPorts().addAll((Collection<? extends Port>)newValue);
+ return;
+ case FlammPackage.SIMPLE_COMPONENT__PARENT:
+ setParent((CompositeComponent)newValue);
+ return;
+ case FlammPackage.SIMPLE_COMPONENT__RULES:
+ getRules().clear();
+ getRules().addAll((Collection<? extends Rule>)newValue);
+ return;
+ }
+ eDynamicSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlammPackage.SIMPLE_COMPONENT__ID:
+ setId(ID_EDEFAULT);
+ return;
+ case FlammPackage.SIMPLE_COMPONENT__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case FlammPackage.SIMPLE_COMPONENT__INPUT_PORTS:
+ getInputPorts().clear();
+ return;
+ case FlammPackage.SIMPLE_COMPONENT__OUTPUT_PORTS:
+ getOutputPorts().clear();
+ return;
+ case FlammPackage.SIMPLE_COMPONENT__PARENT:
+ setParent((CompositeComponent)null);
+ return;
+ case FlammPackage.SIMPLE_COMPONENT__RULES:
+ getRules().clear();
+ return;
+ }
+ eDynamicUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlammPackage.SIMPLE_COMPONENT__ID:
+ return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id);
+ case FlammPackage.SIMPLE_COMPONENT__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case FlammPackage.SIMPLE_COMPONENT__INPUT_PORTS:
+ return inputPorts != null && !inputPorts.isEmpty();
+ case FlammPackage.SIMPLE_COMPONENT__OUTPUT_PORTS:
+ return outputPorts != null && !outputPorts.isEmpty();
+ case FlammPackage.SIMPLE_COMPONENT__PARENT:
+ return getParent() != null;
+ case FlammPackage.SIMPLE_COMPONENT__RULES:
+ return rules != null && !rules.isEmpty();
+ }
+ return eDynamicIsSet(featureID);
+ }
+
+} // SimpleComponent
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/analysis/FlaLogger.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/analysis/FlaLogger.java
new file mode 100644
index 0000000..22d98c9
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/analysis/FlaLogger.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.analysis;
+
+import java.util.List;
+
+public interface FlaLogger {
+
+ public void logError(String message);
+
+ public void logWarning(String message);
+
+ public List<String> getErrors();
+
+ public List<String> getWarnings();
+}
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/analysis/FlaSystem.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/analysis/FlaSystem.java
new file mode 100644
index 0000000..6231467
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/analysis/FlaSystem.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.analysis;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import org.polarsys.chess.fla.flamm.*;
+
+public class FlaSystem {
+ Component rootComponent;
+ boolean propagateUnmatchedFailures = true;
+ boolean treatUnmentionedPortsAsWildcards = true;
+ boolean initToNoFailure = true;
+
+ public Component getRootComponent() {
+ return rootComponent;
+ }
+
+ protected void setRootComponent(Component rootComponent) {
+ this.rootComponent = rootComponent;
+ }
+
+ public FlaSystem() {
+ // Default constructor
+ }
+
+ public FlaSystem(Component rootComponent) {
+ this.rootComponent = rootComponent;
+ }
+
+ /**
+ * Should all connections (input ports) be initialized with a noFailure token?<br/>
+ * Default: <code>true</code>
+ * @param initToNoFailure
+ */
+ public void initializeNoFailure(boolean initToNoFailure) {
+ this.initToNoFailure = initToNoFailure;
+ }
+
+ /**
+ * Should unmatched errors be propagated to all output ports?<br/>
+ * Default: <code>true</code>
+ * @param propagateUnmatchedFailures
+ */
+ public void propagateUnmatchedFailures(boolean propagateUnmatchedFailures) {
+ this.propagateUnmatchedFailures = propagateUnmatchedFailures;
+ }
+
+ /**
+ * Should unmatched errors be propagated to all output ports?<br/>
+ * Default: <code>true</code>
+ * @param propagateUnmatchedFailures
+ */
+ public void treatUnmentionedPortsAsWildcards(boolean treatUnmentionedPortsAsWildcards) {
+ this.treatUnmentionedPortsAsWildcards = treatUnmentionedPortsAsWildcards;
+ }
+
+ public void performAnalysis(FlaLogger logger) {
+ FlaSystem.staticPropagateUnmatchedFailures = this.propagateUnmatchedFailures;
+ FlaSystem.staticTreatUnmentionedPortsAsWildcards = this.treatUnmentionedPortsAsWildcards;
+ FlaSystem.staticInitToNoFailure = this.initToNoFailure;
+
+ rootComponent.initialize(this.initToNoFailure);
+ addUpdatedComponent(rootComponent);
+
+ while (!updatedComponents.isEmpty()) {
+ Component updatedComponent = updatedComponents.remove(0);
+ updatedComponent.propagateFailures();
+ }
+ }
+
+ /* Static methods */
+
+ private static List<Component> updatedComponents = new LinkedList<Component>();
+ private static boolean staticPropagateUnmatchedFailures;
+ private static boolean staticTreatUnmentionedPortsAsWildcards;
+ private static boolean staticInitToNoFailure;
+
+ /**
+ * Should all connections (input ports) be initialized with a noFailure token?<br/>
+ * Default: <code>true</code>
+ * @param initToNoFailure
+ */
+ public static boolean initializeNoFailure() {
+ return FlaSystem.staticInitToNoFailure;
+ }
+
+ /**
+ * Should unmatched errors be propagated to all output ports?<br/>
+ */
+ public static boolean propagateUnmatchedFailures() {
+ return FlaSystem.staticPropagateUnmatchedFailures;
+ }
+
+ /**
+ * Should unmatched errors be propagated to all output ports?<br/>
+ */
+ public static boolean treatUnmentionedPortsAsWildcards() {
+ return FlaSystem.staticTreatUnmentionedPortsAsWildcards;
+ }
+
+ /**
+ * Add an updated component to the list to be analyzed.<br/>
+ * @param updatedComponent updated component.
+ */
+ public static void addUpdatedComponent(Component updatedComponent) {
+ if (!updatedComponents.contains(updatedComponent)) {
+ updatedComponents.add(updatedComponent);
+ }
+ }
+
+}
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/analysis/SimpleFlaLogger.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/analysis/SimpleFlaLogger.java
new file mode 100644
index 0000000..ace26ba
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/analysis/SimpleFlaLogger.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.analysis;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SimpleFlaLogger implements FlaLogger{
+
+ protected List<String> errors = new ArrayList<String>();
+ protected List<String> warnings = new ArrayList<String>();
+
+ public void logError(String message) {
+ errors.add(message);
+ }
+
+ public void logWarning(String message) {
+ warnings.add(message);
+ }
+
+ public List<String> getErrors() {
+ return errors;
+ }
+
+ public List<String> getWarnings() {
+ return warnings;
+ }
+}
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammAdapterFactory.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammAdapterFactory.java
new file mode 100644
index 0000000..453fb29
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammAdapterFactory.java
@@ -0,0 +1,325 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.polarsys.chess.fla.flamm.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FlammPackage
+ * @generated
+ */
+public class FlammAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static FlammPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FlammAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = FlammPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FlammSwitch<Adapter> modelSwitch =
+ new FlammSwitch<Adapter>() {
+ @Override
+ public Adapter caseNamedElement(NamedElement object) {
+ return createNamedElementAdapter();
+ }
+ @Override
+ public Adapter caseFlaBehaviour(FlaBehaviour object) {
+ return createFlaBehaviourAdapter();
+ }
+ @Override
+ public Adapter caseComponent(Component object) {
+ return createComponentAdapter();
+ }
+ @Override
+ public Adapter caseCompositeComponent(CompositeComponent object) {
+ return createCompositeComponentAdapter();
+ }
+ @Override
+ public Adapter caseSimpleComponent(SimpleComponent object) {
+ return createSimpleComponentAdapter();
+ }
+ @Override
+ public Adapter casePort(Port object) {
+ return createPortAdapter();
+ }
+ @Override
+ public Adapter caseConnection(Connection object) {
+ return createConnectionAdapter();
+ }
+ @Override
+ public Adapter caseRule(Rule object) {
+ return createRuleAdapter();
+ }
+ @Override
+ public Adapter caseExpression(Expression object) {
+ return createExpressionAdapter();
+ }
+ @Override
+ public Adapter caseFailure(Failure object) {
+ return createFailureAdapter();
+ }
+ @Override
+ public Adapter caseACIDavoidable(ACIDavoidable object) {
+ return createACIDavoidableAdapter();
+ }
+ @Override
+ public Adapter caseACIDmitigation(ACIDmitigation object) {
+ return createACIDmitigationAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flamm.NamedElement <em>Named Element</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flamm.NamedElement
+ * @generated
+ */
+ public Adapter createNamedElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flamm.FlaBehaviour <em>Fla Behaviour</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flamm.FlaBehaviour
+ * @generated
+ */
+ public Adapter createFlaBehaviourAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flamm.Component <em>Component</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flamm.Component
+ * @generated
+ */
+ public Adapter createComponentAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flamm.CompositeComponent <em>Composite Component</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flamm.CompositeComponent
+ * @generated
+ */
+ public Adapter createCompositeComponentAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flamm.SimpleComponent <em>Simple Component</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flamm.SimpleComponent
+ * @generated
+ */
+ public Adapter createSimpleComponentAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flamm.Port <em>Port</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flamm.Port
+ * @generated
+ */
+ public Adapter createPortAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flamm.Connection <em>Connection</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flamm.Connection
+ * @generated
+ */
+ public Adapter createConnectionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flamm.Rule <em>Rule</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flamm.Rule
+ * @generated
+ */
+ public Adapter createRuleAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flamm.Expression <em>Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flamm.Expression
+ * @generated
+ */
+ public Adapter createExpressionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flamm.Failure <em>Failure</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flamm.Failure
+ * @generated
+ */
+ public Adapter createFailureAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flamm.ACIDavoidable <em>ACI Davoidable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flamm.ACIDavoidable
+ * @generated
+ */
+ public Adapter createACIDavoidableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flamm.ACIDmitigation <em>ACI Dmitigation</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flamm.ACIDmitigation
+ * @generated
+ */
+ public Adapter createACIDmitigationAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //FlammAdapterFactory
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammReader.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammReader.java
new file mode 100644
index 0000000..0c34091
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammReader.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.util;
+
+import java.io.IOException;
+import java.util.Collections;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+import org.polarsys.chess.fla.flamm.Component;
+import org.polarsys.chess.fla.flamm.FlammPackage;
+
+public class FlammReader {
+
+ private URI uri;
+ private Resource resource = null;
+ private Component rootComponent = null;
+
+ public FlammReader(URI uri) {
+ this.uri = uri;
+ }
+
+ private boolean readModel() {
+ try {
+ // Initialize and register the .flamm extension to use XMI resource factory
+ FlammPackage.eINSTANCE.eClass();
+ Resource.Factory.Registry registry = Resource.Factory.Registry.INSTANCE;
+ Map<String, Object> extensionMap = registry.getExtensionToFactoryMap();
+ extensionMap.put("flamm", new XMIResourceFactoryImpl());
+
+ // Get the root component from the uri resource
+ ResourceSet resourceSet = new ResourceSetImpl();
+ resource = resourceSet.getResource(uri, true);
+ rootComponent = (Component) resource.getContents().get(0);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ return true;
+ }
+
+ public Resource getResource() {
+ if (this.resource == null) {
+ readModel();
+ }
+ return this.resource;
+ }
+
+ public Component getRootComponent() {
+ if (this.rootComponent == null) {
+ readModel();
+ }
+ return this.rootComponent;
+ }
+
+ public boolean saveModel() {
+ try {
+ resource.save(Collections.EMPTY_MAP);
+ return true;
+ } catch (IOException e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+}
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammResourceFactoryImpl.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammResourceFactoryImpl.java
new file mode 100644
index 0000000..c395e68
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammResourceFactoryImpl.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource Factory</b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.util.FlammResourceImpl
+ * @generated
+ */
+public class FlammResourceFactoryImpl extends ResourceFactoryImpl {
+ /**
+ * Creates an instance of the resource factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FlammResourceFactoryImpl() {
+ super();
+ }
+
+ /**
+ * Creates an instance of the resource.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Resource createResource(URI uri) {
+ Resource result = new FlammResourceImpl(uri);
+ return result;
+ }
+
+} //FlammResourceFactoryImpl
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammResourceImpl.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammResourceImpl.java
new file mode 100644
index 0000000..0944074
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammResourceImpl.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource </b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.util.FlammResourceFactoryImpl
+ * @generated
+ */
+public class FlammResourceImpl extends XMLResourceImpl {
+ /**
+ * Creates an instance of the resource.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param uri the URI of the new resource.
+ * @generated
+ */
+ public FlammResourceImpl(URI uri) {
+ super(uri);
+ }
+
+} //FlammResourceImpl
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammSwitch.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammSwitch.java
new file mode 100644
index 0000000..58f6f4e
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammSwitch.java
@@ -0,0 +1,359 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.polarsys.chess.fla.flamm.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FlammPackage
+ * @generated
+ */
+public class FlammSwitch<T> extends Switch<T> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static FlammPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FlammSwitch() {
+ if (modelPackage == null) {
+ modelPackage = FlammPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @parameter ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case FlammPackage.NAMED_ELEMENT: {
+ NamedElement namedElement = (NamedElement)theEObject;
+ T result = caseNamedElement(namedElement);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlammPackage.FLA_BEHAVIOUR: {
+ FlaBehaviour flaBehaviour = (FlaBehaviour)theEObject;
+ T result = caseFlaBehaviour(flaBehaviour);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlammPackage.COMPONENT: {
+ Component component = (Component)theEObject;
+ T result = caseComponent(component);
+ if (result == null) result = caseNamedElement(component);
+ if (result == null) result = caseFlaBehaviour(component);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlammPackage.COMPOSITE_COMPONENT: {
+ CompositeComponent compositeComponent = (CompositeComponent)theEObject;
+ T result = caseCompositeComponent(compositeComponent);
+ if (result == null) result = caseComponent(compositeComponent);
+ if (result == null) result = caseNamedElement(compositeComponent);
+ if (result == null) result = caseFlaBehaviour(compositeComponent);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlammPackage.SIMPLE_COMPONENT: {
+ SimpleComponent simpleComponent = (SimpleComponent)theEObject;
+ T result = caseSimpleComponent(simpleComponent);
+ if (result == null) result = caseComponent(simpleComponent);
+ if (result == null) result = caseNamedElement(simpleComponent);
+ if (result == null) result = caseFlaBehaviour(simpleComponent);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlammPackage.PORT: {
+ Port port = (Port)theEObject;
+ T result = casePort(port);
+ if (result == null) result = caseNamedElement(port);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlammPackage.CONNECTION: {
+ Connection connection = (Connection)theEObject;
+ T result = caseConnection(connection);
+ if (result == null) result = caseFlaBehaviour(connection);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlammPackage.RULE: {
+ Rule rule = (Rule)theEObject;
+ T result = caseRule(rule);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlammPackage.EXPRESSION: {
+ Expression expression = (Expression)theEObject;
+ T result = caseExpression(expression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlammPackage.FAILURE: {
+ Failure failure = (Failure)theEObject;
+ T result = caseFailure(failure);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlammPackage.ACI_DAVOIDABLE: {
+ ACIDavoidable aciDavoidable = (ACIDavoidable)theEObject;
+ T result = caseACIDavoidable(aciDavoidable);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlammPackage.ACI_DMITIGATION: {
+ ACIDmitigation aciDmitigation = (ACIDmitigation)theEObject;
+ T result = caseACIDmitigation(aciDmitigation);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Named Element</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Named Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseNamedElement(NamedElement object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Fla Behaviour</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Fla Behaviour</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFlaBehaviour(FlaBehaviour object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Component</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Component</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseComponent(Component object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Composite Component</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Composite Component</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCompositeComponent(CompositeComponent object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Simple Component</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Simple Component</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSimpleComponent(SimpleComponent object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Port</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Port</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePort(Port object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Connection</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Connection</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseConnection(Connection object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Rule</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Rule</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseRule(Rule object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseExpression(Expression object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Failure</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Failure</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFailure(Failure object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>ACI Davoidable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>ACI Davoidable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseACIDavoidable(ACIDavoidable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>ACI Dmitigation</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>ACI Dmitigation</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseACIDmitigation(ACIDmitigation object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} //FlammSwitch
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammXMLProcessor.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammXMLProcessor.java
new file mode 100644
index 0000000..3cb7403
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammXMLProcessor.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.util;
+
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xmi.util.XMLProcessor;
+import org.polarsys.chess.fla.flamm.FlammPackage;
+
+/**
+ * This class contains helper methods to serialize and deserialize XML documents
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FlammXMLProcessor extends XMLProcessor {
+
+ /**
+ * Public constructor to instantiate the helper.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FlammXMLProcessor() {
+ super((EPackage.Registry.INSTANCE));
+ FlammPackage.eINSTANCE.eClass();
+ }
+
+ /**
+ * Register for "*" and "xml" file extensions the FlammResourceFactoryImpl factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected Map<String, Resource.Factory> getRegistrations() {
+ if (registrations == null) {
+ super.getRegistrations();
+ registrations.put(XML_EXTENSION, new FlammResourceFactoryImpl());
+ registrations.put(STAR_EXTENSION, new FlammResourceFactoryImpl());
+ }
+ return registrations;
+ }
+
+} //FlammXMLProcessor
diff --git a/plugins/org.polarsys.chess.fla.flaxml/.classpath b/plugins/org.polarsys.chess.fla.flaxml/.classpath
new file mode 100644
index 0000000..121e527
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.polarsys.chess.fla.flaxml/.project b/plugins/org.polarsys.chess.fla.flaxml/.project
new file mode 100644
index 0000000..9bbf80b
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.polarsys.chess.fla.flaxml</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.polarsys.chess.fla.flaxml/.settings/org.eclipse.jdt.core.prefs b/plugins/org.polarsys.chess.fla.flaxml/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c537b63
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/plugins/org.polarsys.chess.fla.flaxml/META-INF/MANIFEST.MF b/plugins/org.polarsys.chess.fla.flaxml/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..7e0fe96
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.polarsys.chess.fla.flaxml;singleton:=true
+Bundle-Version: 0.1.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.polarsys.chess.fla.flaxml,
+ org.polarsys.chess.fla.flaxml.impl,
+ org.polarsys.chess.fla.flaxml.util
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.polarsys.chess.fla.flaxml/about.html b/plugins/org.polarsys.chess.fla.flaxml/about.html
new file mode 100644
index 0000000..dd3c089
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.polarsys.chess.fla.flaxml/build.properties b/plugins/org.polarsys.chess.fla.flaxml/build.properties
new file mode 100644
index 0000000..c1261d8
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/build.properties
@@ -0,0 +1,22 @@
+###############################################################################
+# CHESS core plugin
+#
+# Copyright (C) 2011-2015
+# Mälardalen University, Sweden
+#
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License
+# v1.0 which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+###############################################################################
+#
+
+bin.includes = .,\
+ model/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/plugins/org.polarsys.chess.fla.flaxml/model/flaxml class diagram.png b/plugins/org.polarsys.chess.fla.flaxml/model/flaxml class diagram.png
new file mode 100644
index 0000000..42fe443
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/model/flaxml class diagram.png
Binary files differ
diff --git a/plugins/org.polarsys.chess.fla.flaxml/model/flaxml.aird b/plugins/org.polarsys.chess.fla.flaxml/model/flaxml.aird
new file mode 100644
index 0000000..19be4f3
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/model/flaxml.aird
@@ -0,0 +1,1572 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<viewpoint:DAnalysis xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style" xmi:id="_DZpG4A6CEeWqWv0BcAgUIA" selectedViews="_Dv9VIA6CEeWqWv0BcAgUIA" version="8.1.1">
+ <models xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+ <models xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2003/XMLType#/"/>
+ <models xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+ <ownedViews xmi:type="viewpoint:DRepresentationContainer" xmi:id="_Dv9VIA6CEeWqWv0BcAgUIA" initialized="true">
+ <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_DyH4UA6CEeWqWv0BcAgUIA" name="flaxml class diagram">
+ <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_DyIfYA6CEeWqWv0BcAgUIA" source="GMF_DIAGRAMS">
+ <data xmi:type="notation:Diagram" xmi:id="_DyIfYQ6CEeWqWv0BcAgUIA" type="Sirius" element="_DyH4UA6CEeWqWv0BcAgUIA" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_HIsykA6CEeWqWv0BcAgUIA" type="2003" element="_HG7Q8A6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HIuAsA6CEeWqWv0BcAgUIA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_HIwc8A6CEeWqWv0BcAgUIA" type="7004">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HIwc8Q6CEeWqWv0BcAgUIA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HIwc8g6CEeWqWv0BcAgUIA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_HIsykQ6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8" italic="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HIsykg6CEeWqWv0BcAgUIA" x="485" y="145" height="68"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HIxEAA6CEeWqWv0BcAgUIA" type="2003" element="_HHAJcA6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HIxrEA6CEeWqWv0BcAgUIA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_HIxrEQ6CEeWqWv0BcAgUIA" type="7004">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HIxrEg6CEeWqWv0BcAgUIA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HIxrEw6CEeWqWv0BcAgUIA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_HIxEAQ6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HIxEAg6CEeWqWv0BcAgUIA" x="85" y="370" height="68"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HIySIA6CEeWqWv0BcAgUIA" type="2003" element="_HHAwgA6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HIy5MA6CEeWqWv0BcAgUIA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_HIzgQA6CEeWqWv0BcAgUIA" type="7004">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HIzgQQ6CEeWqWv0BcAgUIA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HIzgQg6CEeWqWv0BcAgUIA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_HIySIQ6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HIySIg6CEeWqWv0BcAgUIA" x="155" y="255" height="68"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HIzgQw6CEeWqWv0BcAgUIA" type="2003" element="_HHB-oA6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HI0HUA6CEeWqWv0BcAgUIA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_HI0HUQ6CEeWqWv0BcAgUIA" type="7004">
+ <children xmi:type="notation:Node" xmi:id="_HI8DIA6CEeWqWv0BcAgUIA" type="3010" element="_HHiU8A6CEeWqWv0BcAgUIA">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HI8DIQ6CEeWqWv0BcAgUIA"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HI8DIg6CEeWqWv0BcAgUIA" type="3010" element="_HHkKJA6CEeWqWv0BcAgUIA">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HI8DIw6CEeWqWv0BcAgUIA"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HI8DJA6CEeWqWv0BcAgUIA" type="3010" element="_HHn0hA6CEeWqWv0BcAgUIA">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HI8DJQ6CEeWqWv0BcAgUIA"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HI8qMA6CEeWqWv0BcAgUIA" type="3010" element="_HHoblA6CEeWqWv0BcAgUIA">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HI8qMQ6CEeWqWv0BcAgUIA"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HI0HUg6CEeWqWv0BcAgUIA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HI0HUw6CEeWqWv0BcAgUIA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_HIzgRA6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HIzgRQ6CEeWqWv0BcAgUIA" x="225" y="490"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HI0HVA6CEeWqWv0BcAgUIA" type="2003" element="_HHClsA6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HI0uYA6CEeWqWv0BcAgUIA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_HI0uYQ6CEeWqWv0BcAgUIA" type="7004">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HI0uYg6CEeWqWv0BcAgUIA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HI0uYw6CEeWqWv0BcAgUIA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_HI0HVQ6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HI0HVg6CEeWqWv0BcAgUIA" x="215" y="370" height="68"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HI1VcA6CEeWqWv0BcAgUIA" visible="false" type="2003" element="_HHDz0A6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HI1Vcw6CEeWqWv0BcAgUIA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_HI1VdA6CEeWqWv0BcAgUIA" type="7004">
+ <children xmi:type="notation:Node" xmi:id="_HI8qMg6CEeWqWv0BcAgUIA" visible="false" type="3010" element="_HHppsA6CEeWqWv0BcAgUIA">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HI8qMw6CEeWqWv0BcAgUIA"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HI1VdQ6CEeWqWv0BcAgUIA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HI1Vdg6CEeWqWv0BcAgUIA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_HI1VcQ6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HI1Vcg6CEeWqWv0BcAgUIA" x="145" y="30" height="68"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HI18gA6CEeWqWv0BcAgUIA" type="2003" element="_HHEa4A6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HI18gw6CEeWqWv0BcAgUIA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_HI18hA6CEeWqWv0BcAgUIA" type="7004">
+ <children xmi:type="notation:Node" xmi:id="_HI8qNA6CEeWqWv0BcAgUIA" type="3010" element="_HHqQwA6CEeWqWv0BcAgUIA">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HI8qNQ6CEeWqWv0BcAgUIA"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HI18hQ6CEeWqWv0BcAgUIA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HI18hg6CEeWqWv0BcAgUIA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_HI18gQ6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HI18gg6CEeWqWv0BcAgUIA" x="685" y="490" height="68"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HI18hw6CEeWqWv0BcAgUIA" type="2003" element="_HHFB9Q6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HI2jkA6CEeWqWv0BcAgUIA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_HI2jkQ6CEeWqWv0BcAgUIA" type="7004">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HI2jkg6CEeWqWv0BcAgUIA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HI2jkw6CEeWqWv0BcAgUIA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_HI18iA6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HI18iQ6CEeWqWv0BcAgUIA" x="410" y="370" height="68"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HI2jlA6CEeWqWv0BcAgUIA" type="2003" element="_HHGQEA6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HI2jlw6CEeWqWv0BcAgUIA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_HI3KoA6CEeWqWv0BcAgUIA" type="7004">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HI3KoQ6CEeWqWv0BcAgUIA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HI3Kog6CEeWqWv0BcAgUIA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_HI2jlQ6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HI2jlg6CEeWqWv0BcAgUIA" x="650" y="370" height="68"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HI3Kow6CEeWqWv0BcAgUIA" type="2003" element="_HHHeMA6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HI3Kpg6CEeWqWv0BcAgUIA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_HI3Kpw6CEeWqWv0BcAgUIA" type="7004">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HI3KqA6CEeWqWv0BcAgUIA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HI3KqQ6CEeWqWv0BcAgUIA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_HI3KpA6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HI3KpQ6CEeWqWv0BcAgUIA" x="655" y="250" height="68"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HI3xsA6CEeWqWv0BcAgUIA" type="2003" element="_HHIFRQ6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HI3xsw6CEeWqWv0BcAgUIA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_HI3xtA6CEeWqWv0BcAgUIA" type="7004">
+ <children xmi:type="notation:Node" xmi:id="_HI8qNg6CEeWqWv0BcAgUIA" type="3010" element="_HHre4A6CEeWqWv0BcAgUIA">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HI8qNw6CEeWqWv0BcAgUIA"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HI9RQA6CEeWqWv0BcAgUIA" type="3010" element="_HHsF9A6CEeWqWv0BcAgUIA">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HI9RQQ6CEeWqWv0BcAgUIA"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HI3xtQ6CEeWqWv0BcAgUIA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HI3xtg6CEeWqWv0BcAgUIA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_HI3xsQ6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HI3xsg6CEeWqWv0BcAgUIA" x="605" y="30" height="68"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HI4YwA6CEeWqWv0BcAgUIA" type="2003" element="_HHJ6cA6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HI4Yww6CEeWqWv0BcAgUIA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_HI4YxA6CEeWqWv0BcAgUIA" type="7004">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HI4YxQ6CEeWqWv0BcAgUIA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HI4Yxg6CEeWqWv0BcAgUIA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_HI4YwQ6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HI4Ywg6CEeWqWv0BcAgUIA" x="800" y="370" height="68"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HI4_0A6CEeWqWv0BcAgUIA" type="2003" element="_HHKhhQ6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HI4_0w6CEeWqWv0BcAgUIA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_HI4_1A6CEeWqWv0BcAgUIA" type="7004">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HI4_1Q6CEeWqWv0BcAgUIA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HI4_1g6CEeWqWv0BcAgUIA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_HI4_0Q6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HI4_0g6CEeWqWv0BcAgUIA" x="800" y="250" height="68"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HI4_1w6CEeWqWv0BcAgUIA" type="2003" element="_HHLvoA6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HI5m4A6CEeWqWv0BcAgUIA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_HI5m4Q6CEeWqWv0BcAgUIA" type="7004">
+ <children xmi:type="notation:Node" xmi:id="_HI9RQg6CEeWqWv0BcAgUIA" type="3010" element="_HHtUEA6CEeWqWv0BcAgUIA">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HI9RQw6CEeWqWv0BcAgUIA"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HI5m4g6CEeWqWv0BcAgUIA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HI5m4w6CEeWqWv0BcAgUIA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_HI4_2A6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HI4_2Q6CEeWqWv0BcAgUIA" x="395" y="490" height="68"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HI5m5A6CEeWqWv0BcAgUIA" type="2003" element="_HHMWsA6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HI5m5w6CEeWqWv0BcAgUIA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_HI6N8A6CEeWqWv0BcAgUIA" type="7004">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HI6N8Q6CEeWqWv0BcAgUIA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HI6N8g6CEeWqWv0BcAgUIA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_HI5m5Q6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HI5m5g6CEeWqWv0BcAgUIA" x="405" y="250" height="68"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HI6N8w6CEeWqWv0BcAgUIA" type="2003" element="_HHNk0A6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HI7cEA6CEeWqWv0BcAgUIA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_HI7cEQ6CEeWqWv0BcAgUIA" type="7004">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HI7cEg6CEeWqWv0BcAgUIA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HI7cEw6CEeWqWv0BcAgUIA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_HI6N9A6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HI6N9Q6CEeWqWv0BcAgUIA" x="460" y="30" height="68"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_DyIfYg6CEeWqWv0BcAgUIA"/>
+ <edges xmi:type="notation:Edge" xmi:id="_HJDX4A6CEeWqWv0BcAgUIA" type="4001" element="_HH1P4A6CEeWqWv0BcAgUIA" source="_HIsykA6CEeWqWv0BcAgUIA" target="_HI3Kow6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HJEmAA6CEeWqWv0BcAgUIA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJEmAQ6CEeWqWv0BcAgUIA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJFNEA6CEeWqWv0BcAgUIA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJFNEQ6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJFNEg6CEeWqWv0BcAgUIA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJFNEw6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJDX4Q6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HJDX4g6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJDX4w6CEeWqWv0BcAgUIA" points="[59, 46, -111, -89]$[171, 46, 1, -89]$[171, 86, 1, -49]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJLTsA6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJL6wA6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_HJL6wQ6CEeWqWv0BcAgUIA" type="4001" element="_HH4TMA6CEeWqWv0BcAgUIA" source="_HIsykA6CEeWqWv0BcAgUIA" target="_HI4_0A6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HJMh0A6CEeWqWv0BcAgUIA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJMh0Q6CEeWqWv0BcAgUIA" x="-92" y="-13"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJMh0g6CEeWqWv0BcAgUIA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJMh0w6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJMh1A6CEeWqWv0BcAgUIA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJMh1Q6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJL6wg6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HJL6ww6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJL6xA6CEeWqWv0BcAgUIA" points="[59, 17, -256, -88]$[316, 17, 1, -88]$[316, 72, 1, -33]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJMh1g6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJMh1w6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_HJMh2A6CEeWqWv0BcAgUIA" type="4001" element="_HH46TA6CEeWqWv0BcAgUIA" source="_HIxEAA6CEeWqWv0BcAgUIA" target="_HIsykA6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HJNI4A6CEeWqWv0BcAgUIA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJNI4Q6CEeWqWv0BcAgUIA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJNI4g6CEeWqWv0BcAgUIA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJNI4w6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJNI5A6CEeWqWv0BcAgUIA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJNI5Q6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJMh2Q6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HJMh2g6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJMh2w6CEeWqWv0BcAgUIA" points="[-34, -33, -434, 192]$[-34, -213, -434, 12]$[341, -213, -59, 12]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJNI5g6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_HJNI6A6CEeWqWv0BcAgUIA" type="4001" element="_HH5hXA6CEeWqWv0BcAgUIA" source="_HIySIA6CEeWqWv0BcAgUIA" target="_HI0HVA6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HJNv8A6CEeWqWv0BcAgUIA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJNv8Q6CEeWqWv0BcAgUIA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJNv8g6CEeWqWv0BcAgUIA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJNv8w6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJNv9A6CEeWqWv0BcAgUIA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJNv9Q6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJNI6Q6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HJNI6g6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJNI6w6CEeWqWv0BcAgUIA" points="[475, 231, 475, 231]$[535, 291, 535, 291]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJNv9g6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJNv9w6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_HJNv-A6CEeWqWv0BcAgUIA" type="4001" element="_HH6IbA6CEeWqWv0BcAgUIA" source="_HIySIA6CEeWqWv0BcAgUIA" target="_HIxEAA6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HJOXAA6CEeWqWv0BcAgUIA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJOXAQ6CEeWqWv0BcAgUIA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJOXAg6CEeWqWv0BcAgUIA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJOXAw6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJOXBA6CEeWqWv0BcAgUIA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJOXBQ6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJNv-Q6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HJNv-g6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJNv-w6CEeWqWv0BcAgUIA" points="[475, 231, 475, 231]$[445, 201, 445, 201]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJOXBg6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJOXBw6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_HJOXCA6CEeWqWv0BcAgUIA" type="4001" element="_HH6vfA6CEeWqWv0BcAgUIA" source="_HIzgQw6CEeWqWv0BcAgUIA" target="_HI18hw6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HJO-EA6CEeWqWv0BcAgUIA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJO-EQ6CEeWqWv0BcAgUIA" x="-51" y="-9"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJO-Eg6CEeWqWv0BcAgUIA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJO-Ew6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJO-FA6CEeWqWv0BcAgUIA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJO-FQ6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJOXCQ6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HJOXCg6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJOXCw6CEeWqWv0BcAgUIA" points="[-5, 0, -52, 103]$[-5, -100, -52, 3]$[45, -100, -2, 3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJO-Fg6CEeWqWv0BcAgUIA" id="(0.9102564102564102,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJO-Fw6CEeWqWv0BcAgUIA" id="(0.025,0.59)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_HJO-GA6CEeWqWv0BcAgUIA" type="4001" element="_HH7WjA6CEeWqWv0BcAgUIA" source="_HI0HVA6CEeWqWv0BcAgUIA" target="_HIzgQw6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HJPlIA6CEeWqWv0BcAgUIA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJPlIQ6CEeWqWv0BcAgUIA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJPlIg6CEeWqWv0BcAgUIA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJPlIw6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJPlJA6CEeWqWv0BcAgUIA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJPlJQ6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJO-GQ6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HJO-Gg6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJO-Gw6CEeWqWv0BcAgUIA" points="[535, 291, 535, 291]$[505, 261, 505, 261]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJPlJg6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJPlJw6CEeWqWv0BcAgUIA" id="(0.33974358974358976,0.16)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_HJPlKA6CEeWqWv0BcAgUIA" visible="false" type="4001" element="_HH8koA6CEeWqWv0BcAgUIA" source="_HI1VcA6CEeWqWv0BcAgUIA" target="_HI6N8w6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HJQMMA6CEeWqWv0BcAgUIA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJQMMQ6CEeWqWv0BcAgUIA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJQMMg6CEeWqWv0BcAgUIA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJQMMw6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJQMNA6CEeWqWv0BcAgUIA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJQMNQ6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJPlKQ6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HJPlKg6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJPlKw6CEeWqWv0BcAgUIA" points="[565, 321, 565, 321]$[865, 621, 865, 621]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJQMNg6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJQMNw6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_HJQMOA6CEeWqWv0BcAgUIA" type="4001" element="_HH9LsA6CEeWqWv0BcAgUIA" source="_HI18hw6CEeWqWv0BcAgUIA" target="_HI4_1w6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HJQzQA6CEeWqWv0BcAgUIA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJQzQQ6CEeWqWv0BcAgUIA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJQzQg6CEeWqWv0BcAgUIA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJQzQw6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJQzRA6CEeWqWv0BcAgUIA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJQzRQ6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJQMOQ6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HJQMOg6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJQMOw6CEeWqWv0BcAgUIA" points="[625, 381, 625, 381]$[805, 561, 805, 561]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJQzRg6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJQzRw6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_HJQzSA6CEeWqWv0BcAgUIA" type="4001" element="_HH9yzA6CEeWqWv0BcAgUIA" source="_HI2jlA6CEeWqWv0BcAgUIA" target="_HI18gA6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HJRaUA6CEeWqWv0BcAgUIA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJRaUQ6CEeWqWv0BcAgUIA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJRaUg6CEeWqWv0BcAgUIA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJRaUw6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJRaVA6CEeWqWv0BcAgUIA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJRaVQ6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJQzSQ6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HJQzSg6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJQzSw6CEeWqWv0BcAgUIA" points="[655, 411, 655, 411]$[595, 351, 595, 351]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJRaVg6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJRaVw6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_HJRaWA6CEeWqWv0BcAgUIA" type="4001" element="_HH_A4A6CEeWqWv0BcAgUIA" source="_HI3Kow6CEeWqWv0BcAgUIA" target="_HI2jlA6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HJSBYA6CEeWqWv0BcAgUIA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJSBYQ6CEeWqWv0BcAgUIA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJSBYg6CEeWqWv0BcAgUIA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJSBYw6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJSBZA6CEeWqWv0BcAgUIA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJSBZQ6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJRaWQ6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HJRaWg6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJRaWw6CEeWqWv0BcAgUIA" points="[685, 441, 685, 441]$[655, 411, 655, 411]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJSocA6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJSocQ6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_HJSocg6CEeWqWv0BcAgUIA" type="4001" element="_HIAPAA6CEeWqWv0BcAgUIA" source="_HI4YwA6CEeWqWv0BcAgUIA" target="_HI18gA6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HJTPgA6CEeWqWv0BcAgUIA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJTPgQ6CEeWqWv0BcAgUIA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJTPgg6CEeWqWv0BcAgUIA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJTPgw6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJTPhA6CEeWqWv0BcAgUIA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJTPhQ6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJSocw6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HJSodA6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJSodQ6CEeWqWv0BcAgUIA" points="[745, 501, 745, 501]$[595, 351, 595, 351]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJT2kA6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJT2kQ6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_HJT2kg6CEeWqWv0BcAgUIA" type="4001" element="_HIA2EA6CEeWqWv0BcAgUIA" source="_HI4_0A6CEeWqWv0BcAgUIA" target="_HI4YwA6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HJT2lg6CEeWqWv0BcAgUIA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJT2lw6CEeWqWv0BcAgUIA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJUdoA6CEeWqWv0BcAgUIA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJUdoQ6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJUdog6CEeWqWv0BcAgUIA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJUdow6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJT2kw6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HJT2lA6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJT2lQ6CEeWqWv0BcAgUIA" points="[775, 531, 775, 531]$[745, 501, 745, 501]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJUdpA6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJUdpQ6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_HJVEsA6CEeWqWv0BcAgUIA" type="4001" element="_HIBdKg6CEeWqWv0BcAgUIA" source="_HI5m5A6CEeWqWv0BcAgUIA" target="_HI18hw6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HJVEtA6CEeWqWv0BcAgUIA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJVEtQ6CEeWqWv0BcAgUIA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJVEtg6CEeWqWv0BcAgUIA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJVEtw6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJVrwA6CEeWqWv0BcAgUIA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJVrwQ6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJVEsQ6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HJVEsg6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJVEsw6CEeWqWv0BcAgUIA" points="[835, 591, 835, 591]$[625, 381, 625, 381]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJVrwg6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJVrww6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_HJVrxA6CEeWqWv0BcAgUIA" type="4001" element="_HICEPA6CEeWqWv0BcAgUIA" source="_HI6N8w6CEeWqWv0BcAgUIA" target="_HIsykA6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HJWS0A6CEeWqWv0BcAgUIA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJWS0Q6CEeWqWv0BcAgUIA" x="-5" y="22"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJWS0g6CEeWqWv0BcAgUIA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJWS0w6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJWS1A6CEeWqWv0BcAgUIA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJWS1Q6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJVrxQ6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HJVrxg6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJVrxw6CEeWqWv0BcAgUIA" points="[1, 33, 32, -71]$[1, 82, 32, -22]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJWS1g6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJWS1w6CEeWqWv0BcAgUIA" id="(0.03333333333333333,0.3382352941176471)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_HJW54A6CEeWqWv0BcAgUIA" type="4001" element="_HIDSUA6CEeWqWv0BcAgUIA" source="_HIsykA6CEeWqWv0BcAgUIA" target="_HI3xsA6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HJYIAA6CEeWqWv0BcAgUIA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJYIAQ6CEeWqWv0BcAgUIA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJYvEA6CEeWqWv0BcAgUIA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJYvEQ6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJYvEg6CEeWqWv0BcAgUIA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJYvEw6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJW54Q6CEeWqWv0BcAgUIA" routing="Tree"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HJW54g6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJW54w6CEeWqWv0BcAgUIA" points="[0, -49, -5, 91]$[0, -59, -5, 81]$[6, -59, 1, 81]$[6, -91, 1, 49]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJZWIA6CEeWqWv0BcAgUIA" id="(0.5583333333333333,0.01)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJZWIQ6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_HJZWIg6CEeWqWv0BcAgUIA" type="4001" element="_HIEgcA6CEeWqWv0BcAgUIA" source="_HIySIA6CEeWqWv0BcAgUIA" target="_HIsykA6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HJZ9MA6CEeWqWv0BcAgUIA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJZ9MQ6CEeWqWv0BcAgUIA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJZ9Mg6CEeWqWv0BcAgUIA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJZ9Mw6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJakQA6CEeWqWv0BcAgUIA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJakQQ6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJZWIw6CEeWqWv0BcAgUIA" routing="Tree"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HJZWJA6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJZWJQ6CEeWqWv0BcAgUIA" points="[475, 231, 475, 231]$[415, 171, 415, 171]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJakQg6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJakQw6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_HJakRA6CEeWqWv0BcAgUIA" type="4001" element="_HIFHhg6CEeWqWv0BcAgUIA" source="_HI2jlA6CEeWqWv0BcAgUIA" target="_HI3xsA6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HJbLUA6CEeWqWv0BcAgUIA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJbLUQ6CEeWqWv0BcAgUIA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJbLUg6CEeWqWv0BcAgUIA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJbLUw6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJbLVA6CEeWqWv0BcAgUIA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJbLVQ6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJakRQ6CEeWqWv0BcAgUIA" routing="Tree"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HJakRg6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJakRw6CEeWqWv0BcAgUIA" points="[0, -49, 160, 326]$[0, -309, 160, 66]$[-159, -309, 1, 66]$[-159, -326, 1, 49]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJbyYA6CEeWqWv0BcAgUIA" id="(0.8666666666666667,0.01)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJbyYQ6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_HJbyYg6CEeWqWv0BcAgUIA" type="4001" element="_HIFulg6CEeWqWv0BcAgUIA" source="_HI4YwA6CEeWqWv0BcAgUIA" target="_HI3xsA6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HJcZcA6CEeWqWv0BcAgUIA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJcZcQ6CEeWqWv0BcAgUIA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJcZcg6CEeWqWv0BcAgUIA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJcZcw6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJcZdA6CEeWqWv0BcAgUIA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJcZdQ6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJbyYw6CEeWqWv0BcAgUIA" routing="Tree"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HJbyZA6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJbyZQ6CEeWqWv0BcAgUIA" points="[0, -58, 355, 415]$[0, -343, 355, 130]$[-366, -343, -11, 130]$[-366, -375, -11, 98]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJcZdg6CEeWqWv0BcAgUIA" id="(0.11666666666666667,0.02)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJcZdw6CEeWqWv0BcAgUIA" id="(0.6083333333333333,0.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_HJdAgA6CEeWqWv0BcAgUIA" type="4001" element="_HIG8sA6CEeWqWv0BcAgUIA" source="_HI5m5A6CEeWqWv0BcAgUIA" target="_HIsykA6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_HJdAhA6CEeWqWv0BcAgUIA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJdAhQ6CEeWqWv0BcAgUIA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJdAhg6CEeWqWv0BcAgUIA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJdAhw6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_HJdAiA6CEeWqWv0BcAgUIA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJdAiQ6CEeWqWv0BcAgUIA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJdAgQ6CEeWqWv0BcAgUIA" routing="Tree"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HJdAgg6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJdAgw6CEeWqWv0BcAgUIA" points="[835, 591, 835, 591]$[415, 171, 415, 171]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJdnkA6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJdnkQ6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+ </edges>
+ </data>
+ </ownedAnnotationEntries>
+ <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_HHlYQA6CEeWqWv0BcAgUIA" source="DANNOTATION_CUSTOMIZATION_KEY">
+ <data xmi:type="diagram:ComputedStyleDescriptionRegistry" xmi:id="_HHl_UA6CEeWqWv0BcAgUIA">
+ <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_HHnNcg6CEeWqWv0BcAgUIA" labelFormat="bold" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+ <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_HHpCog6CEeWqWv0BcAgUIA" labelFormat="bold" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+ <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_HHqQww6CEeWqWv0BcAgUIA" labelFormat="bold" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+ <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_HHre4w6CEeWqWv0BcAgUIA" labelFormat="bold" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+ <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_HHsF9w6CEeWqWv0BcAgUIA" labelFormat="bold" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+ <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_HHtUEw6CEeWqWv0BcAgUIA" labelFormat="bold" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+ <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HH128w6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HH129A6CEeWqWv0BcAgUIA" labelFormat="bold" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HH129Q6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HH46Qg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HH46Qw6CEeWqWv0BcAgUIA" labelFormat="bold" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HH46RA6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HH5hUg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HH5hUw6CEeWqWv0BcAgUIA" labelFormat="bold" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HH5hVA6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HH6IYg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HH6IYw6CEeWqWv0BcAgUIA" labelFormat="bold" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HH6IZA6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HH6vcg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HH6vcw6CEeWqWv0BcAgUIA" labelFormat="bold" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HH6vdA6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HH7Wgg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HH7Wgw6CEeWqWv0BcAgUIA" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HH7WhA6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HH79kg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HH79kw6CEeWqWv0BcAgUIA" labelFormat="bold" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HH79lA6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HH8kow6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HH8kpA6CEeWqWv0BcAgUIA" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HH8kpQ6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HH9ywg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HH9yww6CEeWqWv0BcAgUIA" labelFormat="bold" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HH9yxA6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HH-Z0g6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HH-Z0w6CEeWqWv0BcAgUIA" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HH-Z1A6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HH_n8g6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HH_n8w6CEeWqWv0BcAgUIA" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HH_n9A6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HIAPAw6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HIAPBA6CEeWqWv0BcAgUIA" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HIAPBQ6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HIBdIA6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HIBdIQ6CEeWqWv0BcAgUIA" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HIBdIg6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HICEMg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HICEMw6CEeWqWv0BcAgUIA" labelFormat="bold" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HICENA6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HICrQg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HICrQw6CEeWqWv0BcAgUIA" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </centerLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HICrRA6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <cache xmi:type="diagram:DiagramElementMapping2ModelElement" xmi:id="_HHmmYA6CEeWqWv0BcAgUIA">
+ <key xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HHnNcA6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EAttribute" href="flaxml.ecore#//Connection/sourceId"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HHnNcQ6CEeWqWv0BcAgUIA" key="_HHkKJA6CEeWqWv0BcAgUIA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HHnNcw6CEeWqWv0BcAgUIA" value="_HHnNcg6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EClass" href="flaxml.ecore#//Connection"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HHpCoA6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EAttribute" href="flaxml.ecore#//Connection/targetId"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HHpCoQ6CEeWqWv0BcAgUIA" key="_HHoblA6CEeWqWv0BcAgUIA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HHpCow6CEeWqWv0BcAgUIA" value="_HHpCog6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EClass" href="flaxml.ecore#//Connection"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HHqQwQ6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EAttribute" href="flaxml.ecore#//Failure/type"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HHqQwg6CEeWqWv0BcAgUIA" key="_HHqQwA6CEeWqWv0BcAgUIA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HHqQxA6CEeWqWv0BcAgUIA" value="_HHqQww6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EClass" href="flaxml.ecore#//Failure"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HHre4Q6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EAttribute" href="flaxml.ecore#//NamedElement/id"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HHre4g6CEeWqWv0BcAgUIA" key="_HHre4A6CEeWqWv0BcAgUIA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HHre5A6CEeWqWv0BcAgUIA" value="_HHre4w6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EClass" href="flaxml.ecore#//NamedElement"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HHsF9Q6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EAttribute" href="flaxml.ecore#//NamedElement/name"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HHsF9g6CEeWqWv0BcAgUIA" key="_HHsF9A6CEeWqWv0BcAgUIA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HHsF-A6CEeWqWv0BcAgUIA" value="_HHsF9w6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EClass" href="flaxml.ecore#//NamedElement"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HHtUEQ6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EAttribute" href="flaxml.ecore#//RuleString/pattern"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HHtUEg6CEeWqWv0BcAgUIA" key="_HHtUEA6CEeWqWv0BcAgUIA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HHtUFA6CEeWqWv0BcAgUIA" value="_HHtUEw6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EClass" href="flaxml.ecore#//RuleString"/>
+ </value>
+ </value>
+ </value>
+ </cache>
+ <cache xmi:type="diagram:DiagramElementMapping2ModelElement" xmi:id="_HH128A6CEeWqWv0BcAgUIA">
+ <key xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HH128Q6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EReference" href="flaxml.ecore#//Component/inputPorts"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HH128g6CEeWqWv0BcAgUIA" key="_HH1P4A6CEeWqWv0BcAgUIA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HH129g6CEeWqWv0BcAgUIA" value="_HH128w6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HH46QA6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EReference" href="flaxml.ecore#//Component/outputPorts"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HH46QQ6CEeWqWv0BcAgUIA" key="_HH4TMA6CEeWqWv0BcAgUIA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HH46RQ6CEeWqWv0BcAgUIA" value="_HH46Qg6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HH5hUA6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EReference" href="flaxml.ecore#//Components/component"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HH5hUQ6CEeWqWv0BcAgUIA" key="_HH46TA6CEeWqWv0BcAgUIA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HH5hVQ6CEeWqWv0BcAgUIA" value="_HH5hUg6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HH6IYA6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EReference" href="flaxml.ecore#//CompositeComponent/connections"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HH6IYQ6CEeWqWv0BcAgUIA" key="_HH5hXA6CEeWqWv0BcAgUIA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HH6IZQ6CEeWqWv0BcAgUIA" value="_HH6IYg6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HH6vcA6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EReference" href="flaxml.ecore#//CompositeComponent/components"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HH6vcQ6CEeWqWv0BcAgUIA" key="_HH6IbA6CEeWqWv0BcAgUIA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HH6vdQ6CEeWqWv0BcAgUIA" value="_HH6vcg6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HH7WgA6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EReference" href="flaxml.ecore#//Connection/rules"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HH7WgQ6CEeWqWv0BcAgUIA" key="_HH6vfA6CEeWqWv0BcAgUIA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HH7WhQ6CEeWqWv0BcAgUIA" value="_HH7Wgg6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HH79kA6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EReference" href="flaxml.ecore#//Connections/connection"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HH79kQ6CEeWqWv0BcAgUIA" key="_HH7WjA6CEeWqWv0BcAgUIA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HH79lQ6CEeWqWv0BcAgUIA" value="_HH79kg6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HH8koQ6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EReference" href="flaxml.ecore#//DocumentRoot/system"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HH8kog6CEeWqWv0BcAgUIA" key="_HH8koA6CEeWqWv0BcAgUIA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HH8kpg6CEeWqWv0BcAgUIA" value="_HH8kow6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HH9ywA6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EReference" href="flaxml.ecore#//FptcRules/rule"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HH9ywQ6CEeWqWv0BcAgUIA" key="_HH9LsA6CEeWqWv0BcAgUIA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HH9yxQ6CEeWqWv0BcAgUIA" value="_HH9ywg6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HH-Z0A6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EReference" href="flaxml.ecore#//InputPort/inputFailure"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HH-Z0Q6CEeWqWv0BcAgUIA" key="_HH9yzA6CEeWqWv0BcAgUIA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HH-Z1Q6CEeWqWv0BcAgUIA" value="_HH-Z0g6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HH_n8A6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EReference" href="flaxml.ecore#//InputPorts/inputPort"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HH_n8Q6CEeWqWv0BcAgUIA" key="_HH_A4A6CEeWqWv0BcAgUIA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HH_n9Q6CEeWqWv0BcAgUIA" value="_HH_n8g6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HIAPAQ6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EReference" href="flaxml.ecore#//OutputPort/outputFailure"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HIAPAg6CEeWqWv0BcAgUIA" key="_HIAPAA6CEeWqWv0BcAgUIA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HIAPBg6CEeWqWv0BcAgUIA" value="_HIAPAw6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HIA2EQ6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EReference" href="flaxml.ecore#//OutputPorts/outputPort"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HIA2Eg6CEeWqWv0BcAgUIA" key="_HIA2EA6CEeWqWv0BcAgUIA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HIBdIw6CEeWqWv0BcAgUIA" value="_HIBdIA6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HICEMA6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EReference" href="flaxml.ecore#//SimpleComponent/rules"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HICEMQ6CEeWqWv0BcAgUIA" key="_HIBdKg6CEeWqWv0BcAgUIA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HICENQ6CEeWqWv0BcAgUIA" value="_HICEMg6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HICrQA6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EReference" href="flaxml.ecore#//System/component"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HICrQQ6CEeWqWv0BcAgUIA" key="_HICEPA6CEeWqWv0BcAgUIA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HICrRQ6CEeWqWv0BcAgUIA" value="_HICrQg6CEeWqWv0BcAgUIA">
+ <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ </cache>
+ </data>
+ </ownedAnnotationEntries>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HG7Q8A6CEeWqWv0BcAgUIA" name="Component" tooltipText="" outgoingEdges="_HH1P4A6CEeWqWv0BcAgUIA _HH4TMA6CEeWqWv0BcAgUIA _HIDSUA6CEeWqWv0BcAgUIA" incomingEdges="_HH46TA6CEeWqWv0BcAgUIA _HICEPA6CEeWqWv0BcAgUIA _HIEgcA6CEeWqWv0BcAgUIA _HIG8sA6CEeWqWv0BcAgUIA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flaxml.ecore#//Component"/>
+ <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//Component"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HG-7UA6CEeWqWv0BcAgUIA" labelFormat="italic" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HG-7UQ6CEeWqWv0BcAgUIA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HG-7Ug6CEeWqWv0BcAgUIA" red="125" green="125" blue="125"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HG-7Uw6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HG-7VA6CEeWqWv0BcAgUIA" red="228" green="228" blue="228"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHAJcA6CEeWqWv0BcAgUIA" name="Components" tooltipText="" outgoingEdges="_HH46TA6CEeWqWv0BcAgUIA" incomingEdges="_HH6IbA6CEeWqWv0BcAgUIA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flaxml.ecore#//Components"/>
+ <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//Components"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHAJcQ6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHAJcg6CEeWqWv0BcAgUIA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHAJcw6CEeWqWv0BcAgUIA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHAJdA6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHAJdQ6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHAwgA6CEeWqWv0BcAgUIA" name="CompositeComponent" tooltipText="" outgoingEdges="_HH5hXA6CEeWqWv0BcAgUIA _HH6IbA6CEeWqWv0BcAgUIA _HIEgcA6CEeWqWv0BcAgUIA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flaxml.ecore#//CompositeComponent"/>
+ <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//CompositeComponent"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHBXkA6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHBXkQ6CEeWqWv0BcAgUIA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHBXkg6CEeWqWv0BcAgUIA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHBXkw6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHBXlA6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHB-oA6CEeWqWv0BcAgUIA" name="Connection" tooltipText="" outgoingEdges="_HH6vfA6CEeWqWv0BcAgUIA" incomingEdges="_HH7WjA6CEeWqWv0BcAgUIA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flaxml.ecore#//Connection"/>
+ <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//Connection"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHB-oQ6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHB-og6CEeWqWv0BcAgUIA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHB-ow6CEeWqWv0BcAgUIA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHB-pA6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHB-pQ6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HHiU8A6CEeWqWv0BcAgUIA" name="sourceComponent : String" tooltipText="">
+ <target xmi:type="ecore:EAttribute" href="flaxml.ecore#//Connection/sourceComponent"/>
+ <semanticElements xmi:type="ecore:EAttribute" href="flaxml.ecore#//Connection/sourceComponent"/>
+ <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HHkKIA6CEeWqWv0BcAgUIA" labelAlignment="LEFT">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHkKIQ6CEeWqWv0BcAgUIA"/>
+ <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHkKIg6CEeWqWv0BcAgUIA"/>
+ <color xmi:type="viewpoint:RGBValues" xmi:id="_HHkKIw6CEeWqWv0BcAgUIA"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+ </ownedElements>
+ <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HHkKJA6CEeWqWv0BcAgUIA" name="sourceId : String" tooltipText="">
+ <target xmi:type="ecore:EAttribute" href="flaxml.ecore#//Connection/sourceId"/>
+ <semanticElements xmi:type="ecore:EAttribute" href="flaxml.ecore#//Connection/sourceId"/>
+ <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HHn0gA6CEeWqWv0BcAgUIA" labelFormat="bold" labelAlignment="LEFT" description="_HHnNcg6CEeWqWv0BcAgUIA">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHn0gQ6CEeWqWv0BcAgUIA"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHn0gg6CEeWqWv0BcAgUIA"/>
+ <color xmi:type="viewpoint:RGBValues" xmi:id="_HHn0gw6CEeWqWv0BcAgUIA"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+ </ownedElements>
+ <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HHn0hA6CEeWqWv0BcAgUIA" name="targetComponent : String" tooltipText="">
+ <target xmi:type="ecore:EAttribute" href="flaxml.ecore#//Connection/targetComponent"/>
+ <semanticElements xmi:type="ecore:EAttribute" href="flaxml.ecore#//Connection/targetComponent"/>
+ <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HHobkA6CEeWqWv0BcAgUIA" labelAlignment="LEFT">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHobkQ6CEeWqWv0BcAgUIA"/>
+ <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHobkg6CEeWqWv0BcAgUIA"/>
+ <color xmi:type="viewpoint:RGBValues" xmi:id="_HHobkw6CEeWqWv0BcAgUIA"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+ </ownedElements>
+ <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HHoblA6CEeWqWv0BcAgUIA" name="targetId : String" tooltipText="">
+ <target xmi:type="ecore:EAttribute" href="flaxml.ecore#//Connection/targetId"/>
+ <semanticElements xmi:type="ecore:EAttribute" href="flaxml.ecore#//Connection/targetId"/>
+ <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HHpCpA6CEeWqWv0BcAgUIA" labelFormat="bold" labelAlignment="LEFT" description="_HHpCog6CEeWqWv0BcAgUIA">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHpCpQ6CEeWqWv0BcAgUIA"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHpCpg6CEeWqWv0BcAgUIA"/>
+ <color xmi:type="viewpoint:RGBValues" xmi:id="_HHpCpw6CEeWqWv0BcAgUIA"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+ </ownedElements>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHClsA6CEeWqWv0BcAgUIA" name="Connections" tooltipText="" outgoingEdges="_HH7WjA6CEeWqWv0BcAgUIA" incomingEdges="_HH5hXA6CEeWqWv0BcAgUIA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flaxml.ecore#//Connections"/>
+ <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//Connections"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHDMwA6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHDMwQ6CEeWqWv0BcAgUIA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHDMwg6CEeWqWv0BcAgUIA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHDMww6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHDMxA6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHDz0A6CEeWqWv0BcAgUIA" name="DocumentRoot" visible="false" tooltipText="" outgoingEdges="_HH8koA6CEeWqWv0BcAgUIA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flaxml.ecore#//DocumentRoot"/>
+ <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//DocumentRoot"/>
+ <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_86ntoA6EEeWqWv0BcAgUIA"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHDz0Q6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHDz0g6CEeWqWv0BcAgUIA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHDz0w6CEeWqWv0BcAgUIA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHDz1A6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHDz1Q6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HHppsA6CEeWqWv0BcAgUIA" name="mixed : EFeatureMapEntry" visible="false" tooltipText="">
+ <target xmi:type="ecore:EAttribute" href="flaxml.ecore#//DocumentRoot/mixed"/>
+ <semanticElements xmi:type="ecore:EAttribute" href="flaxml.ecore#//DocumentRoot/mixed"/>
+ <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HHppsQ6CEeWqWv0BcAgUIA" labelAlignment="LEFT">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHppsg6CEeWqWv0BcAgUIA"/>
+ <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHppsw6CEeWqWv0BcAgUIA"/>
+ <color xmi:type="viewpoint:RGBValues" xmi:id="_HHpptA6CEeWqWv0BcAgUIA"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+ </ownedElements>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHEa4A6CEeWqWv0BcAgUIA" name="Failure" tooltipText="" incomingEdges="_HH9yzA6CEeWqWv0BcAgUIA _HIAPAA6CEeWqWv0BcAgUIA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flaxml.ecore#//Failure"/>
+ <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//Failure"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHFB8A6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHFB8Q6CEeWqWv0BcAgUIA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHFB8g6CEeWqWv0BcAgUIA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHFB8w6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHFB9A6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HHqQwA6CEeWqWv0BcAgUIA" name="type : FailureType = noFailure" tooltipText="">
+ <target xmi:type="ecore:EAttribute" href="flaxml.ecore#//Failure/type"/>
+ <semanticElements xmi:type="ecore:EAttribute" href="flaxml.ecore#//Failure/type"/>
+ <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HHq30A6CEeWqWv0BcAgUIA" labelFormat="bold" labelAlignment="LEFT" description="_HHqQww6CEeWqWv0BcAgUIA">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHq30Q6CEeWqWv0BcAgUIA"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHq30g6CEeWqWv0BcAgUIA"/>
+ <color xmi:type="viewpoint:RGBValues" xmi:id="_HHq30w6CEeWqWv0BcAgUIA"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+ </ownedElements>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHFB9Q6CEeWqWv0BcAgUIA" name="FptcRules" tooltipText="" outgoingEdges="_HH9LsA6CEeWqWv0BcAgUIA" incomingEdges="_HH6vfA6CEeWqWv0BcAgUIA _HIBdKg6CEeWqWv0BcAgUIA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flaxml.ecore#//FptcRules"/>
+ <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//FptcRules"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHFpAA6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHFpAQ6CEeWqWv0BcAgUIA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHFpAg6CEeWqWv0BcAgUIA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHFpAw6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHFpBA6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHGQEA6CEeWqWv0BcAgUIA" name="InputPort" tooltipText="" outgoingEdges="_HH9yzA6CEeWqWv0BcAgUIA _HIFHhg6CEeWqWv0BcAgUIA" incomingEdges="_HH_A4A6CEeWqWv0BcAgUIA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flaxml.ecore#//InputPort"/>
+ <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//InputPort"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHG3IA6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHG3IQ6CEeWqWv0BcAgUIA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHG3Ig6CEeWqWv0BcAgUIA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHG3Iw6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHG3JA6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHHeMA6CEeWqWv0BcAgUIA" name="InputPorts" tooltipText="" outgoingEdges="_HH_A4A6CEeWqWv0BcAgUIA" incomingEdges="_HH1P4A6CEeWqWv0BcAgUIA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flaxml.ecore#//InputPorts"/>
+ <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//InputPorts"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHIFQA6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHIFQQ6CEeWqWv0BcAgUIA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHIFQg6CEeWqWv0BcAgUIA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHIFQw6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHIFRA6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHIFRQ6CEeWqWv0BcAgUIA" name="NamedElement" tooltipText="" incomingEdges="_HIDSUA6CEeWqWv0BcAgUIA _HIFHhg6CEeWqWv0BcAgUIA _HIFulg6CEeWqWv0BcAgUIA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flaxml.ecore#//NamedElement"/>
+ <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//NamedElement"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHIsUA6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHIsUQ6CEeWqWv0BcAgUIA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHIsUg6CEeWqWv0BcAgUIA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHIsUw6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHIsVA6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HHre4A6CEeWqWv0BcAgUIA" name="id : String" tooltipText="">
+ <target xmi:type="ecore:EAttribute" href="flaxml.ecore#//NamedElement/id"/>
+ <semanticElements xmi:type="ecore:EAttribute" href="flaxml.ecore#//NamedElement/id"/>
+ <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HHsF8A6CEeWqWv0BcAgUIA" labelFormat="bold" labelAlignment="LEFT" description="_HHre4w6CEeWqWv0BcAgUIA">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHsF8Q6CEeWqWv0BcAgUIA"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHsF8g6CEeWqWv0BcAgUIA"/>
+ <color xmi:type="viewpoint:RGBValues" xmi:id="_HHsF8w6CEeWqWv0BcAgUIA"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+ </ownedElements>
+ <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HHsF9A6CEeWqWv0BcAgUIA" name="name : String" tooltipText="">
+ <target xmi:type="ecore:EAttribute" href="flaxml.ecore#//NamedElement/name"/>
+ <semanticElements xmi:type="ecore:EAttribute" href="flaxml.ecore#//NamedElement/name"/>
+ <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HHstAA6CEeWqWv0BcAgUIA" labelFormat="bold" labelAlignment="LEFT" description="_HHsF9w6CEeWqWv0BcAgUIA">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHstAQ6CEeWqWv0BcAgUIA"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHstAg6CEeWqWv0BcAgUIA"/>
+ <color xmi:type="viewpoint:RGBValues" xmi:id="_HHstAw6CEeWqWv0BcAgUIA"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+ </ownedElements>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHJ6cA6CEeWqWv0BcAgUIA" name="OutputPort" tooltipText="" outgoingEdges="_HIAPAA6CEeWqWv0BcAgUIA _HIFulg6CEeWqWv0BcAgUIA" incomingEdges="_HIA2EA6CEeWqWv0BcAgUIA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flaxml.ecore#//OutputPort"/>
+ <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//OutputPort"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHKhgA6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHKhgQ6CEeWqWv0BcAgUIA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHKhgg6CEeWqWv0BcAgUIA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHKhgw6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHKhhA6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHKhhQ6CEeWqWv0BcAgUIA" name="OutputPorts" tooltipText="" outgoingEdges="_HIA2EA6CEeWqWv0BcAgUIA" incomingEdges="_HH4TMA6CEeWqWv0BcAgUIA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flaxml.ecore#//OutputPorts"/>
+ <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//OutputPorts"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHLIkA6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHLIkQ6CEeWqWv0BcAgUIA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHLIkg6CEeWqWv0BcAgUIA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHLIkw6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHLIlA6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHLvoA6CEeWqWv0BcAgUIA" name="RuleString" tooltipText="" incomingEdges="_HH9LsA6CEeWqWv0BcAgUIA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flaxml.ecore#//RuleString"/>
+ <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//RuleString"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHLvoQ6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHLvog6CEeWqWv0BcAgUIA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHLvow6CEeWqWv0BcAgUIA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHLvpA6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHLvpQ6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HHtUEA6CEeWqWv0BcAgUIA" name="pattern : PatternType" tooltipText="">
+ <target xmi:type="ecore:EAttribute" href="flaxml.ecore#//RuleString/pattern"/>
+ <semanticElements xmi:type="ecore:EAttribute" href="flaxml.ecore#//RuleString/pattern"/>
+ <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HHt7IA6CEeWqWv0BcAgUIA" labelFormat="bold" labelAlignment="LEFT" description="_HHtUEw6CEeWqWv0BcAgUIA">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHt7IQ6CEeWqWv0BcAgUIA"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHt7Ig6CEeWqWv0BcAgUIA"/>
+ <color xmi:type="viewpoint:RGBValues" xmi:id="_HHt7Iw6CEeWqWv0BcAgUIA"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+ </ownedElements>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHMWsA6CEeWqWv0BcAgUIA" name="SimpleComponent" tooltipText="" outgoingEdges="_HIBdKg6CEeWqWv0BcAgUIA _HIG8sA6CEeWqWv0BcAgUIA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flaxml.ecore#//SimpleComponent"/>
+ <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//SimpleComponent"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHM9wA6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHM9wQ6CEeWqWv0BcAgUIA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHM9wg6CEeWqWv0BcAgUIA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHM9ww6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHM9xA6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHNk0A6CEeWqWv0BcAgUIA" name="System" tooltipText="" outgoingEdges="_HICEPA6CEeWqWv0BcAgUIA" incomingEdges="_HH8koA6CEeWqWv0BcAgUIA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="flaxml.ecore#//System"/>
+ <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//System"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHOL4A6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHOL4Q6CEeWqWv0BcAgUIA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHOL4g6CEeWqWv0BcAgUIA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHOL4w6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHOL5A6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HH1P4A6CEeWqWv0BcAgUIA" name="[1..1] inputPorts" sourceNode="_HG7Q8A6CEeWqWv0BcAgUIA" targetNode="_HHHeMA6CEeWqWv0BcAgUIA">
+ <target xmi:type="ecore:EReference" href="flaxml.ecore#//Component/inputPorts"/>
+ <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//Component/inputPorts"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HH3sIA6CEeWqWv0BcAgUIA" description="_HH128w6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HH3sIQ6CEeWqWv0BcAgUIA"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HH3sIg6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH3sIw6CEeWqWv0BcAgUIA"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HH3sJA6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH3sJQ6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HH4TMA6CEeWqWv0BcAgUIA" name="[1..1] outputPorts" sourceNode="_HG7Q8A6CEeWqWv0BcAgUIA" targetNode="_HHKhhQ6CEeWqWv0BcAgUIA">
+ <target xmi:type="ecore:EReference" href="flaxml.ecore#//Component/outputPorts"/>
+ <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//Component/outputPorts"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HH46Rg6CEeWqWv0BcAgUIA" description="_HH46Qg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HH46Rw6CEeWqWv0BcAgUIA"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HH46SA6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH46SQ6CEeWqWv0BcAgUIA"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HH46Sg6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH46Sw6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HH46TA6CEeWqWv0BcAgUIA" name="[1..*] component" sourceNode="_HHAJcA6CEeWqWv0BcAgUIA" targetNode="_HG7Q8A6CEeWqWv0BcAgUIA">
+ <target xmi:type="ecore:EReference" href="flaxml.ecore#//Components/component"/>
+ <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//Components/component"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HH5hVg6CEeWqWv0BcAgUIA" description="_HH5hUg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HH5hVw6CEeWqWv0BcAgUIA"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HH5hWA6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH5hWQ6CEeWqWv0BcAgUIA"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HH5hWg6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH5hWw6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HH5hXA6CEeWqWv0BcAgUIA" name="[1..1] connections" sourceNode="_HHAwgA6CEeWqWv0BcAgUIA" targetNode="_HHClsA6CEeWqWv0BcAgUIA">
+ <target xmi:type="ecore:EReference" href="flaxml.ecore#//CompositeComponent/connections"/>
+ <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//CompositeComponent/connections"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HH6IZg6CEeWqWv0BcAgUIA" description="_HH6IYg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HH6IZw6CEeWqWv0BcAgUIA"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HH6IaA6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH6IaQ6CEeWqWv0BcAgUIA"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HH6Iag6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH6Iaw6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HH6IbA6CEeWqWv0BcAgUIA" name="[1..1] components" sourceNode="_HHAwgA6CEeWqWv0BcAgUIA" targetNode="_HHAJcA6CEeWqWv0BcAgUIA">
+ <target xmi:type="ecore:EReference" href="flaxml.ecore#//CompositeComponent/components"/>
+ <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//CompositeComponent/components"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HH6vdg6CEeWqWv0BcAgUIA" description="_HH6vcg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HH6vdw6CEeWqWv0BcAgUIA"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HH6veA6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH6veQ6CEeWqWv0BcAgUIA"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HH6veg6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH6vew6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HH6vfA6CEeWqWv0BcAgUIA" name="[0..1] rules" sourceNode="_HHB-oA6CEeWqWv0BcAgUIA" targetNode="_HHFB9Q6CEeWqWv0BcAgUIA">
+ <target xmi:type="ecore:EReference" href="flaxml.ecore#//Connection/rules"/>
+ <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//Connection/rules"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HH7Whg6CEeWqWv0BcAgUIA" description="_HH7Wgg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HH7Whw6CEeWqWv0BcAgUIA"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HH7WiA6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH7WiQ6CEeWqWv0BcAgUIA"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HH7Wig6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH7Wiw6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HH7WjA6CEeWqWv0BcAgUIA" name="[1..*] connection" sourceNode="_HHClsA6CEeWqWv0BcAgUIA" targetNode="_HHB-oA6CEeWqWv0BcAgUIA">
+ <target xmi:type="ecore:EReference" href="flaxml.ecore#//Connections/connection"/>
+ <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//Connections/connection"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HH79lg6CEeWqWv0BcAgUIA" description="_HH79kg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HH79lw6CEeWqWv0BcAgUIA"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HH79mA6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH79mQ6CEeWqWv0BcAgUIA"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HH79mg6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH79mw6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HH8koA6CEeWqWv0BcAgUIA" name="[0..-2] /system" visible="false" sourceNode="_HHDz0A6CEeWqWv0BcAgUIA" targetNode="_HHNk0A6CEeWqWv0BcAgUIA">
+ <target xmi:type="ecore:EReference" href="flaxml.ecore#//DocumentRoot/system"/>
+ <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//DocumentRoot/system"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HH8kpw6CEeWqWv0BcAgUIA" description="_HH8kow6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HH8kqA6CEeWqWv0BcAgUIA" red="114" green="159" blue="207"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HH8kqQ6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH8kqg6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HH8kqw6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH8krA6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HH9LsA6CEeWqWv0BcAgUIA" name="[1..*] rule" sourceNode="_HHFB9Q6CEeWqWv0BcAgUIA" targetNode="_HHLvoA6CEeWqWv0BcAgUIA">
+ <target xmi:type="ecore:EReference" href="flaxml.ecore#//FptcRules/rule"/>
+ <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//FptcRules/rule"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HH9yxg6CEeWqWv0BcAgUIA" description="_HH9ywg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HH9yxw6CEeWqWv0BcAgUIA"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HH9yyA6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH9yyQ6CEeWqWv0BcAgUIA"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HH9yyg6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH9yyw6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HH9yzA6CEeWqWv0BcAgUIA" name="[0..*] inputFailure" sourceNode="_HHGQEA6CEeWqWv0BcAgUIA" targetNode="_HHEa4A6CEeWqWv0BcAgUIA">
+ <target xmi:type="ecore:EReference" href="flaxml.ecore#//InputPort/inputFailure"/>
+ <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//InputPort/inputFailure"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HH-Z1g6CEeWqWv0BcAgUIA" description="_HH-Z0g6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HH-Z1w6CEeWqWv0BcAgUIA"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HH-Z2A6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH-Z2Q6CEeWqWv0BcAgUIA"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HH-Z2g6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH-Z2w6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HH_A4A6CEeWqWv0BcAgUIA" name="[0..*] inputPort" sourceNode="_HHHeMA6CEeWqWv0BcAgUIA" targetNode="_HHGQEA6CEeWqWv0BcAgUIA">
+ <target xmi:type="ecore:EReference" href="flaxml.ecore#//InputPorts/inputPort"/>
+ <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//InputPorts/inputPort"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HH_n9g6CEeWqWv0BcAgUIA" description="_HH_n8g6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HH_n9w6CEeWqWv0BcAgUIA"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HH_n-A6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH_n-Q6CEeWqWv0BcAgUIA"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HH_n-g6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH_n-w6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HIAPAA6CEeWqWv0BcAgUIA" name="[0..*] outputFailure" sourceNode="_HHJ6cA6CEeWqWv0BcAgUIA" targetNode="_HHEa4A6CEeWqWv0BcAgUIA">
+ <target xmi:type="ecore:EReference" href="flaxml.ecore#//OutputPort/outputFailure"/>
+ <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//OutputPort/outputFailure"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HIAPBw6CEeWqWv0BcAgUIA" description="_HIAPAw6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HIAPCA6CEeWqWv0BcAgUIA"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HIAPCQ6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HIAPCg6CEeWqWv0BcAgUIA"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HIAPCw6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HIAPDA6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HIA2EA6CEeWqWv0BcAgUIA" name="[0..*] outputPort" sourceNode="_HHKhhQ6CEeWqWv0BcAgUIA" targetNode="_HHJ6cA6CEeWqWv0BcAgUIA">
+ <target xmi:type="ecore:EReference" href="flaxml.ecore#//OutputPorts/outputPort"/>
+ <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//OutputPorts/outputPort"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HIBdJA6CEeWqWv0BcAgUIA" description="_HIBdIA6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HIBdJQ6CEeWqWv0BcAgUIA"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HIBdJg6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HIBdJw6CEeWqWv0BcAgUIA"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HIBdKA6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HIBdKQ6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HIBdKg6CEeWqWv0BcAgUIA" name="[1..1] rules" sourceNode="_HHMWsA6CEeWqWv0BcAgUIA" targetNode="_HHFB9Q6CEeWqWv0BcAgUIA">
+ <target xmi:type="ecore:EReference" href="flaxml.ecore#//SimpleComponent/rules"/>
+ <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//SimpleComponent/rules"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HICENg6CEeWqWv0BcAgUIA" description="_HICEMg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HICENw6CEeWqWv0BcAgUIA"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HICEOA6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HICEOQ6CEeWqWv0BcAgUIA"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HICEOg6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HICEOw6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HICEPA6CEeWqWv0BcAgUIA" name="[0..1] component" sourceNode="_HHNk0A6CEeWqWv0BcAgUIA" targetNode="_HG7Q8A6CEeWqWv0BcAgUIA">
+ <target xmi:type="ecore:EReference" href="flaxml.ecore#//System/component"/>
+ <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//System/component"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HICrRg6CEeWqWv0BcAgUIA" description="_HICrQg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HICrRw6CEeWqWv0BcAgUIA"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HICrSA6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HICrSQ6CEeWqWv0BcAgUIA"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HICrSg6CEeWqWv0BcAgUIA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HICrSw6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HIDSUA6CEeWqWv0BcAgUIA" sourceNode="_HG7Q8A6CEeWqWv0BcAgUIA" targetNode="_HHIFRQ6CEeWqWv0BcAgUIA">
+ <target xmi:type="ecore:EClass" href="flaxml.ecore#//Component"/>
+ <semanticElements xmi:type="ecore:EGenericType" href="flaxml.ecore#//Component/@eGenericSuperTypes.0"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HID5YA6CEeWqWv0BcAgUIA" targetArrow="InputClosedArrow" routingStyle="tree">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HID5YQ6CEeWqWv0BcAgUIA" red="136" green="136" blue="136"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_HID5Yg6CEeWqWv0BcAgUIA" labelFormat="italic" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HID5Yw6CEeWqWv0BcAgUIA"/>
+ </beginLabelStyle>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HID5ZA6CEeWqWv0BcAgUIA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HID5ZQ6CEeWqWv0BcAgUIA"/>
+ </centerLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HIEgcA6CEeWqWv0BcAgUIA" sourceNode="_HHAwgA6CEeWqWv0BcAgUIA" targetNode="_HG7Q8A6CEeWqWv0BcAgUIA">
+ <target xmi:type="ecore:EClass" href="flaxml.ecore#//CompositeComponent"/>
+ <semanticElements xmi:type="ecore:EGenericType" href="flaxml.ecore#//CompositeComponent/@eGenericSuperTypes.0"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HIFHgA6CEeWqWv0BcAgUIA" targetArrow="InputClosedArrow" routingStyle="tree">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HIFHgQ6CEeWqWv0BcAgUIA" red="136" green="136" blue="136"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_HIFHgg6CEeWqWv0BcAgUIA" labelFormat="italic" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HIFHgw6CEeWqWv0BcAgUIA"/>
+ </beginLabelStyle>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HIFHhA6CEeWqWv0BcAgUIA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HIFHhQ6CEeWqWv0BcAgUIA"/>
+ </centerLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HIFHhg6CEeWqWv0BcAgUIA" sourceNode="_HHGQEA6CEeWqWv0BcAgUIA" targetNode="_HHIFRQ6CEeWqWv0BcAgUIA">
+ <target xmi:type="ecore:EClass" href="flaxml.ecore#//InputPort"/>
+ <semanticElements xmi:type="ecore:EGenericType" href="flaxml.ecore#//InputPort/@eGenericSuperTypes.0"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HIFukA6CEeWqWv0BcAgUIA" targetArrow="InputClosedArrow" routingStyle="tree">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HIFukQ6CEeWqWv0BcAgUIA" red="136" green="136" blue="136"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_HIFukg6CEeWqWv0BcAgUIA" labelFormat="italic" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HIFukw6CEeWqWv0BcAgUIA"/>
+ </beginLabelStyle>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HIFulA6CEeWqWv0BcAgUIA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HIFulQ6CEeWqWv0BcAgUIA"/>
+ </centerLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HIFulg6CEeWqWv0BcAgUIA" sourceNode="_HHJ6cA6CEeWqWv0BcAgUIA" targetNode="_HHIFRQ6CEeWqWv0BcAgUIA">
+ <target xmi:type="ecore:EClass" href="flaxml.ecore#//OutputPort"/>
+ <semanticElements xmi:type="ecore:EGenericType" href="flaxml.ecore#//OutputPort/@eGenericSuperTypes.0"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HIGVoA6CEeWqWv0BcAgUIA" targetArrow="InputClosedArrow" routingStyle="tree">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HIGVoQ6CEeWqWv0BcAgUIA" red="136" green="136" blue="136"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_HIGVog6CEeWqWv0BcAgUIA" labelFormat="italic" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HIGVow6CEeWqWv0BcAgUIA"/>
+ </beginLabelStyle>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HIGVpA6CEeWqWv0BcAgUIA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HIGVpQ6CEeWqWv0BcAgUIA"/>
+ </centerLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HIG8sA6CEeWqWv0BcAgUIA" sourceNode="_HHMWsA6CEeWqWv0BcAgUIA" targetNode="_HG7Q8A6CEeWqWv0BcAgUIA">
+ <target xmi:type="ecore:EClass" href="flaxml.ecore#//SimpleComponent"/>
+ <semanticElements xmi:type="ecore:EGenericType" href="flaxml.ecore#//SimpleComponent/@eGenericSuperTypes.0"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HIG8sQ6CEeWqWv0BcAgUIA" targetArrow="InputClosedArrow" routingStyle="tree">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HIG8sg6CEeWqWv0BcAgUIA" red="136" green="136" blue="136"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_HIG8sw6CEeWqWv0BcAgUIA" labelFormat="italic" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HIG8tA6CEeWqWv0BcAgUIA"/>
+ </beginLabelStyle>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HIG8tQ6CEeWqWv0BcAgUIA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HIG8tg6CEeWqWv0BcAgUIA"/>
+ </centerLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+ </ownedDiagramElements>
+ <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+ <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_DyH4VQ6CEeWqWv0BcAgUIA"/>
+ <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
+ <target xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+ </ownedRepresentations>
+ <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_D4dJ0A6CEeWqWv0BcAgUIA" name="type class diagram">
+ <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_D4dw4A6CEeWqWv0BcAgUIA" source="GMF_DIAGRAMS">
+ <data xmi:type="notation:Diagram" xmi:id="_D4dw4Q6CEeWqWv0BcAgUIA" type="Sirius" element="_D4dJ0A6CEeWqWv0BcAgUIA" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_D4dw4w6CEeWqWv0BcAgUIA" type="2001" element="_D4dJ0Q6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_D4dw5g6CEeWqWv0BcAgUIA" type="5002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_D4dw5w6CEeWqWv0BcAgUIA" y="5"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_D4eX8A6CEeWqWv0BcAgUIA" type="3005" element="_D4dJ0g6CEeWqWv0BcAgUIA">
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_D4eX8Q6CEeWqWv0BcAgUIA" fontName="Segoe UI"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D4eX8g6CEeWqWv0BcAgUIA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_D4dw5A6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D4dw5Q6CEeWqWv0BcAgUIA" width="672" height="67"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_D4dw4g6CEeWqWv0BcAgUIA"/>
+ </data>
+ </ownedAnnotationEntries>
+ <ownedDiagramElements xmi:type="diagram:DNode" xmi:id="_D4dJ0Q6CEeWqWv0BcAgUIA" width="-1" height="-1">
+ <target xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2003/XMLType#/"/>
+ <semanticElements xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2003/XMLType#/"/>
+ <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_D4dJ0g6CEeWqWv0BcAgUIA" showIcon="false" labelPosition="node" workspacePath="/org.eclipse.emf.ecoretools.design/icons/full/back/empty.svg">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_D4dJ0w6CEeWqWv0BcAgUIA"/>
+ <description xmi:type="style:WorkspaceImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_D4dJ1A6CEeWqWv0BcAgUIA"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']"/>
+ </ownedDiagramElements>
+ <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+ <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_D4dJ1Q6CEeWqWv0BcAgUIA"/>
+ <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
+ <target xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2003/XMLType#/"/>
+ </ownedRepresentations>
+ <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_D4lssA6CEeWqWv0BcAgUIA" name="ecore class diagram">
+ <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_D4mTwA6CEeWqWv0BcAgUIA" source="GMF_DIAGRAMS">
+ <data xmi:type="notation:Diagram" xmi:id="_D4mTwQ6CEeWqWv0BcAgUIA" type="Sirius" element="_D4lssA6CEeWqWv0BcAgUIA" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_D4mTww6CEeWqWv0BcAgUIA" type="2001" element="_D4lssQ6CEeWqWv0BcAgUIA">
+ <children xmi:type="notation:Node" xmi:id="_D4m60A6CEeWqWv0BcAgUIA" type="5002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_D4m60Q6CEeWqWv0BcAgUIA" y="5"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_D4nh4A6CEeWqWv0BcAgUIA" type="3005" element="_D4lssg6CEeWqWv0BcAgUIA">
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_D4nh4Q6CEeWqWv0BcAgUIA" fontName="Segoe UI"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D4nh4g6CEeWqWv0BcAgUIA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_D4mTxA6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D4mTxQ6CEeWqWv0BcAgUIA" width="672" height="67"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_D4mTwg6CEeWqWv0BcAgUIA"/>
+ </data>
+ </ownedAnnotationEntries>
+ <ownedDiagramElements xmi:type="diagram:DNode" xmi:id="_D4lssQ6CEeWqWv0BcAgUIA" width="-1" height="-1">
+ <target xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+ <semanticElements xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+ <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_D4lssg6CEeWqWv0BcAgUIA" showIcon="false" labelPosition="node" workspacePath="/org.eclipse.emf.ecoretools.design/icons/full/back/empty.svg">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_D4lssw6CEeWqWv0BcAgUIA"/>
+ <description xmi:type="style:WorkspaceImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_D4lstA6CEeWqWv0BcAgUIA"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']"/>
+ </ownedDiagramElements>
+ <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+ <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_D4lstQ6CEeWqWv0BcAgUIA"/>
+ <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
+ <target xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+ </ownedRepresentations>
+ <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
+ </ownedViews>
+</viewpoint:DAnalysis>
diff --git a/plugins/org.polarsys.chess.fla.flaxml/model/flaxml.ecore b/plugins/org.polarsys.chess.fla.flaxml/model/flaxml.ecore
new file mode 100644
index 0000000..8e15dea
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/model/flaxml.ecore
@@ -0,0 +1,309 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="flaxml" nsURI="http://www.polarsys.org/chess/fla/flaxml" nsPrefix="flaxml">
+ <eClassifiers xsi:type="ecore:EClass" name="Component" abstract="true" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="component"/>
+ <details key="kind" value="empty"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inputPorts" lowerBound="1"
+ eType="#//InputPorts" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="inputPorts"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="outputPorts" lowerBound="1"
+ eType="#//OutputPorts" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="outputPorts"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Components">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="components"/>
+ <details key="kind" value="elementOnly"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="component" lowerBound="1"
+ upperBound="-1" eType="#//Component" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="component"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CompositeComponent" eSuperTypes="#//Component">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="compositeComponent"/>
+ <details key="kind" value="elementOnly"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="connections" lowerBound="1"
+ eType="#//Connections" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="connections"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="components" lowerBound="1"
+ eType="#//Components" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="components"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Connection">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="connection"/>
+ <details key="kind" value="empty"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="sourceComponent" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="sourceComponent"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="sourceId" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="sourceId"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="targetComponent" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="targetComponent"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="targetId" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="targetId"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="rules" eType="#//FptcRules"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Connections">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="connections"/>
+ <details key="kind" value="elementOnly"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="connection" lowerBound="1"
+ upperBound="-1" eType="#//Connection" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="connection"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DocumentRoot">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value=""/>
+ <details key="kind" value="mixed"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mixed" unique="false" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="elementWildcard"/>
+ <details key="name" value=":mixed"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="xMLNSPrefixMap" upperBound="-1"
+ eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"
+ transient="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="xmlns:prefix"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="xSISchemaLocation" upperBound="-1"
+ eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"
+ transient="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="xsi:schemaLocation"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="system" upperBound="-2"
+ eType="#//System" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="system"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Failure">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="failure"/>
+ <details key="kind" value="empty"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" eType="#//FailureType"
+ unsettable="true">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="type"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="FailureType">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="failureType"/>
+ </eAnnotations>
+ <eLiterals name="noFailure"/>
+ <eLiterals name="late" value="1"/>
+ <eLiterals name="early" value="2"/>
+ <eLiterals name="valueSubtle" value="3"/>
+ <eLiterals name="valueCoarse" value="4"/>
+ <eLiterals name="omission" value="5"/>
+ <eLiterals name="commission" value="6"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="FailureTypeObject" instanceClassName="org.eclipse.emf.common.util.Enumerator">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="failureType:Object"/>
+ <details key="baseType" value="failureType"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FptcRules">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="fptcRules"/>
+ <details key="kind" value="elementOnly"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="rule" lowerBound="1" upperBound="-1"
+ eType="#//RuleString" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="rule"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InputPort" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="inputPort"/>
+ <details key="kind" value="elementOnly"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inputFailure" upperBound="-1"
+ eType="#//Failure" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="inputFailure"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InputPorts">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="inputPorts"/>
+ <details key="kind" value="elementOnly"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inputPort" upperBound="-1"
+ eType="#//InputPort" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="inputPort"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="NamedElement">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="namedElement"/>
+ <details key="kind" value="empty"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="id"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="name"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OutputPort" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="outputPort"/>
+ <details key="kind" value="elementOnly"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="outputFailure" upperBound="-1"
+ eType="#//Failure" containment="true" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OutputPorts">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="outputPorts"/>
+ <details key="kind" value="elementOnly"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="outputPort" upperBound="-1"
+ eType="#//OutputPort" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="outputPort"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="PatternType" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="pattern_._type"/>
+ <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#string"/>
+ <details key="pattern" value="[^>]+\.[^>]+->[^>]+\.[^>]+"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RuleString">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="ruleString"/>
+ <details key="kind" value="empty"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pattern" lowerBound="1"
+ eType="#//PatternType">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="pattern"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SimpleComponent" eSuperTypes="#//Component">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="simpleComponent"/>
+ <details key="kind" value="elementOnly"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="rules" lowerBound="1" eType="#//FptcRules"
+ containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="rules"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="System">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="system"/>
+ <details key="kind" value="elementOnly"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="component" eType="#//Component"
+ containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="component"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.polarsys.chess.fla.flaxml/model/flaxml.genmodel b/plugins/org.polarsys.chess.fla.flaxml/model/flaxml.genmodel
new file mode 100644
index 0000000..74d873f
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/model/flaxml.genmodel
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.polarsys.chess.fla.flaxml/src" modelPluginID="org.polarsys.chess.fla.flaxml"
+ modelName="Flaxml" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+ importerID="org.eclipse.emf.importer.ecore" complianceLevel="8.0" copyrightFields="false"
+ operationReflection="true" importOrganizing="true">
+ <foreignModel>flaxml.ecore</foreignModel>
+ <genPackages prefix="Flaxml" basePackage="org.polarsys.chess.fla" resource="XML"
+ disposableProviderFactory="true" ecorePackage="flaxml.ecore#/" publicationLocation="">
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="flaxml.ecore#//FailureType">
+ <genEnumLiterals ecoreEnumLiteral="flaxml.ecore#//FailureType/noFailure"/>
+ <genEnumLiterals ecoreEnumLiteral="flaxml.ecore#//FailureType/late"/>
+ <genEnumLiterals ecoreEnumLiteral="flaxml.ecore#//FailureType/early"/>
+ <genEnumLiterals ecoreEnumLiteral="flaxml.ecore#//FailureType/valueSubtle"/>
+ <genEnumLiterals ecoreEnumLiteral="flaxml.ecore#//FailureType/valueCoarse"/>
+ <genEnumLiterals ecoreEnumLiteral="flaxml.ecore#//FailureType/omission"/>
+ <genEnumLiterals ecoreEnumLiteral="flaxml.ecore#//FailureType/commission"/>
+ </genEnums>
+ <genDataTypes ecoreDataType="flaxml.ecore#//FailureTypeObject"/>
+ <genDataTypes ecoreDataType="flaxml.ecore#//PatternType"/>
+ <genClasses image="false" ecoreClass="flaxml.ecore#//Component">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//Component/inputPorts"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//Component/outputPorts"/>
+ </genClasses>
+ <genClasses ecoreClass="flaxml.ecore#//Components">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//Components/component"/>
+ </genClasses>
+ <genClasses ecoreClass="flaxml.ecore#//CompositeComponent">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//CompositeComponent/connections"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//CompositeComponent/components"/>
+ </genClasses>
+ <genClasses ecoreClass="flaxml.ecore#//Connection">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flaxml.ecore#//Connection/sourceComponent"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flaxml.ecore#//Connection/sourceId"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flaxml.ecore#//Connection/targetComponent"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flaxml.ecore#//Connection/targetId"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//Connection/rules"/>
+ </genClasses>
+ <genClasses ecoreClass="flaxml.ecore#//Connections">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//Connections/connection"/>
+ </genClasses>
+ <genClasses ecoreClass="flaxml.ecore#//DocumentRoot">
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EAttribute flaxml.ecore#//DocumentRoot/mixed"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference flaxml.ecore#//DocumentRoot/xMLNSPrefixMap"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference flaxml.ecore#//DocumentRoot/xSISchemaLocation"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//DocumentRoot/system"/>
+ </genClasses>
+ <genClasses ecoreClass="flaxml.ecore#//Failure">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flaxml.ecore#//Failure/type"/>
+ </genClasses>
+ <genClasses ecoreClass="flaxml.ecore#//FptcRules">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//FptcRules/rule"/>
+ </genClasses>
+ <genClasses ecoreClass="flaxml.ecore#//InputPort">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//InputPort/inputFailure"/>
+ </genClasses>
+ <genClasses ecoreClass="flaxml.ecore#//InputPorts">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//InputPorts/inputPort"/>
+ </genClasses>
+ <genClasses ecoreClass="flaxml.ecore#//NamedElement">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flaxml.ecore#//NamedElement/id"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flaxml.ecore#//NamedElement/name"/>
+ </genClasses>
+ <genClasses ecoreClass="flaxml.ecore#//OutputPort">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//OutputPort/outputFailure"/>
+ </genClasses>
+ <genClasses ecoreClass="flaxml.ecore#//OutputPorts">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//OutputPorts/outputPort"/>
+ </genClasses>
+ <genClasses ecoreClass="flaxml.ecore#//RuleString">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flaxml.ecore#//RuleString/pattern"/>
+ </genClasses>
+ <genClasses ecoreClass="flaxml.ecore#//SimpleComponent">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//SimpleComponent/rules"/>
+ </genClasses>
+ <genClasses ecoreClass="flaxml.ecore#//System">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//System/component"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/org.polarsys.chess.fla.flaxml/model/flaxml.xsd b/plugins/org.polarsys.chess.fla.flaxml/model/flaxml.xsd
new file mode 100644
index 0000000..fdbee31
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/model/flaxml.xsd
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<xsd:schema xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:flaxml="http://www.polarsys.org/chess/fla/flaxml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ecore:nsPrefix="flaxml" ecore:package="org.polarsys.chess.fla.flaxml" targetNamespace="http://www.polarsys.org/chess/fla/flaxml">
+ <xsd:element name="system" type="flaxml:system"/>
+ <xsd:complexType abstract="true" ecore:name="Component" name="component">
+ <xsd:complexContent>
+ <xsd:extension base="flaxml:namedElement">
+ <xsd:sequence>
+ <xsd:element form="qualified" name="inputPorts" type="flaxml:inputPorts"/>
+ <xsd:element form="qualified" name="outputPorts" type="flaxml:outputPorts"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType ecore:name="Components" name="components">
+ <xsd:sequence>
+ <xsd:element form="qualified" maxOccurs="unbounded" name="component" type="flaxml:component"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType ecore:name="CompositeComponent" name="compositeComponent">
+ <xsd:complexContent>
+ <xsd:extension base="flaxml:component">
+ <xsd:sequence>
+ <xsd:element form="qualified" name="connections" type="flaxml:connections"/>
+ <xsd:element form="qualified" name="components" type="flaxml:components"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType ecore:name="Connection" name="connection">
+ <xsd:sequence>
+ <xsd:element ecore:resolveProxies="true" minOccurs="0" name="rules" type="flaxml:fptcRules"/>
+ </xsd:sequence>
+ <xsd:attribute name="sourceComponent" type="xsd:string"/>
+ <xsd:attribute name="sourceId" type="xsd:string" use="required"/>
+ <xsd:attribute name="targetComponent" type="xsd:string"/>
+ <xsd:attribute name="targetId" type="xsd:string" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType ecore:name="Connections" name="connections">
+ <xsd:sequence>
+ <xsd:element form="qualified" maxOccurs="unbounded" name="connection" type="flaxml:connection"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType ecore:name="Failure" name="failure">
+ <xsd:attribute name="type" type="flaxml:failureType" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType ecore:name="FailureType" name="failureType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="noFailure"/>
+ <xsd:enumeration value="late"/>
+ <xsd:enumeration value="early"/>
+ <xsd:enumeration value="valueSubtle"/>
+ <xsd:enumeration value="valueCoarse"/>
+ <xsd:enumeration value="omission"/>
+ <xsd:enumeration value="commission"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType ecore:name="FptcRules" name="fptcRules">
+ <xsd:sequence>
+ <xsd:element form="qualified" maxOccurs="unbounded" name="rule" type="flaxml:ruleString"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType ecore:name="InputPort" name="inputPort">
+ <xsd:complexContent>
+ <xsd:extension base="flaxml:namedElement">
+ <xsd:sequence>
+ <xsd:element form="qualified" maxOccurs="unbounded" minOccurs="0" name="inputFailure" type="flaxml:failure"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType ecore:name="InputPorts" name="inputPorts">
+ <xsd:sequence>
+ <xsd:element form="qualified" maxOccurs="unbounded" minOccurs="0" name="inputPort" type="flaxml:inputPort"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType ecore:name="NamedElement" name="namedElement">
+ <xsd:attribute name="id" type="xsd:string" use="required"/>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType ecore:name="OutputPort" name="outputPort">
+ <xsd:complexContent>
+ <xsd:extension base="flaxml:namedElement">
+ <xsd:sequence>
+ <xsd:element maxOccurs="unbounded" minOccurs="0" name="outputFailure" type="flaxml:failure"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType ecore:name="OutputPorts" name="outputPorts">
+ <xsd:sequence>
+ <xsd:element form="qualified" maxOccurs="unbounded" minOccurs="0" name="outputPort" type="flaxml:outputPort"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType ecore:name="PatternType" name="pattern_._type">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="[^>]+\.[^>]+->[^>]+\.[^>]+"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType ecore:name="RuleString" name="ruleString">
+ <xsd:attribute name="pattern" type="flaxml:pattern_._type" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType ecore:name="SimpleComponent" name="simpleComponent">
+ <xsd:complexContent>
+ <xsd:extension base="flaxml:component">
+ <xsd:sequence>
+ <xsd:element form="qualified" name="rules" type="flaxml:fptcRules"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType ecore:name="System" name="system">
+ <xsd:sequence>
+ <xsd:element form="qualified" minOccurs="0" name="component" type="flaxml:component"/>
+ </xsd:sequence>
+ </xsd:complexType>
+</xsd:schema>
diff --git a/plugins/org.polarsys.chess.fla.flaxml/plugin.properties b/plugins/org.polarsys.chess.fla.flaxml/plugin.properties
new file mode 100644
index 0000000..0250386
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/plugin.properties
@@ -0,0 +1,16 @@
+###############################################################################
+# CHESS core plugin
+#
+# Copyright (C) 2011-2015
+# Mälardalen University, Sweden
+#
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License
+# v1.0 which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+###############################################################################
+#
+
+pluginName = Flaxml Model
+providerName = www.example.org
diff --git a/plugins/org.polarsys.chess.fla.flaxml/plugin.xml b/plugins/org.polarsys.chess.fla.flaxml/plugin.xml
new file mode 100644
index 0000000..89b8e77
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/plugin.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <!-- @generated flaxml -->
+ <package
+ uri="http://www.polarsys.org/chess/fla/flaxml"
+ class="org.polarsys.chess.fla.flaxml.FlaxmlPackage"
+ genModel="model/flaxml.genmodel"/>
+ </extension>
+
+ <extension point="org.eclipse.emf.ecore.extension_parser">
+ <!-- @generated flaxml -->
+ <parser
+ type="flaxml"
+ class="org.polarsys.chess.fla.flaxml.util.FlaxmlResourceFactoryImpl"/>
+ </extension>
+
+</plugin>
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Component.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Component.java
new file mode 100644
index 0000000..545c65c
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Component.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Component</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.Component#getInputPorts <em>Input Ports</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flaxml.Component#getOutputPorts <em>Output Ports</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getComponent()
+ * @model abstract="true"
+ * extendedMetaData="name='component' kind='empty'"
+ * @generated
+ */
+public interface Component extends NamedElement {
+ /**
+ * Returns the value of the '<em><b>Input Ports</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Input Ports</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Input Ports</em>' containment reference.
+ * @see #setInputPorts(InputPorts)
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getComponent_InputPorts()
+ * @model containment="true" required="true"
+ * extendedMetaData="kind='element' name='inputPorts' namespace='##targetNamespace'"
+ * @generated
+ */
+ InputPorts getInputPorts();
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.Component#getInputPorts <em>Input Ports</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Input Ports</em>' containment reference.
+ * @see #getInputPorts()
+ * @generated
+ */
+ void setInputPorts(InputPorts value);
+
+ /**
+ * Returns the value of the '<em><b>Output Ports</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Output Ports</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Output Ports</em>' containment reference.
+ * @see #setOutputPorts(OutputPorts)
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getComponent_OutputPorts()
+ * @model containment="true" required="true"
+ * extendedMetaData="kind='element' name='outputPorts' namespace='##targetNamespace'"
+ * @generated
+ */
+ OutputPorts getOutputPorts();
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.Component#getOutputPorts <em>Output Ports</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Output Ports</em>' containment reference.
+ * @see #getOutputPorts()
+ * @generated
+ */
+ void setOutputPorts(OutputPorts value);
+
+} // Component
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Components.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Components.java
new file mode 100644
index 0000000..dd77f0f
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Components.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Components</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.Components#getComponent <em>Component</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getComponents()
+ * @model extendedMetaData="name='components' kind='elementOnly'"
+ * @generated
+ */
+public interface Components extends EObject {
+ /**
+ * Returns the value of the '<em><b>Component</b></em>' containment reference list.
+ * The list contents are of type {@link org.polarsys.chess.fla.flaxml.Component}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Component</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Component</em>' containment reference list.
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getComponents_Component()
+ * @model containment="true" required="true"
+ * extendedMetaData="kind='element' name='component' namespace='##targetNamespace'"
+ * @generated
+ */
+ EList<Component> getComponent();
+
+} // Components
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/CompositeComponent.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/CompositeComponent.java
new file mode 100644
index 0000000..ed98949
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/CompositeComponent.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Composite Component</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.CompositeComponent#getConnections <em>Connections</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flaxml.CompositeComponent#getComponents <em>Components</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getCompositeComponent()
+ * @model extendedMetaData="name='compositeComponent' kind='elementOnly'"
+ * @generated
+ */
+public interface CompositeComponent extends Component {
+ /**
+ * Returns the value of the '<em><b>Connections</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Connections</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Connections</em>' containment reference.
+ * @see #setConnections(Connections)
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getCompositeComponent_Connections()
+ * @model containment="true" required="true"
+ * extendedMetaData="kind='element' name='connections' namespace='##targetNamespace'"
+ * @generated
+ */
+ Connections getConnections();
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.CompositeComponent#getConnections <em>Connections</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Connections</em>' containment reference.
+ * @see #getConnections()
+ * @generated
+ */
+ void setConnections(Connections value);
+
+ /**
+ * Returns the value of the '<em><b>Components</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Components</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Components</em>' containment reference.
+ * @see #setComponents(Components)
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getCompositeComponent_Components()
+ * @model containment="true" required="true"
+ * extendedMetaData="kind='element' name='components' namespace='##targetNamespace'"
+ * @generated
+ */
+ Components getComponents();
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.CompositeComponent#getComponents <em>Components</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Components</em>' containment reference.
+ * @see #getComponents()
+ * @generated
+ */
+ void setComponents(Components value);
+
+} // CompositeComponent
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Connection.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Connection.java
new file mode 100644
index 0000000..ed3d345
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Connection.java
@@ -0,0 +1,174 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Connection</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.Connection#getSourceComponent <em>Source Component</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flaxml.Connection#getSourceId <em>Source Id</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flaxml.Connection#getTargetComponent <em>Target Component</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flaxml.Connection#getTargetId <em>Target Id</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flaxml.Connection#getRules <em>Rules</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getConnection()
+ * @model extendedMetaData="name='connection' kind='empty'"
+ * @generated
+ */
+public interface Connection extends EObject {
+ /**
+ * Returns the value of the '<em><b>Source Component</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Source Component</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Source Component</em>' attribute.
+ * @see #setSourceComponent(String)
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getConnection_SourceComponent()
+ * @model dataType="org.eclipse.emf.ecore.xml.type.String"
+ * extendedMetaData="kind='attribute' name='sourceComponent'"
+ * @generated
+ */
+ String getSourceComponent();
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.Connection#getSourceComponent <em>Source Component</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Source Component</em>' attribute.
+ * @see #getSourceComponent()
+ * @generated
+ */
+ void setSourceComponent(String value);
+
+ /**
+ * Returns the value of the '<em><b>Source Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Source Id</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Source Id</em>' attribute.
+ * @see #setSourceId(String)
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getConnection_SourceId()
+ * @model dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+ * extendedMetaData="kind='attribute' name='sourceId'"
+ * @generated
+ */
+ String getSourceId();
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.Connection#getSourceId <em>Source Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Source Id</em>' attribute.
+ * @see #getSourceId()
+ * @generated
+ */
+ void setSourceId(String value);
+
+ /**
+ * Returns the value of the '<em><b>Target Component</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Target Component</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Target Component</em>' attribute.
+ * @see #setTargetComponent(String)
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getConnection_TargetComponent()
+ * @model dataType="org.eclipse.emf.ecore.xml.type.String"
+ * extendedMetaData="kind='attribute' name='targetComponent'"
+ * @generated
+ */
+ String getTargetComponent();
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.Connection#getTargetComponent <em>Target Component</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Target Component</em>' attribute.
+ * @see #getTargetComponent()
+ * @generated
+ */
+ void setTargetComponent(String value);
+
+ /**
+ * Returns the value of the '<em><b>Target Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Target Id</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Target Id</em>' attribute.
+ * @see #setTargetId(String)
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getConnection_TargetId()
+ * @model dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+ * extendedMetaData="kind='attribute' name='targetId'"
+ * @generated
+ */
+ String getTargetId();
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.Connection#getTargetId <em>Target Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Target Id</em>' attribute.
+ * @see #getTargetId()
+ * @generated
+ */
+ void setTargetId(String value);
+
+ /**
+ * Returns the value of the '<em><b>Rules</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Rules</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Rules</em>' containment reference.
+ * @see #setRules(FptcRules)
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getConnection_Rules()
+ * @model containment="true"
+ * @generated
+ */
+ FptcRules getRules();
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.Connection#getRules <em>Rules</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Rules</em>' containment reference.
+ * @see #getRules()
+ * @generated
+ */
+ void setRules(FptcRules value);
+
+} // Connection
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Connections.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Connections.java
new file mode 100644
index 0000000..014a57a
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Connections.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Connections</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.Connections#getConnection <em>Connection</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getConnections()
+ * @model extendedMetaData="name='connections' kind='elementOnly'"
+ * @generated
+ */
+public interface Connections extends EObject {
+ /**
+ * Returns the value of the '<em><b>Connection</b></em>' containment reference list.
+ * The list contents are of type {@link org.polarsys.chess.fla.flaxml.Connection}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Connection</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Connection</em>' containment reference list.
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getConnections_Connection()
+ * @model containment="true" required="true"
+ * extendedMetaData="kind='element' name='connection' namespace='##targetNamespace'"
+ * @generated
+ */
+ EList<Connection> getConnection();
+
+} // Connections
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/DocumentRoot.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/DocumentRoot.java
new file mode 100644
index 0000000..84a2b09
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/DocumentRoot.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.common.util.EMap;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.util.FeatureMap;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Document Root</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.DocumentRoot#getMixed <em>Mixed</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flaxml.DocumentRoot#getXMLNSPrefixMap <em>XMLNS Prefix Map</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flaxml.DocumentRoot#getXSISchemaLocation <em>XSI Schema Location</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flaxml.DocumentRoot#getSystem <em>System</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getDocumentRoot()
+ * @model extendedMetaData="name='' kind='mixed'"
+ * @generated
+ */
+public interface DocumentRoot extends EObject {
+ /**
+ * Returns the value of the '<em><b>Mixed</b></em>' attribute list.
+ * The list contents are of type {@link org.eclipse.emf.ecore.util.FeatureMap.Entry}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Mixed</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Mixed</em>' attribute list.
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getDocumentRoot_Mixed()
+ * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+ * extendedMetaData="kind='elementWildcard' name=':mixed'"
+ * @generated
+ */
+ FeatureMap getMixed();
+
+ /**
+ * Returns the value of the '<em><b>XMLNS Prefix Map</b></em>' map.
+ * The key is of type {@link java.lang.String},
+ * and the value is of type {@link java.lang.String},
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>XMLNS Prefix Map</em>' map isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>XMLNS Prefix Map</em>' map.
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getDocumentRoot_XMLNSPrefixMap()
+ * @model mapType="org.eclipse.emf.ecore.EStringToStringMapEntry<org.eclipse.emf.ecore.EString, org.eclipse.emf.ecore.EString>" transient="true"
+ * extendedMetaData="kind='attribute' name='xmlns:prefix'"
+ * @generated
+ */
+ EMap<String, String> getXMLNSPrefixMap();
+
+ /**
+ * Returns the value of the '<em><b>XSI Schema Location</b></em>' map.
+ * The key is of type {@link java.lang.String},
+ * and the value is of type {@link java.lang.String},
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>XSI Schema Location</em>' map isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>XSI Schema Location</em>' map.
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getDocumentRoot_XSISchemaLocation()
+ * @model mapType="org.eclipse.emf.ecore.EStringToStringMapEntry<org.eclipse.emf.ecore.EString, org.eclipse.emf.ecore.EString>" transient="true"
+ * extendedMetaData="kind='attribute' name='xsi:schemaLocation'"
+ * @generated
+ */
+ EMap<String, String> getXSISchemaLocation();
+
+ /**
+ * Returns the value of the '<em><b>System</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>System</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>System</em>' containment reference.
+ * @see #setSystem(org.polarsys.chess.fla.flaxml.System)
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getDocumentRoot_System()
+ * @model containment="true" upper="-2" transient="true" volatile="true" derived="true"
+ * extendedMetaData="kind='element' name='system' namespace='##targetNamespace'"
+ * @generated
+ */
+ org.polarsys.chess.fla.flaxml.System getSystem();
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.DocumentRoot#getSystem <em>System</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>System</em>' containment reference.
+ * @see #getSystem()
+ * @generated
+ */
+ void setSystem(org.polarsys.chess.fla.flaxml.System value);
+
+} // DocumentRoot
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Failure.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Failure.java
new file mode 100644
index 0000000..bae4c94
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Failure.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Failure</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.Failure#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getFailure()
+ * @model extendedMetaData="name='failure' kind='empty'"
+ * @generated
+ */
+public interface Failure extends EObject {
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' attribute.
+ * The literals are from the enumeration {@link org.polarsys.chess.fla.flaxml.FailureType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type</em>' attribute.
+ * @see org.polarsys.chess.fla.flaxml.FailureType
+ * @see #isSetType()
+ * @see #unsetType()
+ * @see #setType(FailureType)
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getFailure_Type()
+ * @model unsettable="true" required="true"
+ * extendedMetaData="kind='attribute' name='type'"
+ * @generated
+ */
+ FailureType getType();
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.Failure#getType <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type</em>' attribute.
+ * @see org.polarsys.chess.fla.flaxml.FailureType
+ * @see #isSetType()
+ * @see #unsetType()
+ * @see #getType()
+ * @generated
+ */
+ void setType(FailureType value);
+
+ /**
+ * Unsets the value of the '{@link org.polarsys.chess.fla.flaxml.Failure#getType <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetType()
+ * @see #getType()
+ * @see #setType(FailureType)
+ * @generated
+ */
+ void unsetType();
+
+ /**
+ * Returns whether the value of the '{@link org.polarsys.chess.fla.flaxml.Failure#getType <em>Type</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Type</em>' attribute is set.
+ * @see #unsetType()
+ * @see #getType()
+ * @see #setType(FailureType)
+ * @generated
+ */
+ boolean isSetType();
+
+} // Failure
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/FailureType.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/FailureType.java
new file mode 100644
index 0000000..16a81ac
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/FailureType.java
@@ -0,0 +1,355 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Failure Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getFailureType()
+ * @model extendedMetaData="name='failureType'"
+ * @generated
+ */
+public enum FailureType implements Enumerator {
+ /**
+ * The '<em><b>No Failure</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #NO_FAILURE_VALUE
+ * @generated
+ * @ordered
+ */
+ NO_FAILURE(0, "noFailure", "noFailure"),
+
+ /**
+ * The '<em><b>Late</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #LATE_VALUE
+ * @generated
+ * @ordered
+ */
+ LATE(1, "late", "late"),
+
+ /**
+ * The '<em><b>Early</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #EARLY_VALUE
+ * @generated
+ * @ordered
+ */
+ EARLY(2, "early", "early"),
+
+ /**
+ * The '<em><b>Value Subtle</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #VALUE_SUBTLE_VALUE
+ * @generated
+ * @ordered
+ */
+ VALUE_SUBTLE(3, "valueSubtle", "valueSubtle"),
+
+ /**
+ * The '<em><b>Value Coarse</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #VALUE_COARSE_VALUE
+ * @generated
+ * @ordered
+ */
+ VALUE_COARSE(4, "valueCoarse", "valueCoarse"),
+
+ /**
+ * The '<em><b>Omission</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #OMISSION_VALUE
+ * @generated
+ * @ordered
+ */
+ OMISSION(5, "omission", "omission"),
+
+ /**
+ * The '<em><b>Commission</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #COMMISSION_VALUE
+ * @generated
+ * @ordered
+ */
+ COMMISSION(6, "commission", "commission");
+
+ /**
+ * The '<em><b>No Failure</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>No Failure</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #NO_FAILURE
+ * @model name="noFailure"
+ * @generated
+ * @ordered
+ */
+ public static final int NO_FAILURE_VALUE = 0;
+
+ /**
+ * The '<em><b>Late</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Late</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #LATE
+ * @model name="late"
+ * @generated
+ * @ordered
+ */
+ public static final int LATE_VALUE = 1;
+
+ /**
+ * The '<em><b>Early</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Early</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #EARLY
+ * @model name="early"
+ * @generated
+ * @ordered
+ */
+ public static final int EARLY_VALUE = 2;
+
+ /**
+ * The '<em><b>Value Subtle</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Value Subtle</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #VALUE_SUBTLE
+ * @model name="valueSubtle"
+ * @generated
+ * @ordered
+ */
+ public static final int VALUE_SUBTLE_VALUE = 3;
+
+ /**
+ * The '<em><b>Value Coarse</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Value Coarse</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #VALUE_COARSE
+ * @model name="valueCoarse"
+ * @generated
+ * @ordered
+ */
+ public static final int VALUE_COARSE_VALUE = 4;
+
+ /**
+ * The '<em><b>Omission</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Omission</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #OMISSION
+ * @model name="omission"
+ * @generated
+ * @ordered
+ */
+ public static final int OMISSION_VALUE = 5;
+
+ /**
+ * The '<em><b>Commission</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Commission</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #COMMISSION
+ * @model name="commission"
+ * @generated
+ * @ordered
+ */
+ public static final int COMMISSION_VALUE = 6;
+
+ /**
+ * An array of all the '<em><b>Failure Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final FailureType[] VALUES_ARRAY =
+ new FailureType[] {
+ NO_FAILURE,
+ LATE,
+ EARLY,
+ VALUE_SUBTLE,
+ VALUE_COARSE,
+ OMISSION,
+ COMMISSION,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Failure Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<FailureType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Failure Type</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static FailureType get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ FailureType result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Failure Type</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static FailureType getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ FailureType result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Failure Type</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static FailureType get(int value) {
+ switch (value) {
+ case NO_FAILURE_VALUE: return NO_FAILURE;
+ case LATE_VALUE: return LATE;
+ case EARLY_VALUE: return EARLY;
+ case VALUE_SUBTLE_VALUE: return VALUE_SUBTLE;
+ case VALUE_COARSE_VALUE: return VALUE_COARSE;
+ case OMISSION_VALUE: return OMISSION;
+ case COMMISSION_VALUE: return COMMISSION;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private FailureType(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} //FailureType
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/FlaxmlFactory.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/FlaxmlFactory.java
new file mode 100644
index 0000000..b44e44b
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/FlaxmlFactory.java
@@ -0,0 +1,180 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage
+ * @generated
+ */
+public interface FlaxmlFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ FlaxmlFactory eINSTANCE = org.polarsys.chess.fla.flaxml.impl.FlaxmlFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Components</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Components</em>'.
+ * @generated
+ */
+ Components createComponents();
+
+ /**
+ * Returns a new object of class '<em>Composite Component</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Composite Component</em>'.
+ * @generated
+ */
+ CompositeComponent createCompositeComponent();
+
+ /**
+ * Returns a new object of class '<em>Connection</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Connection</em>'.
+ * @generated
+ */
+ Connection createConnection();
+
+ /**
+ * Returns a new object of class '<em>Connections</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Connections</em>'.
+ * @generated
+ */
+ Connections createConnections();
+
+ /**
+ * Returns a new object of class '<em>Document Root</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Document Root</em>'.
+ * @generated
+ */
+ DocumentRoot createDocumentRoot();
+
+ /**
+ * Returns a new object of class '<em>Failure</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Failure</em>'.
+ * @generated
+ */
+ Failure createFailure();
+
+ /**
+ * Returns a new object of class '<em>Fptc Rules</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Fptc Rules</em>'.
+ * @generated
+ */
+ FptcRules createFptcRules();
+
+ /**
+ * Returns a new object of class '<em>Input Port</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Input Port</em>'.
+ * @generated
+ */
+ InputPort createInputPort();
+
+ /**
+ * Returns a new object of class '<em>Input Ports</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Input Ports</em>'.
+ * @generated
+ */
+ InputPorts createInputPorts();
+
+ /**
+ * Returns a new object of class '<em>Named Element</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Named Element</em>'.
+ * @generated
+ */
+ NamedElement createNamedElement();
+
+ /**
+ * Returns a new object of class '<em>Output Port</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Output Port</em>'.
+ * @generated
+ */
+ OutputPort createOutputPort();
+
+ /**
+ * Returns a new object of class '<em>Output Ports</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Output Ports</em>'.
+ * @generated
+ */
+ OutputPorts createOutputPorts();
+
+ /**
+ * Returns a new object of class '<em>Rule String</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Rule String</em>'.
+ * @generated
+ */
+ RuleString createRuleString();
+
+ /**
+ * Returns a new object of class '<em>Simple Component</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Simple Component</em>'.
+ * @generated
+ */
+ SimpleComponent createSimpleComponent();
+
+ /**
+ * Returns a new object of class '<em>System</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>System</em>'.
+ * @generated
+ */
+ System createSystem();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ FlaxmlPackage getFlaxmlPackage();
+
+} //FlaxmlFactory
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/FlaxmlPackage.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/FlaxmlPackage.java
new file mode 100644
index 0000000..4f3883e
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/FlaxmlPackage.java
@@ -0,0 +1,1815 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface FlaxmlPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "flaxml";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://www.polarsys.org/chess/fla/flaxml";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "flaxml";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ FlaxmlPackage eINSTANCE = org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.NamedElementImpl <em>Named Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.NamedElementImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getNamedElement()
+ * @generated
+ */
+ int NAMED_ELEMENT = 10;
+
+ /**
+ * The feature id for the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NAMED_ELEMENT__ID = 0;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NAMED_ELEMENT__NAME = 1;
+
+ /**
+ * The number of structural features of the '<em>Named Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NAMED_ELEMENT_FEATURE_COUNT = 2;
+
+ /**
+ * The number of operations of the '<em>Named Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NAMED_ELEMENT_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.ComponentImpl <em>Component</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.ComponentImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getComponent()
+ * @generated
+ */
+ int COMPONENT = 0;
+
+ /**
+ * The feature id for the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPONENT__ID = NAMED_ELEMENT__ID;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPONENT__NAME = NAMED_ELEMENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Input Ports</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPONENT__INPUT_PORTS = NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Output Ports</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPONENT__OUTPUT_PORTS = NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Component</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPONENT_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of operations of the '<em>Component</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPONENT_OPERATION_COUNT = NAMED_ELEMENT_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.ComponentsImpl <em>Components</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.ComponentsImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getComponents()
+ * @generated
+ */
+ int COMPONENTS = 1;
+
+ /**
+ * The feature id for the '<em><b>Component</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPONENTS__COMPONENT = 0;
+
+ /**
+ * The number of structural features of the '<em>Components</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPONENTS_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Components</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPONENTS_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.CompositeComponentImpl <em>Composite Component</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.CompositeComponentImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getCompositeComponent()
+ * @generated
+ */
+ int COMPOSITE_COMPONENT = 2;
+
+ /**
+ * The feature id for the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPOSITE_COMPONENT__ID = COMPONENT__ID;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPOSITE_COMPONENT__NAME = COMPONENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Input Ports</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPOSITE_COMPONENT__INPUT_PORTS = COMPONENT__INPUT_PORTS;
+
+ /**
+ * The feature id for the '<em><b>Output Ports</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPOSITE_COMPONENT__OUTPUT_PORTS = COMPONENT__OUTPUT_PORTS;
+
+ /**
+ * The feature id for the '<em><b>Connections</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPOSITE_COMPONENT__CONNECTIONS = COMPONENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Components</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPOSITE_COMPONENT__COMPONENTS = COMPONENT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Composite Component</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPOSITE_COMPONENT_FEATURE_COUNT = COMPONENT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of operations of the '<em>Composite Component</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPOSITE_COMPONENT_OPERATION_COUNT = COMPONENT_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.ConnectionImpl <em>Connection</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.ConnectionImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getConnection()
+ * @generated
+ */
+ int CONNECTION = 3;
+
+ /**
+ * The feature id for the '<em><b>Source Component</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONNECTION__SOURCE_COMPONENT = 0;
+
+ /**
+ * The feature id for the '<em><b>Source Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONNECTION__SOURCE_ID = 1;
+
+ /**
+ * The feature id for the '<em><b>Target Component</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONNECTION__TARGET_COMPONENT = 2;
+
+ /**
+ * The feature id for the '<em><b>Target Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONNECTION__TARGET_ID = 3;
+
+ /**
+ * The feature id for the '<em><b>Rules</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONNECTION__RULES = 4;
+
+ /**
+ * The number of structural features of the '<em>Connection</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONNECTION_FEATURE_COUNT = 5;
+
+ /**
+ * The number of operations of the '<em>Connection</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONNECTION_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.ConnectionsImpl <em>Connections</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.ConnectionsImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getConnections()
+ * @generated
+ */
+ int CONNECTIONS = 4;
+
+ /**
+ * The feature id for the '<em><b>Connection</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONNECTIONS__CONNECTION = 0;
+
+ /**
+ * The number of structural features of the '<em>Connections</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONNECTIONS_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Connections</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONNECTIONS_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.DocumentRootImpl <em>Document Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.DocumentRootImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getDocumentRoot()
+ * @generated
+ */
+ int DOCUMENT_ROOT = 5;
+
+ /**
+ * The feature id for the '<em><b>Mixed</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__MIXED = 0;
+
+ /**
+ * The feature id for the '<em><b>XMLNS Prefix Map</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__XMLNS_PREFIX_MAP = 1;
+
+ /**
+ * The feature id for the '<em><b>XSI Schema Location</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = 2;
+
+ /**
+ * The feature id for the '<em><b>System</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__SYSTEM = 3;
+
+ /**
+ * The number of structural features of the '<em>Document Root</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT_FEATURE_COUNT = 4;
+
+ /**
+ * The number of operations of the '<em>Document Root</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.FailureImpl <em>Failure</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.FailureImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getFailure()
+ * @generated
+ */
+ int FAILURE = 6;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FAILURE__TYPE = 0;
+
+ /**
+ * The number of structural features of the '<em>Failure</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FAILURE_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Failure</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FAILURE_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.FptcRulesImpl <em>Fptc Rules</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.FptcRulesImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getFptcRules()
+ * @generated
+ */
+ int FPTC_RULES = 7;
+
+ /**
+ * The feature id for the '<em><b>Rule</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FPTC_RULES__RULE = 0;
+
+ /**
+ * The number of structural features of the '<em>Fptc Rules</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FPTC_RULES_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Fptc Rules</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FPTC_RULES_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.InputPortImpl <em>Input Port</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.InputPortImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getInputPort()
+ * @generated
+ */
+ int INPUT_PORT = 8;
+
+ /**
+ * The feature id for the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INPUT_PORT__ID = NAMED_ELEMENT__ID;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INPUT_PORT__NAME = NAMED_ELEMENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Input Failure</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INPUT_PORT__INPUT_FAILURE = NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Input Port</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INPUT_PORT_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of operations of the '<em>Input Port</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INPUT_PORT_OPERATION_COUNT = NAMED_ELEMENT_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.InputPortsImpl <em>Input Ports</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.InputPortsImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getInputPorts()
+ * @generated
+ */
+ int INPUT_PORTS = 9;
+
+ /**
+ * The feature id for the '<em><b>Input Port</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INPUT_PORTS__INPUT_PORT = 0;
+
+ /**
+ * The number of structural features of the '<em>Input Ports</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INPUT_PORTS_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Input Ports</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INPUT_PORTS_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.OutputPortImpl <em>Output Port</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.OutputPortImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getOutputPort()
+ * @generated
+ */
+ int OUTPUT_PORT = 11;
+
+ /**
+ * The feature id for the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OUTPUT_PORT__ID = NAMED_ELEMENT__ID;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OUTPUT_PORT__NAME = NAMED_ELEMENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Output Failure</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OUTPUT_PORT__OUTPUT_FAILURE = NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Output Port</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OUTPUT_PORT_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of operations of the '<em>Output Port</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OUTPUT_PORT_OPERATION_COUNT = NAMED_ELEMENT_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.OutputPortsImpl <em>Output Ports</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.OutputPortsImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getOutputPorts()
+ * @generated
+ */
+ int OUTPUT_PORTS = 12;
+
+ /**
+ * The feature id for the '<em><b>Output Port</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OUTPUT_PORTS__OUTPUT_PORT = 0;
+
+ /**
+ * The number of structural features of the '<em>Output Ports</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OUTPUT_PORTS_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Output Ports</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OUTPUT_PORTS_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.RuleStringImpl <em>Rule String</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.RuleStringImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getRuleString()
+ * @generated
+ */
+ int RULE_STRING = 13;
+
+ /**
+ * The feature id for the '<em><b>Pattern</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RULE_STRING__PATTERN = 0;
+
+ /**
+ * The number of structural features of the '<em>Rule String</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RULE_STRING_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Rule String</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RULE_STRING_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.SimpleComponentImpl <em>Simple Component</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.SimpleComponentImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getSimpleComponent()
+ * @generated
+ */
+ int SIMPLE_COMPONENT = 14;
+
+ /**
+ * The feature id for the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_COMPONENT__ID = COMPONENT__ID;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_COMPONENT__NAME = COMPONENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Input Ports</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_COMPONENT__INPUT_PORTS = COMPONENT__INPUT_PORTS;
+
+ /**
+ * The feature id for the '<em><b>Output Ports</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_COMPONENT__OUTPUT_PORTS = COMPONENT__OUTPUT_PORTS;
+
+ /**
+ * The feature id for the '<em><b>Rules</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_COMPONENT__RULES = COMPONENT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Simple Component</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_COMPONENT_FEATURE_COUNT = COMPONENT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of operations of the '<em>Simple Component</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_COMPONENT_OPERATION_COUNT = COMPONENT_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.SystemImpl <em>System</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.SystemImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getSystem()
+ * @generated
+ */
+ int SYSTEM = 15;
+
+ /**
+ * The feature id for the '<em><b>Component</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SYSTEM__COMPONENT = 0;
+
+ /**
+ * The number of structural features of the '<em>System</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SYSTEM_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>System</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SYSTEM_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.FailureType <em>Failure Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.FailureType
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getFailureType()
+ * @generated
+ */
+ int FAILURE_TYPE = 16;
+
+ /**
+ * The meta object id for the '<em>Failure Type Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.FailureType
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getFailureTypeObject()
+ * @generated
+ */
+ int FAILURE_TYPE_OBJECT = 17;
+
+ /**
+ * The meta object id for the '<em>Pattern Type</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getPatternType()
+ * @generated
+ */
+ int PATTERN_TYPE = 18;
+
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.Component <em>Component</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Component</em>'.
+ * @see org.polarsys.chess.fla.flaxml.Component
+ * @generated
+ */
+ EClass getComponent();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.polarsys.chess.fla.flaxml.Component#getInputPorts <em>Input Ports</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Input Ports</em>'.
+ * @see org.polarsys.chess.fla.flaxml.Component#getInputPorts()
+ * @see #getComponent()
+ * @generated
+ */
+ EReference getComponent_InputPorts();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.polarsys.chess.fla.flaxml.Component#getOutputPorts <em>Output Ports</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Output Ports</em>'.
+ * @see org.polarsys.chess.fla.flaxml.Component#getOutputPorts()
+ * @see #getComponent()
+ * @generated
+ */
+ EReference getComponent_OutputPorts();
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.Components <em>Components</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Components</em>'.
+ * @see org.polarsys.chess.fla.flaxml.Components
+ * @generated
+ */
+ EClass getComponents();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flaxml.Components#getComponent <em>Component</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Component</em>'.
+ * @see org.polarsys.chess.fla.flaxml.Components#getComponent()
+ * @see #getComponents()
+ * @generated
+ */
+ EReference getComponents_Component();
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.CompositeComponent <em>Composite Component</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Composite Component</em>'.
+ * @see org.polarsys.chess.fla.flaxml.CompositeComponent
+ * @generated
+ */
+ EClass getCompositeComponent();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.polarsys.chess.fla.flaxml.CompositeComponent#getConnections <em>Connections</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Connections</em>'.
+ * @see org.polarsys.chess.fla.flaxml.CompositeComponent#getConnections()
+ * @see #getCompositeComponent()
+ * @generated
+ */
+ EReference getCompositeComponent_Connections();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.polarsys.chess.fla.flaxml.CompositeComponent#getComponents <em>Components</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Components</em>'.
+ * @see org.polarsys.chess.fla.flaxml.CompositeComponent#getComponents()
+ * @see #getCompositeComponent()
+ * @generated
+ */
+ EReference getCompositeComponent_Components();
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.Connection <em>Connection</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Connection</em>'.
+ * @see org.polarsys.chess.fla.flaxml.Connection
+ * @generated
+ */
+ EClass getConnection();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flaxml.Connection#getSourceComponent <em>Source Component</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Source Component</em>'.
+ * @see org.polarsys.chess.fla.flaxml.Connection#getSourceComponent()
+ * @see #getConnection()
+ * @generated
+ */
+ EAttribute getConnection_SourceComponent();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flaxml.Connection#getSourceId <em>Source Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Source Id</em>'.
+ * @see org.polarsys.chess.fla.flaxml.Connection#getSourceId()
+ * @see #getConnection()
+ * @generated
+ */
+ EAttribute getConnection_SourceId();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flaxml.Connection#getTargetComponent <em>Target Component</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Target Component</em>'.
+ * @see org.polarsys.chess.fla.flaxml.Connection#getTargetComponent()
+ * @see #getConnection()
+ * @generated
+ */
+ EAttribute getConnection_TargetComponent();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flaxml.Connection#getTargetId <em>Target Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Target Id</em>'.
+ * @see org.polarsys.chess.fla.flaxml.Connection#getTargetId()
+ * @see #getConnection()
+ * @generated
+ */
+ EAttribute getConnection_TargetId();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.polarsys.chess.fla.flaxml.Connection#getRules <em>Rules</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Rules</em>'.
+ * @see org.polarsys.chess.fla.flaxml.Connection#getRules()
+ * @see #getConnection()
+ * @generated
+ */
+ EReference getConnection_Rules();
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.Connections <em>Connections</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Connections</em>'.
+ * @see org.polarsys.chess.fla.flaxml.Connections
+ * @generated
+ */
+ EClass getConnections();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flaxml.Connections#getConnection <em>Connection</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Connection</em>'.
+ * @see org.polarsys.chess.fla.flaxml.Connections#getConnection()
+ * @see #getConnections()
+ * @generated
+ */
+ EReference getConnections_Connection();
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.DocumentRoot <em>Document Root</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Document Root</em>'.
+ * @see org.polarsys.chess.fla.flaxml.DocumentRoot
+ * @generated
+ */
+ EClass getDocumentRoot();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.polarsys.chess.fla.flaxml.DocumentRoot#getMixed <em>Mixed</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Mixed</em>'.
+ * @see org.polarsys.chess.fla.flaxml.DocumentRoot#getMixed()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ EAttribute getDocumentRoot_Mixed();
+
+ /**
+ * Returns the meta object for the map '{@link org.polarsys.chess.fla.flaxml.DocumentRoot#getXMLNSPrefixMap <em>XMLNS Prefix Map</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the map '<em>XMLNS Prefix Map</em>'.
+ * @see org.polarsys.chess.fla.flaxml.DocumentRoot#getXMLNSPrefixMap()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ EReference getDocumentRoot_XMLNSPrefixMap();
+
+ /**
+ * Returns the meta object for the map '{@link org.polarsys.chess.fla.flaxml.DocumentRoot#getXSISchemaLocation <em>XSI Schema Location</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the map '<em>XSI Schema Location</em>'.
+ * @see org.polarsys.chess.fla.flaxml.DocumentRoot#getXSISchemaLocation()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ EReference getDocumentRoot_XSISchemaLocation();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.polarsys.chess.fla.flaxml.DocumentRoot#getSystem <em>System</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>System</em>'.
+ * @see org.polarsys.chess.fla.flaxml.DocumentRoot#getSystem()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ EReference getDocumentRoot_System();
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.Failure <em>Failure</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Failure</em>'.
+ * @see org.polarsys.chess.fla.flaxml.Failure
+ * @generated
+ */
+ EClass getFailure();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flaxml.Failure#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Type</em>'.
+ * @see org.polarsys.chess.fla.flaxml.Failure#getType()
+ * @see #getFailure()
+ * @generated
+ */
+ EAttribute getFailure_Type();
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.FptcRules <em>Fptc Rules</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Fptc Rules</em>'.
+ * @see org.polarsys.chess.fla.flaxml.FptcRules
+ * @generated
+ */
+ EClass getFptcRules();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flaxml.FptcRules#getRule <em>Rule</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Rule</em>'.
+ * @see org.polarsys.chess.fla.flaxml.FptcRules#getRule()
+ * @see #getFptcRules()
+ * @generated
+ */
+ EReference getFptcRules_Rule();
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.InputPort <em>Input Port</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Input Port</em>'.
+ * @see org.polarsys.chess.fla.flaxml.InputPort
+ * @generated
+ */
+ EClass getInputPort();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flaxml.InputPort#getInputFailure <em>Input Failure</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Input Failure</em>'.
+ * @see org.polarsys.chess.fla.flaxml.InputPort#getInputFailure()
+ * @see #getInputPort()
+ * @generated
+ */
+ EReference getInputPort_InputFailure();
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.InputPorts <em>Input Ports</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Input Ports</em>'.
+ * @see org.polarsys.chess.fla.flaxml.InputPorts
+ * @generated
+ */
+ EClass getInputPorts();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flaxml.InputPorts#getInputPort <em>Input Port</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Input Port</em>'.
+ * @see org.polarsys.chess.fla.flaxml.InputPorts#getInputPort()
+ * @see #getInputPorts()
+ * @generated
+ */
+ EReference getInputPorts_InputPort();
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.NamedElement <em>Named Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Named Element</em>'.
+ * @see org.polarsys.chess.fla.flaxml.NamedElement
+ * @generated
+ */
+ EClass getNamedElement();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flaxml.NamedElement#getId <em>Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Id</em>'.
+ * @see org.polarsys.chess.fla.flaxml.NamedElement#getId()
+ * @see #getNamedElement()
+ * @generated
+ */
+ EAttribute getNamedElement_Id();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flaxml.NamedElement#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.polarsys.chess.fla.flaxml.NamedElement#getName()
+ * @see #getNamedElement()
+ * @generated
+ */
+ EAttribute getNamedElement_Name();
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.OutputPort <em>Output Port</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Output Port</em>'.
+ * @see org.polarsys.chess.fla.flaxml.OutputPort
+ * @generated
+ */
+ EClass getOutputPort();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flaxml.OutputPort#getOutputFailure <em>Output Failure</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Output Failure</em>'.
+ * @see org.polarsys.chess.fla.flaxml.OutputPort#getOutputFailure()
+ * @see #getOutputPort()
+ * @generated
+ */
+ EReference getOutputPort_OutputFailure();
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.OutputPorts <em>Output Ports</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Output Ports</em>'.
+ * @see org.polarsys.chess.fla.flaxml.OutputPorts
+ * @generated
+ */
+ EClass getOutputPorts();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flaxml.OutputPorts#getOutputPort <em>Output Port</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Output Port</em>'.
+ * @see org.polarsys.chess.fla.flaxml.OutputPorts#getOutputPort()
+ * @see #getOutputPorts()
+ * @generated
+ */
+ EReference getOutputPorts_OutputPort();
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.RuleString <em>Rule String</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Rule String</em>'.
+ * @see org.polarsys.chess.fla.flaxml.RuleString
+ * @generated
+ */
+ EClass getRuleString();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flaxml.RuleString#getPattern <em>Pattern</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Pattern</em>'.
+ * @see org.polarsys.chess.fla.flaxml.RuleString#getPattern()
+ * @see #getRuleString()
+ * @generated
+ */
+ EAttribute getRuleString_Pattern();
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.SimpleComponent <em>Simple Component</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Simple Component</em>'.
+ * @see org.polarsys.chess.fla.flaxml.SimpleComponent
+ * @generated
+ */
+ EClass getSimpleComponent();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.polarsys.chess.fla.flaxml.SimpleComponent#getRules <em>Rules</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Rules</em>'.
+ * @see org.polarsys.chess.fla.flaxml.SimpleComponent#getRules()
+ * @see #getSimpleComponent()
+ * @generated
+ */
+ EReference getSimpleComponent_Rules();
+
+ /**
+ * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.System <em>System</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>System</em>'.
+ * @see org.polarsys.chess.fla.flaxml.System
+ * @generated
+ */
+ EClass getSystem();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.polarsys.chess.fla.flaxml.System#getComponent <em>Component</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Component</em>'.
+ * @see org.polarsys.chess.fla.flaxml.System#getComponent()
+ * @see #getSystem()
+ * @generated
+ */
+ EReference getSystem_Component();
+
+ /**
+ * Returns the meta object for enum '{@link org.polarsys.chess.fla.flaxml.FailureType <em>Failure Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Failure Type</em>'.
+ * @see org.polarsys.chess.fla.flaxml.FailureType
+ * @generated
+ */
+ EEnum getFailureType();
+
+ /**
+ * Returns the meta object for data type '{@link org.polarsys.chess.fla.flaxml.FailureType <em>Failure Type Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Failure Type Object</em>'.
+ * @see org.polarsys.chess.fla.flaxml.FailureType
+ * @model instanceClass="org.polarsys.chess.fla.flaxml.FailureType"
+ * extendedMetaData="name='failureType:Object' baseType='failureType'"
+ * @generated
+ */
+ EDataType getFailureTypeObject();
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.String <em>Pattern Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Pattern Type</em>'.
+ * @see java.lang.String
+ * @model instanceClass="java.lang.String"
+ * extendedMetaData="name='pattern_._type' baseType='http://www.eclipse.org/emf/2003/XMLType#string' pattern='[^>]+\\.[^>]+->[^>]+\\.[^>]+'"
+ * @generated
+ */
+ EDataType getPatternType();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ FlaxmlFactory getFlaxmlFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.ComponentImpl <em>Component</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.ComponentImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getComponent()
+ * @generated
+ */
+ EClass COMPONENT = eINSTANCE.getComponent();
+
+ /**
+ * The meta object literal for the '<em><b>Input Ports</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference COMPONENT__INPUT_PORTS = eINSTANCE.getComponent_InputPorts();
+
+ /**
+ * The meta object literal for the '<em><b>Output Ports</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference COMPONENT__OUTPUT_PORTS = eINSTANCE.getComponent_OutputPorts();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.ComponentsImpl <em>Components</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.ComponentsImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getComponents()
+ * @generated
+ */
+ EClass COMPONENTS = eINSTANCE.getComponents();
+
+ /**
+ * The meta object literal for the '<em><b>Component</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference COMPONENTS__COMPONENT = eINSTANCE.getComponents_Component();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.CompositeComponentImpl <em>Composite Component</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.CompositeComponentImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getCompositeComponent()
+ * @generated
+ */
+ EClass COMPOSITE_COMPONENT = eINSTANCE.getCompositeComponent();
+
+ /**
+ * The meta object literal for the '<em><b>Connections</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference COMPOSITE_COMPONENT__CONNECTIONS = eINSTANCE.getCompositeComponent_Connections();
+
+ /**
+ * The meta object literal for the '<em><b>Components</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference COMPOSITE_COMPONENT__COMPONENTS = eINSTANCE.getCompositeComponent_Components();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.ConnectionImpl <em>Connection</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.ConnectionImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getConnection()
+ * @generated
+ */
+ EClass CONNECTION = eINSTANCE.getConnection();
+
+ /**
+ * The meta object literal for the '<em><b>Source Component</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CONNECTION__SOURCE_COMPONENT = eINSTANCE.getConnection_SourceComponent();
+
+ /**
+ * The meta object literal for the '<em><b>Source Id</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CONNECTION__SOURCE_ID = eINSTANCE.getConnection_SourceId();
+
+ /**
+ * The meta object literal for the '<em><b>Target Component</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CONNECTION__TARGET_COMPONENT = eINSTANCE.getConnection_TargetComponent();
+
+ /**
+ * The meta object literal for the '<em><b>Target Id</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CONNECTION__TARGET_ID = eINSTANCE.getConnection_TargetId();
+
+ /**
+ * The meta object literal for the '<em><b>Rules</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CONNECTION__RULES = eINSTANCE.getConnection_Rules();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.ConnectionsImpl <em>Connections</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.ConnectionsImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getConnections()
+ * @generated
+ */
+ EClass CONNECTIONS = eINSTANCE.getConnections();
+
+ /**
+ * The meta object literal for the '<em><b>Connection</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CONNECTIONS__CONNECTION = eINSTANCE.getConnections_Connection();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.DocumentRootImpl <em>Document Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.DocumentRootImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getDocumentRoot()
+ * @generated
+ */
+ EClass DOCUMENT_ROOT = eINSTANCE.getDocumentRoot();
+
+ /**
+ * The meta object literal for the '<em><b>Mixed</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DOCUMENT_ROOT__MIXED = eINSTANCE.getDocumentRoot_Mixed();
+
+ /**
+ * The meta object literal for the '<em><b>XMLNS Prefix Map</b></em>' map feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DOCUMENT_ROOT__XMLNS_PREFIX_MAP = eINSTANCE.getDocumentRoot_XMLNSPrefixMap();
+
+ /**
+ * The meta object literal for the '<em><b>XSI Schema Location</b></em>' map feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = eINSTANCE.getDocumentRoot_XSISchemaLocation();
+
+ /**
+ * The meta object literal for the '<em><b>System</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DOCUMENT_ROOT__SYSTEM = eINSTANCE.getDocumentRoot_System();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.FailureImpl <em>Failure</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.FailureImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getFailure()
+ * @generated
+ */
+ EClass FAILURE = eINSTANCE.getFailure();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FAILURE__TYPE = eINSTANCE.getFailure_Type();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.FptcRulesImpl <em>Fptc Rules</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.FptcRulesImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getFptcRules()
+ * @generated
+ */
+ EClass FPTC_RULES = eINSTANCE.getFptcRules();
+
+ /**
+ * The meta object literal for the '<em><b>Rule</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference FPTC_RULES__RULE = eINSTANCE.getFptcRules_Rule();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.InputPortImpl <em>Input Port</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.InputPortImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getInputPort()
+ * @generated
+ */
+ EClass INPUT_PORT = eINSTANCE.getInputPort();
+
+ /**
+ * The meta object literal for the '<em><b>Input Failure</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INPUT_PORT__INPUT_FAILURE = eINSTANCE.getInputPort_InputFailure();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.InputPortsImpl <em>Input Ports</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.InputPortsImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getInputPorts()
+ * @generated
+ */
+ EClass INPUT_PORTS = eINSTANCE.getInputPorts();
+
+ /**
+ * The meta object literal for the '<em><b>Input Port</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INPUT_PORTS__INPUT_PORT = eINSTANCE.getInputPorts_InputPort();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.NamedElementImpl <em>Named Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.NamedElementImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getNamedElement()
+ * @generated
+ */
+ EClass NAMED_ELEMENT = eINSTANCE.getNamedElement();
+
+ /**
+ * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute NAMED_ELEMENT__ID = eINSTANCE.getNamedElement_Id();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute NAMED_ELEMENT__NAME = eINSTANCE.getNamedElement_Name();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.OutputPortImpl <em>Output Port</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.OutputPortImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getOutputPort()
+ * @generated
+ */
+ EClass OUTPUT_PORT = eINSTANCE.getOutputPort();
+
+ /**
+ * The meta object literal for the '<em><b>Output Failure</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference OUTPUT_PORT__OUTPUT_FAILURE = eINSTANCE.getOutputPort_OutputFailure();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.OutputPortsImpl <em>Output Ports</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.OutputPortsImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getOutputPorts()
+ * @generated
+ */
+ EClass OUTPUT_PORTS = eINSTANCE.getOutputPorts();
+
+ /**
+ * The meta object literal for the '<em><b>Output Port</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference OUTPUT_PORTS__OUTPUT_PORT = eINSTANCE.getOutputPorts_OutputPort();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.RuleStringImpl <em>Rule String</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.RuleStringImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getRuleString()
+ * @generated
+ */
+ EClass RULE_STRING = eINSTANCE.getRuleString();
+
+ /**
+ * The meta object literal for the '<em><b>Pattern</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute RULE_STRING__PATTERN = eINSTANCE.getRuleString_Pattern();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.SimpleComponentImpl <em>Simple Component</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.SimpleComponentImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getSimpleComponent()
+ * @generated
+ */
+ EClass SIMPLE_COMPONENT = eINSTANCE.getSimpleComponent();
+
+ /**
+ * The meta object literal for the '<em><b>Rules</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SIMPLE_COMPONENT__RULES = eINSTANCE.getSimpleComponent_Rules();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.SystemImpl <em>System</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.impl.SystemImpl
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getSystem()
+ * @generated
+ */
+ EClass SYSTEM = eINSTANCE.getSystem();
+
+ /**
+ * The meta object literal for the '<em><b>Component</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SYSTEM__COMPONENT = eINSTANCE.getSystem_Component();
+
+ /**
+ * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.FailureType <em>Failure Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.FailureType
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getFailureType()
+ * @generated
+ */
+ EEnum FAILURE_TYPE = eINSTANCE.getFailureType();
+
+ /**
+ * The meta object literal for the '<em>Failure Type Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.FailureType
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getFailureTypeObject()
+ * @generated
+ */
+ EDataType FAILURE_TYPE_OBJECT = eINSTANCE.getFailureTypeObject();
+
+ /**
+ * The meta object literal for the '<em>Pattern Type</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getPatternType()
+ * @generated
+ */
+ EDataType PATTERN_TYPE = eINSTANCE.getPatternType();
+
+ }
+
+} //FlaxmlPackage
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/FptcRules.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/FptcRules.java
new file mode 100644
index 0000000..0fe17d8
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/FptcRules.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Fptc Rules</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.FptcRules#getRule <em>Rule</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getFptcRules()
+ * @model extendedMetaData="name='fptcRules' kind='elementOnly'"
+ * @generated
+ */
+public interface FptcRules extends EObject {
+ /**
+ * Returns the value of the '<em><b>Rule</b></em>' containment reference list.
+ * The list contents are of type {@link org.polarsys.chess.fla.flaxml.RuleString}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Rule</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Rule</em>' containment reference list.
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getFptcRules_Rule()
+ * @model containment="true" required="true"
+ * extendedMetaData="kind='element' name='rule' namespace='##targetNamespace'"
+ * @generated
+ */
+ EList<RuleString> getRule();
+
+} // FptcRules
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/InputPort.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/InputPort.java
new file mode 100644
index 0000000..87f7ecb
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/InputPort.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Input Port</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.InputPort#getInputFailure <em>Input Failure</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getInputPort()
+ * @model extendedMetaData="name='inputPort' kind='elementOnly'"
+ * @generated
+ */
+public interface InputPort extends NamedElement {
+ /**
+ * Returns the value of the '<em><b>Input Failure</b></em>' containment reference list.
+ * The list contents are of type {@link org.polarsys.chess.fla.flaxml.Failure}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Input Failure</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Input Failure</em>' containment reference list.
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getInputPort_InputFailure()
+ * @model containment="true"
+ * extendedMetaData="kind='element' name='inputFailure' namespace='##targetNamespace'"
+ * @generated
+ */
+ EList<Failure> getInputFailure();
+
+} // InputPort
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/InputPorts.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/InputPorts.java
new file mode 100644
index 0000000..1913da8
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/InputPorts.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Input Ports</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.InputPorts#getInputPort <em>Input Port</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getInputPorts()
+ * @model extendedMetaData="name='inputPorts' kind='elementOnly'"
+ * @generated
+ */
+public interface InputPorts extends EObject {
+ /**
+ * Returns the value of the '<em><b>Input Port</b></em>' containment reference list.
+ * The list contents are of type {@link org.polarsys.chess.fla.flaxml.InputPort}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Input Port</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Input Port</em>' containment reference list.
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getInputPorts_InputPort()
+ * @model containment="true"
+ * extendedMetaData="kind='element' name='inputPort' namespace='##targetNamespace'"
+ * @generated
+ */
+ EList<InputPort> getInputPort();
+
+} // InputPorts
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/NamedElement.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/NamedElement.java
new file mode 100644
index 0000000..90b068e
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/NamedElement.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Named Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.NamedElement#getId <em>Id</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flaxml.NamedElement#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getNamedElement()
+ * @model extendedMetaData="name='namedElement' kind='empty'"
+ * @generated
+ */
+public interface NamedElement extends EObject {
+ /**
+ * Returns the value of the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Id</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Id</em>' attribute.
+ * @see #setId(String)
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getNamedElement_Id()
+ * @model dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+ * extendedMetaData="kind='attribute' name='id'"
+ * @generated
+ */
+ String getId();
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.NamedElement#getId <em>Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Id</em>' attribute.
+ * @see #getId()
+ * @generated
+ */
+ void setId(String value);
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getNamedElement_Name()
+ * @model dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+ * extendedMetaData="kind='attribute' name='name'"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.NamedElement#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+} // NamedElement
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/OutputPort.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/OutputPort.java
new file mode 100644
index 0000000..4322ab5
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/OutputPort.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Output Port</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.OutputPort#getOutputFailure <em>Output Failure</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getOutputPort()
+ * @model extendedMetaData="name='outputPort' kind='elementOnly'"
+ * @generated
+ */
+public interface OutputPort extends NamedElement {
+ /**
+ * Returns the value of the '<em><b>Output Failure</b></em>' containment reference list.
+ * The list contents are of type {@link org.polarsys.chess.fla.flaxml.Failure}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Output Failure</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Output Failure</em>' containment reference list.
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getOutputPort_OutputFailure()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Failure> getOutputFailure();
+
+} // OutputPort
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/OutputPorts.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/OutputPorts.java
new file mode 100644
index 0000000..dd9738f
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/OutputPorts.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Output Ports</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.OutputPorts#getOutputPort <em>Output Port</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getOutputPorts()
+ * @model extendedMetaData="name='outputPorts' kind='elementOnly'"
+ * @generated
+ */
+public interface OutputPorts extends EObject {
+ /**
+ * Returns the value of the '<em><b>Output Port</b></em>' containment reference list.
+ * The list contents are of type {@link org.polarsys.chess.fla.flaxml.OutputPort}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Output Port</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Output Port</em>' containment reference list.
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getOutputPorts_OutputPort()
+ * @model containment="true"
+ * extendedMetaData="kind='element' name='outputPort' namespace='##targetNamespace'"
+ * @generated
+ */
+ EList<OutputPort> getOutputPort();
+
+} // OutputPorts
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/RuleString.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/RuleString.java
new file mode 100644
index 0000000..493cd3e
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/RuleString.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Rule String</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.RuleString#getPattern <em>Pattern</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getRuleString()
+ * @model extendedMetaData="name='ruleString' kind='empty'"
+ * @generated
+ */
+public interface RuleString extends EObject {
+ /**
+ * Returns the value of the '<em><b>Pattern</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Pattern</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Pattern</em>' attribute.
+ * @see #setPattern(String)
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getRuleString_Pattern()
+ * @model dataType="org.polarsys.chess.fla.flaxml.PatternType" required="true"
+ * extendedMetaData="kind='attribute' name='pattern'"
+ * @generated
+ */
+ String getPattern();
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.RuleString#getPattern <em>Pattern</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Pattern</em>' attribute.
+ * @see #getPattern()
+ * @generated
+ */
+ void setPattern(String value);
+
+} // RuleString
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/SimpleComponent.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/SimpleComponent.java
new file mode 100644
index 0000000..68620fc
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/SimpleComponent.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Simple Component</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.SimpleComponent#getRules <em>Rules</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getSimpleComponent()
+ * @model extendedMetaData="name='simpleComponent' kind='elementOnly'"
+ * @generated
+ */
+public interface SimpleComponent extends Component {
+ /**
+ * Returns the value of the '<em><b>Rules</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Rules</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Rules</em>' containment reference.
+ * @see #setRules(FptcRules)
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getSimpleComponent_Rules()
+ * @model containment="true" required="true"
+ * extendedMetaData="kind='element' name='rules' namespace='##targetNamespace'"
+ * @generated
+ */
+ FptcRules getRules();
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.SimpleComponent#getRules <em>Rules</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Rules</em>' containment reference.
+ * @see #getRules()
+ * @generated
+ */
+ void setRules(FptcRules value);
+
+} // SimpleComponent
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/System.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/System.java
new file mode 100644
index 0000000..8d77383
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/System.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>System</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.System#getComponent <em>Component</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getSystem()
+ * @model extendedMetaData="name='system' kind='elementOnly'"
+ * @generated
+ */
+public interface System extends EObject {
+ /**
+ * Returns the value of the '<em><b>Component</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Component</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Component</em>' containment reference.
+ * @see #setComponent(Component)
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getSystem_Component()
+ * @model containment="true"
+ * extendedMetaData="kind='element' name='component' namespace='##targetNamespace'"
+ * @generated
+ */
+ Component getComponent();
+
+ /**
+ * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.System#getComponent <em>Component</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Component</em>' containment reference.
+ * @see #getComponent()
+ * @generated
+ */
+ void setComponent(Component value);
+
+} // System
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/ComponentImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/ComponentImpl.java
new file mode 100644
index 0000000..17ab644
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/ComponentImpl.java
@@ -0,0 +1,251 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.polarsys.chess.fla.flaxml.Component;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.InputPorts;
+import org.polarsys.chess.fla.flaxml.OutputPorts;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Component</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.ComponentImpl#getInputPorts <em>Input Ports</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.ComponentImpl#getOutputPorts <em>Output Ports</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class ComponentImpl extends NamedElementImpl implements Component {
+ /**
+ * The cached value of the '{@link #getInputPorts() <em>Input Ports</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInputPorts()
+ * @generated
+ * @ordered
+ */
+ protected InputPorts inputPorts;
+
+ /**
+ * The cached value of the '{@link #getOutputPorts() <em>Output Ports</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOutputPorts()
+ * @generated
+ * @ordered
+ */
+ protected OutputPorts outputPorts;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComponentImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlaxmlPackage.Literals.COMPONENT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InputPorts getInputPorts() {
+ return inputPorts;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetInputPorts(InputPorts newInputPorts, NotificationChain msgs) {
+ InputPorts oldInputPorts = inputPorts;
+ inputPorts = newInputPorts;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlaxmlPackage.COMPONENT__INPUT_PORTS, oldInputPorts, newInputPorts);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setInputPorts(InputPorts newInputPorts) {
+ if (newInputPorts != inputPorts) {
+ NotificationChain msgs = null;
+ if (inputPorts != null)
+ msgs = ((InternalEObject)inputPorts).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.COMPONENT__INPUT_PORTS, null, msgs);
+ if (newInputPorts != null)
+ msgs = ((InternalEObject)newInputPorts).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.COMPONENT__INPUT_PORTS, null, msgs);
+ msgs = basicSetInputPorts(newInputPorts, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.COMPONENT__INPUT_PORTS, newInputPorts, newInputPorts));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OutputPorts getOutputPorts() {
+ return outputPorts;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetOutputPorts(OutputPorts newOutputPorts, NotificationChain msgs) {
+ OutputPorts oldOutputPorts = outputPorts;
+ outputPorts = newOutputPorts;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlaxmlPackage.COMPONENT__OUTPUT_PORTS, oldOutputPorts, newOutputPorts);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOutputPorts(OutputPorts newOutputPorts) {
+ if (newOutputPorts != outputPorts) {
+ NotificationChain msgs = null;
+ if (outputPorts != null)
+ msgs = ((InternalEObject)outputPorts).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.COMPONENT__OUTPUT_PORTS, null, msgs);
+ if (newOutputPorts != null)
+ msgs = ((InternalEObject)newOutputPorts).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.COMPONENT__OUTPUT_PORTS, null, msgs);
+ msgs = basicSetOutputPorts(newOutputPorts, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.COMPONENT__OUTPUT_PORTS, newOutputPorts, newOutputPorts));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlaxmlPackage.COMPONENT__INPUT_PORTS:
+ return basicSetInputPorts(null, msgs);
+ case FlaxmlPackage.COMPONENT__OUTPUT_PORTS:
+ return basicSetOutputPorts(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlaxmlPackage.COMPONENT__INPUT_PORTS:
+ return getInputPorts();
+ case FlaxmlPackage.COMPONENT__OUTPUT_PORTS:
+ return getOutputPorts();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlaxmlPackage.COMPONENT__INPUT_PORTS:
+ setInputPorts((InputPorts)newValue);
+ return;
+ case FlaxmlPackage.COMPONENT__OUTPUT_PORTS:
+ setOutputPorts((OutputPorts)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.COMPONENT__INPUT_PORTS:
+ setInputPorts((InputPorts)null);
+ return;
+ case FlaxmlPackage.COMPONENT__OUTPUT_PORTS:
+ setOutputPorts((OutputPorts)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.COMPONENT__INPUT_PORTS:
+ return inputPorts != null;
+ case FlaxmlPackage.COMPONENT__OUTPUT_PORTS:
+ return outputPorts != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ComponentImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/ComponentsImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/ComponentsImpl.java
new file mode 100644
index 0000000..d349368
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/ComponentsImpl.java
@@ -0,0 +1,159 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.polarsys.chess.fla.flaxml.Component;
+import org.polarsys.chess.fla.flaxml.Components;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Components</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.ComponentsImpl#getComponent <em>Component</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ComponentsImpl extends MinimalEObjectImpl.Container implements Components {
+ /**
+ * The cached value of the '{@link #getComponent() <em>Component</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getComponent()
+ * @generated
+ * @ordered
+ */
+ protected EList<Component> component;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComponentsImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlaxmlPackage.Literals.COMPONENTS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Component> getComponent() {
+ if (component == null) {
+ component = new EObjectContainmentEList<Component>(Component.class, this, FlaxmlPackage.COMPONENTS__COMPONENT);
+ }
+ return component;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlaxmlPackage.COMPONENTS__COMPONENT:
+ return ((InternalEList<?>)getComponent()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlaxmlPackage.COMPONENTS__COMPONENT:
+ return getComponent();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlaxmlPackage.COMPONENTS__COMPONENT:
+ getComponent().clear();
+ getComponent().addAll((Collection<? extends Component>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.COMPONENTS__COMPONENT:
+ getComponent().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.COMPONENTS__COMPONENT:
+ return component != null && !component.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ComponentsImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/CompositeComponentImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/CompositeComponentImpl.java
new file mode 100644
index 0000000..4a8768a
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/CompositeComponentImpl.java
@@ -0,0 +1,251 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.polarsys.chess.fla.flaxml.Components;
+import org.polarsys.chess.fla.flaxml.CompositeComponent;
+import org.polarsys.chess.fla.flaxml.Connections;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Composite Component</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.CompositeComponentImpl#getConnections <em>Connections</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.CompositeComponentImpl#getComponents <em>Components</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CompositeComponentImpl extends ComponentImpl implements CompositeComponent {
+ /**
+ * The cached value of the '{@link #getConnections() <em>Connections</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConnections()
+ * @generated
+ * @ordered
+ */
+ protected Connections connections;
+
+ /**
+ * The cached value of the '{@link #getComponents() <em>Components</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getComponents()
+ * @generated
+ * @ordered
+ */
+ protected Components components;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CompositeComponentImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlaxmlPackage.Literals.COMPOSITE_COMPONENT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Connections getConnections() {
+ return connections;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetConnections(Connections newConnections, NotificationChain msgs) {
+ Connections oldConnections = connections;
+ connections = newConnections;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlaxmlPackage.COMPOSITE_COMPONENT__CONNECTIONS, oldConnections, newConnections);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setConnections(Connections newConnections) {
+ if (newConnections != connections) {
+ NotificationChain msgs = null;
+ if (connections != null)
+ msgs = ((InternalEObject)connections).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.COMPOSITE_COMPONENT__CONNECTIONS, null, msgs);
+ if (newConnections != null)
+ msgs = ((InternalEObject)newConnections).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.COMPOSITE_COMPONENT__CONNECTIONS, null, msgs);
+ msgs = basicSetConnections(newConnections, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.COMPOSITE_COMPONENT__CONNECTIONS, newConnections, newConnections));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Components getComponents() {
+ return components;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetComponents(Components newComponents, NotificationChain msgs) {
+ Components oldComponents = components;
+ components = newComponents;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlaxmlPackage.COMPOSITE_COMPONENT__COMPONENTS, oldComponents, newComponents);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setComponents(Components newComponents) {
+ if (newComponents != components) {
+ NotificationChain msgs = null;
+ if (components != null)
+ msgs = ((InternalEObject)components).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.COMPOSITE_COMPONENT__COMPONENTS, null, msgs);
+ if (newComponents != null)
+ msgs = ((InternalEObject)newComponents).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.COMPOSITE_COMPONENT__COMPONENTS, null, msgs);
+ msgs = basicSetComponents(newComponents, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.COMPOSITE_COMPONENT__COMPONENTS, newComponents, newComponents));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlaxmlPackage.COMPOSITE_COMPONENT__CONNECTIONS:
+ return basicSetConnections(null, msgs);
+ case FlaxmlPackage.COMPOSITE_COMPONENT__COMPONENTS:
+ return basicSetComponents(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlaxmlPackage.COMPOSITE_COMPONENT__CONNECTIONS:
+ return getConnections();
+ case FlaxmlPackage.COMPOSITE_COMPONENT__COMPONENTS:
+ return getComponents();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlaxmlPackage.COMPOSITE_COMPONENT__CONNECTIONS:
+ setConnections((Connections)newValue);
+ return;
+ case FlaxmlPackage.COMPOSITE_COMPONENT__COMPONENTS:
+ setComponents((Components)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.COMPOSITE_COMPONENT__CONNECTIONS:
+ setConnections((Connections)null);
+ return;
+ case FlaxmlPackage.COMPOSITE_COMPONENT__COMPONENTS:
+ setComponents((Components)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.COMPOSITE_COMPONENT__CONNECTIONS:
+ return connections != null;
+ case FlaxmlPackage.COMPOSITE_COMPONENT__COMPONENTS:
+ return components != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //CompositeComponentImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/ConnectionImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/ConnectionImpl.java
new file mode 100644
index 0000000..045cbf4
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/ConnectionImpl.java
@@ -0,0 +1,415 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.polarsys.chess.fla.flaxml.Connection;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.FptcRules;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Connection</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.ConnectionImpl#getSourceComponent <em>Source Component</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.ConnectionImpl#getSourceId <em>Source Id</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.ConnectionImpl#getTargetComponent <em>Target Component</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.ConnectionImpl#getTargetId <em>Target Id</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.ConnectionImpl#getRules <em>Rules</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ConnectionImpl extends MinimalEObjectImpl.Container implements Connection {
+ /**
+ * The default value of the '{@link #getSourceComponent() <em>Source Component</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSourceComponent()
+ * @generated
+ * @ordered
+ */
+ protected static final String SOURCE_COMPONENT_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSourceComponent() <em>Source Component</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSourceComponent()
+ * @generated
+ * @ordered
+ */
+ protected String sourceComponent = SOURCE_COMPONENT_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSourceId() <em>Source Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSourceId()
+ * @generated
+ * @ordered
+ */
+ protected static final String SOURCE_ID_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSourceId() <em>Source Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSourceId()
+ * @generated
+ * @ordered
+ */
+ protected String sourceId = SOURCE_ID_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getTargetComponent() <em>Target Component</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTargetComponent()
+ * @generated
+ * @ordered
+ */
+ protected static final String TARGET_COMPONENT_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getTargetComponent() <em>Target Component</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTargetComponent()
+ * @generated
+ * @ordered
+ */
+ protected String targetComponent = TARGET_COMPONENT_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getTargetId() <em>Target Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTargetId()
+ * @generated
+ * @ordered
+ */
+ protected static final String TARGET_ID_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getTargetId() <em>Target Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTargetId()
+ * @generated
+ * @ordered
+ */
+ protected String targetId = TARGET_ID_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getRules() <em>Rules</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRules()
+ * @generated
+ * @ordered
+ */
+ protected FptcRules rules;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ConnectionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlaxmlPackage.Literals.CONNECTION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getSourceComponent() {
+ return sourceComponent;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSourceComponent(String newSourceComponent) {
+ String oldSourceComponent = sourceComponent;
+ sourceComponent = newSourceComponent;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.CONNECTION__SOURCE_COMPONENT, oldSourceComponent, sourceComponent));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getSourceId() {
+ return sourceId;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSourceId(String newSourceId) {
+ String oldSourceId = sourceId;
+ sourceId = newSourceId;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.CONNECTION__SOURCE_ID, oldSourceId, sourceId));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getTargetComponent() {
+ return targetComponent;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTargetComponent(String newTargetComponent) {
+ String oldTargetComponent = targetComponent;
+ targetComponent = newTargetComponent;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.CONNECTION__TARGET_COMPONENT, oldTargetComponent, targetComponent));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getTargetId() {
+ return targetId;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTargetId(String newTargetId) {
+ String oldTargetId = targetId;
+ targetId = newTargetId;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.CONNECTION__TARGET_ID, oldTargetId, targetId));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FptcRules getRules() {
+ return rules;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetRules(FptcRules newRules, NotificationChain msgs) {
+ FptcRules oldRules = rules;
+ rules = newRules;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlaxmlPackage.CONNECTION__RULES, oldRules, newRules);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRules(FptcRules newRules) {
+ if (newRules != rules) {
+ NotificationChain msgs = null;
+ if (rules != null)
+ msgs = ((InternalEObject)rules).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.CONNECTION__RULES, null, msgs);
+ if (newRules != null)
+ msgs = ((InternalEObject)newRules).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.CONNECTION__RULES, null, msgs);
+ msgs = basicSetRules(newRules, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.CONNECTION__RULES, newRules, newRules));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlaxmlPackage.CONNECTION__RULES:
+ return basicSetRules(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlaxmlPackage.CONNECTION__SOURCE_COMPONENT:
+ return getSourceComponent();
+ case FlaxmlPackage.CONNECTION__SOURCE_ID:
+ return getSourceId();
+ case FlaxmlPackage.CONNECTION__TARGET_COMPONENT:
+ return getTargetComponent();
+ case FlaxmlPackage.CONNECTION__TARGET_ID:
+ return getTargetId();
+ case FlaxmlPackage.CONNECTION__RULES:
+ return getRules();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlaxmlPackage.CONNECTION__SOURCE_COMPONENT:
+ setSourceComponent((String)newValue);
+ return;
+ case FlaxmlPackage.CONNECTION__SOURCE_ID:
+ setSourceId((String)newValue);
+ return;
+ case FlaxmlPackage.CONNECTION__TARGET_COMPONENT:
+ setTargetComponent((String)newValue);
+ return;
+ case FlaxmlPackage.CONNECTION__TARGET_ID:
+ setTargetId((String)newValue);
+ return;
+ case FlaxmlPackage.CONNECTION__RULES:
+ setRules((FptcRules)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.CONNECTION__SOURCE_COMPONENT:
+ setSourceComponent(SOURCE_COMPONENT_EDEFAULT);
+ return;
+ case FlaxmlPackage.CONNECTION__SOURCE_ID:
+ setSourceId(SOURCE_ID_EDEFAULT);
+ return;
+ case FlaxmlPackage.CONNECTION__TARGET_COMPONENT:
+ setTargetComponent(TARGET_COMPONENT_EDEFAULT);
+ return;
+ case FlaxmlPackage.CONNECTION__TARGET_ID:
+ setTargetId(TARGET_ID_EDEFAULT);
+ return;
+ case FlaxmlPackage.CONNECTION__RULES:
+ setRules((FptcRules)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.CONNECTION__SOURCE_COMPONENT:
+ return SOURCE_COMPONENT_EDEFAULT == null ? sourceComponent != null : !SOURCE_COMPONENT_EDEFAULT.equals(sourceComponent);
+ case FlaxmlPackage.CONNECTION__SOURCE_ID:
+ return SOURCE_ID_EDEFAULT == null ? sourceId != null : !SOURCE_ID_EDEFAULT.equals(sourceId);
+ case FlaxmlPackage.CONNECTION__TARGET_COMPONENT:
+ return TARGET_COMPONENT_EDEFAULT == null ? targetComponent != null : !TARGET_COMPONENT_EDEFAULT.equals(targetComponent);
+ case FlaxmlPackage.CONNECTION__TARGET_ID:
+ return TARGET_ID_EDEFAULT == null ? targetId != null : !TARGET_ID_EDEFAULT.equals(targetId);
+ case FlaxmlPackage.CONNECTION__RULES:
+ return rules != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (sourceComponent: ");
+ result.append(sourceComponent);
+ result.append(", sourceId: ");
+ result.append(sourceId);
+ result.append(", targetComponent: ");
+ result.append(targetComponent);
+ result.append(", targetId: ");
+ result.append(targetId);
+ result.append(')');
+ return result.toString();
+ }
+
+} //ConnectionImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/ConnectionsImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/ConnectionsImpl.java
new file mode 100644
index 0000000..22da212
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/ConnectionsImpl.java
@@ -0,0 +1,159 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.polarsys.chess.fla.flaxml.Connection;
+import org.polarsys.chess.fla.flaxml.Connections;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Connections</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.ConnectionsImpl#getConnection <em>Connection</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ConnectionsImpl extends MinimalEObjectImpl.Container implements Connections {
+ /**
+ * The cached value of the '{@link #getConnection() <em>Connection</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConnection()
+ * @generated
+ * @ordered
+ */
+ protected EList<Connection> connection;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ConnectionsImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlaxmlPackage.Literals.CONNECTIONS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Connection> getConnection() {
+ if (connection == null) {
+ connection = new EObjectContainmentEList<Connection>(Connection.class, this, FlaxmlPackage.CONNECTIONS__CONNECTION);
+ }
+ return connection;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlaxmlPackage.CONNECTIONS__CONNECTION:
+ return ((InternalEList<?>)getConnection()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlaxmlPackage.CONNECTIONS__CONNECTION:
+ return getConnection();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlaxmlPackage.CONNECTIONS__CONNECTION:
+ getConnection().clear();
+ getConnection().addAll((Collection<? extends Connection>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.CONNECTIONS__CONNECTION:
+ getConnection().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.CONNECTIONS__CONNECTION:
+ return connection != null && !connection.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ConnectionsImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/DocumentRootImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/DocumentRootImpl.java
new file mode 100644
index 0000000..42808d7
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/DocumentRootImpl.java
@@ -0,0 +1,288 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.EStringToStringMapEntryImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.BasicFeatureMap;
+import org.eclipse.emf.ecore.util.EcoreEMap;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.polarsys.chess.fla.flaxml.DocumentRoot;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Document Root</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.DocumentRootImpl#getMixed <em>Mixed</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.DocumentRootImpl#getXMLNSPrefixMap <em>XMLNS Prefix Map</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.DocumentRootImpl#getXSISchemaLocation <em>XSI Schema Location</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.DocumentRootImpl#getSystem <em>System</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DocumentRootImpl extends MinimalEObjectImpl.Container implements DocumentRoot {
+ /**
+ * The cached value of the '{@link #getMixed() <em>Mixed</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMixed()
+ * @generated
+ * @ordered
+ */
+ protected FeatureMap mixed;
+
+ /**
+ * The cached value of the '{@link #getXMLNSPrefixMap() <em>XMLNS Prefix Map</em>}' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getXMLNSPrefixMap()
+ * @generated
+ * @ordered
+ */
+ protected EMap<String, String> xMLNSPrefixMap;
+
+ /**
+ * The cached value of the '{@link #getXSISchemaLocation() <em>XSI Schema Location</em>}' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getXSISchemaLocation()
+ * @generated
+ * @ordered
+ */
+ protected EMap<String, String> xSISchemaLocation;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DocumentRootImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlaxmlPackage.Literals.DOCUMENT_ROOT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FeatureMap getMixed() {
+ if (mixed == null) {
+ mixed = new BasicFeatureMap(this, FlaxmlPackage.DOCUMENT_ROOT__MIXED);
+ }
+ return mixed;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EMap<String, String> getXMLNSPrefixMap() {
+ if (xMLNSPrefixMap == null) {
+ xMLNSPrefixMap = new EcoreEMap<String,String>(EcorePackage.Literals.ESTRING_TO_STRING_MAP_ENTRY, EStringToStringMapEntryImpl.class, this, FlaxmlPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP);
+ }
+ return xMLNSPrefixMap;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EMap<String, String> getXSISchemaLocation() {
+ if (xSISchemaLocation == null) {
+ xSISchemaLocation = new EcoreEMap<String,String>(EcorePackage.Literals.ESTRING_TO_STRING_MAP_ENTRY, EStringToStringMapEntryImpl.class, this, FlaxmlPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION);
+ }
+ return xSISchemaLocation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.polarsys.chess.fla.flaxml.System getSystem() {
+ return (org.polarsys.chess.fla.flaxml.System)getMixed().get(FlaxmlPackage.Literals.DOCUMENT_ROOT__SYSTEM, true);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetSystem(org.polarsys.chess.fla.flaxml.System newSystem, NotificationChain msgs) {
+ return ((FeatureMap.Internal)getMixed()).basicAdd(FlaxmlPackage.Literals.DOCUMENT_ROOT__SYSTEM, newSystem, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSystem(org.polarsys.chess.fla.flaxml.System newSystem) {
+ ((FeatureMap.Internal)getMixed()).set(FlaxmlPackage.Literals.DOCUMENT_ROOT__SYSTEM, newSystem);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlaxmlPackage.DOCUMENT_ROOT__MIXED:
+ return ((InternalEList<?>)getMixed()).basicRemove(otherEnd, msgs);
+ case FlaxmlPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+ return ((InternalEList<?>)getXMLNSPrefixMap()).basicRemove(otherEnd, msgs);
+ case FlaxmlPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+ return ((InternalEList<?>)getXSISchemaLocation()).basicRemove(otherEnd, msgs);
+ case FlaxmlPackage.DOCUMENT_ROOT__SYSTEM:
+ return basicSetSystem(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlaxmlPackage.DOCUMENT_ROOT__MIXED:
+ if (coreType) return getMixed();
+ return ((FeatureMap.Internal)getMixed()).getWrapper();
+ case FlaxmlPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+ if (coreType) return getXMLNSPrefixMap();
+ else return getXMLNSPrefixMap().map();
+ case FlaxmlPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+ if (coreType) return getXSISchemaLocation();
+ else return getXSISchemaLocation().map();
+ case FlaxmlPackage.DOCUMENT_ROOT__SYSTEM:
+ return getSystem();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlaxmlPackage.DOCUMENT_ROOT__MIXED:
+ ((FeatureMap.Internal)getMixed()).set(newValue);
+ return;
+ case FlaxmlPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+ ((EStructuralFeature.Setting)getXMLNSPrefixMap()).set(newValue);
+ return;
+ case FlaxmlPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+ ((EStructuralFeature.Setting)getXSISchemaLocation()).set(newValue);
+ return;
+ case FlaxmlPackage.DOCUMENT_ROOT__SYSTEM:
+ setSystem((org.polarsys.chess.fla.flaxml.System)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.DOCUMENT_ROOT__MIXED:
+ getMixed().clear();
+ return;
+ case FlaxmlPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+ getXMLNSPrefixMap().clear();
+ return;
+ case FlaxmlPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+ getXSISchemaLocation().clear();
+ return;
+ case FlaxmlPackage.DOCUMENT_ROOT__SYSTEM:
+ setSystem((org.polarsys.chess.fla.flaxml.System)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.DOCUMENT_ROOT__MIXED:
+ return mixed != null && !mixed.isEmpty();
+ case FlaxmlPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+ return xMLNSPrefixMap != null && !xMLNSPrefixMap.isEmpty();
+ case FlaxmlPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+ return xSISchemaLocation != null && !xSISchemaLocation.isEmpty();
+ case FlaxmlPackage.DOCUMENT_ROOT__SYSTEM:
+ return getSystem() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (mixed: ");
+ result.append(mixed);
+ result.append(')');
+ return result.toString();
+ }
+
+} //DocumentRootImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/FailureImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/FailureImpl.java
new file mode 100644
index 0000000..7d59958
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/FailureImpl.java
@@ -0,0 +1,207 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.polarsys.chess.fla.flaxml.Failure;
+import org.polarsys.chess.fla.flaxml.FailureType;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Failure</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.FailureImpl#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FailureImpl extends MinimalEObjectImpl.Container implements Failure {
+ /**
+ * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected static final FailureType TYPE_EDEFAULT = FailureType.NO_FAILURE;
+
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected FailureType type = TYPE_EDEFAULT;
+
+ /**
+ * This is true if the Type attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean typeESet;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FailureImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlaxmlPackage.Literals.FAILURE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FailureType getType() {
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setType(FailureType newType) {
+ FailureType oldType = type;
+ type = newType == null ? TYPE_EDEFAULT : newType;
+ boolean oldTypeESet = typeESet;
+ typeESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.FAILURE__TYPE, oldType, type, !oldTypeESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetType() {
+ FailureType oldType = type;
+ boolean oldTypeESet = typeESet;
+ type = TYPE_EDEFAULT;
+ typeESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, FlaxmlPackage.FAILURE__TYPE, oldType, TYPE_EDEFAULT, oldTypeESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetType() {
+ return typeESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlaxmlPackage.FAILURE__TYPE:
+ return getType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlaxmlPackage.FAILURE__TYPE:
+ setType((FailureType)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.FAILURE__TYPE:
+ unsetType();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.FAILURE__TYPE:
+ return isSetType();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (type: ");
+ if (typeESet) result.append(type); else result.append("<unset>");
+ result.append(')');
+ return result.toString();
+ }
+
+} //FailureImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/FlaxmlFactoryImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/FlaxmlFactoryImpl.java
new file mode 100644
index 0000000..8cc664c
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/FlaxmlFactoryImpl.java
@@ -0,0 +1,371 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.emf.ecore.xml.type.XMLTypeFactory;
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+import org.polarsys.chess.fla.flaxml.Components;
+import org.polarsys.chess.fla.flaxml.CompositeComponent;
+import org.polarsys.chess.fla.flaxml.Connection;
+import org.polarsys.chess.fla.flaxml.Connections;
+import org.polarsys.chess.fla.flaxml.DocumentRoot;
+import org.polarsys.chess.fla.flaxml.Failure;
+import org.polarsys.chess.fla.flaxml.FailureType;
+import org.polarsys.chess.fla.flaxml.FlaxmlFactory;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.FptcRules;
+import org.polarsys.chess.fla.flaxml.InputPort;
+import org.polarsys.chess.fla.flaxml.InputPorts;
+import org.polarsys.chess.fla.flaxml.NamedElement;
+import org.polarsys.chess.fla.flaxml.OutputPort;
+import org.polarsys.chess.fla.flaxml.OutputPorts;
+import org.polarsys.chess.fla.flaxml.RuleString;
+import org.polarsys.chess.fla.flaxml.SimpleComponent;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FlaxmlFactoryImpl extends EFactoryImpl implements FlaxmlFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static FlaxmlFactory init() {
+ try {
+ FlaxmlFactory theFlaxmlFactory = (FlaxmlFactory)EPackage.Registry.INSTANCE.getEFactory(FlaxmlPackage.eNS_URI);
+ if (theFlaxmlFactory != null) {
+ return theFlaxmlFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new FlaxmlFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FlaxmlFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case FlaxmlPackage.COMPONENTS: return createComponents();
+ case FlaxmlPackage.COMPOSITE_COMPONENT: return createCompositeComponent();
+ case FlaxmlPackage.CONNECTION: return createConnection();
+ case FlaxmlPackage.CONNECTIONS: return createConnections();
+ case FlaxmlPackage.DOCUMENT_ROOT: return createDocumentRoot();
+ case FlaxmlPackage.FAILURE: return createFailure();
+ case FlaxmlPackage.FPTC_RULES: return createFptcRules();
+ case FlaxmlPackage.INPUT_PORT: return createInputPort();
+ case FlaxmlPackage.INPUT_PORTS: return createInputPorts();
+ case FlaxmlPackage.NAMED_ELEMENT: return createNamedElement();
+ case FlaxmlPackage.OUTPUT_PORT: return createOutputPort();
+ case FlaxmlPackage.OUTPUT_PORTS: return createOutputPorts();
+ case FlaxmlPackage.RULE_STRING: return createRuleString();
+ case FlaxmlPackage.SIMPLE_COMPONENT: return createSimpleComponent();
+ case FlaxmlPackage.SYSTEM: return createSystem();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object createFromString(EDataType eDataType, String initialValue) {
+ switch (eDataType.getClassifierID()) {
+ case FlaxmlPackage.FAILURE_TYPE:
+ return createFailureTypeFromString(eDataType, initialValue);
+ case FlaxmlPackage.FAILURE_TYPE_OBJECT:
+ return createFailureTypeObjectFromString(eDataType, initialValue);
+ case FlaxmlPackage.PATTERN_TYPE:
+ return createPatternTypeFromString(eDataType, initialValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String convertToString(EDataType eDataType, Object instanceValue) {
+ switch (eDataType.getClassifierID()) {
+ case FlaxmlPackage.FAILURE_TYPE:
+ return convertFailureTypeToString(eDataType, instanceValue);
+ case FlaxmlPackage.FAILURE_TYPE_OBJECT:
+ return convertFailureTypeObjectToString(eDataType, instanceValue);
+ case FlaxmlPackage.PATTERN_TYPE:
+ return convertPatternTypeToString(eDataType, instanceValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Components createComponents() {
+ ComponentsImpl components = new ComponentsImpl();
+ return components;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CompositeComponent createCompositeComponent() {
+ CompositeComponentImpl compositeComponent = new CompositeComponentImpl();
+ return compositeComponent;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Connection createConnection() {
+ ConnectionImpl connection = new ConnectionImpl();
+ return connection;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Connections createConnections() {
+ ConnectionsImpl connections = new ConnectionsImpl();
+ return connections;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DocumentRoot createDocumentRoot() {
+ DocumentRootImpl documentRoot = new DocumentRootImpl();
+ return documentRoot;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Failure createFailure() {
+ FailureImpl failure = new FailureImpl();
+ return failure;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FptcRules createFptcRules() {
+ FptcRulesImpl fptcRules = new FptcRulesImpl();
+ return fptcRules;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InputPort createInputPort() {
+ InputPortImpl inputPort = new InputPortImpl();
+ return inputPort;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InputPorts createInputPorts() {
+ InputPortsImpl inputPorts = new InputPortsImpl();
+ return inputPorts;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NamedElement createNamedElement() {
+ NamedElementImpl namedElement = new NamedElementImpl();
+ return namedElement;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OutputPort createOutputPort() {
+ OutputPortImpl outputPort = new OutputPortImpl();
+ return outputPort;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OutputPorts createOutputPorts() {
+ OutputPortsImpl outputPorts = new OutputPortsImpl();
+ return outputPorts;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RuleString createRuleString() {
+ RuleStringImpl ruleString = new RuleStringImpl();
+ return ruleString;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SimpleComponent createSimpleComponent() {
+ SimpleComponentImpl simpleComponent = new SimpleComponentImpl();
+ return simpleComponent;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.polarsys.chess.fla.flaxml.System createSystem() {
+ SystemImpl system = new SystemImpl();
+ return system;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FailureType createFailureTypeFromString(EDataType eDataType, String initialValue) {
+ FailureType result = FailureType.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertFailureTypeToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FailureType createFailureTypeObjectFromString(EDataType eDataType, String initialValue) {
+ return createFailureTypeFromString(FlaxmlPackage.Literals.FAILURE_TYPE, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertFailureTypeObjectToString(EDataType eDataType, Object instanceValue) {
+ return convertFailureTypeToString(FlaxmlPackage.Literals.FAILURE_TYPE, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String createPatternTypeFromString(EDataType eDataType, String initialValue) {
+ return (String)XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.Literals.STRING, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertPatternTypeToString(EDataType eDataType, Object instanceValue) {
+ return XMLTypeFactory.eINSTANCE.convertToString(XMLTypePackage.Literals.STRING, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FlaxmlPackage getFlaxmlPackage() {
+ return (FlaxmlPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static FlaxmlPackage getPackage() {
+ return FlaxmlPackage.eINSTANCE;
+ }
+
+} //FlaxmlFactoryImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/FlaxmlPackageImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/FlaxmlPackageImpl.java
new file mode 100644
index 0000000..e59ac10
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/FlaxmlPackageImpl.java
@@ -0,0 +1,1200 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EValidator;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+import org.polarsys.chess.fla.flaxml.Component;
+import org.polarsys.chess.fla.flaxml.Components;
+import org.polarsys.chess.fla.flaxml.CompositeComponent;
+import org.polarsys.chess.fla.flaxml.Connection;
+import org.polarsys.chess.fla.flaxml.Connections;
+import org.polarsys.chess.fla.flaxml.DocumentRoot;
+import org.polarsys.chess.fla.flaxml.Failure;
+import org.polarsys.chess.fla.flaxml.FailureType;
+import org.polarsys.chess.fla.flaxml.FlaxmlFactory;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.FptcRules;
+import org.polarsys.chess.fla.flaxml.InputPort;
+import org.polarsys.chess.fla.flaxml.InputPorts;
+import org.polarsys.chess.fla.flaxml.NamedElement;
+import org.polarsys.chess.fla.flaxml.OutputPort;
+import org.polarsys.chess.fla.flaxml.OutputPorts;
+import org.polarsys.chess.fla.flaxml.RuleString;
+import org.polarsys.chess.fla.flaxml.SimpleComponent;
+import org.polarsys.chess.fla.flaxml.util.FlaxmlValidator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FlaxmlPackageImpl extends EPackageImpl implements FlaxmlPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass componentEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass componentsEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass compositeComponentEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass connectionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass connectionsEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass documentRootEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass failureEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass fptcRulesEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass inputPortEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass inputPortsEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass namedElementEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass outputPortEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass outputPortsEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass ruleStringEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass simpleComponentEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass systemEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum failureTypeEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType failureTypeObjectEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType patternTypeEDataType = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private FlaxmlPackageImpl() {
+ super(eNS_URI, FlaxmlFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link FlaxmlPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static FlaxmlPackage init() {
+ if (isInited) return (FlaxmlPackage)EPackage.Registry.INSTANCE.getEPackage(FlaxmlPackage.eNS_URI);
+
+ // Obtain or create and register package
+ FlaxmlPackageImpl theFlaxmlPackage = (FlaxmlPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof FlaxmlPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new FlaxmlPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ XMLTypePackage.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ theFlaxmlPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theFlaxmlPackage.initializePackageContents();
+
+ // Register package validator
+ EValidator.Registry.INSTANCE.put
+ (theFlaxmlPackage,
+ new EValidator.Descriptor() {
+ public EValidator getEValidator() {
+ return FlaxmlValidator.INSTANCE;
+ }
+ });
+
+ // Mark meta-data to indicate it can't be changed
+ theFlaxmlPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(FlaxmlPackage.eNS_URI, theFlaxmlPackage);
+ return theFlaxmlPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getComponent() {
+ return componentEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getComponent_InputPorts() {
+ return (EReference)componentEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getComponent_OutputPorts() {
+ return (EReference)componentEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getComponents() {
+ return componentsEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getComponents_Component() {
+ return (EReference)componentsEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCompositeComponent() {
+ return compositeComponentEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCompositeComponent_Connections() {
+ return (EReference)compositeComponentEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCompositeComponent_Components() {
+ return (EReference)compositeComponentEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getConnection() {
+ return connectionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getConnection_SourceComponent() {
+ return (EAttribute)connectionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getConnection_SourceId() {
+ return (EAttribute)connectionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getConnection_TargetComponent() {
+ return (EAttribute)connectionEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getConnection_TargetId() {
+ return (EAttribute)connectionEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getConnection_Rules() {
+ return (EReference)connectionEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getConnections() {
+ return connectionsEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getConnections_Connection() {
+ return (EReference)connectionsEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDocumentRoot() {
+ return documentRootEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDocumentRoot_Mixed() {
+ return (EAttribute)documentRootEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDocumentRoot_XMLNSPrefixMap() {
+ return (EReference)documentRootEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDocumentRoot_XSISchemaLocation() {
+ return (EReference)documentRootEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDocumentRoot_System() {
+ return (EReference)documentRootEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFailure() {
+ return failureEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getFailure_Type() {
+ return (EAttribute)failureEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFptcRules() {
+ return fptcRulesEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getFptcRules_Rule() {
+ return (EReference)fptcRulesEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getInputPort() {
+ return inputPortEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getInputPort_InputFailure() {
+ return (EReference)inputPortEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getInputPorts() {
+ return inputPortsEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getInputPorts_InputPort() {
+ return (EReference)inputPortsEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getNamedElement() {
+ return namedElementEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getNamedElement_Id() {
+ return (EAttribute)namedElementEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getNamedElement_Name() {
+ return (EAttribute)namedElementEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getOutputPort() {
+ return outputPortEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getOutputPort_OutputFailure() {
+ return (EReference)outputPortEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getOutputPorts() {
+ return outputPortsEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getOutputPorts_OutputPort() {
+ return (EReference)outputPortsEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getRuleString() {
+ return ruleStringEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getRuleString_Pattern() {
+ return (EAttribute)ruleStringEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSimpleComponent() {
+ return simpleComponentEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSimpleComponent_Rules() {
+ return (EReference)simpleComponentEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSystem() {
+ return systemEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSystem_Component() {
+ return (EReference)systemEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getFailureType() {
+ return failureTypeEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getFailureTypeObject() {
+ return failureTypeObjectEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getPatternType() {
+ return patternTypeEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FlaxmlFactory getFlaxmlFactory() {
+ return (FlaxmlFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ componentEClass = createEClass(COMPONENT);
+ createEReference(componentEClass, COMPONENT__INPUT_PORTS);
+ createEReference(componentEClass, COMPONENT__OUTPUT_PORTS);
+
+ componentsEClass = createEClass(COMPONENTS);
+ createEReference(componentsEClass, COMPONENTS__COMPONENT);
+
+ compositeComponentEClass = createEClass(COMPOSITE_COMPONENT);
+ createEReference(compositeComponentEClass, COMPOSITE_COMPONENT__CONNECTIONS);
+ createEReference(compositeComponentEClass, COMPOSITE_COMPONENT__COMPONENTS);
+
+ connectionEClass = createEClass(CONNECTION);
+ createEAttribute(connectionEClass, CONNECTION__SOURCE_COMPONENT);
+ createEAttribute(connectionEClass, CONNECTION__SOURCE_ID);
+ createEAttribute(connectionEClass, CONNECTION__TARGET_COMPONENT);
+ createEAttribute(connectionEClass, CONNECTION__TARGET_ID);
+ createEReference(connectionEClass, CONNECTION__RULES);
+
+ connectionsEClass = createEClass(CONNECTIONS);
+ createEReference(connectionsEClass, CONNECTIONS__CONNECTION);
+
+ documentRootEClass = createEClass(DOCUMENT_ROOT);
+ createEAttribute(documentRootEClass, DOCUMENT_ROOT__MIXED);
+ createEReference(documentRootEClass, DOCUMENT_ROOT__XMLNS_PREFIX_MAP);
+ createEReference(documentRootEClass, DOCUMENT_ROOT__XSI_SCHEMA_LOCATION);
+ createEReference(documentRootEClass, DOCUMENT_ROOT__SYSTEM);
+
+ failureEClass = createEClass(FAILURE);
+ createEAttribute(failureEClass, FAILURE__TYPE);
+
+ fptcRulesEClass = createEClass(FPTC_RULES);
+ createEReference(fptcRulesEClass, FPTC_RULES__RULE);
+
+ inputPortEClass = createEClass(INPUT_PORT);
+ createEReference(inputPortEClass, INPUT_PORT__INPUT_FAILURE);
+
+ inputPortsEClass = createEClass(INPUT_PORTS);
+ createEReference(inputPortsEClass, INPUT_PORTS__INPUT_PORT);
+
+ namedElementEClass = createEClass(NAMED_ELEMENT);
+ createEAttribute(namedElementEClass, NAMED_ELEMENT__ID);
+ createEAttribute(namedElementEClass, NAMED_ELEMENT__NAME);
+
+ outputPortEClass = createEClass(OUTPUT_PORT);
+ createEReference(outputPortEClass, OUTPUT_PORT__OUTPUT_FAILURE);
+
+ outputPortsEClass = createEClass(OUTPUT_PORTS);
+ createEReference(outputPortsEClass, OUTPUT_PORTS__OUTPUT_PORT);
+
+ ruleStringEClass = createEClass(RULE_STRING);
+ createEAttribute(ruleStringEClass, RULE_STRING__PATTERN);
+
+ simpleComponentEClass = createEClass(SIMPLE_COMPONENT);
+ createEReference(simpleComponentEClass, SIMPLE_COMPONENT__RULES);
+
+ systemEClass = createEClass(SYSTEM);
+ createEReference(systemEClass, SYSTEM__COMPONENT);
+
+ // Create enums
+ failureTypeEEnum = createEEnum(FAILURE_TYPE);
+
+ // Create data types
+ failureTypeObjectEDataType = createEDataType(FAILURE_TYPE_OBJECT);
+ patternTypeEDataType = createEDataType(PATTERN_TYPE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ XMLTypePackage theXMLTypePackage = (XMLTypePackage)EPackage.Registry.INSTANCE.getEPackage(XMLTypePackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ componentEClass.getESuperTypes().add(this.getNamedElement());
+ compositeComponentEClass.getESuperTypes().add(this.getComponent());
+ inputPortEClass.getESuperTypes().add(this.getNamedElement());
+ outputPortEClass.getESuperTypes().add(this.getNamedElement());
+ simpleComponentEClass.getESuperTypes().add(this.getComponent());
+
+ // Initialize classes, features, and operations; add parameters
+ initEClass(componentEClass, Component.class, "Component", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getComponent_InputPorts(), this.getInputPorts(), null, "inputPorts", null, 1, 1, Component.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getComponent_OutputPorts(), this.getOutputPorts(), null, "outputPorts", null, 1, 1, Component.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(componentsEClass, Components.class, "Components", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getComponents_Component(), this.getComponent(), null, "component", null, 1, -1, Components.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(compositeComponentEClass, CompositeComponent.class, "CompositeComponent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getCompositeComponent_Connections(), this.getConnections(), null, "connections", null, 1, 1, CompositeComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getCompositeComponent_Components(), this.getComponents(), null, "components", null, 1, 1, CompositeComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(connectionEClass, Connection.class, "Connection", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getConnection_SourceComponent(), theXMLTypePackage.getString(), "sourceComponent", null, 0, 1, Connection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getConnection_SourceId(), theXMLTypePackage.getString(), "sourceId", null, 1, 1, Connection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getConnection_TargetComponent(), theXMLTypePackage.getString(), "targetComponent", null, 0, 1, Connection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getConnection_TargetId(), theXMLTypePackage.getString(), "targetId", null, 1, 1, Connection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getConnection_Rules(), this.getFptcRules(), null, "rules", null, 0, 1, Connection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(connectionsEClass, Connections.class, "Connections", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getConnections_Connection(), this.getConnection(), null, "connection", null, 1, -1, Connections.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(documentRootEClass, DocumentRoot.class, "DocumentRoot", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getDocumentRoot_Mixed(), ecorePackage.getEFeatureMapEntry(), "mixed", null, 0, -1, null, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDocumentRoot_XMLNSPrefixMap(), ecorePackage.getEStringToStringMapEntry(), null, "xMLNSPrefixMap", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDocumentRoot_XSISchemaLocation(), ecorePackage.getEStringToStringMapEntry(), null, "xSISchemaLocation", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDocumentRoot_System(), this.getSystem(), null, "system", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+
+ initEClass(failureEClass, Failure.class, "Failure", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getFailure_Type(), this.getFailureType(), "type", null, 1, 1, Failure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(fptcRulesEClass, FptcRules.class, "FptcRules", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getFptcRules_Rule(), this.getRuleString(), null, "rule", null, 1, -1, FptcRules.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(inputPortEClass, InputPort.class, "InputPort", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getInputPort_InputFailure(), this.getFailure(), null, "inputFailure", null, 0, -1, InputPort.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(inputPortsEClass, InputPorts.class, "InputPorts", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getInputPorts_InputPort(), this.getInputPort(), null, "inputPort", null, 0, -1, InputPorts.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(namedElementEClass, NamedElement.class, "NamedElement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getNamedElement_Id(), theXMLTypePackage.getString(), "id", null, 1, 1, NamedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getNamedElement_Name(), theXMLTypePackage.getString(), "name", null, 1, 1, NamedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(outputPortEClass, OutputPort.class, "OutputPort", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getOutputPort_OutputFailure(), this.getFailure(), null, "outputFailure", null, 0, -1, OutputPort.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(outputPortsEClass, OutputPorts.class, "OutputPorts", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getOutputPorts_OutputPort(), this.getOutputPort(), null, "outputPort", null, 0, -1, OutputPorts.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(ruleStringEClass, RuleString.class, "RuleString", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getRuleString_Pattern(), this.getPatternType(), "pattern", null, 1, 1, RuleString.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(simpleComponentEClass, SimpleComponent.class, "SimpleComponent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getSimpleComponent_Rules(), this.getFptcRules(), null, "rules", null, 1, 1, SimpleComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(systemEClass, org.polarsys.chess.fla.flaxml.System.class, "System", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getSystem_Component(), this.getComponent(), null, "component", null, 0, 1, org.polarsys.chess.fla.flaxml.System.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Initialize enums and add enum literals
+ initEEnum(failureTypeEEnum, FailureType.class, "FailureType");
+ addEEnumLiteral(failureTypeEEnum, FailureType.NO_FAILURE);
+ addEEnumLiteral(failureTypeEEnum, FailureType.LATE);
+ addEEnumLiteral(failureTypeEEnum, FailureType.EARLY);
+ addEEnumLiteral(failureTypeEEnum, FailureType.VALUE_SUBTLE);
+ addEEnumLiteral(failureTypeEEnum, FailureType.VALUE_COARSE);
+ addEEnumLiteral(failureTypeEEnum, FailureType.OMISSION);
+ addEEnumLiteral(failureTypeEEnum, FailureType.COMMISSION);
+
+ // Initialize data types
+ initEDataType(failureTypeObjectEDataType, FailureType.class, "FailureTypeObject", IS_SERIALIZABLE, IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(patternTypeEDataType, String.class, "PatternType", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+
+ // Create resource
+ createResource(eNS_URI);
+
+ // Create annotations
+ // http:///org/eclipse/emf/ecore/util/ExtendedMetaData
+ createExtendedMetaDataAnnotations();
+ }
+
+ /**
+ * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void createExtendedMetaDataAnnotations() {
+ String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";
+ addAnnotation
+ (componentEClass,
+ source,
+ new String[] {
+ "name", "component",
+ "kind", "empty"
+ });
+ addAnnotation
+ (getComponent_InputPorts(),
+ source,
+ new String[] {
+ "kind", "element",
+ "name", "inputPorts",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (getComponent_OutputPorts(),
+ source,
+ new String[] {
+ "kind", "element",
+ "name", "outputPorts",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (componentsEClass,
+ source,
+ new String[] {
+ "name", "components",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getComponents_Component(),
+ source,
+ new String[] {
+ "kind", "element",
+ "name", "component",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (compositeComponentEClass,
+ source,
+ new String[] {
+ "name", "compositeComponent",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getCompositeComponent_Connections(),
+ source,
+ new String[] {
+ "kind", "element",
+ "name", "connections",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (getCompositeComponent_Components(),
+ source,
+ new String[] {
+ "kind", "element",
+ "name", "components",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (connectionEClass,
+ source,
+ new String[] {
+ "name", "connection",
+ "kind", "empty"
+ });
+ addAnnotation
+ (getConnection_SourceComponent(),
+ source,
+ new String[] {
+ "kind", "attribute",
+ "name", "sourceComponent"
+ });
+ addAnnotation
+ (getConnection_SourceId(),
+ source,
+ new String[] {
+ "kind", "attribute",
+ "name", "sourceId"
+ });
+ addAnnotation
+ (getConnection_TargetComponent(),
+ source,
+ new String[] {
+ "kind", "attribute",
+ "name", "targetComponent"
+ });
+ addAnnotation
+ (getConnection_TargetId(),
+ source,
+ new String[] {
+ "kind", "attribute",
+ "name", "targetId"
+ });
+ addAnnotation
+ (connectionsEClass,
+ source,
+ new String[] {
+ "name", "connections",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getConnections_Connection(),
+ source,
+ new String[] {
+ "kind", "element",
+ "name", "connection",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (documentRootEClass,
+ source,
+ new String[] {
+ "name", "",
+ "kind", "mixed"
+ });
+ addAnnotation
+ (getDocumentRoot_Mixed(),
+ source,
+ new String[] {
+ "kind", "elementWildcard",
+ "name", ":mixed"
+ });
+ addAnnotation
+ (getDocumentRoot_XMLNSPrefixMap(),
+ source,
+ new String[] {
+ "kind", "attribute",
+ "name", "xmlns:prefix"
+ });
+ addAnnotation
+ (getDocumentRoot_XSISchemaLocation(),
+ source,
+ new String[] {
+ "kind", "attribute",
+ "name", "xsi:schemaLocation"
+ });
+ addAnnotation
+ (getDocumentRoot_System(),
+ source,
+ new String[] {
+ "kind", "element",
+ "name", "system",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (failureEClass,
+ source,
+ new String[] {
+ "name", "failure",
+ "kind", "empty"
+ });
+ addAnnotation
+ (getFailure_Type(),
+ source,
+ new String[] {
+ "kind", "attribute",
+ "name", "type"
+ });
+ addAnnotation
+ (failureTypeEEnum,
+ source,
+ new String[] {
+ "name", "failureType"
+ });
+ addAnnotation
+ (failureTypeObjectEDataType,
+ source,
+ new String[] {
+ "name", "failureType:Object",
+ "baseType", "failureType"
+ });
+ addAnnotation
+ (fptcRulesEClass,
+ source,
+ new String[] {
+ "name", "fptcRules",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getFptcRules_Rule(),
+ source,
+ new String[] {
+ "kind", "element",
+ "name", "rule",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (inputPortEClass,
+ source,
+ new String[] {
+ "name", "inputPort",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getInputPort_InputFailure(),
+ source,
+ new String[] {
+ "kind", "element",
+ "name", "inputFailure",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (inputPortsEClass,
+ source,
+ new String[] {
+ "name", "inputPorts",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getInputPorts_InputPort(),
+ source,
+ new String[] {
+ "kind", "element",
+ "name", "inputPort",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (namedElementEClass,
+ source,
+ new String[] {
+ "name", "namedElement",
+ "kind", "empty"
+ });
+ addAnnotation
+ (getNamedElement_Id(),
+ source,
+ new String[] {
+ "kind", "attribute",
+ "name", "id"
+ });
+ addAnnotation
+ (getNamedElement_Name(),
+ source,
+ new String[] {
+ "kind", "attribute",
+ "name", "name"
+ });
+ addAnnotation
+ (outputPortEClass,
+ source,
+ new String[] {
+ "name", "outputPort",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (outputPortsEClass,
+ source,
+ new String[] {
+ "name", "outputPorts",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getOutputPorts_OutputPort(),
+ source,
+ new String[] {
+ "kind", "element",
+ "name", "outputPort",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (patternTypeEDataType,
+ source,
+ new String[] {
+ "name", "pattern_._type",
+ "baseType", "http://www.eclipse.org/emf/2003/XMLType#string",
+ "pattern", "[^>]+\\.[^>]+->[^>]+\\.[^>]+"
+ });
+ addAnnotation
+ (ruleStringEClass,
+ source,
+ new String[] {
+ "name", "ruleString",
+ "kind", "empty"
+ });
+ addAnnotation
+ (getRuleString_Pattern(),
+ source,
+ new String[] {
+ "kind", "attribute",
+ "name", "pattern"
+ });
+ addAnnotation
+ (simpleComponentEClass,
+ source,
+ new String[] {
+ "name", "simpleComponent",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getSimpleComponent_Rules(),
+ source,
+ new String[] {
+ "kind", "element",
+ "name", "rules",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (systemEClass,
+ source,
+ new String[] {
+ "name", "system",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getSystem_Component(),
+ source,
+ new String[] {
+ "kind", "element",
+ "name", "component",
+ "namespace", "##targetNamespace"
+ });
+ }
+
+} //FlaxmlPackageImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/FptcRulesImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/FptcRulesImpl.java
new file mode 100644
index 0000000..6ed7a0f
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/FptcRulesImpl.java
@@ -0,0 +1,159 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.FptcRules;
+import org.polarsys.chess.fla.flaxml.RuleString;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Fptc Rules</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.FptcRulesImpl#getRule <em>Rule</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FptcRulesImpl extends MinimalEObjectImpl.Container implements FptcRules {
+ /**
+ * The cached value of the '{@link #getRule() <em>Rule</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRule()
+ * @generated
+ * @ordered
+ */
+ protected EList<RuleString> rule;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FptcRulesImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlaxmlPackage.Literals.FPTC_RULES;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<RuleString> getRule() {
+ if (rule == null) {
+ rule = new EObjectContainmentEList<RuleString>(RuleString.class, this, FlaxmlPackage.FPTC_RULES__RULE);
+ }
+ return rule;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlaxmlPackage.FPTC_RULES__RULE:
+ return ((InternalEList<?>)getRule()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlaxmlPackage.FPTC_RULES__RULE:
+ return getRule();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlaxmlPackage.FPTC_RULES__RULE:
+ getRule().clear();
+ getRule().addAll((Collection<? extends RuleString>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.FPTC_RULES__RULE:
+ getRule().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.FPTC_RULES__RULE:
+ return rule != null && !rule.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //FptcRulesImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/InputPortImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/InputPortImpl.java
new file mode 100644
index 0000000..61f1142
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/InputPortImpl.java
@@ -0,0 +1,158 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.polarsys.chess.fla.flaxml.Failure;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.InputPort;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Input Port</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.InputPortImpl#getInputFailure <em>Input Failure</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class InputPortImpl extends NamedElementImpl implements InputPort {
+ /**
+ * The cached value of the '{@link #getInputFailure() <em>Input Failure</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInputFailure()
+ * @generated
+ * @ordered
+ */
+ protected EList<Failure> inputFailure;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected InputPortImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlaxmlPackage.Literals.INPUT_PORT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Failure> getInputFailure() {
+ if (inputFailure == null) {
+ inputFailure = new EObjectContainmentEList<Failure>(Failure.class, this, FlaxmlPackage.INPUT_PORT__INPUT_FAILURE);
+ }
+ return inputFailure;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlaxmlPackage.INPUT_PORT__INPUT_FAILURE:
+ return ((InternalEList<?>)getInputFailure()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlaxmlPackage.INPUT_PORT__INPUT_FAILURE:
+ return getInputFailure();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlaxmlPackage.INPUT_PORT__INPUT_FAILURE:
+ getInputFailure().clear();
+ getInputFailure().addAll((Collection<? extends Failure>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.INPUT_PORT__INPUT_FAILURE:
+ getInputFailure().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.INPUT_PORT__INPUT_FAILURE:
+ return inputFailure != null && !inputFailure.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //InputPortImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/InputPortsImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/InputPortsImpl.java
new file mode 100644
index 0000000..1ccf19b
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/InputPortsImpl.java
@@ -0,0 +1,159 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.InputPort;
+import org.polarsys.chess.fla.flaxml.InputPorts;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Input Ports</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.InputPortsImpl#getInputPort <em>Input Port</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class InputPortsImpl extends MinimalEObjectImpl.Container implements InputPorts {
+ /**
+ * The cached value of the '{@link #getInputPort() <em>Input Port</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInputPort()
+ * @generated
+ * @ordered
+ */
+ protected EList<InputPort> inputPort;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected InputPortsImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlaxmlPackage.Literals.INPUT_PORTS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<InputPort> getInputPort() {
+ if (inputPort == null) {
+ inputPort = new EObjectContainmentEList<InputPort>(InputPort.class, this, FlaxmlPackage.INPUT_PORTS__INPUT_PORT);
+ }
+ return inputPort;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlaxmlPackage.INPUT_PORTS__INPUT_PORT:
+ return ((InternalEList<?>)getInputPort()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlaxmlPackage.INPUT_PORTS__INPUT_PORT:
+ return getInputPort();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlaxmlPackage.INPUT_PORTS__INPUT_PORT:
+ getInputPort().clear();
+ getInputPort().addAll((Collection<? extends InputPort>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.INPUT_PORTS__INPUT_PORT:
+ getInputPort().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.INPUT_PORTS__INPUT_PORT:
+ return inputPort != null && !inputPort.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //InputPortsImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/NamedElementImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/NamedElementImpl.java
new file mode 100644
index 0000000..802bc32
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/NamedElementImpl.java
@@ -0,0 +1,226 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.NamedElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Named Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.NamedElementImpl#getId <em>Id</em>}</li>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.NamedElementImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class NamedElementImpl extends MinimalEObjectImpl.Container implements NamedElement {
+ /**
+ * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getId()
+ * @generated
+ * @ordered
+ */
+ protected static final String ID_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getId()
+ * @generated
+ * @ordered
+ */
+ protected String id = ID_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NamedElementImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlaxmlPackage.Literals.NAMED_ELEMENT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setId(String newId) {
+ String oldId = id;
+ id = newId;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.NAMED_ELEMENT__ID, oldId, id));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.NAMED_ELEMENT__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlaxmlPackage.NAMED_ELEMENT__ID:
+ return getId();
+ case FlaxmlPackage.NAMED_ELEMENT__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlaxmlPackage.NAMED_ELEMENT__ID:
+ setId((String)newValue);
+ return;
+ case FlaxmlPackage.NAMED_ELEMENT__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.NAMED_ELEMENT__ID:
+ setId(ID_EDEFAULT);
+ return;
+ case FlaxmlPackage.NAMED_ELEMENT__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.NAMED_ELEMENT__ID:
+ return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id);
+ case FlaxmlPackage.NAMED_ELEMENT__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (id: ");
+ result.append(id);
+ result.append(", name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //NamedElementImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/OutputPortImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/OutputPortImpl.java
new file mode 100644
index 0000000..dbf4186
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/OutputPortImpl.java
@@ -0,0 +1,158 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.polarsys.chess.fla.flaxml.Failure;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.OutputPort;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Output Port</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.OutputPortImpl#getOutputFailure <em>Output Failure</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class OutputPortImpl extends NamedElementImpl implements OutputPort {
+ /**
+ * The cached value of the '{@link #getOutputFailure() <em>Output Failure</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOutputFailure()
+ * @generated
+ * @ordered
+ */
+ protected EList<Failure> outputFailure;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected OutputPortImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlaxmlPackage.Literals.OUTPUT_PORT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Failure> getOutputFailure() {
+ if (outputFailure == null) {
+ outputFailure = new EObjectContainmentEList<Failure>(Failure.class, this, FlaxmlPackage.OUTPUT_PORT__OUTPUT_FAILURE);
+ }
+ return outputFailure;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlaxmlPackage.OUTPUT_PORT__OUTPUT_FAILURE:
+ return ((InternalEList<?>)getOutputFailure()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlaxmlPackage.OUTPUT_PORT__OUTPUT_FAILURE:
+ return getOutputFailure();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlaxmlPackage.OUTPUT_PORT__OUTPUT_FAILURE:
+ getOutputFailure().clear();
+ getOutputFailure().addAll((Collection<? extends Failure>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.OUTPUT_PORT__OUTPUT_FAILURE:
+ getOutputFailure().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.OUTPUT_PORT__OUTPUT_FAILURE:
+ return outputFailure != null && !outputFailure.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //OutputPortImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/OutputPortsImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/OutputPortsImpl.java
new file mode 100644
index 0000000..ad51197
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/OutputPortsImpl.java
@@ -0,0 +1,159 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.OutputPort;
+import org.polarsys.chess.fla.flaxml.OutputPorts;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Output Ports</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.OutputPortsImpl#getOutputPort <em>Output Port</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class OutputPortsImpl extends MinimalEObjectImpl.Container implements OutputPorts {
+ /**
+ * The cached value of the '{@link #getOutputPort() <em>Output Port</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOutputPort()
+ * @generated
+ * @ordered
+ */
+ protected EList<OutputPort> outputPort;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected OutputPortsImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlaxmlPackage.Literals.OUTPUT_PORTS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<OutputPort> getOutputPort() {
+ if (outputPort == null) {
+ outputPort = new EObjectContainmentEList<OutputPort>(OutputPort.class, this, FlaxmlPackage.OUTPUT_PORTS__OUTPUT_PORT);
+ }
+ return outputPort;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlaxmlPackage.OUTPUT_PORTS__OUTPUT_PORT:
+ return ((InternalEList<?>)getOutputPort()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlaxmlPackage.OUTPUT_PORTS__OUTPUT_PORT:
+ return getOutputPort();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlaxmlPackage.OUTPUT_PORTS__OUTPUT_PORT:
+ getOutputPort().clear();
+ getOutputPort().addAll((Collection<? extends OutputPort>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.OUTPUT_PORTS__OUTPUT_PORT:
+ getOutputPort().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.OUTPUT_PORTS__OUTPUT_PORT:
+ return outputPort != null && !outputPort.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //OutputPortsImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/RuleStringImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/RuleStringImpl.java
new file mode 100644
index 0000000..9bcc71a
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/RuleStringImpl.java
@@ -0,0 +1,172 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.RuleString;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Rule String</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.RuleStringImpl#getPattern <em>Pattern</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class RuleStringImpl extends MinimalEObjectImpl.Container implements RuleString {
+ /**
+ * The default value of the '{@link #getPattern() <em>Pattern</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPattern()
+ * @generated
+ * @ordered
+ */
+ protected static final String PATTERN_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getPattern() <em>Pattern</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPattern()
+ * @generated
+ * @ordered
+ */
+ protected String pattern = PATTERN_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected RuleStringImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlaxmlPackage.Literals.RULE_STRING;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getPattern() {
+ return pattern;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPattern(String newPattern) {
+ String oldPattern = pattern;
+ pattern = newPattern;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.RULE_STRING__PATTERN, oldPattern, pattern));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlaxmlPackage.RULE_STRING__PATTERN:
+ return getPattern();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlaxmlPackage.RULE_STRING__PATTERN:
+ setPattern((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.RULE_STRING__PATTERN:
+ setPattern(PATTERN_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.RULE_STRING__PATTERN:
+ return PATTERN_EDEFAULT == null ? pattern != null : !PATTERN_EDEFAULT.equals(pattern);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (pattern: ");
+ result.append(pattern);
+ result.append(')');
+ return result.toString();
+ }
+
+} //RuleStringImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/SimpleComponentImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/SimpleComponentImpl.java
new file mode 100644
index 0000000..48252d0
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/SimpleComponentImpl.java
@@ -0,0 +1,184 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.FptcRules;
+import org.polarsys.chess.fla.flaxml.SimpleComponent;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Simple Component</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.SimpleComponentImpl#getRules <em>Rules</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SimpleComponentImpl extends ComponentImpl implements SimpleComponent {
+ /**
+ * The cached value of the '{@link #getRules() <em>Rules</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRules()
+ * @generated
+ * @ordered
+ */
+ protected FptcRules rules;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SimpleComponentImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlaxmlPackage.Literals.SIMPLE_COMPONENT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FptcRules getRules() {
+ return rules;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetRules(FptcRules newRules, NotificationChain msgs) {
+ FptcRules oldRules = rules;
+ rules = newRules;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlaxmlPackage.SIMPLE_COMPONENT__RULES, oldRules, newRules);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRules(FptcRules newRules) {
+ if (newRules != rules) {
+ NotificationChain msgs = null;
+ if (rules != null)
+ msgs = ((InternalEObject)rules).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.SIMPLE_COMPONENT__RULES, null, msgs);
+ if (newRules != null)
+ msgs = ((InternalEObject)newRules).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.SIMPLE_COMPONENT__RULES, null, msgs);
+ msgs = basicSetRules(newRules, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.SIMPLE_COMPONENT__RULES, newRules, newRules));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlaxmlPackage.SIMPLE_COMPONENT__RULES:
+ return basicSetRules(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlaxmlPackage.SIMPLE_COMPONENT__RULES:
+ return getRules();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlaxmlPackage.SIMPLE_COMPONENT__RULES:
+ setRules((FptcRules)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.SIMPLE_COMPONENT__RULES:
+ setRules((FptcRules)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.SIMPLE_COMPONENT__RULES:
+ return rules != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //SimpleComponentImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/SystemImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/SystemImpl.java
new file mode 100644
index 0000000..1347f5f
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/SystemImpl.java
@@ -0,0 +1,184 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.polarsys.chess.fla.flaxml.Component;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>System</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.polarsys.chess.fla.flaxml.impl.SystemImpl#getComponent <em>Component</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SystemImpl extends MinimalEObjectImpl.Container implements org.polarsys.chess.fla.flaxml.System {
+ /**
+ * The cached value of the '{@link #getComponent() <em>Component</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getComponent()
+ * @generated
+ * @ordered
+ */
+ protected Component component;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SystemImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FlaxmlPackage.Literals.SYSTEM;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Component getComponent() {
+ return component;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetComponent(Component newComponent, NotificationChain msgs) {
+ Component oldComponent = component;
+ component = newComponent;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlaxmlPackage.SYSTEM__COMPONENT, oldComponent, newComponent);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setComponent(Component newComponent) {
+ if (newComponent != component) {
+ NotificationChain msgs = null;
+ if (component != null)
+ msgs = ((InternalEObject)component).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.SYSTEM__COMPONENT, null, msgs);
+ if (newComponent != null)
+ msgs = ((InternalEObject)newComponent).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.SYSTEM__COMPONENT, null, msgs);
+ msgs = basicSetComponent(newComponent, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.SYSTEM__COMPONENT, newComponent, newComponent));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case FlaxmlPackage.SYSTEM__COMPONENT:
+ return basicSetComponent(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FlaxmlPackage.SYSTEM__COMPONENT:
+ return getComponent();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FlaxmlPackage.SYSTEM__COMPONENT:
+ setComponent((Component)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.SYSTEM__COMPONENT:
+ setComponent((Component)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FlaxmlPackage.SYSTEM__COMPONENT:
+ return component != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //SystemImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlAdapterFactory.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlAdapterFactory.java
new file mode 100644
index 0000000..34c901b
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlAdapterFactory.java
@@ -0,0 +1,414 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.polarsys.chess.fla.flaxml.Component;
+import org.polarsys.chess.fla.flaxml.Components;
+import org.polarsys.chess.fla.flaxml.CompositeComponent;
+import org.polarsys.chess.fla.flaxml.Connection;
+import org.polarsys.chess.fla.flaxml.Connections;
+import org.polarsys.chess.fla.flaxml.DocumentRoot;
+import org.polarsys.chess.fla.flaxml.Failure;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.FptcRules;
+import org.polarsys.chess.fla.flaxml.InputPort;
+import org.polarsys.chess.fla.flaxml.InputPorts;
+import org.polarsys.chess.fla.flaxml.NamedElement;
+import org.polarsys.chess.fla.flaxml.OutputPort;
+import org.polarsys.chess.fla.flaxml.OutputPorts;
+import org.polarsys.chess.fla.flaxml.RuleString;
+import org.polarsys.chess.fla.flaxml.SimpleComponent;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage
+ * @generated
+ */
+public class FlaxmlAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static FlaxmlPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FlaxmlAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = FlaxmlPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FlaxmlSwitch<Adapter> modelSwitch =
+ new FlaxmlSwitch<Adapter>() {
+ @Override
+ public Adapter caseComponent(Component object) {
+ return createComponentAdapter();
+ }
+ @Override
+ public Adapter caseComponents(Components object) {
+ return createComponentsAdapter();
+ }
+ @Override
+ public Adapter caseCompositeComponent(CompositeComponent object) {
+ return createCompositeComponentAdapter();
+ }
+ @Override
+ public Adapter caseConnection(Connection object) {
+ return createConnectionAdapter();
+ }
+ @Override
+ public Adapter caseConnections(Connections object) {
+ return createConnectionsAdapter();
+ }
+ @Override
+ public Adapter caseDocumentRoot(DocumentRoot object) {
+ return createDocumentRootAdapter();
+ }
+ @Override
+ public Adapter caseFailure(Failure object) {
+ return createFailureAdapter();
+ }
+ @Override
+ public Adapter caseFptcRules(FptcRules object) {
+ return createFptcRulesAdapter();
+ }
+ @Override
+ public Adapter caseInputPort(InputPort object) {
+ return createInputPortAdapter();
+ }
+ @Override
+ public Adapter caseInputPorts(InputPorts object) {
+ return createInputPortsAdapter();
+ }
+ @Override
+ public Adapter caseNamedElement(NamedElement object) {
+ return createNamedElementAdapter();
+ }
+ @Override
+ public Adapter caseOutputPort(OutputPort object) {
+ return createOutputPortAdapter();
+ }
+ @Override
+ public Adapter caseOutputPorts(OutputPorts object) {
+ return createOutputPortsAdapter();
+ }
+ @Override
+ public Adapter caseRuleString(RuleString object) {
+ return createRuleStringAdapter();
+ }
+ @Override
+ public Adapter caseSimpleComponent(SimpleComponent object) {
+ return createSimpleComponentAdapter();
+ }
+ @Override
+ public Adapter caseSystem(org.polarsys.chess.fla.flaxml.System object) {
+ return createSystemAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.Component <em>Component</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flaxml.Component
+ * @generated
+ */
+ public Adapter createComponentAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.Components <em>Components</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flaxml.Components
+ * @generated
+ */
+ public Adapter createComponentsAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.CompositeComponent <em>Composite Component</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flaxml.CompositeComponent
+ * @generated
+ */
+ public Adapter createCompositeComponentAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.Connection <em>Connection</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flaxml.Connection
+ * @generated
+ */
+ public Adapter createConnectionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.Connections <em>Connections</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flaxml.Connections
+ * @generated
+ */
+ public Adapter createConnectionsAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.DocumentRoot <em>Document Root</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flaxml.DocumentRoot
+ * @generated
+ */
+ public Adapter createDocumentRootAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.Failure <em>Failure</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flaxml.Failure
+ * @generated
+ */
+ public Adapter createFailureAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.FptcRules <em>Fptc Rules</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flaxml.FptcRules
+ * @generated
+ */
+ public Adapter createFptcRulesAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.InputPort <em>Input Port</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flaxml.InputPort
+ * @generated
+ */
+ public Adapter createInputPortAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.InputPorts <em>Input Ports</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flaxml.InputPorts
+ * @generated
+ */
+ public Adapter createInputPortsAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.NamedElement <em>Named Element</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flaxml.NamedElement
+ * @generated
+ */
+ public Adapter createNamedElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.OutputPort <em>Output Port</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flaxml.OutputPort
+ * @generated
+ */
+ public Adapter createOutputPortAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.OutputPorts <em>Output Ports</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flaxml.OutputPorts
+ * @generated
+ */
+ public Adapter createOutputPortsAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.RuleString <em>Rule String</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flaxml.RuleString
+ * @generated
+ */
+ public Adapter createRuleStringAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.SimpleComponent <em>Simple Component</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flaxml.SimpleComponent
+ * @generated
+ */
+ public Adapter createSimpleComponentAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.System <em>System</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.polarsys.chess.fla.flaxml.System
+ * @generated
+ */
+ public Adapter createSystemAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //FlaxmlAdapterFactory
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlResourceFactoryImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlResourceFactoryImpl.java
new file mode 100644
index 0000000..021513c
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlResourceFactoryImpl.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource Factory</b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.util.FlaxmlResourceImpl
+ * @generated
+ */
+public class FlaxmlResourceFactoryImpl extends ResourceFactoryImpl {
+ /**
+ * Creates an instance of the resource factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FlaxmlResourceFactoryImpl() {
+ super();
+ }
+
+ /**
+ * Creates an instance of the resource.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Resource createResource(URI uri) {
+ XMLResource result = new FlaxmlResourceImpl(uri);
+ result.getDefaultSaveOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
+ result.getDefaultLoadOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
+
+ result.getDefaultSaveOptions().put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
+
+ result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
+ result.getDefaultSaveOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
+
+ result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_LEXICAL_HANDLER, Boolean.TRUE);
+ return result;
+ }
+
+} //FlaxmlResourceFactoryImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlResourceImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlResourceImpl.java
new file mode 100644
index 0000000..c3f9124
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlResourceImpl.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource </b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.util.FlaxmlResourceFactoryImpl
+ * @generated
+ */
+public class FlaxmlResourceImpl extends XMLResourceImpl {
+ /**
+ * Creates an instance of the resource.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param uri the URI of the new resource.
+ * @generated
+ */
+ public FlaxmlResourceImpl(URI uri) {
+ super(uri);
+ }
+
+} //FlaxmlResourceImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlSwitch.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlSwitch.java
new file mode 100644
index 0000000..48f4527
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlSwitch.java
@@ -0,0 +1,457 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.polarsys.chess.fla.flaxml.Component;
+import org.polarsys.chess.fla.flaxml.Components;
+import org.polarsys.chess.fla.flaxml.CompositeComponent;
+import org.polarsys.chess.fla.flaxml.Connection;
+import org.polarsys.chess.fla.flaxml.Connections;
+import org.polarsys.chess.fla.flaxml.DocumentRoot;
+import org.polarsys.chess.fla.flaxml.Failure;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.FptcRules;
+import org.polarsys.chess.fla.flaxml.InputPort;
+import org.polarsys.chess.fla.flaxml.InputPorts;
+import org.polarsys.chess.fla.flaxml.NamedElement;
+import org.polarsys.chess.fla.flaxml.OutputPort;
+import org.polarsys.chess.fla.flaxml.OutputPorts;
+import org.polarsys.chess.fla.flaxml.RuleString;
+import org.polarsys.chess.fla.flaxml.SimpleComponent;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage
+ * @generated
+ */
+public class FlaxmlSwitch<T> extends Switch<T> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static FlaxmlPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FlaxmlSwitch() {
+ if (modelPackage == null) {
+ modelPackage = FlaxmlPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @parameter ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case FlaxmlPackage.COMPONENT: {
+ Component component = (Component)theEObject;
+ T result = caseComponent(component);
+ if (result == null) result = caseNamedElement(component);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlaxmlPackage.COMPONENTS: {
+ Components components = (Components)theEObject;
+ T result = caseComponents(components);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlaxmlPackage.COMPOSITE_COMPONENT: {
+ CompositeComponent compositeComponent = (CompositeComponent)theEObject;
+ T result = caseCompositeComponent(compositeComponent);
+ if (result == null) result = caseComponent(compositeComponent);
+ if (result == null) result = caseNamedElement(compositeComponent);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlaxmlPackage.CONNECTION: {
+ Connection connection = (Connection)theEObject;
+ T result = caseConnection(connection);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlaxmlPackage.CONNECTIONS: {
+ Connections connections = (Connections)theEObject;
+ T result = caseConnections(connections);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlaxmlPackage.DOCUMENT_ROOT: {
+ DocumentRoot documentRoot = (DocumentRoot)theEObject;
+ T result = caseDocumentRoot(documentRoot);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlaxmlPackage.FAILURE: {
+ Failure failure = (Failure)theEObject;
+ T result = caseFailure(failure);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlaxmlPackage.FPTC_RULES: {
+ FptcRules fptcRules = (FptcRules)theEObject;
+ T result = caseFptcRules(fptcRules);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlaxmlPackage.INPUT_PORT: {
+ InputPort inputPort = (InputPort)theEObject;
+ T result = caseInputPort(inputPort);
+ if (result == null) result = caseNamedElement(inputPort);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlaxmlPackage.INPUT_PORTS: {
+ InputPorts inputPorts = (InputPorts)theEObject;
+ T result = caseInputPorts(inputPorts);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlaxmlPackage.NAMED_ELEMENT: {
+ NamedElement namedElement = (NamedElement)theEObject;
+ T result = caseNamedElement(namedElement);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlaxmlPackage.OUTPUT_PORT: {
+ OutputPort outputPort = (OutputPort)theEObject;
+ T result = caseOutputPort(outputPort);
+ if (result == null) result = caseNamedElement(outputPort);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlaxmlPackage.OUTPUT_PORTS: {
+ OutputPorts outputPorts = (OutputPorts)theEObject;
+ T result = caseOutputPorts(outputPorts);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlaxmlPackage.RULE_STRING: {
+ RuleString ruleString = (RuleString)theEObject;
+ T result = caseRuleString(ruleString);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlaxmlPackage.SIMPLE_COMPONENT: {
+ SimpleComponent simpleComponent = (SimpleComponent)theEObject;
+ T result = caseSimpleComponent(simpleComponent);
+ if (result == null) result = caseComponent(simpleComponent);
+ if (result == null) result = caseNamedElement(simpleComponent);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FlaxmlPackage.SYSTEM: {
+ org.polarsys.chess.fla.flaxml.System system = (org.polarsys.chess.fla.flaxml.System)theEObject;
+ T result = caseSystem(system);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Component</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Component</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseComponent(Component object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Components</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Components</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseComponents(Components object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Composite Component</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Composite Component</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCompositeComponent(CompositeComponent object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Connection</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Connection</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseConnection(Connection object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Connections</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Connections</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseConnections(Connections object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Document Root</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Document Root</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDocumentRoot(DocumentRoot object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Failure</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Failure</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFailure(Failure object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Fptc Rules</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Fptc Rules</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFptcRules(FptcRules object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Input Port</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Input Port</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseInputPort(InputPort object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Input Ports</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Input Ports</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseInputPorts(InputPorts object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Named Element</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Named Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseNamedElement(NamedElement object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Output Port</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Output Port</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseOutputPort(OutputPort object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Output Ports</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Output Ports</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseOutputPorts(OutputPorts object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Rule String</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Rule String</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseRuleString(RuleString object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Simple Component</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Simple Component</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSimpleComponent(SimpleComponent object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>System</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>System</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSystem(org.polarsys.chess.fla.flaxml.System object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} //FlaxmlSwitch
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlValidator.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlValidator.java
new file mode 100644
index 0000000..0009e35
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlValidator.java
@@ -0,0 +1,376 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.util;
+
+import java.util.Map;
+
+import org.eclipse.emf.common.util.DiagnosticChain;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.EObjectValidator;
+import org.eclipse.emf.ecore.xml.type.util.XMLTypeUtil;
+import org.eclipse.emf.ecore.xml.type.util.XMLTypeValidator;
+import org.polarsys.chess.fla.flaxml.Component;
+import org.polarsys.chess.fla.flaxml.Components;
+import org.polarsys.chess.fla.flaxml.CompositeComponent;
+import org.polarsys.chess.fla.flaxml.Connection;
+import org.polarsys.chess.fla.flaxml.Connections;
+import org.polarsys.chess.fla.flaxml.DocumentRoot;
+import org.polarsys.chess.fla.flaxml.Failure;
+import org.polarsys.chess.fla.flaxml.FailureType;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.FptcRules;
+import org.polarsys.chess.fla.flaxml.InputPort;
+import org.polarsys.chess.fla.flaxml.InputPorts;
+import org.polarsys.chess.fla.flaxml.NamedElement;
+import org.polarsys.chess.fla.flaxml.OutputPort;
+import org.polarsys.chess.fla.flaxml.OutputPorts;
+import org.polarsys.chess.fla.flaxml.RuleString;
+import org.polarsys.chess.fla.flaxml.SimpleComponent;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Validator</b> for the model.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage
+ * @generated
+ */
+public class FlaxmlValidator extends EObjectValidator {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final FlaxmlValidator INSTANCE = new FlaxmlValidator();
+
+ /**
+ * A constant for the {@link org.eclipse.emf.common.util.Diagnostic#getSource() source} of diagnostic {@link org.eclipse.emf.common.util.Diagnostic#getCode() codes} from this package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.common.util.Diagnostic#getSource()
+ * @see org.eclipse.emf.common.util.Diagnostic#getCode()
+ * @generated
+ */
+ public static final String DIAGNOSTIC_SOURCE = "org.polarsys.chess.fla.flaxml";
+
+ /**
+ * A constant with a fixed name that can be used as the base value for additional hand written constants.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final int GENERATED_DIAGNOSTIC_CODE_COUNT = 0;
+
+ /**
+ * A constant with a fixed name that can be used as the base value for additional hand written constants in a derived class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static final int DIAGNOSTIC_CODE_COUNT = GENERATED_DIAGNOSTIC_CODE_COUNT;
+
+ /**
+ * The cached base package validator.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XMLTypeValidator xmlTypeValidator;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FlaxmlValidator() {
+ super();
+ xmlTypeValidator = XMLTypeValidator.INSTANCE;
+ }
+
+ /**
+ * Returns the package of this validator switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EPackage getEPackage() {
+ return FlaxmlPackage.eINSTANCE;
+ }
+
+ /**
+ * Calls <code>validateXXX</code> for the corresponding classifier of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected boolean validate(int classifierID, Object value, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ switch (classifierID) {
+ case FlaxmlPackage.COMPONENT:
+ return validateComponent((Component)value, diagnostics, context);
+ case FlaxmlPackage.COMPONENTS:
+ return validateComponents((Components)value, diagnostics, context);
+ case FlaxmlPackage.COMPOSITE_COMPONENT:
+ return validateCompositeComponent((CompositeComponent)value, diagnostics, context);
+ case FlaxmlPackage.CONNECTION:
+ return validateConnection((Connection)value, diagnostics, context);
+ case FlaxmlPackage.CONNECTIONS:
+ return validateConnections((Connections)value, diagnostics, context);
+ case FlaxmlPackage.DOCUMENT_ROOT:
+ return validateDocumentRoot((DocumentRoot)value, diagnostics, context);
+ case FlaxmlPackage.FAILURE:
+ return validateFailure((Failure)value, diagnostics, context);
+ case FlaxmlPackage.FPTC_RULES:
+ return validateFptcRules((FptcRules)value, diagnostics, context);
+ case FlaxmlPackage.INPUT_PORT:
+ return validateInputPort((InputPort)value, diagnostics, context);
+ case FlaxmlPackage.INPUT_PORTS:
+ return validateInputPorts((InputPorts)value, diagnostics, context);
+ case FlaxmlPackage.NAMED_ELEMENT:
+ return validateNamedElement((NamedElement)value, diagnostics, context);
+ case FlaxmlPackage.OUTPUT_PORT:
+ return validateOutputPort((OutputPort)value, diagnostics, context);
+ case FlaxmlPackage.OUTPUT_PORTS:
+ return validateOutputPorts((OutputPorts)value, diagnostics, context);
+ case FlaxmlPackage.RULE_STRING:
+ return validateRuleString((RuleString)value, diagnostics, context);
+ case FlaxmlPackage.SIMPLE_COMPONENT:
+ return validateSimpleComponent((SimpleComponent)value, diagnostics, context);
+ case FlaxmlPackage.SYSTEM:
+ return validateSystem((org.polarsys.chess.fla.flaxml.System)value, diagnostics, context);
+ case FlaxmlPackage.FAILURE_TYPE:
+ return validateFailureType((FailureType)value, diagnostics, context);
+ case FlaxmlPackage.FAILURE_TYPE_OBJECT:
+ return validateFailureTypeObject((FailureType)value, diagnostics, context);
+ case FlaxmlPackage.PATTERN_TYPE:
+ return validatePatternType((String)value, diagnostics, context);
+ default:
+ return true;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateComponent(Component component, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return validate_EveryDefaultConstraint(component, diagnostics, context);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateComponents(Components components, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return validate_EveryDefaultConstraint(components, diagnostics, context);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateCompositeComponent(CompositeComponent compositeComponent, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return validate_EveryDefaultConstraint(compositeComponent, diagnostics, context);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateConnection(Connection connection, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return validate_EveryDefaultConstraint(connection, diagnostics, context);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateConnections(Connections connections, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return validate_EveryDefaultConstraint(connections, diagnostics, context);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateDocumentRoot(DocumentRoot documentRoot, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return validate_EveryDefaultConstraint(documentRoot, diagnostics, context);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateFailure(Failure failure, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return validate_EveryDefaultConstraint(failure, diagnostics, context);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateFptcRules(FptcRules fptcRules, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return validate_EveryDefaultConstraint(fptcRules, diagnostics, context);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateInputPort(InputPort inputPort, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return validate_EveryDefaultConstraint(inputPort, diagnostics, context);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateInputPorts(InputPorts inputPorts, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return validate_EveryDefaultConstraint(inputPorts, diagnostics, context);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateNamedElement(NamedElement namedElement, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return validate_EveryDefaultConstraint(namedElement, diagnostics, context);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateOutputPort(OutputPort outputPort, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return validate_EveryDefaultConstraint(outputPort, diagnostics, context);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateOutputPorts(OutputPorts outputPorts, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return validate_EveryDefaultConstraint(outputPorts, diagnostics, context);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateRuleString(RuleString ruleString, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return validate_EveryDefaultConstraint(ruleString, diagnostics, context);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateSimpleComponent(SimpleComponent simpleComponent, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return validate_EveryDefaultConstraint(simpleComponent, diagnostics, context);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateSystem(org.polarsys.chess.fla.flaxml.System system, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return validate_EveryDefaultConstraint(system, diagnostics, context);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateFailureType(FailureType failureType, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return true;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateFailureTypeObject(FailureType failureTypeObject, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return true;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validatePatternType(String patternType, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ boolean result = validatePatternType_Pattern(patternType, diagnostics, context);
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @see #validatePatternType_Pattern
+ */
+ public static final PatternMatcher [][] PATTERN_TYPE__PATTERN__VALUES =
+ new PatternMatcher [][] {
+ new PatternMatcher [] {
+ XMLTypeUtil.createPatternMatcher("[^>]+\\.[^>]+->[^>]+\\.[^>]+")
+ }
+ };
+
+ /**
+ * Validates the Pattern constraint of '<em>Pattern Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validatePatternType_Pattern(String patternType, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return validatePattern(FlaxmlPackage.Literals.PATTERN_TYPE, patternType, PATTERN_TYPE__PATTERN__VALUES, diagnostics, context);
+ }
+
+ /**
+ * Returns the resource locator that will be used to fetch messages for this validator's diagnostics.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ // TODO
+ // Specialize this to return a resource locator for messages specific to this validator.
+ // Ensure that you remove @generated or mark it @generated NOT
+ return super.getResourceLocator();
+ }
+
+} //FlaxmlValidator
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlXMLProcessor.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlXMLProcessor.java
new file mode 100644
index 0000000..1b96443
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlXMLProcessor.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.util;
+
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xmi.util.XMLProcessor;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+
+/**
+ * This class contains helper methods to serialize and deserialize XML documents
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FlaxmlXMLProcessor extends XMLProcessor {
+
+ /**
+ * Public constructor to instantiate the helper.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FlaxmlXMLProcessor() {
+ super((EPackage.Registry.INSTANCE));
+ FlaxmlPackage.eINSTANCE.eClass();
+ }
+
+ /**
+ * Register for "*" and "xml" file extensions the FlaxmlResourceFactoryImpl factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected Map<String, Resource.Factory> getRegistrations() {
+ if (registrations == null) {
+ super.getRegistrations();
+ registrations.put(XML_EXTENSION, new FlaxmlResourceFactoryImpl());
+ registrations.put(STAR_EXTENSION, new FlaxmlResourceFactoryImpl());
+ }
+ return registrations;
+ }
+
+} //FlaxmlXMLProcessor
diff --git a/plugins/org.polarsys.chess.fla.transformations/.classpath b/plugins/org.polarsys.chess.fla.transformations/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.polarsys.chess.fla.transformations/.project b/plugins/org.polarsys.chess.fla.transformations/.project
new file mode 100644
index 0000000..1816fd8
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/.project
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.polarsys.chess.fla.transformations</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2m.qvt.oml.project.QVTOBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>src_container</key>
+ <value>transforms</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.m2m.qvt.oml.project.QVTONature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.polarsys.chess.fla.transformations/.settings/org.eclipse.m2m.qvt.oml.mmodel.urimap b/plugins/org.polarsys.chess.fla.transformations/.settings/org.eclipse.m2m.qvt.oml.mmodel.urimap
new file mode 100644
index 0000000..aa9cc5b
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/.settings/org.eclipse.m2m.qvt.oml.mmodel.urimap
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="ASCII"?>
+<uriMap:MappingContainer xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:uriMap="http:///www.eclipse.org/m2m/qvt/oml/MModelUriMap/1.0.0">
+ <mapping sourceURI="http://www.polarsys.org/chess/fla/flaxml" targetURI="platform:/resource/org.polarsys.chess.fla.flaxml/model/flaxml.ecore"/>
+ <mapping sourceURI="http://www.polarsys.org/chess/fla/flamm" targetURI="platform:/resource/org.polarsys.chess.fla.flamm/model/flamm.ecore"/>
+</uriMap:MappingContainer>
diff --git a/plugins/org.polarsys.chess.fla.transformations/META-INF/MANIFEST.MF b/plugins/org.polarsys.chess.fla.transformations/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..2a3f8eb
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Concerto-FLA Transformations Plug-in
+Bundle-SymbolicName: org.polarsys.chess.fla.transformations;singleton:=true
+Bundle-Version: 0.1.0.qualifier
+Bundle-Vendor:
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.m2m.qvt.oml,
+ org.eclipse.m2m.qvt.oml.project,
+ org.eclipse.emf.ecore,
+ org.eclipse.uml2.uml;bundle-version="5.0.0",
+ org.polarsys.chess.chessmlprofile,
+ org.eclipse.m2m.qvt.oml.runtime,
+ org.polarsys.chess.fla.flamm
+Export-Package: org.polarsys.chess.fla.transformations.utilities
diff --git a/plugins/org.polarsys.chess.fla.transformations/about.html b/plugins/org.polarsys.chess.fla.transformations/about.html
new file mode 100644
index 0000000..dd3c089
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.polarsys.chess.fla.transformations/build.properties b/plugins/org.polarsys.chess.fla.transformations/build.properties
new file mode 100644
index 0000000..ca8ca05
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/build.properties
@@ -0,0 +1,18 @@
+###############################################################################
+# CHESS core plugin
+#
+# Copyright (C) 2011-2015
+# Mälardalen University, Sweden
+#
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License
+# v1.0 which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+###############################################################################
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ transforms/,\
+ plugin.xml
diff --git a/plugins/org.polarsys.chess.fla.transformations/plugin.xml b/plugins/org.polarsys.chess.fla.transformations/plugin.xml
new file mode 100644
index 0000000..95a840b
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/plugin.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.m2m.qvt.oml.runtime.qvtTransformation">
+ <transformation
+ file="transforms/Chess2FlaMM.qvto"
+ id="org.polarsys.chess.fla.transformations/transforms/Chess2FlaMM">
+ </transformation>
+ <transformation
+ file="transforms/FlaMM2Chess_BackPropagation.qvto"
+ id="org.polarsys.chess.fla.transformations/transforms/FlaMM2Chess_BackPropagation">
+ </transformation>
+ <transformation
+ file="transforms/FlaMM2FlaXML.qvto"
+ id="org.polarsys.chess.fla.transformations/transforms/FlaMM2FlaXML">
+ </transformation>
+ <transformation
+ file="transforms/FlaXML2FlaMM.qvto"
+ id="org.polarsys.chess.fla.transformations/transforms/FlaXML2FlaMM">
+ </transformation>
+ <transformation
+ file="transforms/Chess2FlaXML.qvto"
+ id="org.polarsys.chess.fla.transformations/transforms/Chess2FlaXML">
+ </transformation>
+ </extension>
+ <extension
+ point="org.eclipse.m2m.qvt.oml.javaBlackboxUnits">
+ <unit
+ name="blackboxlibrary"
+ namespace="org.polarsys.chess.fla.transformations.utilities">
+ <library
+ class="org.polarsys.chess.fla.transformations.utilities.UtilitiesLibrary"
+ name="UtilitiesLibrary">
+ <metamodel
+ nsURI="http://www.eclipse.org/emf/2002/Ecore">
+ </metamodel>
+ <metamodel
+ nsURI="http://www.eclipse.org/uml2/5.0.0/UML">
+ </metamodel>
+ <metamodel
+ nsURI="http://www.polarsys.org/chess/fla/flamm">
+ </metamodel>
+ </library>
+ </unit>
+ </extension>
+
+</plugin>
diff --git a/plugins/org.polarsys.chess.fla.transformations/src/org/polarsys/chess/fla/transformations/utilities/UtilitiesLibrary.java b/plugins/org.polarsys.chess.fla.transformations/src/org/polarsys/chess/fla/transformations/utilities/UtilitiesLibrary.java
new file mode 100644
index 0000000..3b2aef0
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/src/org/polarsys/chess/fla/transformations/utilities/UtilitiesLibrary.java
@@ -0,0 +1,288 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.transformations.utilities;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.UUID;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.m2m.qvt.oml.blackbox.java.Operation;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Stereotype;
+import org.polarsys.chess.fla.flamm.Expression;
+import org.polarsys.chess.fla.flamm.Failure;
+import org.polarsys.chess.fla.flamm.FlammFactory;
+import org.polarsys.chess.fla.flamm.Port;
+import org.polarsys.chess.fla.flamm.Rule;
+import org.polarsys.chess.fla.flamm.SimpleComponent;
+import org.polarsys.chess.fla.flamm.FailureTypes.FailureType;
+
+
+public class UtilitiesLibrary {
+ private static final String FLA_PREFIX = "FLA:";
+ private static final String FPTC_SPECIFICATION_STEREOTYPE = "CHESS::Dependability::FailurePropagation::FPTCSpecification";
+
+
+ @Operation(contextual=true)
+ public static String aStringMethod(String s) {
+ return s.toUpperCase();
+ }
+
+ @Operation(contextual=true)
+ public static String getXmiId(Element umlElement) {
+ Resource resource = umlElement.eResource();
+ if (resource != null){
+ String id = resource.getURIFragment(umlElement);
+ return id;
+ } else {
+ return UUID.randomUUID().toString();
+ }
+ }
+
+ @Operation(contextual=true)
+ public static Element getElementWithXmiId(Element umlElement, String id) {
+ if (id == null || umlElement == null) {
+ return null;
+ }
+
+ for (Element element : umlElement.getOwnedElements()) {
+ Resource resource = umlElement.eResource();
+ if (resource != null && id.equals(resource.getURIFragment(umlElement))){
+ return element;
+ }
+ }
+ return null;
+ }
+
+ @Operation(contextual=true)
+ public static Rule getRuleFromRulestring(String flaRulestring, SimpleComponent component) {
+ String rulestring = flaRulestring;
+ if (flaRulestring.startsWith(FLA_PREFIX)) {
+ rulestring = flaRulestring.substring(FLA_PREFIX.length());
+ }
+
+ String[] expressions = rulestring.split("->");
+ Rule rule = FlammFactory.eINSTANCE.createRule();
+
+ rule.getInputExpression().addAll(string2Expressions(expressions[0], component.getInputPorts()));
+ rule.getOutputExpression().addAll(string2Expressions(expressions[1], component.getOutputPorts()));
+
+ try {
+ validateRuleVariables(rule);
+ } catch (Exception e) {
+ throw new RuntimeException(e.getMessage() + " Component: " + component.getId());
+ }
+ return rule;
+ }
+
+ private static void validateRuleVariables(Rule rule) {
+ Set<String> inputVariables = new HashSet<String>();
+ Set<String> outputVariables = new HashSet<String>();
+
+ for (Expression expression : rule.getInputExpression()) {
+ inputVariables.addAll(getAllVariableNames(expression));
+ }
+
+ for (Expression expression : rule.getOutputExpression()) {
+ outputVariables.addAll(getAllVariableNames(expression));
+ }
+
+ if (!inputVariables.containsAll(outputVariables)) {
+ // TODO: Fix error handling
+ outputVariables.removeAll(inputVariables);
+ throw new RuntimeException("Unknown variable(s) in output expression! " +
+ "(" + outputVariables + ")");
+ }
+
+ if (!outputVariables.contains(inputVariables)) {
+ //TODO: Warning: input variable not used in output expression, consider using wildcard instead
+ }
+ }
+
+ private static Set<String> getAllVariableNames(Expression expression) {
+ Set<String> variables = new HashSet<String>();
+ for (Failure failure : expression.getFailures()) {
+ if (failure.getType() == FailureType.VARIABLE) {
+ variables.add(failure.getId());
+ }
+ }
+ return variables;
+ }
+
+ static List<Expression> string2Expressions(String str, List<Port> list) {
+ List<Expression> expressions = new ArrayList<Expression>();
+ for (String s : splitToExpressions(str)) {
+ expressions.add(getExpression(s, list));
+ }
+
+ return expressions;
+ }
+
+ private static String[] splitToExpressions(String str) {
+ return str.split(",");
+ }
+
+ private static Expression getExpression(String s, List<Port> list) {
+ String[] parts = s.split("\\.");
+ String portName = parts[0];
+ String failureString = parts[1];
+ Failure failure = getFailureFromString(failureString);
+
+ Expression expr = FlammFactory.eINSTANCE.createExpression();
+ expr.setPort(getPortByName(list, portName));
+ expr.getFailures().add(failure);
+ return expr;
+ }
+
+ static Failure getFailureFromString(String failureString) {
+ Failure failure = FlammFactory.eINSTANCE.createFailure();
+ if (failureString.equals("noFailure")) {
+ failure.setType(FailureType.NO_FAILURE);
+
+ } else if (failureString.equals("wildcard") || failureString.equals("_")) {
+ failure.setType(FailureType.WILDCARD);
+
+ } else if (isProperFailure(failureString)) {
+ failure.setType(FailureType.FAILURE);
+
+ } else {
+ failure.setType(FailureType.VARIABLE);
+ }
+
+ failure.setId(failureString);
+ return failure;
+ }
+
+ // Since CHESS-ML is using enumerated failure types, this is necessary to tell
+ // failure types and variable names apart.
+ protected static boolean isProperFailure(String failure) {
+ return org.polarsys.chess.chessmlprofile.Dependability.FailurePropagation.FailurePropagationDataTypes.
+ FailureType.get(failure) != null;
+ }
+
+ private static Port getPortByName(List<Port> list, String portName) {
+ for(Port port : list) {
+ if (port.getName().equals(portName)) {
+ return port;
+ }
+ }
+ return null;
+ }
+
+ @Operation(contextual=true)
+ public static void toRuleExpression(String ruleString, Expression expression) {
+ String portId = ruleString.substring(0, ruleString.indexOf('.'));
+ expression.setPort(getPortById(portId));
+
+ expression.getFailures().add(null);
+ }
+
+ private static Port getPortById(String portId) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Operation(contextual=true)
+ public static String rule2String(Rule rule) {
+ String result = "";
+ result += expressionList2string(rule.getInputExpression());
+ result += "->";
+ result += expressionList2string(rule.getOutputExpression());
+ return result;
+ }
+
+ protected static String expressionList2string(List<Expression> list) {
+ String result = "";
+ for (Expression expression : list) {
+ result += expression.getPort().getName() + "." + failureList2String(expression.getFailures()) + ",";
+ }
+ if (result.endsWith(",")) {
+ result = result.substring(0, result.length() - 1);
+ }
+ return result;
+ }
+
+ protected static String failureList2String(List<Failure> list) {
+ if (list == null || list.isEmpty()) {
+ return "";
+
+ } else if (list.size() == 1) {
+ return failure2string(list.get(0));
+
+ } else {
+ String result = "{";
+ for (int i = 0; i < list.size(); i++) {
+ result += failure2string(list.get(i));
+ if (i < list.size() - 1) {
+ result += ",";
+ }
+ }
+ result += "}";
+ return result;
+ }
+ }
+
+ /*
+ * Only FPTC for now
+ */
+ protected static String failure2string(Failure failure) {
+ return failure.getId();
+ }
+
+ @Operation(contextual=true)
+ public static boolean blackboxApplyStereotype(Element element, String stereotypeQName) {
+ Stereotype stereotype = element.getApplicableStereotype(stereotypeQName);
+ Object returnValue = null;
+ if (stereotype != null) {
+ returnValue = element.applyStereotype(stereotype);
+ }
+ return returnValue != null;
+ }
+
+ @Operation(contextual=true)
+ public static Comment blackboxCreateFptcComment(Element owner, NamedElement annotated, Property partWithPort) {
+ Comment comment = owner.createOwnedComment();
+ comment.getAnnotatedElements().add(annotated);
+ comment.applyStereotype(comment.getApplicableStereotype(FPTC_SPECIFICATION_STEREOTYPE));
+ Stereotype s = comment.getAppliedStereotype(FPTC_SPECIFICATION_STEREOTYPE);
+ comment.setValue(s, "partWithPort", partWithPort);
+ String commentBody = "FLA: " + getName(partWithPort);
+ if (partWithPort != annotated) {
+ commentBody += "." + getName(annotated);
+ }
+ comment.setBody(commentBody);
+ return comment;
+ }
+
+ protected static String getName(NamedElement element) {
+ if (element != null && element.getName() != null) {
+ return element.getName();
+ } else {
+ return "";
+ }
+ }
+
+// @Operation(contextual=true)
+// public static Set<Port> getConnectedPorts(CompositeComponent component) {
+// Set<Port> ports = new HashSet<Port>();
+// for (Port port : component.getInputPorts()) {
+//
+// }
+// }
+}
diff --git a/plugins/org.polarsys.chess.fla.transformations/transforms/Chess2FlaMM.qvto b/plugins/org.polarsys.chess.fla.transformations/transforms/Chess2FlaMM.qvto
new file mode 100644
index 0000000..ea977f8
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/transforms/Chess2FlaMM.qvto
@@ -0,0 +1,208 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+import org.polarsys.chess.fla.transformations.utilities.blackboxlibrary;
+
+import PortUtilities;
+import CommonUtilities;
+
+modeltype Chess uses chessmlprofile('http://CHESS');
+modeltype ChessFailurePropagation uses 'http://CHESS/Dependability/FailurePropagation';
+modeltype ChessFailureTypes uses 'http:///CHESS/Dependability/FailurePropagation/FailurePropagationDataTypes.ecore';
+modeltype ChessCore uses 'http://CHESS/Core';
+
+modeltype FLA uses flamm('http://www.polarsys.org/chess/fla/flamm');
+
+modeltype UML uses 'http://www.eclipse.org/uml2/5.0.0/UML';
+modeltype MARTE uses "http://www.eclipse.org/papyrus/GCM/1";
+modeltype SySML uses "http://www.eclipse.org/papyrus/0.7.0/SysML/PortAndFlows";
+
+
+transformation Chess2FlaMM(in source : Chess, out target : FLA);
+
+// Qualified names of stereotypes
+property FAILURE_PROPAGATION_STEREOTYPE = "CHESS::Dependability::FailurePropagation::FailurePropagationAnalysis";
+property FPTC_SPECIFICATION_STEREOTYPE = "CHESS::Dependability::FailurePropagation::FPTCSpecification";
+property FPTC_RULE_STEREOTYPE = "CHESS::Dependability::FailurePropagation::FPTC";
+property FLA_BEHAVIOUR_SPECIFICATION = "CHESS::Dependability::FailurePropagation::FLABehavior";
+
+// Platform selected by user
+configuration property selectedPlatformQName : String;
+
+property model : Model;
+property rootComponent : Class;
+
+main() {
+ this.model := source.rootObjects()![Model];
+ var selectedInstSpec : Package = model.findElementByQualifiedName(selectedPlatformQName).oclAsType(Package);
+ this.rootComponent := selectedInstSpec.ownedElement[InstanceSpecification]->
+ selectOne(name = selectedInstSpec.name.substringBefore("_instSpec")).classifier![Class];
+ //this.rootComponent.ownedComment += object Comment {body := "hello chess"; annotatedElement += rootComponent;};
+ this.rootComponent.UmlComponent2FlaComponent();
+}
+
+query UML::Class::UmlComponent2FlaComponent() : FLA::Component {
+ var flaComponent : FLA::Component;
+ if (self.isComposite()) {
+ flaComponent := self.UmlComponent2CompositeComponent();
+ } else {
+ flaComponent := self.UmlComponent2SimpleComponent();
+ };
+
+ flaComponent.name := self.name;
+ flaComponent.id := self.getTransformationId();
+ flaComponent.inputPorts := self.ownedPort->select(port : UML::Port | port.isInputPort()).umlInputPort2flaPort(flaComponent);
+ flaComponent.outputPorts := self.ownedPort->select(port : UML::Port | port.isOutputPort()).umlOutputPort2flaPort(flaComponent);
+
+ if (flaComponent.oclIsTypeOf(SimpleComponent)) {
+ setRulesInComponent(flaComponent.oclAsType(SimpleComponent), self.getRuleStrings());
+ } else if (flaComponent.oclIsTypeOf(CompositeComponent)) {
+ flaComponent.oclAsType(CompositeComponent).connectPorts(self.ownedMember[Connector]);
+ };
+ return flaComponent;
+}
+
+// Return a Fla component based on a property
+// Component data wil be overridden by property data where available
+query Property::asFlaComponent() : FLA::Component {
+ if (not self.hasPorts()) {
+ return null;
+ };
+ var component := self.type.oclAsType(Class).UmlComponent2FlaComponent();
+ // Override component name and id with property identity
+ component.name := self.name;
+ component.id := self.getTransformationId();
+ // Override rules in component with property rules, if present
+ if (component.oclIsTypeOf(SimpleComponent)) {
+ setRulesInComponent(component.oclAsType(SimpleComponent), self.getRuleStrings());
+ };
+ return component;
+}
+
+query UML::Class::UmlComponent2CompositeComponent() : FLA::CompositeComponent {
+ var flaComponent = object FLA::CompositeComponent {};
+ flaComponent.components += self.ownedMember->select(oclIsTypeOf(Property)).oclAsType(Property).asFlaComponent();
+ //connections += self.ownedMember[Connector]->reject(_end->exists(role = null))->map umlConnector2flaConnection();
+ return flaComponent;
+}
+
+query UML::Class::UmlComponent2SimpleComponent() : FLA::SimpleComponent {
+ var flaComponent = object FLA::SimpleComponent {};
+ return flaComponent;
+}
+
+query FLA::Component::getPorts() : Set(FLA::Port) {
+ return self.inputPorts->union(self.outputPorts);
+}
+
+query UML::Port::umlOutputPort2flaPort(owner : FLA::Component) : FLA::Port {
+ var resultPort = object FLA::Port {id := self.getTransformationId(); name := self.name};
+ resultPort.owner := owner;
+ return resultPort;
+}
+
+query UML::Port::umlInputPort2flaPort(owner : FLA::Component) : FLA::Port {
+ var resultPort = object FLA::Port {id := self.getTransformationId(); name := self.name};
+ resultPort.owner := owner;
+
+ if (self.owner = this.rootComponent) {
+ resultPort.failures := self.getInputFailures();
+ };
+ return resultPort;
+}
+
+query UML::Port::getInputFailures() : Bag(FLA::Failure) {
+ if (self.owner <> this.rootComponent) {
+ return null;
+ };
+
+ var comment := this.rootComponent.ownedComment->selectOne(hasAnnotatedElement(self) and isStereotyped(FPTC_SPECIFICATION_STEREOTYPE));
+ var failures = comment.getStereotypeValue(FPTC_SPECIFICATION_STEREOTYPE, "failure");
+ var resultVar := failures.oclAsType(Collection(FailureType))->ChessFailureType2FlaFailure();
+ return resultVar;
+}
+
+query CompositeComponent::connectPorts(connections : Set(UML::Connector)) {
+ var ports = self.getPorts()->union(self.components.getPorts()->asSet());
+ connections.connectFlaPorts(ports, self);
+}
+
+query UML::Connector::connectFlaPorts(ports : Set(FLA::Port), component : CompositeComponent) {
+ var connectorEnds = self._end;
+ var connectedPorts = ports->select(port : FLA::Port | port.matches(connectorEnds->at(1), component) or port.matches(connectorEnds->at(2), component) )->asOrderedSet();
+ connectedPorts->at(1).connectedPorts += connectedPorts->at(2);
+ connectedPorts->at(2).connectedPorts += connectedPorts->at(1);
+}
+
+query FLA::Port::matches(connectorEnd : UML::ConnectorEnd, component : CompositeComponent) : Boolean {
+ return ((connectorEnd.role.getTransformationId() = self.id) and
+ (((connectorEnd.partWithPort <> null) and (connectorEnd.partWithPort.getTransformationId() = self.owner.id))
+ or (connectorEnd.partWithPort = null and self.owner = component))) ;
+}
+
+query setRulesInComponent(inout component : FLA::SimpleComponent, ruleStrings : Collection(String)) {
+ if ((ruleStrings <> null) and (not ruleStrings->oclIsInvalid())) {
+ component.rules := ruleStrings.getRuleFromRulestring(component);
+ }
+}
+
+query UML::Element::getRuleStrings() : Collection(String) {
+ // Use FLABehavior if present
+ if (self.isStereotyped(FLA_BEHAVIOUR_SPECIFICATION)) {
+ var flaStereotype := self.getStereotypeApplication(FLA_BEHAVIOUR_SPECIFICATION).oclAsType(FLABehavior);
+ return flaStereotype.fptc.trim().tokenize(";").trim();
+ } else {
+ return null;
+ };
+}
+
+query UML::Component::getSelectedPlatform() : CHGaResourcePlatform {
+ var stereotype = self.getAppliedStereotype(FAILURE_PROPAGATION_STEREOTYPE);
+ if (stereotype = null) {
+ return null;
+ };
+
+ var selectedPackage = self.getValue(stereotype, "platform").oclAsType(CHGaResourcePlatform);
+ return selectedPackage;
+}
+
+query UML::NamedElement::getTransformationId() : String {
+ //return self.getXmiId();
+ return self.getQualifiedName();
+}
+
+query ChessFailureTypes::FailureType::ChessFailureType2FlaFailure() : FLA::Failure {
+ var failure = object Failure {};
+ switch {
+ case (self = FailureType::noFailure) {
+ failure.type := FLA::FailureTypes::FailureType::noFailure;
+ failure.id := "noFailure";
+ }
+ case (self = FailureType::wildcard) {
+ failure.type := FLA::FailureTypes::FailureType::wildcard;
+ failure.id := "wildcard";
+ }
+ case (self = FailureType::variable) {
+ failure.type := FLA::FailureTypes::FailureType::variable;
+ failure.id := "notSet";
+ //TODO: not supported
+ }
+ else {
+ failure.type := FLA::FailureTypes::FailureType::failure;
+ failure.id := self.toString();
+ }
+ };
+ return failure;
+}
+
+
diff --git a/plugins/org.polarsys.chess.fla.transformations/transforms/Chess2FlaXML.qvto b/plugins/org.polarsys.chess.fla.transformations/transforms/Chess2FlaXML.qvto
new file mode 100644
index 0000000..7bc7439
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/transforms/Chess2FlaXML.qvto
@@ -0,0 +1,190 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+import PortUtilities;
+import CommonUtilities;
+
+modeltype Chess uses chessmlprofile('http://CHESS');
+modeltype ChessFailurePropagation uses 'http://CHESS/Dependability/FailurePropagation';
+modeltype ChessFailureTypes uses 'http:///CHESS/Dependability/FailurePropagation/FailurePropagationDataTypes.ecore';
+modeltype ChessCore uses 'http://CHESS/Core';
+
+modeltype FLA uses 'http://www.polarsys.org/chess/fla/flaxml';
+
+modeltype UML uses 'http://www.eclipse.org/uml2/5.0.0/UML';
+modeltype MARTE uses "http://www.eclipse.org/papyrus/GCM/1";
+modeltype SySML uses "http://www.eclipse.org/papyrus/0.7.0/SysML/PortAndFlows";
+
+
+transformation Chess2FlaXML(in source : Chess, out target : FLA);
+
+// Qualified names of stereotypes
+property FAILURE_PROPAGATION_STEREOTYPE = "CHESS::Dependability::FailurePropagation::FailurePropagationAnalysis";
+property FPTC_SPECIFICATION_STEREOTYPE = "CHESS::Dependability::FailurePropagation::FPTCSpecification";
+property FPTC_RULE_STEREOTYPE = "CHESS::Dependability::FailurePropagation::FPTC";
+
+// Platform selected by user
+configuration property selectedPlatformQName : String;
+
+property model : Model;
+property rootComponent : Class;
+
+main() {
+ model := source.rootObjects()![Model];
+ var selectedInstSpec : Package = model.findElementByQualifiedName(selectedPlatformQName).oclAsType(Package);
+
+ selectedInstSpec.map selectedPlatform2System();
+}
+
+mapping Package::selectedPlatform2System() : System {
+ this.rootComponent := self.ownedElement[InstanceSpecification]->
+ selectOne(name = self.name.substringBefore("_instSpec")).classifier![Class];
+ component := rootComponent.UmlComponent2FlaComponent();
+}
+
+query UML::Class::UmlComponent2FlaComponent() : FLA::Component {
+ var flaComponent : FLA::Component;
+ if (self.isComposite()) {
+ flaComponent := self.UmlComponent2CompositeComponent();
+ } else {
+ flaComponent := self.UmlComponent2SimpleComponent();
+ };
+
+ flaComponent.name := self.name;
+ flaComponent.id := self.getTransformationId();
+ flaComponent.inputPorts := object InputPorts {};
+ flaComponent.inputPorts.inputPort += self.ownedPort->select(port : Port | port.isInputPort())->port2InputPort();
+ flaComponent.outputPorts := object OutputPorts {};
+ flaComponent.outputPorts.outputPort := self.ownedPort->select(port : Port | port.isOutputPort())->port2OutputPort();
+
+ return flaComponent;
+}
+
+query Property::getFlaComponent() : FLA::Component {
+ if (not self.hasPorts()) {
+ return null;
+ };
+ var component := self.type.oclAsType(Class).UmlComponent2FlaComponent();
+ component.name := self.name;
+ component.id := self.getTransformationId();
+ if (self.isStereotyped(FPTC_RULE_STEREOTYPE) and component.oclIsTypeOf(SimpleComponent)) {
+ var simpleComponent := component.oclAsType(SimpleComponent);
+ simpleComponent.rules.rule := self.getRules();
+ };
+ return component;
+}
+
+query UML::Class::UmlComponent2CompositeComponent() : FLA::CompositeComponent {
+ var flaComponent = object FLA::CompositeComponent {};
+ flaComponent.components := object Components {};
+ flaComponent.components.component += self.ownedMember->select(oclIsTypeOf(Property)).oclAsType(Property)->getFlaComponent();
+ flaComponent.connections := object Connections {};
+ flaComponent.connections.connection += self.ownedMember[Connector]->reject(_end->exists(role = null))->map umlConnector2flaConnection();
+ return flaComponent;
+}
+
+query UML::Class::UmlComponent2SimpleComponent() : FLA::SimpleComponent {
+ var flaComponent = object FLA::SimpleComponent {};
+ flaComponent.rules := object FptcRules {};
+ flaComponent.rules.rule := self.getRules();
+ return flaComponent;
+}
+
+query UML::Port::port2InputPort() : FLA::InputPort {
+ var resultPort = object FLA::InputPort {id := self.getTransformationId(); name := self.name};
+
+ resultPort.inputFailure += self.getInputFailures();
+ return resultPort;
+}
+
+query UML::Port::port2OutputPort() : FLA::OutputPort {
+ var resultPort = object FLA::OutputPort {id := self.getTransformationId(); name := self.name};
+ return resultPort;
+}
+
+query UML::Port::getInputFailures() : Bag(FLA::Failure) {
+ if (self.owner <> rootComponent) {
+ return null;
+ };
+
+ var comment := rootComponent.ownedComment->selectOne(hasAnnotatedElement(self) and isStereotyped(FPTC_SPECIFICATION_STEREOTYPE));
+ var failures = comment.getValue(comment.getAppliedStereotype(FPTC_SPECIFICATION_STEREOTYPE), "failure");
+ var resultVar := failures.oclAsType(Collection(FailureType))->ChessFailureType2FlaFailure();
+ return resultVar;
+}
+
+query UML::Element::getRules() : Collection(FLA::RuleString) {
+ var rules : Collection(RuleString);
+ var fptcStereotype : FPTC;
+ if (self.isStereotyped(FPTC_RULE_STEREOTYPE)) {
+ fptcStereotype := self.getStereotypeApplication(FPTC_RULE_STEREOTYPE).oclAsType(FPTC);
+ } else {
+ var fptccomment = self.ownedComment->selectOne(comment : Comment | comment.isStereotyped(FPTC_RULE_STEREOTYPE) and comment.hasAnnotatedElement(self));
+ fptcStereotype := fptccomment.getStereotypeApplication(fptccomment.getApplicableStereotype(FPTC_RULE_STEREOTYPE)).oclAsType(FPTC);
+ };
+ var ruleStrings := fptcStereotype.fptc.trim().tokenize(";").trim();
+ return ruleStrings->collect(s : String | object RuleString {pattern := s});
+}
+
+mapping UML::Connector::umlConnector2flaConnection() : FLA::Connection {
+ sourceId := self._end->at(1).role.getTransformationId();
+ targetId := self._end->at(2).role.getTransformationId();
+ sourceComponent := self._end->at(1).partWithPort.getTransformationId();
+ targetComponent := self._end->at(2).partWithPort.getTransformationId();
+}
+
+query UML::Component::getSelectedPlatform() : CHGaResourcePlatform {
+ var stereotype = self.getAppliedStereotype(FAILURE_PROPAGATION_STEREOTYPE);
+ if (stereotype = null) {
+ return null;
+ };
+
+ var selectedPackage = self.getValue(stereotype, "platform").oclAsType(CHGaResourcePlatform);
+ return selectedPackage;
+}
+
+query Model::findDependabilityAnalysisPackage() : Package {
+ //var analysisPackage := self.nestedPackage->select(name = "modelAnalysisView")![Package];
+ //var dependabilityAnalysisPackage = analysisPackage.nestedPackage->select(name = "modelDependabilityAnalysisView")![Package];
+ return model.getView("DependabilityAnalysisView");
+}
+
+query FailureType::ChessFailureType2FlaFailure() : FLA::Failure {
+ var resultFailure = object FLA::Failure {};
+ switch {
+ case (self = FailureType::_late) {
+ resultFailure.type := FLA::FailureType::_late;
+ }
+ case (self = FailureType::early) {
+ resultFailure.type := FLA::FailureType::early;
+ }
+ case (self = FailureType::valueSubtle) {
+ resultFailure.type := FLA::FailureType::valueSubtle;
+ }
+ case (self = FailureType::valueCoarse) {
+ resultFailure.type := FLA::FailureType::valueCoarse;
+ }
+ case (self = FailureType::omission) {
+ resultFailure.type := FLA::FailureType::omission;
+ }
+ case (self = FailureType::commission) {
+ resultFailure.type := FLA::FailureType::commission;
+ }
+ case (self = FailureType::noFailure) {
+ resultFailure.type := FLA::FailureType::noFailure;
+ }
+ };
+ return resultFailure;
+}
+
+
diff --git a/plugins/org.polarsys.chess.fla.transformations/transforms/CommonUtilities.qvto b/plugins/org.polarsys.chess.fla.transformations/transforms/CommonUtilities.qvto
new file mode 100644
index 0000000..610f6b9
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/transforms/CommonUtilities.qvto
@@ -0,0 +1,98 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+modeltype chess uses chessmlprofile('http://CHESS');
+modeltype uml uses 'http://www.eclipse.org/uml2/5.0.0/UML';
+
+
+library CommonUtilities;
+
+query Model::getView(viewName : String) : Package {
+ var seq := self.packagedElement[Package]-> union(self.packagedElement[Package].packagedElement[Package]);
+ return seq -> selectOne(isStereotyped("CHESS::Core::CHESSViews::" + viewName));
+}
+
+query NamedElement::getTransformationId() : String {
+ //return self.getXmiId();
+ return self.getQualifiedName();
+}
+
+query uml::Class::isComposite() : Boolean {
+ return self.ownedMember->exists(oclIsTypeOf(Property));
+}
+
+query InstanceSpecification::isComposite() : Boolean {
+ return self.ownedElement[Slot]->exists(slot : Slot | slot.definingFeature.oclIsKindOf(Port) = false);
+}
+
+query uml::Property::hasPorts() : Boolean{
+ return not self.type.ownedElement[Port]->isEmpty();
+}
+
+query uml::Element::getPort(id : String) : uml::Port {
+ return self.ownedElement[uml::Port]->selectOne(getTransformationId() = id);
+}
+
+query uml::Component::getSubcomponent(id : String) : Class{
+ return self.ownedElement[Class]->selectOne(getTransformationId() = id);
+}
+
+query uml::Class::getProperty(id : String) : Property{
+ return self.ownedElement[Property]->selectOne(getTransformationId() = id);
+}
+
+query Comment::hasAnnotatedElement(element : Element) : Boolean {
+ return self.annotatedElement->exists(annotatedElement : Element | annotatedElement = element);
+}
+
+query Element::isStereotyped(stereoName : String) : Boolean {
+ return self.getAppliedStereotype(stereoName) <> null;
+}
+
+query Element::getStereotypeApplication(qualifiedName : String) : OclAny {
+ return self.getStereotypeApplication(self.getApplicableStereotype(qualifiedName));
+}
+
+query Element::applyStereotype(qualifiedName : String) : Stereotype{
+ var stereotype := self.getApplicableStereotype(qualifiedName);
+ if (stereotype <> null) {
+ self.applyStereotype(stereotype);
+ };
+ return stereotype;
+}
+
+query Element::getStereotypeValue(qualifiedName : String, propertyName : String) : OclAny {
+ var stereotype = self.getAppliedStereotype(qualifiedName);
+ if (stereotype = null) {
+ return null;
+ };
+ return self.getValue(self.getAppliedStereotype(qualifiedName), propertyName);
+}
+
+query Model::findElementByQualifiedName(in qName : String) : NamedElement {
+ var pathParts = qName.tokenize("::")->asOrderedSet();
+ assert fatal (pathParts->first() = "model");
+ if (pathParts->size() = 1) {
+ return self;
+ };
+ var i : Integer = 2;
+ var p : Package := self;
+ while (i < pathParts->size()) {
+ var packageName = pathParts->at(i);
+ p := p.ownedElement[Package]->selectOne(name = pathParts->at(i));
+ i := i + 1;
+ };
+ return p.ownedMember[NamedElement]->selectOne(name = pathParts->last());
+}
+
+
diff --git a/plugins/org.polarsys.chess.fla.transformations/transforms/FlaMM2Chess_BackPropagation.qvto b/plugins/org.polarsys.chess.fla.transformations/transforms/FlaMM2Chess_BackPropagation.qvto
new file mode 100644
index 0000000..998bb5c
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/transforms/FlaMM2Chess_BackPropagation.qvto
@@ -0,0 +1,129 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+import org.polarsys.chess.fla.transformations.utilities.blackboxlibrary;
+import PortUtilities;
+import CommonUtilities;
+
+modeltype Chess uses chessmlprofile('http://CHESS');
+modeltype ChessFailurePropagation uses 'http://CHESS/Dependability/FailurePropagation';
+modeltype ChessFailureTypes uses 'http:///CHESS/Dependability/FailurePropagation/FailurePropagationDataTypes.ecore';
+modeltype ChessCore uses 'http://CHESS/Core';
+
+modeltype FLA uses flamm('http://www.polarsys.org/chess/fla/flamm');
+
+modeltype UML uses 'http://www.eclipse.org/uml2/5.0.0/UML';
+
+
+transformation FlaMM2Chess(in source : FLA, inout target : Chess);
+
+// Qualified names of stereotypes
+property FPTC_SPECIFICATION_STEREOTYPE = "CHESS::Dependability::FailurePropagation::FPTCSpecification";
+
+// Platform selected by user
+configuration property selectedPlatformQName : String;
+
+property chessRootComponent : Class;
+property flaRootComponent : FLA::Component;
+
+main() {
+ this.flaRootComponent := source.rootObjects()![FLA::Component];
+
+ var selectedInstSpec : Package = target.rootObjects()![Model].findElementByQualifiedName(selectedPlatformQName).oclAsType(Package);
+ this.chessRootComponent := selectedInstSpec.ownedElement[InstanceSpecification]->
+ selectOne(name = selectedInstSpec.name.substringBefore("_instSpec")).classifier![Class];
+
+ this.flaRootComponent.propagateResultsToChessRootComponent();
+}
+
+query FLA::Component::propagateResultsToChessRootComponent() {
+ self.outputPorts.propagateRootFailures();
+ if (self.oclIsTypeOf(CompositeComponent)) {
+ self.oclAsType(CompositeComponent).components.outputPorts.propagateSubFailures();
+ }
+}
+
+query FLA::Port::propagateRootFailures() {
+ var umlPort : UML::Port = chessRootComponent.getPort(self.id);
+ var fptcSpec := getFailureStereotype(umlPort, umlPort);
+ fptcSpec.failure := self.failures.toChessFailure();
+}
+
+query FLA::Port::propagateSubFailures() {
+ var umlComponentProperty := chessRootComponent.getProperty(self.owner.id);
+ var umlPort : UML::Port = umlComponentProperty.type.getPort(self.id);
+ var fptcSpec := getFailureStereotype(umlPort, umlComponentProperty);
+ fptcSpec.failure := self.failures.toChessFailure();
+}
+
+query getFailureStereotype(port : UML::Port, partWithPort : Property) : FPTCSpecification{
+ var comment := this.chessRootComponent.getComment(port, partWithPort);
+ return comment.getStereotypeApplication(FPTC_SPECIFICATION_STEREOTYPE).oclAsType(FPTCSpecification);
+}
+
+query UML::Element::getComment(annotated : UML::Port, partWithPortElement : Property) : Comment{
+ var comment := self.ownedComment->selectOne(hasAnnotatedElement(annotated) and
+ getStereotypeValue(FPTC_SPECIFICATION_STEREOTYPE, "partWithPort") = partWithPortElement);
+ //TODO: Apply stereotype not working. Stereotype gets applied but is not present in the model after execution
+ if (comment = null) {
+ comment := chessRootComponent.blackboxCreateFptcComment(annotated, partWithPortElement);
+ //comment := object Comment {annotatedElement := annotated;};
+ //comment.body := target.objectsOfType(FPTCSpecification)->size().toString() + " ";
+ //chessRootComponent.ownedComment += comment;
+ //var stereo := comment.applyStereotype(FPTC_SPECIFICATION_STEREOTYPE);
+ //comment.blackboxApplyStereotype(FPTC_SPECIFICATION_STEREOTYPE);
+ //if (comment.isStereotyped(FPTC_SPECIFICATION_STEREOTYPE)) {
+ //comment.body := comment.body + "true " + stereo.toString()
+ //+ "\n" + chessRootComponent.allInstances(FPTCSpecification)->size().toString(); //.objectsOfType(FPTCSpecification)->size().toString();
+ //} else {
+ // comment.body := "false";
+ //}
+ };
+ return comment;
+}
+
+query FLA::Failure::toChessFailure() : ChessFailureTypes::FailureType {
+ // would be nice to get this to work..
+// var failures := ChessFailureTypes::FailureType.allInstances();
+// var f1 := FLA::FailureTypes::FailureType::omission.toString();
+// var f2 := self.type.toString();
+// var f3 := failures->selectOne(type : ChessFailureTypes::FailureType | type.toString() = self.type.toString());
+
+ var failure : ChessFailureTypes::FailureType;
+ switch {
+ case (self.type = FLA::FailureTypes::FailureType::noFailure) {
+ failure := ChessFailureTypes::FailureType::noFailure;
+ }
+ case (self.id = "late") {
+ failure := ChessFailureTypes::FailureType::_late;
+ }
+ case (self.id = "early") {
+ failure := ChessFailureTypes::FailureType::early;
+ }
+ case (self.id = "valueSubtle") {
+ failure := ChessFailureTypes::FailureType::valueSubtle;
+ }
+ case (self.id = "valueCoarse") {
+ failure := ChessFailureTypes::FailureType::valueCoarse;
+ }
+ case (self.id = "omission") {
+ failure := ChessFailureTypes::FailureType::omission;
+ }
+ case (self.id = "commission") {
+ failure := ChessFailureTypes::FailureType::commission;
+ }
+ };
+ return failure;
+}
+
+
diff --git a/plugins/org.polarsys.chess.fla.transformations/transforms/FlaMM2FlaXML.qvto b/plugins/org.polarsys.chess.fla.transformations/transforms/FlaMM2FlaXML.qvto
new file mode 100644
index 0000000..2e5031f
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/transforms/FlaMM2FlaXML.qvto
@@ -0,0 +1,130 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+import org.polarsys.chess.fla.transformations.utilities.blackboxlibrary;
+
+modeltype FLAMM uses 'http://www.polarsys.org/chess/fla/flamm';
+modeltype FLAXML uses 'http://www.polarsys.org/chess/fla/flaxml';
+
+
+transformation FlaMM2FlaXML(in source : FLAMM, out target : FLAXML);
+
+main() {
+ source.rootObjects()![FLAMM::Component].map flaMM2DocumentRoot();
+}
+
+mapping FLAMM::Component::flaMM2DocumentRoot() : FLAXML::DocumentRoot {
+ system := self.map flaMM2System();
+}
+
+mapping FLAMM::Component::flaMM2System() : FLAXML::System {
+ component := self.map MMComp2XmlComp();
+}
+
+mapping FLAMM::Component::MMComp2XmlComp() : FLAXML::Component {
+ init {
+ }
+}
+
+mapping FLAMM::CompositeComponent::MMComp2XmlComp() : FLAXML::Component {
+ init {
+ result := object FLAXML::CompositeComponent{};
+ }
+ copyNameAndId(self, result);
+ setPorts(self, result);
+ var compositeResult := result.oclAsType(FLAXML::CompositeComponent);
+ compositeResult.components := object Components{};
+ compositeResult.components.component := self.components.map MMComp2XmlComp();
+ compositeResult.connections := object Connections{};
+ compositeResult.connections.connection := getConnections(self);
+}
+
+mapping FLAMM::SimpleComponent::MMComp2XmlComp() : FLAXML::Component {
+ init {
+ result := object FLAXML::SimpleComponent{};
+ }
+ copyNameAndId(self, result);
+ setPorts(self, result);
+ var simpleResult := result.oclAsType(FLAXML::SimpleComponent);
+ simpleResult.rules := object FptcRules{};
+ simpleResult.rules.rule := self.rules.map MMRule2XMLRule();
+}
+
+mapping FLAMM::Rule::MMRule2XMLRule() : FLAXML::RuleString {
+ pattern := self.rule2String();
+}
+
+query getConnections(component : FLAMM::CompositeComponent) : Set(FLAXML::Connection) {
+ var connections : Set(FLAXML::Connection) = component.inputPorts->port2connections(component)->flatten()->asSet();
+ var outgoingConnections : Set(FLAXML::Connection) = component.components.outputPorts->flatten()->port2connections(component)->flatten()->asSet();
+
+ return connections->union(outgoingConnections);
+}
+
+query FLAMM::Port::port2connections(component : FLAMM::CompositeComponent) : Set(FLAXML::Connection) {
+ var connections := self.connectedPorts->select(port : FLAMM::Port | port.owner = component or port.owner.parent = component)->collect(object FLAXML::Connection{
+ sourceId := self.id; sourceComponent := self.owner.id;
+ targetId := id; targetComponent := owner.id;});
+ return connections->asSet();
+}
+
+query copyNameAndId(sourceElement : FLAMM::NamedElement, inout targetElement : FLAXML::NamedElement) {
+ targetElement.name := sourceElement.name;
+ targetElement.id := sourceElement.id;
+}
+
+query setPorts(sourceElement : FLAMM::Component, inout targetElement : FLAXML::Component) {
+ targetElement.inputPorts := object InputPorts{};
+ targetElement.inputPorts.inputPort := sourceElement.inputPorts->map MMport2XMLinputport();
+ targetElement.outputPorts := object OutputPorts{};
+ targetElement.outputPorts.outputPort := sourceElement.outputPorts->map MMport2XMLoutputport();
+}
+
+mapping FLAMM::Port::MMport2XMLinputport() : FLAXML::InputPort {
+ copyNameAndId(self, result);
+ inputFailure := self.failures->MMfailure2XMLfailure();
+}
+
+mapping FLAMM::Port::MMport2XMLoutputport() : FLAXML::OutputPort {
+ copyNameAndId(self, result);
+ outputFailure := self.failures->MMfailure2XMLfailure();
+}
+
+query FLAMM::Failure::MMfailure2XMLfailure() : FLAXML::Failure {
+ var resultFailure = object FLAXML::Failure {};
+ switch {
+ case (self.type = FLAMM::FailureTypes::FailureType::noFailure) {
+ resultFailure.type := FLAXML::FailureType::noFailure;
+ }
+ case (self.id = "late") {
+ resultFailure.type := FLAXML::FailureType::_late;
+ }
+ case (self.id = "early") {
+ resultFailure.type := FLAXML::FailureType::early;
+ }
+ case (self.id = "valueSubtle") {
+ resultFailure.type := FLAXML::FailureType::valueSubtle;
+ }
+ case (self.id = "valueCoarse") {
+ resultFailure.type := FLAXML::FailureType::valueCoarse;
+ }
+ case (self.id = "omission") {
+ resultFailure.type := FLAXML::FailureType::omission;
+ }
+ case (self.id = "commission") {
+ resultFailure.type := FLAXML::FailureType::commission;
+ }
+ };
+ return resultFailure;
+}
+
diff --git a/plugins/org.polarsys.chess.fla.transformations/transforms/FlaXML2FlaMM.qvto b/plugins/org.polarsys.chess.fla.transformations/transforms/FlaXML2FlaMM.qvto
new file mode 100644
index 0000000..794e2d5
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/transforms/FlaXML2FlaMM.qvto
@@ -0,0 +1,149 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+import org.polarsys.chess.fla.transformations.utilities.blackboxlibrary;
+
+modeltype FLAMM uses 'http://www.polarsys.org/chess/fla/flamm';
+modeltype FLAXML uses 'http://www.polarsys.org/chess/fla/flaxml';
+
+
+transformation FlaXML2FlaMM(in source : FLAXML, out target : FLAMM);
+
+property xmlRootComponent : FLAXML::Component;
+
+main() {
+ xmlRootComponent := source.rootObjects()![FLAXML::DocumentRoot].system![System].component;
+ if (xmlRootComponent.oclIsInvalid()) {
+ xmlRootComponent := source.rootObjects()![System].component;
+ };
+ xmlRootComponent.map MMComp2XmlComp();
+}
+
+mapping FLAXML::Component::MMComp2XmlComp() : FLAMM::Component {
+ init {
+ }
+}
+
+mapping FLAXML::CompositeComponent::MMComp2XmlComp() : FLAMM::Component {
+ init {
+ result := object FLAMM::CompositeComponent{};
+ }
+ copyNameAndId(self, result);
+ setPorts(self, result);
+ var compositeResult := result.oclAsType(FLAMM::CompositeComponent);
+ compositeResult.components := self.components.component.map MMComp2XmlComp();
+ compositeResult.connectPorts(self.connections.connection);
+}
+
+mapping FLAXML::SimpleComponent::MMComp2XmlComp() : FLAMM::Component {
+ init {
+ result := object FLAMM::SimpleComponent{};
+ }
+ copyNameAndId(self, result);
+ setPorts(self, result);
+ var simpleResult := result.oclAsType(FLAMM::SimpleComponent);
+ simpleResult.rules := self.rules.rule->map XMLRule2MMRule(simpleResult);
+}
+
+mapping FLAXML::RuleString::XMLRule2MMRule(owningComponent : FLAMM::SimpleComponent) : FLAMM::Rule {
+ init {
+ result := self.pattern.getRuleFromRulestring(owningComponent);
+ }
+}
+
+query FLAMM::CompositeComponent::connectPorts(connections : Set(FLAXML::Connection)) {
+ var ports = self.getPorts()->union(self.components.getPorts()->asSet());
+ connections.connectFlaPorts(ports, self);
+}
+
+query FLAMM::Component::getPorts() : Set(FLAMM::Port) {
+ return self.inputPorts->union(self.outputPorts);
+}
+
+query FLAXML::Connection::connectFlaPorts(ports : Set(FLAMM::Port), component : CompositeComponent) {
+ var connectedPorts = ports->select(port : FLAMM::Port | port.isConnectedBy(self))->asOrderedSet();
+ connectedPorts->at(1).connectedPorts += connectedPorts->at(2);
+ connectedPorts->at(2).connectedPorts += connectedPorts->at(1);
+}
+
+query FLAMM::Port::isConnectedBy(connection : FLAXML::Connection) : Boolean {
+ var isSource = ((connection.sourceId = self.id) and (connection.sourceComponent = self.owner.id));
+ var isTarget = ((connection.targetId = self.id) and (connection.targetComponent = self.owner.id));
+ return isSource or isTarget;
+}
+
+query FLAMM::Port::port2connection(component : FLAMM::CompositeComponent) : Set(FLAXML::Connection) {
+ var res := self.connectedPorts->select(port : FLAMM::Port | port.owner = component or port.owner.parent = component)->collect(object FLAXML::Connection{
+ sourceId := self.id; sourceComponent := self.owner.id;
+ targetId := id; targetComponent := owner.id;});
+ return res->asSet();
+}
+
+query copyNameAndId(sourceElement : FLAXML::NamedElement, inout targetElement : FLAMM::NamedElement) {
+ targetElement.name := sourceElement.name;
+ targetElement.id := sourceElement.id;
+}
+
+query setPorts(sourceElement : FLAXML::Component, inout targetElement : FLAMM::Component) {
+ targetElement.inputPorts := sourceElement.inputPorts.inputPort->map XMLport2MMinputport();
+ targetElement.outputPorts := sourceElement.outputPorts.outputPort->map XMLport2MMoutputport();
+ targetElement.inputPorts->forEach(element) { element.owner := targetElement };
+ targetElement.outputPorts->forEach(element) { element.owner := targetElement };
+}
+
+mapping FLAXML::InputPort::XMLport2MMinputport() : FLAMM::Port {
+ copyNameAndId(self, result);
+ if (this.xmlRootComponent.inputPorts.inputPort->includes(self)) {
+ failures := self.inputFailure->XMLfailure2MMfailure();
+ }
+}
+
+mapping FLAXML::OutputPort::XMLport2MMoutputport() : FLAMM::Port {
+ copyNameAndId(self, result);
+}
+
+query FLAXML::Failure::XMLfailure2MMfailure() : FLAMM::Failure {
+ var resultFailure = object FLAMM::Failure {};
+ switch {
+ case (self.type = FLAXML::FailureType::noFailure) {
+ resultFailure.type := FLAMM::FailureTypes::FailureType::noFailure;
+ resultFailure.id := "noFailure";
+ }
+ case (self.type = FLAXML::FailureType::_late) {
+ resultFailure.type := FLAMM::FailureTypes::FailureType::failure;
+ resultFailure.id := "late";
+ }
+ case (self.type = FLAXML::FailureType::early) {
+ resultFailure.type := FLAMM::FailureTypes::FailureType::failure;
+ resultFailure.id := "early";
+ }
+ case (self.type = FLAXML::FailureType::valueSubtle) {
+ resultFailure.type := FLAMM::FailureTypes::FailureType::failure;
+ resultFailure.id := "valueSubtle";
+ }
+ case (self.type = FLAXML::FailureType::valueCoarse) {
+ resultFailure.type := FLAMM::FailureTypes::FailureType::failure;
+ resultFailure.id := "valueCoarse";
+ }
+ case (self.type = FLAXML::FailureType::omission) {
+ resultFailure.type := FLAMM::FailureTypes::FailureType::failure;
+ resultFailure.id := "omission";
+ }
+ case (self.type = FLAXML::FailureType::commission) {
+ resultFailure.type := FLAMM::FailureTypes::FailureType::failure;
+ resultFailure.id := "commission";
+ }
+ };
+ return resultFailure;
+}
+
diff --git a/plugins/org.polarsys.chess.fla.transformations/transforms/PortUtilities.qvto b/plugins/org.polarsys.chess.fla.transformations/transforms/PortUtilities.qvto
new file mode 100644
index 0000000..1167375
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/transforms/PortUtilities.qvto
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+import CommonUtilities;
+
+modeltype UML uses 'http://www.eclipse.org/uml2/5.0.0/UML';
+modeltype MARTE uses "http://www.eclipse.org/papyrus/GCM/1";
+modeltype SysML uses "http://www.eclipse.org/papyrus/0.7.0/SysML/PortAndFlows";
+
+
+library PortUtilities;
+
+property CLIENT_SERVER_PORT_STEREOTYPE = "MARTE::MARTE_DesignModel::GCM::ClientServerPort";
+property SYSML_FLOWPORT_STEREOTYPE = "SysML::PortAndFlows::FlowPort";
+property MARTE_FLOWPORT_STEREOTYPE = "MARTE::MARTE_DesignModel::GCM::FlowPort";
+
+query Port::isInputPort() : Boolean {
+ var st := self.getAppliedStereotypes();
+ if (self.isStereotyped(CLIENT_SERVER_PORT_STEREOTYPE)) {
+ var clientServerPort := self.getStereotypeApplication(self.getAppliedStereotype(CLIENT_SERVER_PORT_STEREOTYPE)).oclAsType(ClientServerPort);
+ return clientServerPort.isInputPort();
+ } else if (self.isStereotyped(MARTE_FLOWPORT_STEREOTYPE)) {
+ var flowPort := self.getStereotypeApplication(MARTE_FLOWPORT_STEREOTYPE).oclAsType(MARTE::FlowPort);
+ return flowPort.isInputPort();
+ } else if (self.isStereotyped(SYSML_FLOWPORT_STEREOTYPE)) {
+ var flowPort := self.getStereotypeApplication(SYSML_FLOWPORT_STEREOTYPE).oclAsType(SysML::FlowPort);
+ return flowPort.isInputPort();
+ };
+ return false;
+}
+
+query Port::isOutputPort() : Boolean {
+ if (self.isStereotyped(CLIENT_SERVER_PORT_STEREOTYPE)) {
+ var clientServerPort := self.getStereotypeApplication(CLIENT_SERVER_PORT_STEREOTYPE).oclAsType(ClientServerPort);
+ return clientServerPort.isOutputPort();
+ } else if (self.isStereotyped(MARTE_FLOWPORT_STEREOTYPE)) {
+ var flowPort := self.getStereotypeApplication(MARTE_FLOWPORT_STEREOTYPE).oclAsType(MARTE::FlowPort);
+ return flowPort.isOutputPort();
+ } else if (self.isStereotyped(SYSML_FLOWPORT_STEREOTYPE)) {
+ var flowPort := self.getStereotypeApplication(SYSML_FLOWPORT_STEREOTYPE).oclAsType(SysML::FlowPort);
+ return flowPort.isOutputPort();
+ };
+ return false;
+}
+
+query ClientServerPort::isInputPort() : Boolean {
+ var interfaces : Bag(Interface);
+ switch {
+ case (self.kind = ClientServerKind::required) {
+ interfaces := self.reqInterface;
+ }
+ case (self.kind = ClientServerKind::provided) {
+ interfaces := self.provInterface;
+ }
+ };
+
+ return interfaces->getAllOperations()->flatten()->ownedParameter->flatten()->forAll((direction = ParameterDirectionKind::_in and self.kind = ClientServerKind::provided) or
+ (direction = ParameterDirectionKind::_out and self.kind = ClientServerKind::required));
+}
+
+query ClientServerPort::isOutputPort() : Boolean {
+ var interfaces : Bag(Interface);
+ switch {
+ case (self.kind = ClientServerKind::required) {
+ interfaces := self.reqInterface;
+ }
+ case (self.kind = ClientServerKind::provided) {
+ interfaces := self.provInterface;
+ }
+ };
+
+ return interfaces->getAllOperations()->flatten()->ownedParameter->flatten()->exists((direction = ParameterDirectionKind::_in and self.kind = ClientServerKind::required) or
+ (direction = ParameterDirectionKind::_out and self.kind = ClientServerKind::provided));
+}
+
+query MARTE::FlowPort::isInputPort() : Boolean {
+ return self.direction = MARTE::FlowDirectionKind::_in;
+}
+
+query MARTE::FlowPort::isOutputPort() : Boolean {
+ return self.direction = MARTE::FlowDirectionKind::_out;
+}
+
+query SysML::FlowPort::isInputPort() : Boolean {
+ return self.direction = SysML::FlowDirection::_in;
+}
+
+query SysML::FlowPort::isOutputPort() : Boolean {
+ return self.direction = SysML::FlowDirection::_out;
+}
+
diff --git a/plugins/org.polarsys.chess.fla/.classpath b/plugins/org.polarsys.chess.fla/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.polarsys.chess.fla/.project b/plugins/org.polarsys.chess.fla/.project
new file mode 100644
index 0000000..2670abe
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.polarsys.chess.fla</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.polarsys.chess.fla/.settings/org.eclipse.jdt.core.prefs b/plugins/org.polarsys.chess.fla/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c537b63
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/plugins/org.polarsys.chess.fla/META-INF/MANIFEST.MF b/plugins/org.polarsys.chess.fla/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..d80a27d
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/META-INF/MANIFEST.MF
@@ -0,0 +1,26 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Fla
+Bundle-SymbolicName: org.polarsys.chess.fla;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.polarsys.chess.fla.launch.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.ui.ide,
+ org.eclipse.papyrus.infra.core,
+ org.eclipse.papyrus.editor,
+ org.eclipse.papyrus.uml.diagram.composite,
+ org.eclipse.papyrus.uml.diagram.clazz,
+ org.eclipse.papyrus.sysml.diagram.internalblock,
+ org.eclipse.papyrus.infra.gmfdiag.common,
+ org.eclipse.papyrus.infra.widgets.toolbox,
+ org.eclipse.gmf.runtime.diagram.ui,
+ org.eclipse.m2m.qvt.oml,
+ org.polarsys.chess.chessmlprofile,
+ org.polarsys.chess.core,
+ org.polarsys.chess.service,
+ org.polarsys.chess.fla.flamm,
+ org.polarsys.chess.fla.flaxml
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.polarsys.chess.fla/about.html b/plugins/org.polarsys.chess.fla/about.html
new file mode 100644
index 0000000..dd3c089
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.polarsys.chess.fla/build.properties b/plugins/org.polarsys.chess.fla/build.properties
new file mode 100644
index 0000000..e9863e2
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml
diff --git a/plugins/org.polarsys.chess.fla/plugin.xml b/plugins/org.polarsys.chess.fla/plugin.xml
new file mode 100644
index 0000000..c814fc6
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/plugin.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ id="org.polarsys.chess.fla.analysis.command"
+ name="Concerto-FLA">
+ </command>
+ <command
+ id="org.polarsys.chess.fla.analysis.command.xml"
+ name="Concerto-FLA_XML">
+ </command>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="false"
+ locationURI="menu:org.eclipse.ui.main.menu">
+ <menu
+ id="org.polarsys.chess.mainMenu"
+ label="CHESS"
+ mnemonic="E">
+ <menu
+ id="chess.menu.analysis.id"
+ label="Analysis">
+ <menu
+ id="chess.menu.analysis.dependability.id"
+ label="Dependability">
+ <command
+ commandId="org.polarsys.chess.fla.analysis.command"
+ label="Failure Logic Analysis (Concerto-FLA)"
+ style="push">
+ <visibleWhen
+ checkEnabled="false">
+ <or>
+ <with
+ variable="activeEditorId">
+ <equals
+ value="org.eclipse.uml2.uml.editor.presentation.UMLEditorID">
+ </equals>
+ </with>
+ <with
+ variable="activeEditorInput">
+ <adapt
+ type="org.eclipse.core.resources.IResource">
+ <test
+ property="org.eclipse.core.resources.projectNature"
+ value="org.polarsys.chess.CHESSNature">
+ </test>
+ </adapt>
+ </with>
+ </or>
+ </visibleWhen>
+ </command>
+ </menu>
+ </menu>
+ </menu>
+ </menuContribution>
+ <menuContribution
+ allPopups="false"
+ locationURI="menu:org.eclipse.ui.main.menu">
+ <menu
+ id="org.polarsys.chess.mainMenu"
+ label="CHESS"
+ mnemonic="E">
+ <menu
+ id="chess.menu.analysis.id"
+ label="Analysis">
+ <menu
+ id="chess.menu.analysis.dependability.id"
+ label="Dependability">
+ <command
+ commandId="org.polarsys.chess.fla.analysis.command.xml"
+ label="Failure Logic Analysis (Concerto-FLA) from XML"
+ style="push">
+ </command>
+ </menu>
+ </menu>
+ </menu>
+ </menuContribution>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.handlers">
+ <handler
+ class="org.polarsys.chess.fla.launch.FlaAnalysisCommand"
+ commandId="org.polarsys.chess.fla.analysis.command">
+ </handler>
+ <handler
+ class="org.polarsys.chess.fla.launch.FlaAnalysisCommandXml"
+ commandId="org.polarsys.chess.fla.analysis.command.xml">
+ </handler>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ category="org.polarsys.chess.preferences"
+ class="org.polarsys.chess.fla.preferences.ConcertoFlaPreferencePage"
+ id="org.polarsys.chess.fla.analysis.page"
+ name="Concerto-FLA">
+ </page>
+ </extension>
+ <extension
+ point="org.eclipse.core.runtime.preferences">
+ <initializer
+ class="org.polarsys.chess.fla.preferences.PreferenceInitializer">
+ </initializer>
+ </extension>
+
+</plugin>
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/Activator.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/Activator.java
new file mode 100644
index 0000000..08417c8
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/Activator.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.polarsys.chess.fla;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.polarsys.chess.fla"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/common/FlaAnalysisException.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/common/FlaAnalysisException.java
new file mode 100644
index 0000000..0eb904c
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/common/FlaAnalysisException.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.common;
+
+public class FlaAnalysisException extends Exception {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1695277209180788662L;
+
+ public FlaAnalysisException() {
+ }
+
+ public FlaAnalysisException(Exception e) {
+ super(e);
+ }
+
+ public FlaAnalysisException(String message) {
+ super(message);
+ }
+
+}
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/common/FlaLogger.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/common/FlaLogger.java
new file mode 100644
index 0000000..a15b435
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/common/FlaLogger.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.common;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class FlaLogger implements org.polarsys.chess.fla.flamm.analysis.FlaLogger {
+
+ List<String> errors = new ArrayList<String>();
+ List<String> warnings = new ArrayList<String>();
+
+ public void logError(String message) {
+ errors.add(message);
+ }
+
+ public void logWarning(String message) {
+ warnings.add(message);
+ }
+
+ public List<String> getErrors() {
+ return errors;
+ }
+
+ public List<String> getWarnings() {
+ return warnings;
+ }
+}
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/common/TransformationException.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/common/TransformationException.java
new file mode 100644
index 0000000..f16bcf3
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/common/TransformationException.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.common;
+
+public class TransformationException extends Exception {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1695277209180788662L;
+
+ public TransformationException() {
+ }
+
+ public TransformationException(Exception e) {
+ super(e);
+ }
+
+
+}
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/impl/FlaAnalysisRunner.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/impl/FlaAnalysisRunner.java
new file mode 100644
index 0000000..3528794
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/impl/FlaAnalysisRunner.java
@@ -0,0 +1,259 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.impl;
+
+import static org.polarsys.chess.core.util.CHESSProjectSupport.printlnToCHESSConsole;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collections;
+import java.util.List;
+
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+
+import org.polarsys.chess.fla.common.FlaAnalysisException;
+import org.polarsys.chess.fla.common.FlaLogger;
+import org.polarsys.chess.fla.common.TransformationException;
+import org.polarsys.chess.fla.flamm.Component;
+import org.polarsys.chess.fla.flamm.FlammPackage;
+import org.polarsys.chess.fla.flamm.analysis.FlaSystem;
+import org.polarsys.chess.fla.preferences.FlaParameters;
+import org.polarsys.chess.fla.transformations.QVToTransformation;
+
+public class FlaAnalysisRunner implements IRunnableWithProgress{
+
+ protected static final String FLA_MM_EXTENSION = "flamm";
+ protected static final String FLA_XML_EXTENSION = "flaxml";
+
+ protected IContainer targetFolder;
+ protected FlaSystem analyzedSystem;
+ protected URI chessModelUri;
+ protected Resource chessResource;
+ protected Resource flaResource;
+ protected String rootComponentQualifiedName = "";
+ protected DiagramEditPart diagramEditPart;
+
+ public IContainer getTargetFolder() {
+ return targetFolder;
+ }
+
+ public void setTargetFolder(IContainer targetFolder) {
+ this.targetFolder = targetFolder;
+ }
+
+ public URI getModelURI() {
+ return chessModelUri;
+ }
+
+ public void setModelURI(URI modelURI) {
+ this.chessModelUri = modelURI;
+ }
+
+ public void setRootComponent(String rootComponentQualifiedName) {
+ this.rootComponentQualifiedName = rootComponentQualifiedName;
+ }
+
+ public Resource getChessResource() {
+ return chessResource;
+ }
+
+ public void setChessResource(Resource chessResource) {
+ this.chessResource = chessResource;
+ }
+
+ public void setDiagramEditPart(DiagramEditPart diagramEditPart) {
+ this.diagramEditPart = diagramEditPart;
+ }
+
+ @Override
+ public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+ final int numSubTasks = 4;
+
+ try {
+ monitor.beginTask("Running Failure Logic Analysis...",numSubTasks );
+ if (monitor.isCanceled()) {
+ throw new InterruptedException();
+ }
+
+ monitor.subTask("Performing model transformations...");
+ runInput2FlaTransformation(monitor);
+ monitor.worked(1);
+
+ if (monitor.isCanceled()) {
+ throw new InterruptedException();
+ }
+
+ monitor.subTask("Applying failure propagation...");
+ analyzeModel(flaResource);
+ monitor.worked(1);
+
+ if (monitor.isCanceled()) {
+ throw new InterruptedException();
+ }
+
+ monitor.subTask("Propagating analysis results to the model...");
+ backpropagateAnalysisResults(this.analyzedSystem, monitor);
+ createOutputXmlFile(this.analyzedSystem, monitor);
+ monitor.worked(1);
+
+ Thread.sleep(1000);
+ } catch (TransformationException e) {
+ printlnToCHESSConsole("*** Error running FLA transformation ***");
+ showErrorMessage("FLA Analysis", "Error during FLA transformation");
+ return;
+ } catch (FlaAnalysisException e) {
+ printlnToCHESSConsole("*** Error running FLA Analysis ***");
+ printlnToCHESSConsole(e.toString());
+ showErrorMessage("FLA Analysis", "Error during FLA analysis");
+ return;
+ }
+
+ printlnToCHESSConsole("*** Concerto-FLA analysis was performed successfully ***");
+ monitor.done();
+ }
+
+ protected void analyzeModel(Resource resource) throws FlaAnalysisException {
+ analyzeModel((org.polarsys.chess.fla.flamm.Component) resource.getContents().get(0));
+ try {
+ resource.save(Collections.EMPTY_MAP);
+ } catch (IOException e) {
+ throw new FlaAnalysisException(e);
+ }
+ }
+
+ protected void analyzeModel(Component component) throws FlaAnalysisException {
+ FlaSystem system = new FlaSystem(component);
+ analyzeModel(system);
+ }
+
+ protected void analyzeModel(FlaSystem system) throws FlaAnalysisException {
+ setPreferences(system);
+
+ org.polarsys.chess.fla.flamm.analysis.FlaLogger logger = new FlaLogger();
+ system.performAnalysis(logger);
+ if (!logger.getWarnings().isEmpty()) {
+ showErrorMessages("Warnings during analysis", logger.getWarnings());
+ }
+ analyzedSystem = system;
+ }
+
+ protected void setPreferences(FlaSystem system) {
+ FlaParameters params = FlaParameters.getCurrentParameters();
+ system.initializeNoFailure(params.getInitNoFailure());
+ system.propagateUnmatchedFailures(params.getPropagateUnmatchedFailures());
+ system.treatUnmentionedPortsAsWildcards(params.getTreatUnmentionedPortsAsWildcards());
+ }
+
+ protected void createOutputXmlFile(FlaSystem system, IProgressMonitor monitor) {
+ String xmlPath = getOutputXmlPath();
+ File outputFile = new File(xmlPath);
+ outputFile.delete();
+
+// FlaXmlWriter writer = new FlaXmlWriter(outputFile);
+// writer.printSystem(system);
+
+ try {
+ runFla2XmlTransformation(monitor);
+ } catch (TransformationException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ protected void backpropagateAnalysisResults(FlaSystem system, IProgressMonitor monitor) {
+ try {
+ runBackpropagationTransformation(monitor);
+ } catch (TransformationException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ protected void runInput2FlaTransformation(IProgressMonitor monitor) throws TransformationException{
+ FlammPackage.eINSTANCE.getClass();
+ ResourceSet resourceSet = new ResourceSetImpl();
+ URI flaMMuri = createFlaModelUri().appendFileExtension(FLA_MM_EXTENSION);
+ new File(flaMMuri.path()).delete();
+ flaResource = resourceSet.createResource(flaMMuri);
+
+ QVToTransformation transformation = new QVToTransformation();
+ transformation.performChess2ConcertoFlaTransformation(chessResource, flaResource, monitor, rootComponentQualifiedName + "_instSpec");
+ if (flaResource.getContents() == null || flaResource.getContents().isEmpty()) {
+ throw new TransformationException();
+ }
+ }
+
+ protected void runFla2XmlTransformation(IProgressMonitor monitor) throws TransformationException{
+ ResourceSet resourceSet = new ResourceSetImpl();
+
+ URI xmlUri = createFlaModelUri().appendFileExtension(FLA_XML_EXTENSION);
+
+ Resource xmlResource = resourceSet.createResource(xmlUri);
+ xmlResource.setURI(xmlUri.trimFileExtension().appendFileExtension("xml"));
+ QVToTransformation transformation = new QVToTransformation();
+ transformation.performConcertoFla2ConcertoFlaXMLTransformation(flaResource, xmlResource, monitor);
+ }
+
+ protected void runBackpropagationTransformation(IProgressMonitor monitor) throws TransformationException{
+ QVToTransformation transformation = new QVToTransformation();
+ transformation.performConcertoFla2ChessBackPropagation(flaResource, chessResource, monitor, rootComponentQualifiedName + "_instSpec", diagramEditPart);
+ }
+
+ protected URI createFlaModelUri() {
+ String modelName = getModelName();
+ String flaPath = targetFolder.getFullPath().toString() + "/" + modelName + "." + rootComponentQualifiedName.replaceAll("::", ".") + "_result";
+ return URI.createPlatformResourceURI(flaPath, false);
+ }
+
+ protected String getOutputXmlPath() {
+ String modelName = getModelName();
+ return targetFolder.getLocation().append(modelName + "_result.xml").toString();
+ }
+
+ protected String getModelName() {
+ return chessModelUri.lastSegment().substring(0, chessModelUri.lastSegment().lastIndexOf('.'));
+ }
+
+ protected void showErrorMessages(String title, List<String> messages) {
+ StringBuilder sb = new StringBuilder();
+ for (String message : messages) {
+ sb.append(message + "\n");
+ }
+ showErrorMessage(title, sb.toString());
+ }
+
+ protected void showErrorMessage(String title, String message) {
+ JOptionPane.showMessageDialog(
+ new JFrame(),
+ message,
+ title, JOptionPane.ERROR_MESSAGE);
+
+ }
+
+}
+
+
+
+
+
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/impl/FlaAnalysisRunnerXml.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/impl/FlaAnalysisRunnerXml.java
new file mode 100644
index 0000000..b70c860
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/impl/FlaAnalysisRunnerXml.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.impl;
+
+import java.io.File;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.polarsys.chess.fla.common.TransformationException;
+import org.polarsys.chess.fla.flamm.FlammPackage;
+import org.polarsys.chess.fla.flamm.analysis.FlaSystem;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.util.FlaxmlResourceFactoryImpl;
+import org.polarsys.chess.fla.transformations.QVToTransformation;
+
+public class FlaAnalysisRunnerXml extends FlaAnalysisRunner {
+ protected IFile selectedXmlFile;
+
+ public void setSelectedXmlFile(IFile file) {
+ this.selectedXmlFile = file;
+ }
+
+ @Override
+ protected void runInput2FlaTransformation(IProgressMonitor monitor) throws TransformationException{
+ Resource xmlResource = readXml(iFileToUri(selectedXmlFile));
+
+ URI flaMMUri = createFlaModelUri().appendFileExtension(FLA_MM_EXTENSION);
+ ResourceSet resourceSet = new ResourceSetImpl();
+ new File(flaMMUri.path()).delete();
+ flaResource = resourceSet.createResource(flaMMUri);
+
+ QVToTransformation transformation = new QVToTransformation();
+ transformation.performConcertoFlaXml2ConcertoFlaTransformation(xmlResource, flaResource, monitor);
+ }
+
+ @Override
+ protected void backpropagateAnalysisResults(FlaSystem system, IProgressMonitor monitor) {};
+
+ @Override
+ protected String getModelName() {
+ return selectedXmlFile.getName().substring(0, selectedXmlFile.getName().lastIndexOf('.'));
+ }
+
+ protected Resource readXml(URI uri) {
+ // Initialize the model
+ FlaxmlPackage.eINSTANCE.eClass();
+ FlammPackage.eINSTANCE.eClass();
+
+ // Register the resource factory for the .flaxml extension
+
+ Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
+ Map<String, Object> m = reg.getExtensionToFactoryMap();
+ m.put("xml", new FlaxmlResourceFactoryImpl());
+
+ // Obtain a new resource set
+ ResourceSet resSet = new ResourceSetImpl();
+
+ // Get the resource
+ Resource resource = resSet.getResource(uri, true);
+ return resource;
+ }
+
+ URI iFileToUri(IFile iFile) {
+ // according to
+ // http://wiki.eclipse.org/index.php/EMF/FAQ#How_do_I_map_between_an_EMF_Resource_and_an_Eclipse_IFile.3F
+ return URI.createPlatformResourceURI(iFile.getFullPath().toString(), true);
+ }
+
+}
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/launch/Activator.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/launch/Activator.java
new file mode 100644
index 0000000..364dffa
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/launch/Activator.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.launch;
+
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+import org.polarsys.chess.fla.preferences.FlaParameters;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.polarsys.chess.fla"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Returns an image descriptor for the image file at the given
+ * plug-in relative path
+ *
+ * @param path the path
+ * @return the image descriptor
+ */
+ public static ImageDescriptor getImageDescriptor(String path) {
+ return imageDescriptorFromPlugin(PLUGIN_ID, path);
+ }
+
+ protected void initializeDefaultPreferences(IPreferenceStore store) {
+ FlaParameters defaultParams = new FlaParameters();
+
+ store.setDefault(FlaParameters.INIT_NO_FAILURE, defaultParams.getInitNoFailure());
+ store.setDefault(FlaParameters.PROPAGATE_UNMATCHED_FAILURES, defaultParams.getPropagateUnmatchedFailures());
+ }
+}
\ No newline at end of file
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/launch/FlaAnalysisCommand.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/launch/FlaAnalysisCommand.java
new file mode 100644
index 0000000..7ac2850
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/launch/FlaAnalysisCommand.java
@@ -0,0 +1,180 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.launch;
+
+import java.util.List;
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Model;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;
+import org.eclipse.gmf.runtime.notation.impl.DiagramImpl;
+
+import org.polarsys.chess.fla.impl.FlaAnalysisRunner;
+
+import org.polarsys.chess.core.notifications.ResourceNotification;
+import org.polarsys.chess.core.util.uml.ResourceUtils;
+import org.polarsys.chess.core.views.DiagramStatus;
+import org.eclipse.papyrus.editor.PapyrusMultiDiagramEditor;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.sysml.diagram.internalblock.edit.part.InternalBlockDiagramEditPart;
+import org.eclipse.papyrus.uml.diagram.clazz.part.UMLDiagramEditor;
+import org.eclipse.papyrus.uml.diagram.composite.edit.parts.CompositeStructureDiagramEditPart;
+import org.polarsys.chess.service.utils.CHESSEditorUtils;
+
+public class FlaAnalysisCommand extends AbstractHandler {
+
+ private IFile modelFile;
+ private URI modelURI;
+ protected List<IFile> files;
+ List<? extends Object> arguments;
+ private Model umlModel = null;
+ private IContainer targetFolder;
+
+ protected UMLDiagramEditor diagramEditor=null;
+ protected DiagramEditPart diagramEditPart;
+ protected PapyrusMultiDiagramEditor papyrusEditor;
+
+ private static final String DI_SUFFIX = ".di";
+ private static final String UML_SUFFIX = ".uml";
+
+ public static final String COMMAND_ID = "org.polarsys.chess.fla.analysis.command";
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ final PapyrusMultiDiagramEditor editor = CHESSEditorUtils.getCHESSEditor();
+ final DiagramStatus ds = CHESSEditorUtils.getDiagramStatus(editor);
+
+ Classifier rootComponent = getCurrentComponent(editor, ds);
+ if (rootComponent == null) {
+ IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Cannot identify root component");
+ Activator.getDefault().getLog().log(status);
+ throw new ExecutionException("Error during FLA analysis");
+ }
+
+
+ IFileEditorInput input = (IFileEditorInput)editor.getEditorInput() ;
+
+ IFile file = input.getFile();
+ IProject activeProject = file.getProject();
+ Path path = new Path(activeProject.getName() + "/" + changeSuffix(input.getFile().getName(), DI_SUFFIX,UML_SUFFIX));
+ modelURI = URI.createPlatformResourceURI(changeSuffix(input.getFile().getFullPath().toString(), DI_SUFFIX,UML_SUFFIX), true);
+ modelFile = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+
+ long startTime = System.currentTimeMillis();
+ Shell shell = new Shell();
+ try {
+ ds.setUserAction(false);
+ ProgressMonitorDialog pmDialog = new ProgressMonitorDialog(shell);
+ FlaAnalysisRunner analysisRunner = new FlaAnalysisRunner();
+ analysisRunner.setModelURI(modelURI);
+ targetFolder = modelFile.getProject().getFolder("FLA_Analysis");
+ analysisRunner.setTargetFolder(targetFolder);
+ analysisRunner.setDiagramEditPart(diagramEditPart);
+ Resource resource = ResourceUtils.getUMLResource(editor.getServicesRegistry());
+ umlModel = (Model) EcoreUtil.getObjectByType(resource.getContents(), UMLPackage.Literals.MODEL);
+
+ analysisRunner.setRootComponent(rootComponent.getQualifiedName());
+ analysisRunner.setChessResource(resource);
+
+ pmDialog.run(true, true, analysisRunner);
+
+ activeProject.refreshLocal(IResource.DEPTH_INFINITE, null);
+ } catch (InvocationTargetException e) {
+ IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e);
+ Activator.getDefault().getLog().log(status);
+ throw new ExecutionException("Error during FLA analysis", e);
+ } catch (CoreException e) {
+ IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e);
+ Activator.getDefault().getLog().log(status);
+ throw new ExecutionException("Error during FLA analysis", e);
+ } catch (InterruptedException e) {
+ IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e);
+ Activator.getDefault().getLog().log(status);
+ } catch (ServiceException e) {
+ IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e);
+ Activator.getDefault().getLog().log(status);
+ } finally {
+ ds.setUserAction(true);
+ }
+ long endTime = System.currentTimeMillis();
+ org.polarsys.chess.core.util.CHESSProjectSupport.printlnToCHESSConsole("*** Elapsed time " + (endTime - startTime) / 1e3 + " s ***");
+ return null;
+ }
+
+ private String changeSuffix(String string, String oldSuffix, String newSuffix){
+ String newString = string;
+ if (newString.endsWith(oldSuffix)){
+ newString = newString.substring(0, newString.length() - oldSuffix.length());
+ newString += newSuffix;
+ }
+ return newString;
+ }
+
+ private Classifier getCurrentComponent(PapyrusMultiDiagramEditor editor, DiagramStatus ds) {
+ if (editor == null || ds == null) {
+ return null;
+ }
+ Classifier rootComponent = null;
+ try {
+ Object editPart = getEditPart();
+
+ if (editPart == null || ( !(editPart instanceof CompositeStructureDiagramEditPart) && !(editPart instanceof InternalBlockDiagramEditPart)) )
+ throw new Exception("FLA analysis cannot be performed on this element");
+
+ final DiagramEditPart csd_ep = (DiagramEditPart) editPart;
+ diagramEditPart = csd_ep;
+
+ DiagramImpl diagram = (DiagramImpl) csd_ep.getModel();
+ rootComponent = (Classifier) diagram.getElement();
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ ResourceNotification.showInfo(e.getMessage());
+ }
+
+ return rootComponent;
+ }
+
+ private Object getEditPart() {
+ Object ep = null;
+ try {
+ ep = CHESSEditorUtils.getDiagramGraphicalViewer().getRootEditPart().getChildren().get(0);
+ } catch (Exception e) {
+ //Catch NPE
+ return null;
+ }
+ return ep;
+ }
+
+
+}
\ No newline at end of file
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/launch/FlaAnalysisCommandXml.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/launch/FlaAnalysisCommandXml.java
new file mode 100644
index 0000000..7e51418
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/launch/FlaAnalysisCommandXml.java
@@ -0,0 +1,164 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.launch;
+
+import java.util.List;
+import java.lang.reflect.InvocationTargetException;
+
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.ui.dialogs.ElementTreeSelectionDialog;
+import org.eclipse.ui.model.BaseWorkbenchContentProvider;
+import org.eclipse.ui.model.WorkbenchLabelProvider;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;
+import org.polarsys.chess.fla.impl.FlaAnalysisRunnerXml;
+
+import org.eclipse.papyrus.editor.PapyrusMultiDiagramEditor;
+import org.eclipse.papyrus.uml.diagram.clazz.part.UMLDiagramEditor;
+
+public class FlaAnalysisCommandXml extends AbstractHandler {
+
+ protected IFile sourceFile;
+ List<? extends Object> arguments;
+ private IContainer targetFolder;
+
+ protected UMLDiagramEditor diagramEditor=null;
+ protected DiagramEditPart clazzdiagrameditPart;
+ protected PapyrusMultiDiagramEditor papyrusEditor;
+ private static JFrame frame = new JFrame();
+
+ public static final String COMMAND_ID = "org.polarsys.chess.fla.analysis.command";
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ sourceFile = handleBrowseFile("Concerto-FLA Analysis from XML", "Please choose source XML file");
+ if(sourceFile==null)
+ return null;
+
+ if(!sourceFile.getLocation().getFileExtension().equals("xml") && !sourceFile.getLocation().getFileExtension().equals("fla")){
+ JOptionPane.showMessageDialog(frame, "Chosen file is not XML file. To perform Concerto-FLA Analysis please choose XML file. " ,"Concerto-FLA Analysis has failed", JOptionPane.ERROR_MESSAGE);
+ return null;
+ }
+
+ targetFolder = sourceFile.getParent();
+
+ Shell shell = new Shell();
+ try {
+ ProgressMonitorDialog pmDialog = new ProgressMonitorDialog(shell);
+ FlaAnalysisRunnerXml analysisRunner = new FlaAnalysisRunnerXml();
+ analysisRunner.setSelectedXmlFile(sourceFile);
+ analysisRunner.setTargetFolder(targetFolder);
+ pmDialog.run(true, true, analysisRunner);
+
+ } catch (InvocationTargetException e) {
+ IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e);
+ Activator.getDefault().getLog().log(status);
+ throw new ExecutionException("Error during FLA analysis", e);
+ } catch (InterruptedException e) {
+ IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e);
+ Activator.getDefault().getLog().log(status);
+ }
+ return null;
+ }
+
+ private IFile handleBrowseFile(String title, String message) {
+
+ ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(new Shell(), new WorkbenchLabelProvider(), new BaseWorkbenchContentProvider());
+
+ dialog.setTitle(title);
+ dialog.setMessage(message);
+ dialog.setAllowMultiple(false);
+ dialog.addFilter(new ViewerFilter() {
+ @Override
+ public boolean select(Viewer viewer, Object parentElement,
+ Object element) {
+ boolean ret = false;
+ String[] extensions = null;
+ extensions = new String[] { "xml" };
+ try {
+ ret = isXMLResource((IResource) element, extensions);
+ } catch (CoreException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return ret;
+ }
+ });
+ dialog.setInput(ResourcesPlugin.getWorkspace().getRoot());
+ dialog.open();
+
+ if(dialog.getReturnCode() == ElementTreeSelectionDialog.CANCEL){
+ return null;
+ }
+
+ Object results = dialog.getFirstResult();
+
+ if ((results != null) && (results instanceof IFile)) {
+ IFile currentFile = (IFile)results;
+ return currentFile;
+ }
+ else if ((results != null) && ((results instanceof IFolder) || (results instanceof IProject))) {
+ JOptionPane.showMessageDialog(frame, "CHESS-FPTC Analysis failed. XML file was not chosed. ","CHESS-FPTC Analysis - Wrong input file", JOptionPane.ERROR_MESSAGE);
+ return null;
+ }
+
+ return null;
+ }
+
+ private static boolean isXMLResource(IResource resource, String[] extensions)
+ throws CoreException {
+ if (resource instanceof IContainer) {
+ if (((IContainer) resource).isAccessible()) {
+ IResource[] members = ((IContainer) resource).members();
+ for (IResource member : members) {
+ if (isXMLResource(member, extensions)) {
+ return true;
+ }
+ }
+ }
+ } else if (resource instanceof IFile) {
+ IFile currentFile = (IFile) resource;
+ if (extensions == null) {
+ return true;
+ } else if (currentFile.getFileExtension() != null) {
+ for (int i = 0; i < extensions.length; i++) {
+ String extension = extensions[i];
+ if (currentFile.getFileExtension().toUpperCase().equals(
+ extension.toUpperCase())) {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+
+}
\ No newline at end of file
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/preferences/ConcertoFlaPreferencePage.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/preferences/ConcertoFlaPreferencePage.java
new file mode 100644
index 0000000..66a8313
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/preferences/ConcertoFlaPreferencePage.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.preferences;
+
+import org.eclipse.jface.preference.BooleanFieldEditor;
+import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+import org.polarsys.chess.fla.launch.Activator;
+
+public class ConcertoFlaPreferencePage extends FieldEditorPreferencePage
+ implements IWorkbenchPreferencePage {
+
+ public ConcertoFlaPreferencePage(){
+ super(GRID);
+ }
+
+ @Override
+ public void init(IWorkbench workbench) {
+ setPreferenceStore(Activator.getDefault().getPreferenceStore());
+ setDescription("Concerto-FLA: Failure Logic Analysis");
+ }
+
+ @Override
+ protected void createFieldEditors() {
+
+ addField(new BooleanFieldEditor(FlaParameters.INIT_NO_FAILURE,
+ "Initialize all connections to noFailure (needed for circular dependencies).",
+ getFieldEditorParent()));
+ Label initLabel = createDescriptionLabel(getFieldEditorParent());
+ initLabel.setText("This will add the noFailure token to all input ports before performing the FLA analysis.\n");
+
+ addField(new BooleanFieldEditor(FlaParameters.PROPAGATE_UNMATCHED_FAILURES,
+ "Propagate unmatches failures to all output ports.",
+ getFieldEditorParent()));
+ Label unmatchedLabel = createDescriptionLabel(getFieldEditorParent());
+ unmatchedLabel.setText("In case a propagation rule does not include an incoming failure type, \nthis failure type is propagated as-is to all output ports of the component.\n");
+
+ addField(new BooleanFieldEditor(FlaParameters.TREAT_UNMENTIONED_PORTS_AS_WILDCARDS,
+ "Treat ports not mentioned by rules as specified wild wildcards.",
+ getFieldEditorParent()));
+ Label unmentionedPortLabel = createDescriptionLabel(getFieldEditorParent());
+ unmentionedPortLabel.setText("If a transformation rule is missing information about an input port, \nthis is treated as if the rule had specified the input port with wildcard.\n" +
+ "If the rule does not mention inputPort1, inputPort1.wildcard is silently added to the rule.");
+ }
+}
\ No newline at end of file
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/preferences/FlaParameters.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/preferences/FlaParameters.java
new file mode 100644
index 0000000..59b937a
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/preferences/FlaParameters.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.preferences;
+
+import java.io.Serializable;
+
+import org.polarsys.chess.fla.launch.Activator;
+
+public class FlaParameters implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final String INIT_NO_FAILURE = "INIT_NO_FAILURE";
+ public static final String PROPAGATE_UNMATCHED_FAILURES = "PROPAGATE_UNMATCHED_FAILURES";
+ public static final String TREAT_UNMENTIONED_PORTS_AS_WILDCARDS = "TREAT_UNMENTIONED_PORTS_AS_WILDCARDS";
+
+ private boolean initNoFailure = true;
+ private boolean propagateUnmatchedFailures = true;
+ private boolean treatUnmentionedPortsAsWildcards = true;
+
+ public boolean getInitNoFailure() {
+ return initNoFailure;
+ }
+
+ public void setInitNoFailure(boolean initNoFailure) {
+ this.initNoFailure = initNoFailure;
+ }
+
+ public boolean getPropagateUnmatchedFailures() {
+ return propagateUnmatchedFailures;
+ }
+
+ public void setPropagateUnmatchedFailures(boolean propagateUnmatchedFailures) {
+ this.propagateUnmatchedFailures = propagateUnmatchedFailures;
+ }
+
+ public boolean getTreatUnmentionedPortsAsWildcards() {
+ return this.treatUnmentionedPortsAsWildcards;
+ }
+
+ public void setTreatUnmentionedPortsAsWildcards(boolean treatUnmentionedPortsAsWildcards) {
+ this.treatUnmentionedPortsAsWildcards = treatUnmentionedPortsAsWildcards;
+ }
+
+ public static FlaParameters getCurrentParameters() {
+ FlaParameters params = new FlaParameters();
+ params.setInitNoFailure(Activator.getDefault().getPreferenceStore().getBoolean(INIT_NO_FAILURE));
+ params.setPropagateUnmatchedFailures(Activator.getDefault().getPreferenceStore().getBoolean(PROPAGATE_UNMATCHED_FAILURES));
+ params.setTreatUnmentionedPortsAsWildcards(Activator.getDefault().getPreferenceStore().getBoolean(TREAT_UNMENTIONED_PORTS_AS_WILDCARDS));
+ return params;
+ }
+
+
+}
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/preferences/PreferenceInitializer.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/preferences/PreferenceInitializer.java
new file mode 100644
index 0000000..3e9f344
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/preferences/PreferenceInitializer.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.preferences;
+
+import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
+import org.eclipse.jface.preference.IPreferenceStore;
+
+import org.polarsys.chess.fla.launch.Activator;
+
+public class PreferenceInitializer extends AbstractPreferenceInitializer {
+
+ @Override
+ public void initializeDefaultPreferences() {
+ IPreferenceStore store = Activator.getDefault().getPreferenceStore();
+ store.setDefault(FlaParameters.INIT_NO_FAILURE, true);
+ store.setDefault(FlaParameters.PROPAGATE_UNMATCHED_FAILURES, true);
+ store.setDefault(FlaParameters.TREAT_UNMENTIONED_PORTS_AS_WILDCARDS, false);
+ }
+
+}
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/transformations/QVToTransformation.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/transformations/QVToTransformation.java
new file mode 100644
index 0000000..a7d5c36
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/transformations/QVToTransformation.java
@@ -0,0 +1,188 @@
+/*******************************************************************************
+ * CHESS core plugin
+ *
+ * Copyright (C) 2011-2015
+ * Mälardalen University, Sweden
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License
+ * v1.0 which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ * Logic from: QVTOML/Examples/InvokeInJava
+ * http://wiki.eclipse.org/QVTOML/Examples/InvokeInJava
+ */
+
+package org.polarsys.chess.fla.transformations;
+
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;
+import org.eclipse.m2m.qvt.oml.BasicModelExtent;
+import org.eclipse.m2m.qvt.oml.ExecutionContextImpl;
+import org.eclipse.m2m.qvt.oml.ExecutionDiagnostic;
+import org.eclipse.m2m.qvt.oml.ModelExtent;
+import org.eclipse.m2m.qvt.oml.TransformationExecutor;
+import org.eclipse.m2m.qvt.oml.util.WriterLog;
+import org.polarsys.chess.core.util.CHESSProjectSupport;
+import org.polarsys.chess.fla.launch.Activator;
+import org.polarsys.chess.fla.flamm.FlammPackage;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+
+public class QVToTransformation {
+
+ private static final String SELECTED_PLATFORM_PROPERTY = "selectedPlatformQName";
+ private static final String CHESS2FLAMM = "platform:/plugin/org.polarsys.chess.fla.transformations/transforms/Chess2FlaMM.qvto";
+ private static final String FLAMM2FLAXML = "platform:/plugin/org.polarsys.chess.fla.transformations/transforms/FlaMM2FlaXML.qvto";
+ private static final String FLAXML2FLAMM = "platform:/plugin/org.polarsys.chess.fla.transformations/transforms/FlaXML2FlaMM.qvto";
+ private static final String FLAMM2CHESS = "platform:/plugin/org.polarsys.chess.fla.transformations/transforms/FlaMM2Chess_BackPropagation.qvto";
+
+ boolean isChessUserAction;
+ private DiagramEditPart diagramEditPart = null;
+ private Resource sourceResource;
+ private Resource targetResource;
+ private boolean isTargetChessModel= false;
+ private boolean createNewModel = true;
+ private IProgressMonitor monitor;
+ private String selectedElement = null;
+
+ public void performChess2ConcertoFlaTransformation(
+ Resource chessResource, Resource flaResource, IProgressMonitor monitor, String selectedElement) {
+ FlammPackage.eINSTANCE.getClass();
+ this.sourceResource = chessResource;
+ this.targetResource = flaResource;
+ this.monitor = monitor;
+ this.selectedElement = selectedElement;
+ performTransformation(CHESS2FLAMM);
+ }
+
+ public void performConcertoFla2ConcertoFlaXMLTransformation(
+ Resource modelResource, Resource xmlResource, IProgressMonitor monitor) {
+ FlaxmlPackage.eINSTANCE.getClass();
+ this.sourceResource = modelResource;
+ this.targetResource = xmlResource;
+ this.monitor = monitor;
+ performTransformation(FLAMM2FLAXML);
+ }
+
+ public void performConcertoFlaXml2ConcertoFlaTransformation(
+ Resource xmlResource, Resource modelResource, IProgressMonitor monitor) {
+ FlammPackage.eINSTANCE.getClass();
+ FlaxmlPackage.eINSTANCE.getClass();
+ this.sourceResource = xmlResource;
+ this.targetResource = modelResource;
+ this.monitor = monitor;
+ performTransformation(FLAXML2FLAMM);
+ }
+
+ public void performConcertoFla2ChessBackPropagation(
+ Resource flaResource, final Resource chessResource, IProgressMonitor monitor, String selectedElement, DiagramEditPart diagramEditPart) {
+ this.sourceResource = flaResource;
+ this.targetResource = chessResource;
+ this.monitor = monitor;
+ this.selectedElement = selectedElement;
+ this.diagramEditPart = diagramEditPart;
+ this.isTargetChessModel = true;
+ this.createNewModel = false;
+ performTransformation(FLAMM2CHESS);
+ }
+
+ private void performTransformation(String transformationPath) {
+ URI transformationURI = URI.createURI(transformationPath);
+ final TransformationExecutor executor = new TransformationExecutor(transformationURI );
+
+ EList<EObject> inObjects = sourceResource.getContents();
+ final ModelExtent input = new BasicModelExtent(inObjects);
+ ModelExtent output;
+ if (createNewModel) {
+ output = new BasicModelExtent();
+ } else {
+ output = new BasicModelExtent(targetResource.getContents());
+ }
+
+ final ExecutionContextImpl context = new ExecutionContextImpl();
+
+ if (selectedElement != null) {
+ context.setConfigProperty(SELECTED_PLATFORM_PROPERTY, selectedElement);
+ }
+
+ OutputStreamWriter s = new OutputStreamWriter(CHESSProjectSupport.CHESS_CONSOLE);
+ context.setLog(new WriterLog(s));
+ context.setProgressMonitor(monitor);
+
+ if (isTargetChessModel) {
+ try {
+ final ModelExtent finalOutput = output;
+ TransactionalEditingDomain editingDomain = diagramEditPart.getEditingDomain();
+ editingDomain.getCommandStack().execute(new RecordingCommand(editingDomain) {
+ protected void doExecute() {
+ ExecutionDiagnostic result = executor.execute(context, input, finalOutput);
+ if(result.getSeverity() != Diagnostic.OK) {
+ // turn the result diagnostic into status and send it to error log
+ IStatus status = BasicDiagnostic.toIStatus(result);
+ Activator.getDefault().getLog().log(status);
+ }
+ }
+ });
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else {
+ ExecutionDiagnostic result = executor.execute(context, input, output);
+
+ if(result.getSeverity() == Diagnostic.OK) {
+ // the output objects got captured in the output extent
+ final List<EObject> outObjects = output.getContents();
+ // persist them using a resource
+ targetResource.getContents().clear();
+ targetResource.getContents().addAll(outObjects);
+
+ try {
+ targetResource.save(Collections.EMPTY_MAP);
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ } else {
+ // turn the result diagnostic into status and send it to error log
+ //TODO: Handle errors, abort analysis
+ IStatus status = BasicDiagnostic.toIStatus(result);
+ Activator.getDefault().getLog().log(status);
+ }
+ }
+
+
+ }
+
+ protected boolean saveChessResource(final Resource chessResource, final List<EObject> outObjects) {
+ try {
+ TransactionalEditingDomain editingDomain = diagramEditPart.getEditingDomain();
+ editingDomain.getCommandStack().execute(new RecordingCommand(editingDomain) {
+ protected void doExecute() {
+ chessResource.getContents().clear();
+ chessResource.getContents().addAll(outObjects);
+ }
+ });
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ return true;
+ }
+
+}