Merge branch 'app4mc0.9.7/rttca' into master
Compliant to Amalthea 0.9.8
diff --git a/CONTRIBUTING b/CONTRIBUTING
new file mode 100644
index 0000000..500ac97
--- /dev/null
+++ b/CONTRIBUTING
@@ -0,0 +1,55 @@
+
+# Contributing to Eclipse APP4MC
+
+Thanks for your interest in this project.
+
+## Project description
+
+Application Platform Project for Multi Core
+
+* https://projects.eclipse.org/projects/technology.app4mc
+
+## Developer resources
+
+Information regarding source code management, builds, coding standards, and
+more.
+
+* https://projects.eclipse.org/projects/technology.app4mc/developer
+
+The project maintains the following source code repositories
+
+* https://git.eclipse.org/r/plugins/gitiles/app4mc/org.eclipse.app4mc
+* https://git.eclipse.org/r/plugins/gitiles/app4mc/org.eclipse.app4mc.addon.migration
+* https://git.eclipse.org/r/plugins/gitiles/app4mc/org.eclipse.app4mc.examples
+* https://git.eclipse.org/r/plugins/gitiles/app4mc/org.eclipse.app4mc.tools
+
+This project uses Bugzilla to track ongoing development and issues.
+
+* Search for issues: https://bugs.eclipse.org/bugs/buglist.cgi?product=APP4MC
+* Create a new report:
+ https://bugs.eclipse.org/bugs/enter_bug.cgi?product=APP4MC
+
+Be sure to search for existing bugs before you create another one. Remember that
+contributions are always welcome!
+
+## Eclipse Contributor Agreement
+
+Before your contribution can be accepted by the project team contributors must
+electronically sign the Eclipse Contributor Agreement (ECA).
+
+* http://www.eclipse.org/legal/ECA.php
+
+Commits that are provided by non-committers must have a Signed-off-by field in
+the footer indicating that the author is aware of the terms by which the
+contribution has been provided to the project. The non-committer must
+additionally have an Eclipse Foundation account and must have a signed Eclipse
+Contributor Agreement (ECA) on file.
+
+For more information, please see the Eclipse Committer Handbook:
+https://www.eclipse.org/projects/handbook/#resources-commit
+
+## Contact
+
+Contact the project developers via the project's "dev" list.
+
+* https://dev.eclipse.org/mailman/listinfo/app4mc-dev
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..2273b2c
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,289 @@
+
+# Notices for Eclipse APP4MC
+
+This content is produced and maintained by the Eclipse APP4MC project.
+
+* Project home: https://projects.eclipse.org/projects/technology.app4mc
+
+## Trademarks
+
+Eclipse APP4MC, and APP4MC are trademarks of the Eclipse Foundation.
+
+## Copyright
+
+All content is the property of the respective authors or their employers. For
+more information regarding authorship of content, please consult the listed
+source code repository logs.
+
+## Declared Project Licenses
+
+This program and the accompanying materials are made available under the terms
+of the Eclipse Public License v. 2.0 which is available at
+http://www.eclipse.org/legal/epl-2.0.
+
+SPDX-License-Identifier: EPL-2.0
+
+## Source Code
+
+The project maintains the following source code repositories:
+
+* https://git.eclipse.org/r/plugins/gitiles/app4mc/org.eclipse.app4mc
+* https://git.eclipse.org/r/plugins/gitiles/app4mc/org.eclipse.app4mc.addon.migration
+* https://git.eclipse.org/r/plugins/gitiles/app4mc/org.eclipse.app4mc.examples
+* https://git.eclipse.org/r/plugins/gitiles/app4mc/org.eclipse.app4mc.tools
+
+## Third-party Content
+
+This project leverages the following third party content.
+
+Apache Commons Lang (2.6)
+
+* License: Apache License, 2.0
+
+Apache Commons Lang (3.1.0)
+
+* License: Apache License, 2.0
+
+Apache Commons Math (2.1.0)
+
+* License: Apache License, 2.0, New BSD license
+
+Apache Commons Math (3.5.0)
+
+* License: Apache License, 2.0, New BSD License
+
+Apache Jena-ARQ (2.10.0)
+
+* License: Apache-2.0
+
+Apache Jena-Core (2.7.1)
+
+* License: Apache License 2.0, New BSD license
+
+Apache jena-iri (0.9.2)
+
+* License: Apache License, 2.0
+
+Apache Jena-TDB (0.10.0)
+
+* License: Apache-2.0
+
+ArduiPi Adafruit SSD1306 OLED Driver SHA Commit
+37956b16aa8514dde5b6ecba04a20cc0babe39f1 (n/a)
+
+* License: BSD-2-Clause
+
+BCEL.Jar (5.2)
+
+* License: Apache License, 2.0
+
+choco (4.0.6)
+
+* License: BSD-4-Clause
+* Project: http://www.choco-solver.org
+* Source: https://github.com/chocoteam/choco-solver
+
+choco-cutoffseq (1.0.4)
+
+* License: BSD-4-Clause
+* Project: https://github.com/chocoteam/cutoffseq
+* Source: https://github.com/chocoteam/cutoffseq/releases/tag/pf4cs-1.0.4
+
+choco-graph (4.2.0)
+
+* License: BSD-4-Clause AND BSD-2-Clause AND BSD-3-Clause
+* Project: https://github.com/chocoteam/choco-graph
+* Source: https://github.com/chocoteam/choco-graph
+
+choco-sat (1.0.2)
+
+* License: BSD-3-Clause
+* Project: https://github.com/chocoteam/choco-sat
+* Source: https://github.com/chocoteam/choco-sat
+
+choco-solver (4.0.9)
+
+* License: BSD-4-Clause
+* Project: http://www.choco-solver.org
+* Source: https://github.com/chocoteam/choco-solver/releases/tag/4.0.9
+
+cpprof-java (1.3.0)
+
+* License: MIT
+* Project: https://github.com/cp-profiler/java-integration
+* Source: https://github.com/cp-profiler/java-integration
+
+dk.brics.automaton (18.01.2018)
+
+* License: BSD 3-Clause
+* Project: http://www.brics.dk/automaton/
+* Source: https://github.com/cs-au-dk/dk.brics.automaton
+
+easymock (3.3.1)
+
+* License: Apache License, 2.0
+* Project: http://easymock.org/
+* Source: https://github.com/easymock/easymock/archive/easymock-3.3.1.zip
+
+Google Guava (15.0.0)
+
+* License: Apache License, 2.0
+
+Google Guava (21.0)
+
+* License: Apache License, 2.0
+
+INCHRON Realtime System Model (2.98.2)
+
+* License: EPL-2.0
+* Project: http://www.inchron.com
+* Source: http://eclipse.inchron.com/realtime/updatesites/release/2.98.2/
+
+Inchron Realtime System model (2.98.5)
+
+* License: EPL-2.0
+* Project: http://www.inchron.com
+* Source: http://eclipse.inchron.com/realtime/updatesites/release/2.98.5/
+
+java_cup runtime Version: 10k (n/a)
+
+* License: Java Cup License (MIT Style)
+
+javassist (3.19.0)
+
+* License: Mozilla Public License 1.1 (MPL), Apache 2.0
+* Project: http://jboss-javassist.github.io/javassist/
+* Source:
+ https://github.com/jboss-javassist/javassist/archive/rel_3_19_0_ga.zip
+
+jaxen (1.1.6)
+
+* License: BSD License, W3C (One File)
+* Project: https://github.com/codehaus/jaxen
+* Source: https://github.com/codehaus/jaxen/tree/V_1_1_6_Final/jaxen
+
+jcl-over-slf4j-1.7.10.jar (1.7.10)
+
+* License: Apache-2.0
+
+jdom (2.0.6)
+
+* License: JDom License (based on Apache 1.1 Style License)
+* Project: http://www.jdom.org
+* Source: http://www.jdom.org/dist/binary/jdom-2.0.6.zip
+
+jenetics (3.0.1)
+
+* License: Apache License, 2.0
+* Project: http://jenetics.io/
+* Source: https://github.com/jenetics/jenetics/releases/tag/v3.0.1
+
+Jenetics (3.8.0)
+
+* License: Apache-2.0
+* Project: http://jenetics.io/
+* Source: https://github.com/jenetics/jenetics/tree/v3.8.0
+
+jgrapht (0.9.0)
+
+* License: Eclipse Public License 1.0
+* Project: http://jgrapht.org/
+
+jgrapht-core (1.1.0)
+
+* License: EPL-1.0 OR LGPL-2.1-or-later
+
+JHHC-SR04 (n/a)
+
+* License: Pending
+
+JHPWMDriver (n/a)
+
+* License: MIT
+
+JUnit (4.12)
+
+* License: Eclipse Public License
+
+log4j (1.2.15)
+
+* License: Apache License, 2.0
+
+log4j over slf4j 1.7.10.jar (1.7.10)
+
+* License: Apache-2.0
+
+mxGraph (3.7.0.0)
+
+* License: Apache-2.0 AND BSD-3-Clause
+* Project: https://jgraph.github.io/mxgraph/
+* Source: https://github.com/jgraph/mxgraph
+
+net.sf.trove4j:trove4j (3.0.3)
+
+* License: GNU Library or 'Lesser' General Public License (LGPL) 2.1, MIT Style
+ (2 Files)
+
+ojalgo (39.0)
+
+* License: MIT License, BSD, Public Domain
+* Project: http://ojalgo.org/
+* Source: https://github.com/optimatika/ojAlgo/tree/v39
+
+org.xerial.sqlite (3.7.2)
+
+* License: Apache License, 2.0, ISC License
+
+pf4cs (1.0.5)
+
+* License: BSD-4-Clause
+* Project: https://github.com/chocoteam/pf4cs
+* Source: https://github.com/chocoteam/pf4cs
+
+plantUML (2018.8)
+
+* License: (EPL-1.0 OR BSD-3-CLAUSE OR MIT OR Apache-2.0 OR GPL-2.0-or-later OR
+ LGPL-3.0-or-later) AND (EPL-1.0 OR BSD-3-CLAUSE OR MIT OR Apache-2.0 OR
+ GPL-2.0-or-later OR LGPL-3.0-or-later OR AGPL-3.0-or-later) AND BSD-3-Clause
+ AND MIT AND Apache-2.0
+
+PlantUML EPL Version: 8000 (n/a)
+
+* License: Eclipse Public License + Public Domain (One File)
+
+protobuf-java (3.2.0)
+
+* License: New BSD license
+
+resolver.jar (1.2)
+
+* License: Apache License, 2.0
+
+serializer.jar (2.7.1)
+
+* License: Apache License, 2.0
+
+SLF4J API Module (slf4j-api-1.7.10.jar) (1.7.10)
+
+* License: MIT
+
+xalan 2.7.1 top level jar (2.7.1)
+
+* License: Apache License, 2.0
+
+Xerces (2.9.0)
+
+* License: Apache License, 2.0
+
+xml-apis.jar (1.3.04)
+
+* License: Apache License, 2.0, Public Domain, W3C
+
+## Cryptography
+
+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.
diff --git a/eclipse-tools/cdgen/.classpath b/eclipse-tools/cdgen/.classpath
new file mode 100755
index 0000000..2874ea5
--- /dev/null
+++ b/eclipse-tools/cdgen/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
+ <attributes>
+ <attribute name="module" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry exported="true" kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.project b/eclipse-tools/cdgen/.project
old mode 100644
new mode 100755
similarity index 93%
rename from eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.project
rename to eclipse-tools/cdgen/.project
index 7614bd0..f145eda
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.project
+++ b/eclipse-tools/cdgen/.project
@@ -1,28 +1,28 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>net.sourceforge.plantuml</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>
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>cdgen</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/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.settings/org.eclipse.jdt.core.prefs b/eclipse-tools/cdgen/.settings/org.eclipse.jdt.core.prefs
old mode 100644
new mode 100755
similarity index 92%
rename from eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.settings/org.eclipse.jdt.core.prefs
rename to eclipse-tools/cdgen/.settings/org.eclipse.jdt.core.prefs
index a698e59..5caa538
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.settings/org.eclipse.jdt.core.prefs
+++ b/eclipse-tools/cdgen/.settings/org.eclipse.jdt.core.prefs
@@ -1,12 +1,13 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/eclipse-tools/cdgen/META-INF/MANIFEST.MF b/eclipse-tools/cdgen/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..9e3c6d6
--- /dev/null
+++ b/eclipse-tools/cdgen/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Automatic-Module-Name: app4mc.sniplets
+Bundle-ManifestVersion: 2
+Bundle-Name: GSOC2019
+Bundle-SymbolicName: cdgen
+Bundle-Version: 1.0.0.qualifier
+Export-Package: org.eclipse.app4mc.cdgen.utils,
+ org.eclipse.app4mc.cdgen
+Require-Bundle: org.eclipse.app4mc.amalthea.model,
+ org.junit,
+ org.eclipse.jdt.annotation
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Vendor: Ram Prasath Govindarajan
diff --git a/eclipse-tools/cdgen/README.md b/eclipse-tools/cdgen/README.md
new file mode 100644
index 0000000..01067db
--- /dev/null
+++ b/eclipse-tools/cdgen/README.md
@@ -0,0 +1,33 @@
+# CdGen
+> CdGen is a model to text converter tool which is used for real time analysis of the Amalthea System model on the Adapteva Parallella Hardware.
+
+For more details please refer to [documentation][documentation].
+
+## Installation
+
+* [APP4MC version 0.9.5][APP4MC]
+* [Java SE 10][JAVA]
+* [Source code for the scheduler][here]
+
+## User Guide
+
+* Code Generation
+1. Download and Unzip APP4MC
+2. Install Java SE 10
+3. Start APP4MC and create a new workspace
+4. Import the project from git or any options available.
+5. Select checkFileCreateGUI.java from the checks directory andright click and run as Java application
+6. Select the scheduler, task preemption, file source of corresponding scheduler and Model of choice.
+7. Click start for code generation.
+8. Code is generated in the root location with a timestamp.
+
+* Compilation and Execution
+9. Replace the generated code in place of the src directory in below [setup][setup].
+10. Build, deploy and Run the code on Parallella.
+
+<!-- Markdown link & img dfn's -->
+[documentation]:https://cdgendoc.readthedocs.io/en/latest/
+[setup]:https://git.eclipse.org/c/app4mc/org.eclipse.app4mc.examples.git/commit/?id=69a0a24f120bb0d79cbd688081ca697368e252f7
+[APP4MC]:https://www.eclipse.org/app4mc/downloads/
+[JAVA]:https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase10-4425482.html
+[here]:https://git.eclipse.org/c/app4mc/org.eclipse.app4mc.examples.git/commit/?id=69a0a24f120bb0d79cbd688081ca697368e252f7
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/bin/.gitignore b/eclipse-tools/cdgen/bin/.gitignore
similarity index 100%
rename from eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/bin/.gitignore
rename to eclipse-tools/cdgen/bin/.gitignore
diff --git a/eclipse-tools/cdgen/build.properties b/eclipse-tools/cdgen/build.properties
new file mode 100644
index 0000000..b107977
--- /dev/null
+++ b/eclipse-tools/cdgen/build.properties
@@ -0,0 +1,3 @@
+source.. = src/
+bin.includes = META-INF/,\
+ .
diff --git a/eclipse-tools/cdgen/cdgen.graphics/browse.png b/eclipse-tools/cdgen/cdgen.graphics/browse.png
new file mode 100644
index 0000000..bcf72c1
--- /dev/null
+++ b/eclipse-tools/cdgen/cdgen.graphics/browse.png
Binary files differ
diff --git a/eclipse-tools/cdgen/cdgen.graphics/close.png b/eclipse-tools/cdgen/cdgen.graphics/close.png
new file mode 100644
index 0000000..fba904f
--- /dev/null
+++ b/eclipse-tools/cdgen/cdgen.graphics/close.png
Binary files differ
diff --git a/eclipse-tools/cdgen/cdgen.graphics/help.png b/eclipse-tools/cdgen/cdgen.graphics/help.png
new file mode 100644
index 0000000..8960bd6
--- /dev/null
+++ b/eclipse-tools/cdgen/cdgen.graphics/help.png
Binary files differ
diff --git a/eclipse-tools/cdgen/cdgen.graphics/start.png b/eclipse-tools/cdgen/cdgen.graphics/start.png
new file mode 100644
index 0000000..371a38f
--- /dev/null
+++ b/eclipse-tools/cdgen/cdgen.graphics/start.png
Binary files differ
diff --git a/eclipse-tools/cdgen/models/democarMulticore/AMALTHEA_Democar_MappingExample.amxmi b/eclipse-tools/cdgen/models/democarMulticore/AMALTHEA_Democar_MappingExample.amxmi
new file mode 100644
index 0000000..869b8e0
--- /dev/null
+++ b/eclipse-tools/cdgen/models/democarMulticore/AMALTHEA_Democar_MappingExample.amxmi
@@ -0,0 +1,1118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<am:Amalthea xmlns:am="http://app4mc.eclipse.org/amalthea/0.9.5" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmi:version="2.0">
+ <commonElements>
+ <tags name="SwcEngineController" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcActuators" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcBrakeForceArbiter" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcABSCalculation" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcSensors" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcSensorPostprocessing" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcCylNumObserver" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcBrakeForceCalculation" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcEngineSensors" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcInjIgnActuation" tagType="SOFTWARE_COMPONENT" />
+ <coreClassifiers name="FPU" />
+ </commonElements>
+ <swModel>
+ <tasks name="Task_ESSP0" stimuli="Timer_5MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">
+ <customProperties key="[ConstraintExclude] Exclude Targets with FPU">
+ <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />
+ </customProperties>
+ <callGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="EcuVehicleSpeedSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="VehicleSpeedSensorTranslation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="VehicleSpeedSensorVoter?type=Runnable" />
+ </items>
+ </callGraph>
+ </tasks>
+ <tasks name="Task_ESSP1" stimuli="Timer_10MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">
+ <customProperties key="[ConstraintExclude] Exclude Targets with FPU">
+ <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />
+ </customProperties>
+ <callGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="CylNumObserver?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="DecelerationSensorDiagnosis?type=Runnable" />
+ </items>
+ </callGraph>
+ </tasks>
+ <tasks name="Task_ESSP2" stimuli="Timer_10MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">
+ <customProperties key="[ConstraintExclude] Exclude Targets with FPU">
+ <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />
+ </customProperties>
+ <callGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="WheelSpeedSensorDiagnosis?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakePedalSensorDiagnosis?type=Runnable" />
+ </items>
+ </callGraph>
+ </tasks>
+ <tasks name="Task_ESSP3" stimuli="Timer_5MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">
+ <customProperties key="[ConstraintExclude] Exclude Targets with FPU">
+ <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />
+ </customProperties>
+ <callGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="MassAirFlowSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BaseFuelMass?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="TransientFuelMass?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="TotalFuelMass?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="InjectionTimeActuation?type=Runnable" />
+ </items>
+ </callGraph>
+ </tasks>
+ <tasks name="Task_ESSP4" stimuli="Timer_5MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">
+ <customProperties key="[ConstraintExclude] Exclude Targets with FPU">
+ <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />
+ </customProperties>
+ <callGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="APedSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="APedVoter?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="ThrottleController?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="ThrottleActuator?type=Runnable" />
+ </items>
+ </callGraph>
+ </tasks>
+ <tasks name="Task_ESSP5" stimuli="Timer_5MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">
+ <customProperties key="[ConstraintInclude] Requires Targets with FPU">
+ <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />
+ </customProperties>
+ <callGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="ThrottleSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="EcuBrakePedalSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakePedalSensorTranslation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakePedalSensorVoter?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="CheckPlausability?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakeSafetyMonitor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakeForceCalculation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakeForceArbiter?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="StopLightActuator?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="EcuStopLightActuator?type=Runnable" />
+ </items>
+ </callGraph>
+ </tasks>
+ <tasks name="Task_ESSP6" stimuli="Timer_10MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">
+ <customProperties key="[ConstraintInclude] Requires Targets with FPU">
+ <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />
+ </customProperties>
+ <callGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="VehicleStateMonitor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="EcuDecelerationSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="DecelerationSensorTranslation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="DecelerationSensorVoter?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="ABSCalculation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakeForceActuation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="CaliperPositionCalculation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakeActuator?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="EcuBrakeActuator?type=Runnable" />
+ </items>
+ </callGraph>
+ </tasks>
+ <tasks name="Task_ESSP7" stimuli="Timer_10MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">
+ <callGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="VehicleSpeedSensorDiagnosis?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakeActuatorMonitor?type=Runnable" />
+ </items>
+ </callGraph>
+ </tasks>
+ <tasks name="Task_ESSP8" stimuli="Timer_10MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">
+ <callGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="DiagnosisArbiter?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="IgnitionTiming?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="IgnitionTimeActuation?type=Runnable" />
+ </items>
+ </callGraph>
+ </tasks>
+ <tasks name="Task_ESSP9" stimuli="Timer_5MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">
+ <callGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="EcuWheelSpeedSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="WheelSpeedSensorTranslation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="WheelSpeedSensorVoter?type=Runnable" />
+ </items>
+ </callGraph>
+ </tasks>
+ <runnables name="ABSCalculation" tags="SwcABSCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="VotedDecelerationRate?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VotedVehicleSpeed?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VotedWheelSpeed?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ArbitratedBrakeForce?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="ABSActivation?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ABSMode?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="APedSensor" tags="SwcEngineSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="APedSensor1Voltage?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="APedSensor2Voltage?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="APedPosition1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="APedPosition2?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="APedVoter" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="APedPosition1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="APedPosition2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VotedAPedPosition?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="BaseFuelMass" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="MassAirFlow?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BaseFuelMassPerStroke?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="MAFRate?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="BrakeActuator" tags="SwcABSCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="CaliperPosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakeForceVoltage?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="BrakeActuatorMonitor" tags="SwcBrakeForceCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="BrakeForce?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeForceFeedback?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ </callGraph>
+ </runnables>
+ <runnables name="BrakeForceActuation" tags="SwcABSCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="ABSActivation?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ABSMode?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakeForce?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeForceCurrent?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="BrakeForceArbiter" tags="SwcBrakeForceArbiter?type=Tag" activations="Timer_20MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="CalculatedBrakeForce?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeSafetyState?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="ArbitratedBrakeForce?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="BrakeForceCalculation" tags="SwcBrakeForceCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeForceFeedback?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ArbitratedDiagnosisRequest?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="MonitoredVehicleState?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeSafetyLevel?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="CalculatedBrakeForce?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeMonitorLevel?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="BrakePedalSensorDiagnosis" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ </callGraph>
+ </runnables>
+ <runnables name="BrakePedalSensorTranslation" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition2?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="BrakePedalSensorVoter" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VotedBrakePedalPosition?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="BrakeSafetyMonitor" tags="SwcBrakeForceCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeForceFeedback?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ArbitratedDiagnosisRequest?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="MonitoredVehicleState?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeMonitorLevel?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakeSafetyLevel?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeSafetyState?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="CaliperPositionCalculation" tags="SwcABSCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="CaliperPosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeForceCurrent?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="CaliperPosition?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="CheckPlausability" tags="SwcBrakeForceCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="VotedBrakePedalPosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="CylNumObserver" tags="SwcCylNumObserver?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="CylinderNumber?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="TriggeredCylinderNumber?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="DecelerationSensorDiagnosis" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="DecelerationVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="DecelerationVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ </callGraph>
+ </runnables>
+ <runnables name="DecelerationSensorTranslation" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="DecelerationVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="DecelerationVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="DecelerationRate1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="DecelerationRate2?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="DecelerationSensorVoter" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="DecelerationRate1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="DecelerationRate2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VotedDecelerationRate?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="DiagnosisArbiter" tags="SwcBrakeForceCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="ArbitratedDiagnosisRequest?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ </callGraph>
+ </runnables>
+ <runnables name="EcuBrakeActuator" tags="SwcActuators?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="BrakeForceVoltage?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ </callGraph>
+ </runnables>
+ <runnables name="EcuBrakePedalSensor" tags="SwcSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="144000" upperBound="176000" average="160000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage2?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="EcuDecelerationSensor" tags="SwcSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="144000" upperBound="176000" average="160000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="DecelerationVoltage1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="DecelerationVoltage2?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="EcuStopLightActuator" tags="SwcActuators?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="BrakeApplication?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ </callGraph>
+ </runnables>
+ <runnables name="EcuVehicleSpeedSensor" tags="SwcSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage2?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="EcuWheelSpeedSensor" tags="SwcSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage2?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="IgnitionTimeActuation" tags="SwcInjIgnActuation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="TriggeredCylinderNumber?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime3?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime4?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime5?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime6?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="IgnitionTime7?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime8?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="IgnitionTiming" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="MAFRate?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="IgnitionTime?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="InjectionTimeActuation" tags="SwcInjIgnActuation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="TriggeredCylinderNumber?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="TotalFuelMassPerStroke?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime3?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime4?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime5?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime6?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime7?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime8?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ </callGraph>
+ </runnables>
+ <runnables name="MassAirFlowSensor" tags="SwcEngineSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="MAFSensorVoltage?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="MassAirFlow?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="StopLightActuator" tags="SwcABSCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="ArbitratedBrakeForce?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakeApplication?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="ThrottleActuator" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="DesiredThrottlePosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="DesiredThrottlePositionVoltage?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="ThrottleController" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="VotedAPedPosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ThrottlePosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="DesiredThrottlePosition?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="ThrottleSensor" tags="SwcEngineSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="ThrottleSensor1Voltage?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ThrottleSensor2Voltage?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="ThrottlePosition?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="TotalFuelMass" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="TransientFuelMassPerStroke?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="TotalFuelMassPerStroke?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="TransientFuelMass" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="BaseFuelMassPerStroke?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="TransientFuelMassPerStroke?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="VehicleSpeedSensorDiagnosis" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ </callGraph>
+ </runnables>
+ <runnables name="VehicleSpeedSensorTranslation" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VehicleSpeed1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VehicleSpeed2?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="VehicleSpeedSensorVoter" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="VehicleSpeed1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VehicleSpeed2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VotedVehicleSpeed?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="VehicleStateMonitor" tags="SwcBrakeForceCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="MonitoredVehicleState?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="WheelSpeedSensorDiagnosis" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ </callGraph>
+ </runnables>
+ <runnables name="WheelSpeedSensorTranslation" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="WheelSpeed1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="WheelSpeed2?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="WheelSpeedSensorVoter" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="WheelSpeed1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="WheelSpeed2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VotedWheelSpeed?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <labels name="ABSActivation" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="ABSMode" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="APedPosition1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="APedPosition2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="APedSensor1Voltage" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="APedSensor2Voltage" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="ArbitratedBrakeForce" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="ArbitratedDiagnosisRequest" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BaseFuelMassPerStroke" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="BrakeApplication" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakeForce" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakeForceCurrent" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakeForceFeedback" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakeForceVoltage" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="BrakeMonitorLevel" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakePedalPosition" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakePedalPosition1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakePedalPosition2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakePedalPositionVoltage1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="BrakePedalPositionVoltage2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="BrakeSafetyLevel" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakeSafetyState" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="CalculatedBrakeForce" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="CaliperPosition" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="CylinderNumber" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="DecelerationRate1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="DecelerationRate2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="DecelerationVoltage1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="DecelerationVoltage2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="DesiredThrottlePosition" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="DesiredThrottlePositionVoltage" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime3" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime4" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime5" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime6" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime7" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime8" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="InjectionTime1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="InjectionTime2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="InjectionTime3" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="InjectionTime4" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="InjectionTime5" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="InjectionTime6" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="InjectionTime7" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="InjectionTime8" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="MAFRate" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="MAFSensorVoltage" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="MassAirFlow" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="MonitoredVehicleState" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="ThrottlePosition" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="ThrottleSensor1Voltage" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="ThrottleSensor2Voltage" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="TotalFuelMassPerStroke" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="TransientFuelMassPerStroke" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="TriggeredCylinderNumber" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="VehicleSpeed1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="VehicleSpeed2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="VehicleSpeedVoltage1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="VehicleSpeedVoltage2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="VotedAPedPosition" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="VotedBrakePedalPosition" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="VotedDecelerationRate" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="VotedVehicleSpeed" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="VotedWheelSpeed" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="WheelSpeed1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="WheelSpeed2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="WheelSpeedVoltage1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="WheelSpeedVoltage2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <processPrototypes name="ESSP0" firstRunnable="EcuVehicleSpeedSensor?type=Runnable" lastRunnable="VehicleSpeedSensorVoter?type=Runnable" activation="Timer_5MS?type=PeriodicActivation">
+ <runnableCalls runnable="EcuVehicleSpeedSensor?type=Runnable" />
+ <runnableCalls runnable="VehicleSpeedSensorTranslation?type=Runnable" />
+ <runnableCalls runnable="VehicleSpeedSensorVoter?type=Runnable" />
+ </processPrototypes>
+ <processPrototypes name="ESSP1" firstRunnable="CylNumObserver?type=Runnable" lastRunnable="DecelerationSensorDiagnosis?type=Runnable" activation="Timer_10MS?type=PeriodicActivation">
+ <runnableCalls runnable="CylNumObserver?type=Runnable" />
+ <runnableCalls runnable="DecelerationSensorDiagnosis?type=Runnable" />
+ </processPrototypes>
+ <processPrototypes name="ESSP2" firstRunnable="WheelSpeedSensorDiagnosis?type=Runnable" lastRunnable="BrakePedalSensorDiagnosis?type=Runnable" activation="Timer_10MS?type=PeriodicActivation">
+ <runnableCalls runnable="WheelSpeedSensorDiagnosis?type=Runnable" />
+ <runnableCalls runnable="BrakePedalSensorDiagnosis?type=Runnable" />
+ </processPrototypes>
+ <processPrototypes name="ESSP3" firstRunnable="MassAirFlowSensor?type=Runnable" lastRunnable="InjectionTimeActuation?type=Runnable" activation="Timer_5MS?type=PeriodicActivation">
+ <runnableCalls runnable="MassAirFlowSensor?type=Runnable" />
+ <runnableCalls runnable="BaseFuelMass?type=Runnable" />
+ <runnableCalls runnable="TransientFuelMass?type=Runnable" />
+ <runnableCalls runnable="TotalFuelMass?type=Runnable" />
+ <runnableCalls runnable="InjectionTimeActuation?type=Runnable" />
+ </processPrototypes>
+ <processPrototypes name="ESSP4" firstRunnable="APedSensor?type=Runnable" lastRunnable="ThrottleActuator?type=Runnable" activation="Timer_5MS?type=PeriodicActivation">
+ <runnableCalls runnable="APedSensor?type=Runnable" />
+ <runnableCalls runnable="APedVoter?type=Runnable" />
+ <runnableCalls runnable="ThrottleController?type=Runnable" />
+ <runnableCalls runnable="ThrottleActuator?type=Runnable" />
+ </processPrototypes>
+ <processPrototypes name="ESSP5" firstRunnable="ThrottleSensor?type=Runnable" lastRunnable="EcuStopLightActuator?type=Runnable" activation="Timer_5MS?type=PeriodicActivation">
+ <runnableCalls runnable="ThrottleSensor?type=Runnable" />
+ <runnableCalls runnable="EcuBrakePedalSensor?type=Runnable" />
+ <runnableCalls runnable="BrakePedalSensorTranslation?type=Runnable" />
+ <runnableCalls runnable="BrakePedalSensorVoter?type=Runnable" />
+ <runnableCalls runnable="CheckPlausability?type=Runnable" />
+ <runnableCalls runnable="BrakeSafetyMonitor?type=Runnable" />
+ <runnableCalls runnable="BrakeForceCalculation?type=Runnable" />
+ <runnableCalls runnable="BrakeForceArbiter?type=Runnable" />
+ <runnableCalls runnable="StopLightActuator?type=Runnable" />
+ <runnableCalls runnable="EcuStopLightActuator?type=Runnable" />
+ </processPrototypes>
+ <processPrototypes name="ESSP6" firstRunnable="VehicleStateMonitor?type=Runnable" lastRunnable="EcuBrakeActuator?type=Runnable" activation="Timer_10MS?type=PeriodicActivation">
+ <runnableCalls runnable="VehicleStateMonitor?type=Runnable" />
+ <runnableCalls runnable="EcuDecelerationSensor?type=Runnable" />
+ <runnableCalls runnable="DecelerationSensorTranslation?type=Runnable" />
+ <runnableCalls runnable="DecelerationSensorVoter?type=Runnable" />
+ <runnableCalls runnable="ABSCalculation?type=Runnable" />
+ <runnableCalls runnable="BrakeForceActuation?type=Runnable" />
+ <runnableCalls runnable="CaliperPositionCalculation?type=Runnable" />
+ <runnableCalls runnable="BrakeActuator?type=Runnable" />
+ <runnableCalls runnable="EcuBrakeActuator?type=Runnable" />
+ </processPrototypes>
+ <processPrototypes name="ESSP7" firstRunnable="VehicleSpeedSensorDiagnosis?type=Runnable" lastRunnable="BrakeActuatorMonitor?type=Runnable" activation="Timer_10MS?type=PeriodicActivation">
+ <runnableCalls runnable="VehicleSpeedSensorDiagnosis?type=Runnable" />
+ <runnableCalls runnable="BrakeActuatorMonitor?type=Runnable" />
+ </processPrototypes>
+ <processPrototypes name="ESSP8" firstRunnable="DiagnosisArbiter?type=Runnable" lastRunnable="IgnitionTimeActuation?type=Runnable" activation="Timer_10MS?type=PeriodicActivation">
+ <runnableCalls runnable="DiagnosisArbiter?type=Runnable" />
+ <runnableCalls runnable="IgnitionTiming?type=Runnable" />
+ <runnableCalls runnable="IgnitionTimeActuation?type=Runnable" />
+ </processPrototypes>
+ <processPrototypes name="ESSP9" firstRunnable="EcuWheelSpeedSensor?type=Runnable" lastRunnable="WheelSpeedSensorVoter?type=Runnable" activation="Timer_5MS?type=PeriodicActivation">
+ <runnableCalls runnable="EcuWheelSpeedSensor?type=Runnable" />
+ <runnableCalls runnable="WheelSpeedSensorTranslation?type=Runnable" />
+ <runnableCalls runnable="WheelSpeedSensorVoter?type=Runnable" />
+ </processPrototypes>
+ <activations xsi:type="am:PeriodicActivation" name="Timer_10MS">
+ <min value="10" unit="ms" />
+ <max value="10" unit="ms" />
+ <offset value="0" unit="ms" />
+ </activations>
+ <activations xsi:type="am:PeriodicActivation" name="Timer_20MS">
+ <min value="20" unit="ms" />
+ <max value="20" unit="ms" />
+ <offset value="0" unit="ms" />
+ </activations>
+ <activations xsi:type="am:PeriodicActivation" name="Timer_5MS">
+ <min value="5" unit="ms" />
+ <max value="5" unit="ms" />
+ <offset value="0" unit="ms" />
+ </activations>
+ </swModel>
+ <hwModel>
+ <definitions xsi:type="am:ProcessingUnitDefinition" name="Cortex-A9" puType="CPU" features="Instructions/IPC_1.0?type=HwFeature">
+ <customProperties key="EnEf-Volt_High">
+ <value xsi:type="am:DoubleObject" value="1.15" />
+ </customProperties>
+ <customProperties key="EnEf-Volt_Low">
+ <value xsi:type="am:DoubleObject" value="1.05" />
+ </customProperties>
+ <customProperties key="EnEf-Scale_High">
+ <value xsi:type="am:DoubleObject" value="1.0" />
+ </customProperties>
+ <customProperties key="EnEf-Scale_Low">
+ <value xsi:type="am:DoubleObject" value="0.5" />
+ </customProperties>
+ </definitions>
+ <featureCategories name="Instructions" featureType="performance">
+ <features name="IPC_1.0" value="1.0" />
+ </featureCategories>
+ <structures name="Homogeneous Example System" structureType="System">
+ <structures name="Freescale i.MX6 Board" structureType="ECU">
+ <structures name="i.MX 6 Series Processor" structureType="Microcontroller">
+ <modules xsi:type="am:ProcessingUnit" name="Cortex-A9 #1" frequencyDomain="792MHZ%2BQuartz__100.0?type=FrequencyDomain" definition="Cortex-A9?type=ProcessingUnitDefinition" />
+ <modules xsi:type="am:ProcessingUnit" name="Cortex-A9 #2" frequencyDomain="792MHZ%2BQuartz__100.0?type=FrequencyDomain" definition="Cortex-A9?type=ProcessingUnitDefinition" />
+ <modules xsi:type="am:ProcessingUnit" name="Cortex-A9 #3" frequencyDomain="792MHZ%2BQuartz__100.0?type=FrequencyDomain" definition="Cortex-A9?type=ProcessingUnitDefinition" />
+ <modules xsi:type="am:ProcessingUnit" name="Cortex-A9 #4" frequencyDomain="792MHZ%2BQuartz__100.0?type=FrequencyDomain" definition="Cortex-A9?type=ProcessingUnitDefinition" />
+ <modules xsi:type="am:ProcessingUnit" name="Cortex-A9 #5" frequencyDomain="792MHZ%2BQuartz__100.0?type=FrequencyDomain" definition="Cortex-A9?type=ProcessingUnitDefinition" />
+ </structures>
+ </structures>
+ </structures>
+ <domains xsi:type="am:FrequencyDomain" name="792MHZ Quartz" clockGating="false">
+ <defaultValue value="792.0" unit="MHz" />
+ </domains>
+ <domains xsi:type="am:FrequencyDomain" name="792MHZ+Quartz__100.0" clockGating="false">
+ <defaultValue value="792.0" unit="MHz" />
+ </domains>
+ </hwModel>
+ <osModel>
+ <operatingSystems name="OS">
+ <taskSchedulers name="SCHED_Cortex-A9 #1" />
+ <taskSchedulers name="SCHED_Cortex-A9 #2" />
+ <taskSchedulers name="SCHED_Cortex-A9 #3" />
+ <taskSchedulers name="SCHED_Cortex-A9 #4" />
+ <taskSchedulers name="SCHED_Cortex-A9 #5" />
+ </operatingSystems>
+ </osModel>
+ <stimuliModel>
+ <stimuli xsi:type="am:PeriodicStimulus" name="Timer_10MS">
+ <offset value="0" unit="ms" />
+ <recurrence value="10" unit="ms" />
+ </stimuli>
+ <stimuli xsi:type="am:PeriodicStimulus" name="Timer_20MS">
+ <offset value="0" unit="ms" />
+ <recurrence value="20" unit="ms" />
+ </stimuli>
+ <stimuli xsi:type="am:PeriodicStimulus" name="Timer_5MS">
+ <offset value="0" unit="ms" />
+ <recurrence value="5" unit="ms" />
+ </stimuli>
+ </stimuliModel>
+ <constraintsModel>
+ <runnableSequencingConstraints name="ABSCalculation-->BrakeForceActuation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">
+ <runnableGroups runnables="ABSCalculation?type=Runnable" />
+ <runnableGroups runnables="BrakeForceActuation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="BrakeForceArbiter-->ABSCalculation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">
+ <runnableGroups runnables="BrakeForceArbiter?type=Runnable" />
+ <runnableGroups runnables="ABSCalculation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="DecelerationSensorVoter-->ABSCalculation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">
+ <runnableGroups runnables="DecelerationSensorVoter?type=Runnable" />
+ <runnableGroups runnables="ABSCalculation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="VehicleSpeedSensorVoter-->ABSCalculation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">
+ <runnableGroups runnables="VehicleSpeedSensorVoter?type=Runnable" />
+ <runnableGroups runnables="ABSCalculation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="WheelSpeedSensorVoter-->ABSCalculation" orderType="successor" processScope="ESSP9?type=ProcessPrototype">
+ <runnableGroups runnables="WheelSpeedSensorVoter?type=Runnable" />
+ <runnableGroups runnables="ABSCalculation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="APedSensor-->APedVoter" orderType="successor" processScope="ESSP4?type=ProcessPrototype">
+ <runnableGroups runnables="APedSensor?type=Runnable" />
+ <runnableGroups runnables="APedVoter?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="APedVoter-->ThrottleController" orderType="successor" processScope="ESSP4?type=ProcessPrototype">
+ <runnableGroups runnables="APedVoter?type=Runnable" />
+ <runnableGroups runnables="ThrottleController?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="BaseFuelMass-->IgnitionTiming" orderType="successor" processScope="ESSP8?type=ProcessPrototype">
+ <runnableGroups runnables="BaseFuelMass?type=Runnable" />
+ <runnableGroups runnables="IgnitionTiming?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="MassAirFlowSensor-->BaseFuelMass" orderType="successor" processScope="ESSP3?type=ProcessPrototype">
+ <runnableGroups runnables="MassAirFlowSensor?type=Runnable" />
+ <runnableGroups runnables="BaseFuelMass?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="BaseFuelMass-->TransientFuelMass" orderType="successor" processScope="ESSP3?type=ProcessPrototype">
+ <runnableGroups runnables="BaseFuelMass?type=Runnable" />
+ <runnableGroups runnables="TransientFuelMass?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="CaliperPositionCalculation-->BrakeActuator" orderType="successor" processScope="ESSP6?type=ProcessPrototype">
+ <runnableGroups runnables="CaliperPositionCalculation?type=Runnable" />
+ <runnableGroups runnables="BrakeActuator?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="BrakeActuator-->EcuBrakeActuator" orderType="successor" processScope="ESSP6?type=ProcessPrototype">
+ <runnableGroups runnables="BrakeActuator?type=Runnable" />
+ <runnableGroups runnables="EcuBrakeActuator?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="BrakeForceActuation-->BrakeActuatorMonitor" orderType="successor" processScope="ESSP7?type=ProcessPrototype">
+ <runnableGroups runnables="BrakeForceActuation?type=Runnable" />
+ <runnableGroups runnables="BrakeActuatorMonitor?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="BrakeForceActuation-->CaliperPositionCalculation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">
+ <runnableGroups runnables="BrakeForceActuation?type=Runnable" />
+ <runnableGroups runnables="CaliperPositionCalculation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="BrakeForceCalculation-->BrakeForceArbiter" orderType="successor" processScope="ESSP5?type=ProcessPrototype">
+ <runnableGroups runnables="BrakeForceCalculation?type=Runnable" />
+ <runnableGroups runnables="BrakeForceArbiter?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="BrakeSafetyMonitor-->BrakeForceArbiter" orderType="successor" processScope="ESSP5?type=ProcessPrototype">
+ <runnableGroups runnables="BrakeSafetyMonitor?type=Runnable" />
+ <runnableGroups runnables="BrakeForceArbiter?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="BrakeForceArbiter-->StopLightActuator" orderType="successor" processScope="ESSP5?type=ProcessPrototype">
+ <runnableGroups runnables="BrakeForceArbiter?type=Runnable" />
+ <runnableGroups runnables="StopLightActuator?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="BrakeSafetyMonitor-->BrakeForceCalculation" orderType="successor" processScope="ESSP5?type=ProcessPrototype">
+ <runnableGroups runnables="BrakeSafetyMonitor?type=Runnable" />
+ <runnableGroups runnables="BrakeForceCalculation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="CheckPlausability-->BrakeForceCalculation" orderType="successor" processScope="ESSP5?type=ProcessPrototype">
+ <runnableGroups runnables="CheckPlausability?type=Runnable" />
+ <runnableGroups runnables="BrakeForceCalculation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="VehicleStateMonitor-->BrakeForceCalculation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">
+ <runnableGroups runnables="VehicleStateMonitor?type=Runnable" />
+ <runnableGroups runnables="BrakeForceCalculation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="EcuBrakePedalSensor-->BrakePedalSensorDiagnosis" orderType="successor" processScope="ESSP5?type=ProcessPrototype">
+ <runnableGroups runnables="EcuBrakePedalSensor?type=Runnable" />
+ <runnableGroups runnables="BrakePedalSensorDiagnosis?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="BrakePedalSensorTranslation-->BrakePedalSensorVoter" orderType="successor" processScope="ESSP5?type=ProcessPrototype">
+ <runnableGroups runnables="BrakePedalSensorTranslation?type=Runnable" />
+ <runnableGroups runnables="BrakePedalSensorVoter?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="EcuBrakePedalSensor-->BrakePedalSensorTranslation" orderType="successor" processScope="ESSP5?type=ProcessPrototype">
+ <runnableGroups runnables="EcuBrakePedalSensor?type=Runnable" />
+ <runnableGroups runnables="BrakePedalSensorTranslation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="BrakePedalSensorVoter-->CheckPlausability" orderType="successor" processScope="ESSP5?type=ProcessPrototype">
+ <runnableGroups runnables="BrakePedalSensorVoter?type=Runnable" />
+ <runnableGroups runnables="CheckPlausability?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="CheckPlausability-->BrakeSafetyMonitor" orderType="successor" processScope="ESSP5?type=ProcessPrototype">
+ <runnableGroups runnables="CheckPlausability?type=Runnable" />
+ <runnableGroups runnables="BrakeSafetyMonitor?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="VehicleStateMonitor-->BrakeSafetyMonitor" orderType="successor" processScope="ESSP6?type=ProcessPrototype">
+ <runnableGroups runnables="VehicleStateMonitor?type=Runnable" />
+ <runnableGroups runnables="BrakeSafetyMonitor?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="CylNumObserver-->IgnitionTimeActuation" orderType="successor" processScope="ESSP8?type=ProcessPrototype">
+ <runnableGroups runnables="CylNumObserver?type=Runnable" />
+ <runnableGroups runnables="IgnitionTimeActuation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="CylNumObserver-->InjectionTimeActuation" orderType="successor" processScope="ESSP3?type=ProcessPrototype">
+ <runnableGroups runnables="CylNumObserver?type=Runnable" />
+ <runnableGroups runnables="InjectionTimeActuation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="EcuDecelerationSensor-->DecelerationSensorDiagnosis" orderType="successor" processScope="ESSP6?type=ProcessPrototype">
+ <runnableGroups runnables="EcuDecelerationSensor?type=Runnable" />
+ <runnableGroups runnables="DecelerationSensorDiagnosis?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="DecelerationSensorTranslation-->DecelerationSensorVoter" orderType="successor" processScope="ESSP6?type=ProcessPrototype">
+ <runnableGroups runnables="DecelerationSensorTranslation?type=Runnable" />
+ <runnableGroups runnables="DecelerationSensorVoter?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="EcuDecelerationSensor-->DecelerationSensorTranslation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">
+ <runnableGroups runnables="EcuDecelerationSensor?type=Runnable" />
+ <runnableGroups runnables="DecelerationSensorTranslation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="StopLightActuator-->EcuStopLightActuator" orderType="successor" processScope="ESSP5?type=ProcessPrototype">
+ <runnableGroups runnables="StopLightActuator?type=Runnable" />
+ <runnableGroups runnables="EcuStopLightActuator?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="EcuVehicleSpeedSensor-->VehicleSpeedSensorDiagnosis" orderType="successor" processScope="ESSP7?type=ProcessPrototype">
+ <runnableGroups runnables="EcuVehicleSpeedSensor?type=Runnable" />
+ <runnableGroups runnables="VehicleSpeedSensorDiagnosis?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="EcuVehicleSpeedSensor-->VehicleSpeedSensorTranslation" orderType="successor" processScope="ESSP0?type=ProcessPrototype">
+ <runnableGroups runnables="EcuVehicleSpeedSensor?type=Runnable" />
+ <runnableGroups runnables="VehicleSpeedSensorTranslation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="EcuWheelSpeedSensor-->WheelSpeedSensorDiagnosis" orderType="successor" processScope="ESSP9?type=ProcessPrototype">
+ <runnableGroups runnables="EcuWheelSpeedSensor?type=Runnable" />
+ <runnableGroups runnables="WheelSpeedSensorDiagnosis?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="EcuWheelSpeedSensor-->WheelSpeedSensorTranslation" orderType="successor" processScope="ESSP9?type=ProcessPrototype">
+ <runnableGroups runnables="EcuWheelSpeedSensor?type=Runnable" />
+ <runnableGroups runnables="WheelSpeedSensorTranslation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="IgnitionTiming-->IgnitionTimeActuation" orderType="successor" processScope="ESSP8?type=ProcessPrototype">
+ <runnableGroups runnables="IgnitionTiming?type=Runnable" />
+ <runnableGroups runnables="IgnitionTimeActuation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="TotalFuelMass-->InjectionTimeActuation" orderType="successor" processScope="ESSP3?type=ProcessPrototype">
+ <runnableGroups runnables="TotalFuelMass?type=Runnable" />
+ <runnableGroups runnables="InjectionTimeActuation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="ThrottleController-->ThrottleActuator" orderType="successor" processScope="ESSP4?type=ProcessPrototype">
+ <runnableGroups runnables="ThrottleController?type=Runnable" />
+ <runnableGroups runnables="ThrottleActuator?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="ThrottleSensor-->ThrottleController" orderType="successor" processScope="ESSP5?type=ProcessPrototype">
+ <runnableGroups runnables="ThrottleSensor?type=Runnable" />
+ <runnableGroups runnables="ThrottleController?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="TransientFuelMass-->TotalFuelMass" orderType="successor" processScope="ESSP3?type=ProcessPrototype">
+ <runnableGroups runnables="TransientFuelMass?type=Runnable" />
+ <runnableGroups runnables="TotalFuelMass?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="VehicleSpeedSensorTranslation-->VehicleSpeedSensorVoter" orderType="successor" processScope="ESSP0?type=ProcessPrototype">
+ <runnableGroups runnables="VehicleSpeedSensorTranslation?type=Runnable" />
+ <runnableGroups runnables="VehicleSpeedSensorVoter?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="WheelSpeedSensorTranslation-->WheelSpeedSensorVoter" orderType="successor" processScope="ESSP9?type=ProcessPrototype">
+ <runnableGroups runnables="WheelSpeedSensorTranslation?type=Runnable" />
+ <runnableGroups runnables="WheelSpeedSensorVoter?type=Runnable" />
+ </runnableSequencingConstraints>
+ </constraintsModel>
+ <mappingModel>
+ <schedulerAllocation scheduler="SCHED_Cortex-A9+%231?type=TaskScheduler" responsibility="Cortex-A9+%231?type=ProcessingUnit" />
+ <schedulerAllocation scheduler="SCHED_Cortex-A9+%232?type=TaskScheduler" responsibility="Cortex-A9+%232?type=ProcessingUnit" />
+ <schedulerAllocation scheduler="SCHED_Cortex-A9+%233?type=TaskScheduler" responsibility="Cortex-A9+%233?type=ProcessingUnit" />
+ <schedulerAllocation scheduler="SCHED_Cortex-A9+%234?type=TaskScheduler" responsibility="Cortex-A9+%234?type=ProcessingUnit" />
+ <schedulerAllocation scheduler="SCHED_Cortex-A9+%235?type=TaskScheduler" responsibility="Cortex-A9+%235?type=ProcessingUnit" />
+ <taskAllocation task="Task_ESSP0?type=Task" scheduler="SCHED_Cortex-A9+%231?type=TaskScheduler" affinity="Cortex-A9+%231?type=ProcessingUnit" />
+ <taskAllocation task="Task_ESSP1?type=Task" scheduler="SCHED_Cortex-A9+%231?type=TaskScheduler" affinity="Cortex-A9+%231?type=ProcessingUnit" />
+ <taskAllocation task="Task_ESSP2?type=Task" scheduler="SCHED_Cortex-A9+%232?type=TaskScheduler" affinity="Cortex-A9+%232?type=ProcessingUnit" />
+ <taskAllocation task="Task_ESSP3?type=Task" scheduler="SCHED_Cortex-A9+%232?type=TaskScheduler" affinity="Cortex-A9+%232?type=ProcessingUnit" />
+ <taskAllocation task="Task_ESSP4?type=Task" scheduler="SCHED_Cortex-A9+%233?type=TaskScheduler" affinity="Cortex-A9+%233?type=ProcessingUnit" />
+ <taskAllocation task="Task_ESSP5?type=Task" scheduler="SCHED_Cortex-A9+%234?type=TaskScheduler" affinity="Cortex-A9+%234?type=ProcessingUnit" />
+ <taskAllocation task="Task_ESSP6?type=Task" scheduler="SCHED_Cortex-A9+%233?type=TaskScheduler" affinity="Cortex-A9+%233?type=ProcessingUnit" />
+ <taskAllocation task="Task_ESSP7?type=Task" scheduler="SCHED_Cortex-A9+%234?type=TaskScheduler" affinity="Cortex-A9+%234?type=ProcessingUnit" />
+ <taskAllocation task="Task_ESSP8?type=Task" scheduler="SCHED_Cortex-A9+%235?type=TaskScheduler" affinity="Cortex-A9+%235?type=ProcessingUnit" />
+ <taskAllocation task="Task_ESSP9?type=Task" scheduler="SCHED_Cortex-A9+%235?type=TaskScheduler" affinity="Cortex-A9+%235?type=ProcessingUnit" />
+ </mappingModel>
+</am:Amalthea>
diff --git a/eclipse-tools/cdgen/models/democarMulticoreRaspberryPi/AMALTHEA_Democar_Multi_RASPBERRYPI.amxmi b/eclipse-tools/cdgen/models/democarMulticoreRaspberryPi/AMALTHEA_Democar_Multi_RASPBERRYPI.amxmi
new file mode 100644
index 0000000..1d1d16e
--- /dev/null
+++ b/eclipse-tools/cdgen/models/democarMulticoreRaspberryPi/AMALTHEA_Democar_Multi_RASPBERRYPI.amxmi
@@ -0,0 +1,1106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<am:Amalthea xmlns:am="http://app4mc.eclipse.org/amalthea/0.9.5" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmi:version="2.0">
+ <commonElements>
+ <tags name="SwcEngineController" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcActuators" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcBrakeForceArbiter" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcABSCalculation" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcSensors" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcSensorPostprocessing" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcCylNumObserver" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcBrakeForceCalculation" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcEngineSensors" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcInjIgnActuation" tagType="SOFTWARE_COMPONENT" />
+ <coreClassifiers name="FPU" />
+ </commonElements>
+ <swModel>
+ <tasks name="Task_ESSP0" stimuli="Timer_5MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">
+ <customProperties key="[ConstraintExclude] Exclude Targets with FPU">
+ <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />
+ </customProperties>
+ <callGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="EcuVehicleSpeedSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="VehicleSpeedSensorTranslation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="VehicleSpeedSensorVoter?type=Runnable" />
+ </items>
+ </callGraph>
+ </tasks>
+ <tasks name="Task_ESSP1" stimuli="Timer_10MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">
+ <customProperties key="[ConstraintExclude] Exclude Targets with FPU">
+ <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />
+ </customProperties>
+ <callGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="CylNumObserver?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="DecelerationSensorDiagnosis?type=Runnable" />
+ </items>
+ </callGraph>
+ </tasks>
+ <tasks name="Task_ESSP2" stimuli="Timer_10MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">
+ <customProperties key="[ConstraintExclude] Exclude Targets with FPU">
+ <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />
+ </customProperties>
+ <callGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="WheelSpeedSensorDiagnosis?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakePedalSensorDiagnosis?type=Runnable" />
+ </items>
+ </callGraph>
+ </tasks>
+ <tasks name="Task_ESSP3" stimuli="Timer_5MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">
+ <customProperties key="[ConstraintExclude] Exclude Targets with FPU">
+ <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />
+ </customProperties>
+ <callGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="MassAirFlowSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BaseFuelMass?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="TransientFuelMass?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="TotalFuelMass?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="InjectionTimeActuation?type=Runnable" />
+ </items>
+ </callGraph>
+ </tasks>
+ <tasks name="Task_ESSP4" stimuli="Timer_5MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">
+ <customProperties key="[ConstraintExclude] Exclude Targets with FPU">
+ <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />
+ </customProperties>
+ <callGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="APedSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="APedVoter?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="ThrottleController?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="ThrottleActuator?type=Runnable" />
+ </items>
+ </callGraph>
+ </tasks>
+ <tasks name="Task_ESSP5" stimuli="Timer_5MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">
+ <customProperties key="[ConstraintInclude] Requires Targets with FPU">
+ <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />
+ </customProperties>
+ <callGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="ThrottleSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="EcuBrakePedalSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakePedalSensorTranslation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakePedalSensorVoter?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="CheckPlausability?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakeSafetyMonitor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakeForceCalculation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakeForceArbiter?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="StopLightActuator?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="EcuStopLightActuator?type=Runnable" />
+ </items>
+ </callGraph>
+ </tasks>
+ <tasks name="Task_ESSP6" stimuli="Timer_10MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">
+ <customProperties key="[ConstraintInclude] Requires Targets with FPU">
+ <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />
+ </customProperties>
+ <callGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="VehicleStateMonitor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="EcuDecelerationSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="DecelerationSensorTranslation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="DecelerationSensorVoter?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="ABSCalculation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakeForceActuation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="CaliperPositionCalculation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakeActuator?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="EcuBrakeActuator?type=Runnable" />
+ </items>
+ </callGraph>
+ </tasks>
+ <tasks name="Task_ESSP7" stimuli="Timer_10MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">
+ <callGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="VehicleSpeedSensorDiagnosis?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakeActuatorMonitor?type=Runnable" />
+ </items>
+ </callGraph>
+ </tasks>
+ <tasks name="Task_ESSP8" stimuli="Timer_10MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">
+ <callGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="DiagnosisArbiter?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="IgnitionTiming?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="IgnitionTimeActuation?type=Runnable" />
+ </items>
+ </callGraph>
+ </tasks>
+ <tasks name="Task_ESSP9" stimuli="Timer_5MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">
+ <callGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="EcuWheelSpeedSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="WheelSpeedSensorTranslation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="WheelSpeedSensorVoter?type=Runnable" />
+ </items>
+ </callGraph>
+ </tasks>
+ <runnables name="ABSCalculation" tags="SwcABSCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="VotedDecelerationRate?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VotedVehicleSpeed?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VotedWheelSpeed?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ArbitratedBrakeForce?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="ABSActivation?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ABSMode?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="APedSensor" tags="SwcEngineSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="APedSensor1Voltage?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="APedSensor2Voltage?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="APedPosition1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="APedPosition2?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="APedVoter" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="APedPosition1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="APedPosition2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VotedAPedPosition?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="BaseFuelMass" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="MassAirFlow?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BaseFuelMassPerStroke?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="MAFRate?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="BrakeActuator" tags="SwcABSCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="CaliperPosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakeForceVoltage?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="BrakeActuatorMonitor" tags="SwcBrakeForceCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="BrakeForce?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeForceFeedback?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ </callGraph>
+ </runnables>
+ <runnables name="BrakeForceActuation" tags="SwcABSCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="ABSActivation?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ABSMode?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakeForce?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeForceCurrent?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="BrakeForceArbiter" tags="SwcBrakeForceArbiter?type=Tag" activations="Timer_20MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="CalculatedBrakeForce?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeSafetyState?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="ArbitratedBrakeForce?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="BrakeForceCalculation" tags="SwcBrakeForceCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeForceFeedback?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ArbitratedDiagnosisRequest?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="MonitoredVehicleState?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeSafetyLevel?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="CalculatedBrakeForce?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeMonitorLevel?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="BrakePedalSensorDiagnosis" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ </callGraph>
+ </runnables>
+ <runnables name="BrakePedalSensorTranslation" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition2?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="BrakePedalSensorVoter" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VotedBrakePedalPosition?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="BrakeSafetyMonitor" tags="SwcBrakeForceCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeForceFeedback?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ArbitratedDiagnosisRequest?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="MonitoredVehicleState?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeMonitorLevel?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakeSafetyLevel?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeSafetyState?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="CaliperPositionCalculation" tags="SwcABSCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="CaliperPosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeForceCurrent?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="CaliperPosition?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="CheckPlausability" tags="SwcBrakeForceCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="VotedBrakePedalPosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="CylNumObserver" tags="SwcCylNumObserver?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="CylinderNumber?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="TriggeredCylinderNumber?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="DecelerationSensorDiagnosis" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="DecelerationVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="DecelerationVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ </callGraph>
+ </runnables>
+ <runnables name="DecelerationSensorTranslation" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="DecelerationVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="DecelerationVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="DecelerationRate1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="DecelerationRate2?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="DecelerationSensorVoter" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="DecelerationRate1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="DecelerationRate2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VotedDecelerationRate?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="DiagnosisArbiter" tags="SwcBrakeForceCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="ArbitratedDiagnosisRequest?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ </callGraph>
+ </runnables>
+ <runnables name="EcuBrakeActuator" tags="SwcActuators?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="BrakeForceVoltage?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ </callGraph>
+ </runnables>
+ <runnables name="EcuBrakePedalSensor" tags="SwcSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="144000" upperBound="176000" average="160000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage2?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="EcuDecelerationSensor" tags="SwcSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="144000" upperBound="176000" average="160000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="DecelerationVoltage1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="DecelerationVoltage2?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="EcuStopLightActuator" tags="SwcActuators?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="BrakeApplication?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ </callGraph>
+ </runnables>
+ <runnables name="EcuVehicleSpeedSensor" tags="SwcSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage2?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="EcuWheelSpeedSensor" tags="SwcSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage2?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="IgnitionTimeActuation" tags="SwcInjIgnActuation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="TriggeredCylinderNumber?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime3?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime4?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime5?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime6?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="IgnitionTime7?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime8?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="IgnitionTiming" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="MAFRate?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="IgnitionTime?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="InjectionTimeActuation" tags="SwcInjIgnActuation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="TriggeredCylinderNumber?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="TotalFuelMassPerStroke?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime3?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime4?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime5?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime6?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime7?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime8?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ </callGraph>
+ </runnables>
+ <runnables name="MassAirFlowSensor" tags="SwcEngineSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="MAFSensorVoltage?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="MassAirFlow?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="StopLightActuator" tags="SwcABSCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="ArbitratedBrakeForce?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakeApplication?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="ThrottleActuator" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="DesiredThrottlePosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="DesiredThrottlePositionVoltage?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="ThrottleController" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="VotedAPedPosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ThrottlePosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="DesiredThrottlePosition?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="ThrottleSensor" tags="SwcEngineSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="ThrottleSensor1Voltage?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ThrottleSensor2Voltage?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="ThrottlePosition?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="TotalFuelMass" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="TransientFuelMassPerStroke?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="TotalFuelMassPerStroke?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="TransientFuelMass" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="BaseFuelMassPerStroke?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="TransientFuelMassPerStroke?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="VehicleSpeedSensorDiagnosis" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ </callGraph>
+ </runnables>
+ <runnables name="VehicleSpeedSensorTranslation" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VehicleSpeed1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VehicleSpeed2?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="VehicleSpeedSensorVoter" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="VehicleSpeed1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VehicleSpeed2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VotedVehicleSpeed?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="VehicleStateMonitor" tags="SwcBrakeForceCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="MonitoredVehicleState?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="WheelSpeedSensorDiagnosis" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ </callGraph>
+ </runnables>
+ <runnables name="WheelSpeedSensorTranslation" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="WheelSpeed1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="WheelSpeed2?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <runnables name="WheelSpeedSensorVoter" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">
+ <callGraph>
+ <items xsi:type="am:LabelAccess" data="WheelSpeed1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="WheelSpeed2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VotedWheelSpeed?type=Label" access="write" dataStability="inherited" />
+ </callGraph>
+ </runnables>
+ <labels name="ABSActivation" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="ABSMode" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="APedPosition1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="APedPosition2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="APedSensor1Voltage" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="APedSensor2Voltage" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="ArbitratedBrakeForce" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="ArbitratedDiagnosisRequest" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BaseFuelMassPerStroke" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="BrakeApplication" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakeForce" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakeForceCurrent" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakeForceFeedback" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakeForceVoltage" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="BrakeMonitorLevel" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakePedalPosition" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakePedalPosition1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakePedalPosition2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakePedalPositionVoltage1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="BrakePedalPositionVoltage2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="BrakeSafetyLevel" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakeSafetyState" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="CalculatedBrakeForce" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="CaliperPosition" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="CylinderNumber" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="DecelerationRate1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="DecelerationRate2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="DecelerationVoltage1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="DecelerationVoltage2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="DesiredThrottlePosition" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="DesiredThrottlePositionVoltage" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime3" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime4" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime5" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime6" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime7" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime8" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="InjectionTime1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="InjectionTime2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="InjectionTime3" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="InjectionTime4" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="InjectionTime5" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="InjectionTime6" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="InjectionTime7" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="InjectionTime8" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="MAFRate" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="MAFSensorVoltage" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="MassAirFlow" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="MonitoredVehicleState" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="ThrottlePosition" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="ThrottleSensor1Voltage" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="ThrottleSensor2Voltage" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="TotalFuelMassPerStroke" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="TransientFuelMassPerStroke" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="TriggeredCylinderNumber" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="VehicleSpeed1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="VehicleSpeed2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="VehicleSpeedVoltage1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="VehicleSpeedVoltage2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="VotedAPedPosition" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="VotedBrakePedalPosition" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="VotedDecelerationRate" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="VotedVehicleSpeed" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="VotedWheelSpeed" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="WheelSpeed1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="WheelSpeed2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="WheelSpeedVoltage1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="WheelSpeedVoltage2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <processPrototypes name="ESSP0" firstRunnable="EcuVehicleSpeedSensor?type=Runnable" lastRunnable="VehicleSpeedSensorVoter?type=Runnable" activation="Timer_5MS?type=PeriodicActivation">
+ <runnableCalls runnable="EcuVehicleSpeedSensor?type=Runnable" />
+ <runnableCalls runnable="VehicleSpeedSensorTranslation?type=Runnable" />
+ <runnableCalls runnable="VehicleSpeedSensorVoter?type=Runnable" />
+ </processPrototypes>
+ <processPrototypes name="ESSP1" firstRunnable="CylNumObserver?type=Runnable" lastRunnable="DecelerationSensorDiagnosis?type=Runnable" activation="Timer_10MS?type=PeriodicActivation">
+ <runnableCalls runnable="CylNumObserver?type=Runnable" />
+ <runnableCalls runnable="DecelerationSensorDiagnosis?type=Runnable" />
+ </processPrototypes>
+ <processPrototypes name="ESSP2" firstRunnable="WheelSpeedSensorDiagnosis?type=Runnable" lastRunnable="BrakePedalSensorDiagnosis?type=Runnable" activation="Timer_10MS?type=PeriodicActivation">
+ <runnableCalls runnable="WheelSpeedSensorDiagnosis?type=Runnable" />
+ <runnableCalls runnable="BrakePedalSensorDiagnosis?type=Runnable" />
+ </processPrototypes>
+ <processPrototypes name="ESSP3" firstRunnable="MassAirFlowSensor?type=Runnable" lastRunnable="InjectionTimeActuation?type=Runnable" activation="Timer_5MS?type=PeriodicActivation">
+ <runnableCalls runnable="MassAirFlowSensor?type=Runnable" />
+ <runnableCalls runnable="BaseFuelMass?type=Runnable" />
+ <runnableCalls runnable="TransientFuelMass?type=Runnable" />
+ <runnableCalls runnable="TotalFuelMass?type=Runnable" />
+ <runnableCalls runnable="InjectionTimeActuation?type=Runnable" />
+ </processPrototypes>
+ <processPrototypes name="ESSP4" firstRunnable="APedSensor?type=Runnable" lastRunnable="ThrottleActuator?type=Runnable" activation="Timer_5MS?type=PeriodicActivation">
+ <runnableCalls runnable="APedSensor?type=Runnable" />
+ <runnableCalls runnable="APedVoter?type=Runnable" />
+ <runnableCalls runnable="ThrottleController?type=Runnable" />
+ <runnableCalls runnable="ThrottleActuator?type=Runnable" />
+ </processPrototypes>
+ <processPrototypes name="ESSP5" firstRunnable="ThrottleSensor?type=Runnable" lastRunnable="EcuStopLightActuator?type=Runnable" activation="Timer_5MS?type=PeriodicActivation">
+ <runnableCalls runnable="ThrottleSensor?type=Runnable" />
+ <runnableCalls runnable="EcuBrakePedalSensor?type=Runnable" />
+ <runnableCalls runnable="BrakePedalSensorTranslation?type=Runnable" />
+ <runnableCalls runnable="BrakePedalSensorVoter?type=Runnable" />
+ <runnableCalls runnable="CheckPlausability?type=Runnable" />
+ <runnableCalls runnable="BrakeSafetyMonitor?type=Runnable" />
+ <runnableCalls runnable="BrakeForceCalculation?type=Runnable" />
+ <runnableCalls runnable="BrakeForceArbiter?type=Runnable" />
+ <runnableCalls runnable="StopLightActuator?type=Runnable" />
+ <runnableCalls runnable="EcuStopLightActuator?type=Runnable" />
+ </processPrototypes>
+ <processPrototypes name="ESSP6" firstRunnable="VehicleStateMonitor?type=Runnable" lastRunnable="EcuBrakeActuator?type=Runnable" activation="Timer_10MS?type=PeriodicActivation">
+ <runnableCalls runnable="VehicleStateMonitor?type=Runnable" />
+ <runnableCalls runnable="EcuDecelerationSensor?type=Runnable" />
+ <runnableCalls runnable="DecelerationSensorTranslation?type=Runnable" />
+ <runnableCalls runnable="DecelerationSensorVoter?type=Runnable" />
+ <runnableCalls runnable="ABSCalculation?type=Runnable" />
+ <runnableCalls runnable="BrakeForceActuation?type=Runnable" />
+ <runnableCalls runnable="CaliperPositionCalculation?type=Runnable" />
+ <runnableCalls runnable="BrakeActuator?type=Runnable" />
+ <runnableCalls runnable="EcuBrakeActuator?type=Runnable" />
+ </processPrototypes>
+ <processPrototypes name="ESSP7" firstRunnable="VehicleSpeedSensorDiagnosis?type=Runnable" lastRunnable="BrakeActuatorMonitor?type=Runnable" activation="Timer_10MS?type=PeriodicActivation">
+ <runnableCalls runnable="VehicleSpeedSensorDiagnosis?type=Runnable" />
+ <runnableCalls runnable="BrakeActuatorMonitor?type=Runnable" />
+ </processPrototypes>
+ <processPrototypes name="ESSP8" firstRunnable="DiagnosisArbiter?type=Runnable" lastRunnable="IgnitionTimeActuation?type=Runnable" activation="Timer_10MS?type=PeriodicActivation">
+ <runnableCalls runnable="DiagnosisArbiter?type=Runnable" />
+ <runnableCalls runnable="IgnitionTiming?type=Runnable" />
+ <runnableCalls runnable="IgnitionTimeActuation?type=Runnable" />
+ </processPrototypes>
+ <processPrototypes name="ESSP9" firstRunnable="EcuWheelSpeedSensor?type=Runnable" lastRunnable="WheelSpeedSensorVoter?type=Runnable" activation="Timer_5MS?type=PeriodicActivation">
+ <runnableCalls runnable="EcuWheelSpeedSensor?type=Runnable" />
+ <runnableCalls runnable="WheelSpeedSensorTranslation?type=Runnable" />
+ <runnableCalls runnable="WheelSpeedSensorVoter?type=Runnable" />
+ </processPrototypes>
+ <activations xsi:type="am:PeriodicActivation" name="Timer_10MS">
+ <min value="10" unit="ms" />
+ <max value="10" unit="ms" />
+ <offset value="0" unit="ms" />
+ </activations>
+ <activations xsi:type="am:PeriodicActivation" name="Timer_20MS">
+ <min value="20" unit="ms" />
+ <max value="20" unit="ms" />
+ <offset value="0" unit="ms" />
+ </activations>
+ <activations xsi:type="am:PeriodicActivation" name="Timer_5MS">
+ <min value="5" unit="ms" />
+ <max value="5" unit="ms" />
+ <offset value="0" unit="ms" />
+ </activations>
+ </swModel>
+ <hwModel>
+ <definitions xsi:type="am:ProcessingUnitDefinition" name="ARM Cortex-A53" puType="CPU" features="Instructions/IPC_1.0?type=HwFeature" />
+ <featureCategories name="Instructions" featureType="performance">
+ <features name="IPC_1.0" value="1.0" />
+ </featureCategories>
+ <structures name="Homogeneous Example System" structureType="System">
+ <structures name="RPI3" structureType="ECU">
+ <structures name="ARM Cortex-A53" structureType="Microcontroller">
+ <modules xsi:type="am:ProcessingUnit" name="RPI_0" frequencyDomain="ClockARM0?type=FrequencyDomain" definition="ARM+Cortex-A53?type=ProcessingUnitDefinition" />
+ <modules xsi:type="am:ProcessingUnit" name="RPI_1" frequencyDomain="ClockARM1?type=FrequencyDomain" definition="ARM+Cortex-A53?type=ProcessingUnitDefinition" />
+ <modules xsi:type="am:ProcessingUnit" name="RPI_2" frequencyDomain="ClockARM2?type=FrequencyDomain" definition="ARM+Cortex-A53?type=ProcessingUnitDefinition" />
+ <modules xsi:type="am:ProcessingUnit" name="RPI_3" frequencyDomain="ClockARM3?type=FrequencyDomain" definition="ARM+Cortex-A53?type=ProcessingUnitDefinition" />
+ </structures>
+ </structures>
+ </structures>
+ <domains xsi:type="am:FrequencyDomain" name="ClockARM2" clockGating="false">
+ <defaultValue value="1.2" unit="GHz" />
+ </domains>
+ <domains xsi:type="am:FrequencyDomain" name="ClockARM3" clockGating="false">
+ <defaultValue value="1.2" unit="GHz" />
+ </domains>
+ <domains xsi:type="am:FrequencyDomain" name="ClockARM0" clockGating="false">
+ <defaultValue value="1.2" unit="GHz" />
+ </domains>
+ <domains xsi:type="am:FrequencyDomain" name="ClockARM1" clockGating="false">
+ <defaultValue value="1.2" unit="GHz" />
+ </domains>
+ </hwModel>
+ <osModel>
+ <operatingSystems name="OS">
+ <taskSchedulers name="SCHED_RPI_0 #1" />
+ <taskSchedulers name="SCHED_RPI_1 #2" />
+ <taskSchedulers name="SCHED_RPI_2 #3" />
+ <taskSchedulers name="SCHED_RPI_3 #4" />
+ </operatingSystems>
+ </osModel>
+ <stimuliModel>
+ <stimuli xsi:type="am:PeriodicStimulus" name="Timer_10MS">
+ <offset value="0" unit="ms" />
+ <recurrence value="10" unit="ms" />
+ </stimuli>
+ <stimuli xsi:type="am:PeriodicStimulus" name="Timer_20MS">
+ <offset value="0" unit="ms" />
+ <recurrence value="20" unit="ms" />
+ </stimuli>
+ <stimuli xsi:type="am:PeriodicStimulus" name="Timer_5MS">
+ <offset value="0" unit="ms" />
+ <recurrence value="5" unit="ms" />
+ </stimuli>
+ </stimuliModel>
+ <constraintsModel>
+ <runnableSequencingConstraints name="ABSCalculation-->BrakeForceActuation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">
+ <runnableGroups runnables="ABSCalculation?type=Runnable" />
+ <runnableGroups runnables="BrakeForceActuation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="BrakeForceArbiter-->ABSCalculation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">
+ <runnableGroups runnables="BrakeForceArbiter?type=Runnable" />
+ <runnableGroups runnables="ABSCalculation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="DecelerationSensorVoter-->ABSCalculation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">
+ <runnableGroups runnables="DecelerationSensorVoter?type=Runnable" />
+ <runnableGroups runnables="ABSCalculation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="VehicleSpeedSensorVoter-->ABSCalculation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">
+ <runnableGroups runnables="VehicleSpeedSensorVoter?type=Runnable" />
+ <runnableGroups runnables="ABSCalculation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="WheelSpeedSensorVoter-->ABSCalculation" orderType="successor" processScope="ESSP9?type=ProcessPrototype">
+ <runnableGroups runnables="WheelSpeedSensorVoter?type=Runnable" />
+ <runnableGroups runnables="ABSCalculation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="APedSensor-->APedVoter" orderType="successor" processScope="ESSP4?type=ProcessPrototype">
+ <runnableGroups runnables="APedSensor?type=Runnable" />
+ <runnableGroups runnables="APedVoter?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="APedVoter-->ThrottleController" orderType="successor" processScope="ESSP4?type=ProcessPrototype">
+ <runnableGroups runnables="APedVoter?type=Runnable" />
+ <runnableGroups runnables="ThrottleController?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="BaseFuelMass-->IgnitionTiming" orderType="successor" processScope="ESSP8?type=ProcessPrototype">
+ <runnableGroups runnables="BaseFuelMass?type=Runnable" />
+ <runnableGroups runnables="IgnitionTiming?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="MassAirFlowSensor-->BaseFuelMass" orderType="successor" processScope="ESSP3?type=ProcessPrototype">
+ <runnableGroups runnables="MassAirFlowSensor?type=Runnable" />
+ <runnableGroups runnables="BaseFuelMass?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="BaseFuelMass-->TransientFuelMass" orderType="successor" processScope="ESSP3?type=ProcessPrototype">
+ <runnableGroups runnables="BaseFuelMass?type=Runnable" />
+ <runnableGroups runnables="TransientFuelMass?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="CaliperPositionCalculation-->BrakeActuator" orderType="successor" processScope="ESSP6?type=ProcessPrototype">
+ <runnableGroups runnables="CaliperPositionCalculation?type=Runnable" />
+ <runnableGroups runnables="BrakeActuator?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="BrakeActuator-->EcuBrakeActuator" orderType="successor" processScope="ESSP6?type=ProcessPrototype">
+ <runnableGroups runnables="BrakeActuator?type=Runnable" />
+ <runnableGroups runnables="EcuBrakeActuator?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="BrakeForceActuation-->BrakeActuatorMonitor" orderType="successor" processScope="ESSP7?type=ProcessPrototype">
+ <runnableGroups runnables="BrakeForceActuation?type=Runnable" />
+ <runnableGroups runnables="BrakeActuatorMonitor?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="BrakeForceActuation-->CaliperPositionCalculation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">
+ <runnableGroups runnables="BrakeForceActuation?type=Runnable" />
+ <runnableGroups runnables="CaliperPositionCalculation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="BrakeForceCalculation-->BrakeForceArbiter" orderType="successor" processScope="ESSP5?type=ProcessPrototype">
+ <runnableGroups runnables="BrakeForceCalculation?type=Runnable" />
+ <runnableGroups runnables="BrakeForceArbiter?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="BrakeSafetyMonitor-->BrakeForceArbiter" orderType="successor" processScope="ESSP5?type=ProcessPrototype">
+ <runnableGroups runnables="BrakeSafetyMonitor?type=Runnable" />
+ <runnableGroups runnables="BrakeForceArbiter?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="BrakeForceArbiter-->StopLightActuator" orderType="successor" processScope="ESSP5?type=ProcessPrototype">
+ <runnableGroups runnables="BrakeForceArbiter?type=Runnable" />
+ <runnableGroups runnables="StopLightActuator?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="BrakeSafetyMonitor-->BrakeForceCalculation" orderType="successor" processScope="ESSP5?type=ProcessPrototype">
+ <runnableGroups runnables="BrakeSafetyMonitor?type=Runnable" />
+ <runnableGroups runnables="BrakeForceCalculation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="CheckPlausability-->BrakeForceCalculation" orderType="successor" processScope="ESSP5?type=ProcessPrototype">
+ <runnableGroups runnables="CheckPlausability?type=Runnable" />
+ <runnableGroups runnables="BrakeForceCalculation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="VehicleStateMonitor-->BrakeForceCalculation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">
+ <runnableGroups runnables="VehicleStateMonitor?type=Runnable" />
+ <runnableGroups runnables="BrakeForceCalculation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="EcuBrakePedalSensor-->BrakePedalSensorDiagnosis" orderType="successor" processScope="ESSP5?type=ProcessPrototype">
+ <runnableGroups runnables="EcuBrakePedalSensor?type=Runnable" />
+ <runnableGroups runnables="BrakePedalSensorDiagnosis?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="BrakePedalSensorTranslation-->BrakePedalSensorVoter" orderType="successor" processScope="ESSP5?type=ProcessPrototype">
+ <runnableGroups runnables="BrakePedalSensorTranslation?type=Runnable" />
+ <runnableGroups runnables="BrakePedalSensorVoter?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="EcuBrakePedalSensor-->BrakePedalSensorTranslation" orderType="successor" processScope="ESSP5?type=ProcessPrototype">
+ <runnableGroups runnables="EcuBrakePedalSensor?type=Runnable" />
+ <runnableGroups runnables="BrakePedalSensorTranslation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="BrakePedalSensorVoter-->CheckPlausability" orderType="successor" processScope="ESSP5?type=ProcessPrototype">
+ <runnableGroups runnables="BrakePedalSensorVoter?type=Runnable" />
+ <runnableGroups runnables="CheckPlausability?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="CheckPlausability-->BrakeSafetyMonitor" orderType="successor" processScope="ESSP5?type=ProcessPrototype">
+ <runnableGroups runnables="CheckPlausability?type=Runnable" />
+ <runnableGroups runnables="BrakeSafetyMonitor?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="VehicleStateMonitor-->BrakeSafetyMonitor" orderType="successor" processScope="ESSP6?type=ProcessPrototype">
+ <runnableGroups runnables="VehicleStateMonitor?type=Runnable" />
+ <runnableGroups runnables="BrakeSafetyMonitor?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="CylNumObserver-->IgnitionTimeActuation" orderType="successor" processScope="ESSP8?type=ProcessPrototype">
+ <runnableGroups runnables="CylNumObserver?type=Runnable" />
+ <runnableGroups runnables="IgnitionTimeActuation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="CylNumObserver-->InjectionTimeActuation" orderType="successor" processScope="ESSP3?type=ProcessPrototype">
+ <runnableGroups runnables="CylNumObserver?type=Runnable" />
+ <runnableGroups runnables="InjectionTimeActuation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="EcuDecelerationSensor-->DecelerationSensorDiagnosis" orderType="successor" processScope="ESSP6?type=ProcessPrototype">
+ <runnableGroups runnables="EcuDecelerationSensor?type=Runnable" />
+ <runnableGroups runnables="DecelerationSensorDiagnosis?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="DecelerationSensorTranslation-->DecelerationSensorVoter" orderType="successor" processScope="ESSP6?type=ProcessPrototype">
+ <runnableGroups runnables="DecelerationSensorTranslation?type=Runnable" />
+ <runnableGroups runnables="DecelerationSensorVoter?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="EcuDecelerationSensor-->DecelerationSensorTranslation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">
+ <runnableGroups runnables="EcuDecelerationSensor?type=Runnable" />
+ <runnableGroups runnables="DecelerationSensorTranslation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="StopLightActuator-->EcuStopLightActuator" orderType="successor" processScope="ESSP5?type=ProcessPrototype">
+ <runnableGroups runnables="StopLightActuator?type=Runnable" />
+ <runnableGroups runnables="EcuStopLightActuator?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="EcuVehicleSpeedSensor-->VehicleSpeedSensorDiagnosis" orderType="successor" processScope="ESSP7?type=ProcessPrototype">
+ <runnableGroups runnables="EcuVehicleSpeedSensor?type=Runnable" />
+ <runnableGroups runnables="VehicleSpeedSensorDiagnosis?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="EcuVehicleSpeedSensor-->VehicleSpeedSensorTranslation" orderType="successor" processScope="ESSP0?type=ProcessPrototype">
+ <runnableGroups runnables="EcuVehicleSpeedSensor?type=Runnable" />
+ <runnableGroups runnables="VehicleSpeedSensorTranslation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="EcuWheelSpeedSensor-->WheelSpeedSensorDiagnosis" orderType="successor" processScope="ESSP9?type=ProcessPrototype">
+ <runnableGroups runnables="EcuWheelSpeedSensor?type=Runnable" />
+ <runnableGroups runnables="WheelSpeedSensorDiagnosis?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="EcuWheelSpeedSensor-->WheelSpeedSensorTranslation" orderType="successor" processScope="ESSP9?type=ProcessPrototype">
+ <runnableGroups runnables="EcuWheelSpeedSensor?type=Runnable" />
+ <runnableGroups runnables="WheelSpeedSensorTranslation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="IgnitionTiming-->IgnitionTimeActuation" orderType="successor" processScope="ESSP8?type=ProcessPrototype">
+ <runnableGroups runnables="IgnitionTiming?type=Runnable" />
+ <runnableGroups runnables="IgnitionTimeActuation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="TotalFuelMass-->InjectionTimeActuation" orderType="successor" processScope="ESSP3?type=ProcessPrototype">
+ <runnableGroups runnables="TotalFuelMass?type=Runnable" />
+ <runnableGroups runnables="InjectionTimeActuation?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="ThrottleController-->ThrottleActuator" orderType="successor" processScope="ESSP4?type=ProcessPrototype">
+ <runnableGroups runnables="ThrottleController?type=Runnable" />
+ <runnableGroups runnables="ThrottleActuator?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="ThrottleSensor-->ThrottleController" orderType="successor" processScope="ESSP5?type=ProcessPrototype">
+ <runnableGroups runnables="ThrottleSensor?type=Runnable" />
+ <runnableGroups runnables="ThrottleController?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="TransientFuelMass-->TotalFuelMass" orderType="successor" processScope="ESSP3?type=ProcessPrototype">
+ <runnableGroups runnables="TransientFuelMass?type=Runnable" />
+ <runnableGroups runnables="TotalFuelMass?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="VehicleSpeedSensorTranslation-->VehicleSpeedSensorVoter" orderType="successor" processScope="ESSP0?type=ProcessPrototype">
+ <runnableGroups runnables="VehicleSpeedSensorTranslation?type=Runnable" />
+ <runnableGroups runnables="VehicleSpeedSensorVoter?type=Runnable" />
+ </runnableSequencingConstraints>
+ <runnableSequencingConstraints name="WheelSpeedSensorTranslation-->WheelSpeedSensorVoter" orderType="successor" processScope="ESSP9?type=ProcessPrototype">
+ <runnableGroups runnables="WheelSpeedSensorTranslation?type=Runnable" />
+ <runnableGroups runnables="WheelSpeedSensorVoter?type=Runnable" />
+ </runnableSequencingConstraints>
+ </constraintsModel>
+ <mappingModel>
+ <schedulerAllocation scheduler="SCHED_RPI_0+%231?type=TaskScheduler" responsibility="RPI_0?type=ProcessingUnit" />
+ <schedulerAllocation scheduler="SCHED_RPI_1+%232?type=TaskScheduler" responsibility="RPI_1?type=ProcessingUnit" />
+ <taskAllocation task="Task_ESSP0?type=Task" scheduler="SCHED_RPI_1+%232?type=TaskScheduler" affinity="RPI_1?type=ProcessingUnit" />
+ <taskAllocation task="Task_ESSP1?type=Task" scheduler="SCHED_RPI_1+%232?type=TaskScheduler" affinity="RPI_1?type=ProcessingUnit" />
+ <taskAllocation task="Task_ESSP2?type=Task" scheduler="SCHED_RPI_0+%231?type=TaskScheduler" affinity="RPI_0?type=ProcessingUnit" />
+ <taskAllocation task="Task_ESSP3?type=Task" scheduler="SCHED_RPI_0+%231?type=TaskScheduler" affinity="RPI_0?type=ProcessingUnit" />
+ <taskAllocation task="Task_ESSP4?type=Task" scheduler="SCHED_RPI_1+%232?type=TaskScheduler" affinity="RPI_1?type=ProcessingUnit" />
+ <taskAllocation task="Task_ESSP5?type=Task" scheduler="SCHED_RPI_0+%231?type=TaskScheduler" affinity="RPI_0?type=ProcessingUnit" />
+ <taskAllocation task="Task_ESSP6?type=Task" scheduler="SCHED_RPI_1+%232?type=TaskScheduler" affinity="RPI_1?type=ProcessingUnit" />
+ <taskAllocation task="Task_ESSP7?type=Task" scheduler="SCHED_RPI_1+%232?type=TaskScheduler" affinity="RPI_1?type=ProcessingUnit" />
+ <taskAllocation task="Task_ESSP8?type=Task" scheduler="SCHED_RPI_0+%231?type=TaskScheduler" affinity="RPI_0?type=ProcessingUnit" />
+ <taskAllocation task="Task_ESSP9?type=Task" scheduler="SCHED_RPI_0+%231?type=TaskScheduler" affinity="RPI_0?type=ProcessingUnit" />
+ </mappingModel>
+</am:Amalthea>
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/ArmCodeFileCreation.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/ArmCodeFileCreation.java
new file mode 100644
index 0000000..b689ea5
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/ArmCodeFileCreation.java
@@ -0,0 +1,347 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.amalthea.model.MappingModel;
+import org.eclipse.app4mc.amalthea.model.Runnable;
+import org.eclipse.app4mc.amalthea.model.SchedulerAllocation;
+import org.eclipse.app4mc.amalthea.model.Task;
+import org.eclipse.app4mc.cdgen.utils.fileUtil;
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * Implementation of Runnable Definition with Runnable specific delay.
+ *
+ */
+
+public class ArmCodeFileCreation {
+ final private Amalthea model;
+
+ /**
+ * Constructor ArmCodeFileCreation.
+ *
+ * @param Model
+ * @param srcPath
+ * @param hdrPath
+ * @param configFlag
+ * @throws IOException
+ */
+ public ArmCodeFileCreation(final Amalthea Model, final String srcPath, final String hdrPath, final int configFlag)
+ throws IOException {
+ this.model = Model;
+ final EList<Task> tasks = this.model.getSwModel().getTasks();
+ final EList<Runnable> runnables = this.model.getSwModel().getRunnables();
+ System.out.println("Runnable File Creation Begins");
+ fileCreate(this.model, srcPath, hdrPath, configFlag, tasks, runnables);
+ System.out.println("Runnable File Creation Ends");
+
+ }
+
+ /**
+ * file creation and specification for armcode file
+ *
+ * @param model
+ * @param srcPath
+ * @param hdrPath
+ * @param configFlag
+ * @param tasks
+ * @param runnables
+ * @throws IOException
+ */
+ private static void fileCreate(final Amalthea model, final String srcPath, final String hdrPath,
+ final int configFlag, final EList<Task> tasks, final EList<Runnable> runnables) throws IOException {
+ final String fname = srcPath + File.separator + "armcode.c";
+ final File f2 = new File(srcPath);
+ final File f1 = new File(fname);
+ f2.mkdirs();
+ try {
+ f1.createNewFile();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ try {
+ if (0x3110 == (configFlag & 0xFFF0)) {
+ fileUtil.fileMainHeader(f1);
+ runFileHeader(f1);
+ headerIncludesArmCode(f1);
+ nsleep(f1);
+ zynqmain(model, f1);
+ }
+ else {
+ fileUtil.fileMainHeader(f1);
+ runFileHeader(f1);
+ headerIncludesArmCode(f1);
+ nsleep(f1);
+ zynqmain(model, f1);
+ }
+ }
+ finally {
+ try {
+ fw.close();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ /**
+ * ArmCode Header Title note.
+ *
+ * @param file
+ */
+ private static void runFileHeader(final File file) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("*Title : ArmCode Header\n");
+ fw.write("*Description : Header file for Deploy/Offloading of the task to EPI\n");
+ fw.write("******************************************************************\n");
+ fw.write("******************************************************************/\n\n\n");
+
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+ /**
+ * nsleep - function call structure.
+ *
+ * @param file
+ */
+ private static void nsleep(final File file) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("int nsleep(long miliseconds){\n");
+ fw.write("\tstruct timespec req, rem;\n");
+ fw.write("\tif(miliseconds > 999){\n");
+ fw.write("\t\treq.tv_sec = (int)(miliseconds / 1000);\n");
+ fw.write("\t\treq.tv_nsec = (miliseconds - ((long)req.tv_sec * 1000)) * 1000000;\n");
+ fw.write("\t} else {\n");
+ fw.write("\t\treq.tv_sec = 0;\n");
+ fw.write("\t\treq.tv_nsec = miliseconds * 1000000;\n");
+ fw.write("\t}\n");
+ fw.write("\treturn nanosleep(&req , &rem);\n");
+ fw.write("}\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+ /**
+ * main function for the zynq in which we deploy the
+ *
+ * @param model
+ * @param file
+ */
+ private static void zynqmain(final Amalthea model, final File file) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ final MappingModel mappingModel = model.getMappingModel();
+ if (mappingModel != null) {
+ final EList<SchedulerAllocation> processingUnits = model.getMappingModel().getSchedulerAllocation();
+ final ArrayList<SchedulerAllocation> localPU = new ArrayList<SchedulerAllocation>();
+ localPU.addAll(processingUnits);
+ final HashMap<SchedulerAllocation, Long> CoreMap = new HashMap<SchedulerAllocation, Long>();
+ long count = 0;
+ for (final SchedulerAllocation pu : localPU) {
+ CoreMap.put(pu, count);
+ count++;
+ }
+ fw.write("int main(){\n");
+ fw.write("\tunsigned int shared_label_to_read;\n");
+ fw.write("\tunsigned row_loop,col_loop;\n");
+ fw.write("\te_platform_t epiphany;\n");
+ fw.write("\te_epiphany_t dev;\n");
+ fw.write("\tint loop;\n");
+ fw.write("\tint addr;\n");
+ fw.write("\te_mem_t emem;\n");
+ fw.write("\te_init(NULL);\n");
+ fw.write("\te_reset_system();\n");
+ fw.write("\te_get_platform_info(&epiphany);\n");
+ int coreGroup = 0;
+ if (processingUnits.size() == 1) {
+ coreGroup = 0;
+ }
+ else if (processingUnits.size() > 1 && processingUnits.size() < 5) {
+ coreGroup = 2;
+ }
+ else if (processingUnits.size() > 4 && processingUnits.size() < 10) {
+ coreGroup = 3;
+ }
+ else if (processingUnits.size() > 9 && processingUnits.size() < 17) {
+ coreGroup = 4;
+ }
+ fw.write("\te_open(&dev,0,0," + coreGroup + "," + coreGroup + ");\n");
+ /* Core 1 */
+ // 00
+ /* Core 2 */
+ // 00 10
+ // 01 11
+ /* Core 3 */
+ // 00 10 20
+ // 01 11 21
+ // 02 12 22
+ /* Core 4 */
+ // 00 10 20 30
+ // 01 11 21 31
+ // 02 12 22 32
+ // 03 13 23 33
+
+ fw.write("\te_reset_group(&dev);\n");
+ int k = 0;
+ final ArrayList<String> result = new ArrayList<String>();
+ for (int i = 0; i < localPU.size(); i++) {
+ for (int j = 0; j < localPU.size(); j++) {
+ if (k < localPU.size()) {
+ fw.write("\te_return_stat_t\tresult" + k + ";\n");
+ k++;
+ }
+
+ }
+ }
+ int k3 = 0;
+ for (int rowCoreGroup = 0; rowCoreGroup < localPU.size(); rowCoreGroup++) {
+ for (int columnCoreGroup = 0; columnCoreGroup < localPU.size(); columnCoreGroup++) {
+ if (k3 < localPU.size()) {
+ fw.write("\tunsigned int message" + k3 + "[9];\n");
+ k3++;
+ }
+ }
+ }
+ int coreIndex = 0;
+ for (int rowCoreGroup = 0; rowCoreGroup < coreGroup; rowCoreGroup++) {
+ for (int columnCoreGroup = 0; columnCoreGroup < coreGroup; columnCoreGroup++) {
+ if (coreIndex < localPU.size()) {
+ fw.write("\tresult" + coreIndex + "= e_load(\"main" + coreIndex + ".elf\",&dev,"
+ + rowCoreGroup + "," + columnCoreGroup + ",E_FALSE);\n");
+ result.add("result" + coreIndex + "!=E_OK");
+ coreIndex++;
+ }
+ }
+ }
+ String resultFinal = "";
+ for (int k2 = 0; k2 < result.size(); k2++) {
+ // System.out.println("Size ==> "+result.size());
+ resultFinal = resultFinal + (result.get(k2) + "||");
+ if (k2 == (result.size() - 2)) {
+ k2++;
+ resultFinal = resultFinal + result.get(k2);
+ break;
+ }
+ }
+ coreIndex = 0;
+ for (int rowCoreGroup = 0; rowCoreGroup < localPU.size() & rowCoreGroup < 4; rowCoreGroup++) {
+ for (int columnCore = 0; columnCore < localPU.size() & columnCore < 4; columnCore++) {
+ if (coreIndex < localPU.size()) {
+ if (coreIndex == 0) {
+ fw.write("\tif (result" + coreIndex + "!=E_OK){\n");
+ }
+ else {
+ fw.write("\telse if (result" + coreIndex + "!=E_OK){\n");
+ }
+ fw.write("\t\tfprintf(stderr,\"Error Loading the Epiphany Application " + coreIndex
+ + " %i\\n\", result" + coreIndex + ");");
+ fw.write("\n\t}\n");
+ coreIndex++;
+ }
+ }
+ }
+ fw.write("\te_start_group(&dev);\n");
+ fw.write("\tfprintf(stderr,\"RMS Multicore on FreeRTOS started \\n\");\n");
+ fw.write("\taddr = cnt_address;\n");
+ fw.write("\tint pollLoopCounter = 0;\n");
+ fw.write("\tint taskMessage;\n");
+ fw.write("\tint prevtaskMessage;\n");
+ fw.write("\tint prevpollLoopCounter = 0;\n");
+ fw.write("\tfor (pollLoopCounter=0;pollLoopCounter<=40;pollLoopCounter++){\n");
+ coreIndex = 0;
+ for (int rowCoreGroup = 0; rowCoreGroup < coreGroup; rowCoreGroup++) {
+ for (int columnCoreGroup = 0; columnCoreGroup < coreGroup; columnCoreGroup++) {
+ if (coreIndex < localPU.size()) {
+ fw.write("\t\te_read(&dev," + rowCoreGroup + "," + columnCoreGroup + ",addr, &message"
+ + coreIndex + ", sizeof(message" + coreIndex + "));\n");
+ fw.write("\t\tfprintf(stderr, \"tick1 %3d||\",message" + coreIndex + "[8]+1);\n");
+ fw.write("\t\tfprintf(stderr,\"task holding core" + coreIndex + " %2u||\", message"
+ + coreIndex + "[6]);\n");
+ coreIndex++;
+ }
+ }
+ }
+ fw.write("\t\tfprintf(stderr,\"\\n\");\n");
+ fw.write("\t\tusleep(READ_PRECISION_US);\n");
+ fw.write("\t}\n");
+ fw.write("\tfprintf(stderr,\"----------------------------------------------\\n\");\n");
+ fw.write("\te_close(&dev);\n");
+ fw.write("\te_finalize();\n");
+ fw.write("\tfprintf(stderr,\"RMS Multicore on FreeRTOS Complete \\n \");\n");
+ fw.write("\treturn 0;\n");
+ fw.write("}\n");
+ fw.close();
+ }
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+
+ /**
+ * header inclusion for armCode file
+ *
+ * @param file
+ */
+ private static void headerIncludesArmCode(final File file) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("/* Standard includes. */\n");
+ fw.write("#include <stdio.h>\n");
+ fw.write("#include <stdlib.h>\n");
+ fw.write("#include <string.h>\n");
+ fw.write("#include <unistd.h>\n");
+ fw.write("#include <e-hal.h>\n");
+ fw.write("#include <time.h>\n\n");
+ fw.write("/* Scheduler includes. */\n");
+ fw.write("#include \"debugFlags.h\"\n");
+ fw.write("#define READ_PRECISION_US 1000\n\n\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+
+ }
+}
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/FreeRTOSConfigFileCreation.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/FreeRTOSConfigFileCreation.java
new file mode 100755
index 0000000..7fdf04b
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/FreeRTOSConfigFileCreation.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.cdgen.utils.fileUtil;
+
+/**
+ * Implementation of FreeRTOS specific configuration and macros.
+ *
+ *
+ */
+public class FreeRTOSConfigFileCreation {
+ final private Amalthea model;
+
+ /**
+ * Constructor FreeRTOSConfigFileCreation
+ *
+ * @param Model
+ * @param srcPath
+ * @param configFlag
+ * @throws IOException
+ */
+ public FreeRTOSConfigFileCreation(final Amalthea Model, final String srcPath, final int configFlag)
+ throws IOException {
+ this.model = Model;
+ System.out.println("FreeRTOSConfig File Creation Begins");
+ fileCreate(this.model, srcPath, configFlag);
+ System.out.println("FreeRTOSConfig File Creation Ends");
+ }
+
+ /**
+ * FileCreation FreeRTOSConfigFileCreation
+ *
+ * @param model
+ * @param srcPath
+ * @param configFlag
+ * @throws IOException
+ */
+ public static void fileCreate(final Amalthea model, final String srcpath, final int configFlag) throws IOException {
+ final String fname = srcpath + File.separator + "FreeRTOSConfig.h";
+ final File f2 = new File(srcpath);
+ final File f1 = new File(fname);
+ f2.mkdirs();
+ try {
+ f1.createNewFile();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ try {
+ fileUtil.fileMainHeader(f1);
+ fileUtil.FreeRTOSConfigFileHeader(f1);
+ headerIncludesFreeRTOS(model, f1, configFlag);
+ }
+ finally {
+ try {
+ fw.close();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ /**
+ * Macro framework and definition.
+ *
+ * @param model
+ * @param file
+ * @param configFlag
+ */
+ public static void headerIncludesFreeRTOS(final Amalthea model, final File file, final int configFlag) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ final int constval = 1;
+ final int taskSize = model.getSwModel().getTasks().size();
+ fw.write("\t#ifndef FREERTOS_CONFIG_H\n");
+ fw.write("\t#define FREERTOS_CONFIG_H\n");
+ fw.write("//-----------------------------------------------------------\n");
+ fw.write("\t#define configCALL_STACK_SIZE 0x50\n");
+ if (0x0020 == (configFlag & 0x00F0)) {
+ fw.write("\t#define configUSE_PREEMPTION 1\n");
+ }
+ else {
+ fw.write("\t#define configUSE_PREEMPTION 0\n");
+ }
+ fw.write("\t#define configUSE_TIME_SLICING 0\n");
+ fw.write("\t#define configUSE_IDLE_HOOK 0\n");
+ fw.write("\t#define configUSE_TICK_HOOK 0\n");
+ fw.write("\t#define configCPU_CLOCK_HZ ( ( unsigned long ) 700000000 )\n");
+ fw.write("\t#define configTICK_RATE_HZ ( ( TickType_t ) 1000 )\n");
+ fw.write("\t#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) " + (taskSize + constval)
+ + " )\n");
+ fw.write("\t#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 0x200) //512 words\n");
+ fw.write("\t#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 10450 ) )\n");
+ fw.write("\t#define configMAX_TASK_NAME_LEN ( 128 )\n");
+ fw.write("\t#define configUSE_TRACE_FACILITY 0\n");
+ fw.write("\t#define configUSE_16_BIT_TICKS 1\n");
+ fw.write("\t#define configIDLE_SHOULD_YIELD 0\n");
+ fw.write("\t#define configUSE_ALTERNATIVE_API 0\n");
+ fw.write("//-----------------------------------------------------------\n");
+ fw.write("\t#define configUSE_CO_ROUTINES 0\n");
+ fw.write("\t#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )\n");
+ fw.write("//-----------------------------------------------------------\n");
+ fw.write("\t#define INCLUDE_vTaskPrioritySet 0\n");
+ fw.write("\t#define INCLUDE_uxTaskPriorityGet 0\n");
+ fw.write("\t#define INCLUDE_vTaskDelete 0\n");
+ fw.write("\t#define INCLUDE_vTaskCleanUpResources 0\n");
+ fw.write("\t#define INCLUDE_vTaskSuspend 1\n");
+ fw.write("\t#define INCLUDE_vTaskDelayUntil 1\n");
+ fw.write("\t#define INCLUDE_vTaskDelay 1\n");
+ fw.write("\t#define INCLUDE_xTaskGetCurrentTaskHandle 1\n");
+ fw.write("\t#define INCLUDE_pcTaskGetTaskName 1\n");
+ fw.write("\n\t#define C2C_MSG_TYPE int \n");
+ fw.write("\t#endif\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+}
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/LabelFileCreation.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/LabelFileCreation.java
new file mode 100755
index 0000000..9bbd09b
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/LabelFileCreation.java
@@ -0,0 +1,414 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.amalthea.model.Label;
+import org.eclipse.app4mc.amalthea.model.ProcessingUnit;
+import org.eclipse.app4mc.amalthea.model.Runnable;
+import org.eclipse.app4mc.amalthea.model.SchedulerAllocation;
+import org.eclipse.app4mc.amalthea.model.Task;
+import org.eclipse.app4mc.amalthea.model.util.DeploymentUtil;
+import org.eclipse.app4mc.amalthea.model.util.SoftwareUtil;
+import org.eclipse.app4mc.cdgen.utils.fileUtil;
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * Declaration of Labels with initial values .
+ *
+ *
+ */
+
+/**
+ * @author rpras
+ *
+ */
+public class LabelFileCreation {
+ final private Amalthea model;
+
+ /**
+ * Constructor LabelFileCreation
+ *
+ * @param Model
+ * Amalthea Model
+ * @param srcPath
+ * @throws IOException
+ */
+ public LabelFileCreation(final Amalthea Model, final String srcPath) throws IOException {
+ this.model = Model;
+ System.out.println("Label File Creation Begins");
+ fileCreate(this.model, srcPath);
+ System.out.println("Label File Creation Ends");
+ }
+
+ /**
+ * FileCreation LabelFileCreation
+ *
+ * @param model
+ * @param srcPath
+ * @throws IOException
+ */
+ private static void fileCreate(final Amalthea model, final String srcPath) throws IOException {
+ final EList<SchedulerAllocation> CoreNo = model.getMappingModel().getSchedulerAllocation();
+ int k = 0;
+ for (final SchedulerAllocation c : CoreNo) {
+ final ProcessingUnit pu = c.getResponsibility().get(0);
+ final Set<Task> task = DeploymentUtil.getTasksMappedToCore(pu, model);
+ final List<Task> tasks = new ArrayList<Task>(task);
+ final List<Label> labelCoreCommonList = fileUtil.CoreSpecificLabel(model, tasks);
+ final List<Label> sharedLabelList = fileUtil.SharedLabelDeclarationHead(model, tasks);
+ final String fname1 = srcPath + File.separator + "label" + k + ".c";
+ final String fname2 = srcPath + File.separator + "label" + k + ".h";
+ final File f2 = new File(srcPath);
+ final File f1 = new File(fname1);
+ final File f3 = new File(fname2);
+ f2.mkdirs();
+ try {
+ f1.createNewFile();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ try {
+ fileUtil.fileMainHeader(f1);
+ labelFileHeader(f1);
+ headerIncludesLabelHead(f1, k);
+ LabelDeclaration(f1, tasks, labelCoreCommonList);
+ LabelDeclarationLocal(f1, tasks, labelCoreCommonList, sharedLabelList);
+ }
+ finally {
+ try {
+ fw.close();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ try {
+ fileUtil.fileMainHeader(f3);
+ labelFileHeader(f3);
+ headerIncludesLabel(f3);
+ LabelDeclarationLocalHeader(f3, tasks, labelCoreCommonList);
+ }
+ finally {
+ try {
+ fw.close();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ k++;
+ }
+ }
+
+ /**
+ * Title card - LabelFileCreation
+ *
+ * @param file
+ */
+ private static void labelFileHeader(final File file) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("*Title : Label Declaration\n");
+ fw.write("*Description : Declaration and Initialisation of Label\n");
+ fw.write("******************************************************************\n");
+ fw.write("******************************************************************/\n\n\n");
+
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+
+ }
+
+ /**
+ * Header inclusion - LabelFileCreation
+ *
+ * @param file
+ */
+ private static void headerIncludesLabel(final File file) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("/* Standard includes. */\n");
+ fw.write("#include <stdio.h>\n");
+ fw.write("#include <stdint.h>\n");
+ fw.write("#include <string.h>\n\n");
+ fw.write("/* Scheduler includes. */\n");
+ fw.write("#include \"shared_comms.h\"\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+
+ }
+
+ /**
+ * Header inclusion - LabelFileCreation
+ *
+ * @param file
+ */
+ private static void headerIncludesLabelHead(final File file, final int k) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("/* Standard includes. */\n");
+ fw.write("#include <stdio.h>\n");
+ fw.write("#include <stdint.h>\n");
+ fw.write("#include <string.h>\n\n");
+ fw.write("/* Scheduler includes. */\n");
+ fw.write("#include \"shared_comms.h\"\n");
+ fw.write("#include \"label" + k + ".h\"\n\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+
+ }
+
+
+ /**
+ * Label definition and initialization structure.
+ *
+ * @param file
+ * @param tasks
+ * @param labellist
+ */
+ private static void LabelDeclaration(final File file, final List<Task> tasks, final List<Label> labellist) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ labellist.stream().distinct().collect(Collectors.toList());
+ for (final Label label : labellist) {
+ final String type = fileUtil.datatype(label.getSize().toString());
+ final long init = fileUtil.intialisation(label.getSize().toString());
+ fw.write("\t" + type + " " + label.getName() + " \t=\t " + init + ";\n");
+ }
+
+ fw.write("\n\n\n\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+
+ }
+
+ /**
+ * Local label definition and initialization structure. Task specific local
+ * labels are defined to perform Cin and Cout operation.
+ *
+ * @param file
+ * @param tasks
+ * @param sharedLabelList
+ */
+ private static void LabelDeclarationLocal(final File file, final List<Task> tasks,
+ final List<Label> labelCoreCommonList, final List<Label> sharedLabelList) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ for (final Task task : tasks) {
+ List<Runnable> runnablesOfTask = SoftwareUtil.getRunnableList(task, null);
+ final ArrayList<Label> labellist1 = new ArrayList<Label>();
+ runnablesOfTask = runnablesOfTask.stream().distinct().collect(Collectors.toList());
+ for (final Runnable run : runnablesOfTask) {
+ final Set<Label> labellist = SoftwareUtil.getAccessedLabelSet(run, null);
+ labellist1.addAll(labellist);
+ }
+ final List<Label> listWithoutDuplicates2 = labellist1.stream().distinct().collect(Collectors.toList());
+ final Set<Label> TaskLabel = SoftwareUtil.getAccessedLabelSet(task, null);
+ fw.write("\n //local variable for " + task.getName() + "\n");
+ for (final Label lab : listWithoutDuplicates2) {
+ if ((TaskLabel.contains(lab)) && !(sharedLabelList.contains(lab))
+ && (labelCoreCommonList.contains(lab))) {
+ final String type = fileUtil.datatype(lab.getSize().toString());
+ final long init = fileUtil.intialisation(lab.getSize().toString());
+ fw.write("\t\t" + type + "\t" + lab.getName() + "_" + task.getName() + "\t=\t" + init + ";\n");
+ }
+ }
+ fw.write("\n //Shared label \n");
+ for (final Label lab : sharedLabelList) {
+ if (TaskLabel.contains(lab)) {
+ final String type = fileUtil.datatype(lab.getSize().toString());
+ final long init = fileUtil.intialisation(lab.getSize().toString());
+ fw.write(
+ "\t\t" + type + "\t" + lab.getName() + "_" + task.getName() + " \t=\t " + init + ";\n");
+ }
+ }
+ final Set<Label> readLabels = SoftwareUtil.getReadLabelSet(task, null);
+ final Set<Label> writeLabels = SoftwareUtil.getWriteLabelSet(task, null);
+ fw.write("\n\tvoid cIN_" + task.getName() + "()\n\t{\n");
+ List<String> readLabelType = new ArrayList<String>();
+ final HashMap<String, HashMap<Label, Integer>> SharedLabelTypeMapIndexed = new HashMap<String, HashMap<Label, Integer>>();
+ for (final Label share : sharedLabelList) {
+ final String type = share.getSize().toString();
+ readLabelType.add(type);
+ }
+ readLabelType = readLabelType.stream().distinct().collect(Collectors.toList());
+ for (final String rLT : readLabelType) {
+
+ final HashMap<Label, Integer> SharedLabelTypeMap = new HashMap<Label, Integer>();
+ int k = 0;
+ for (final Label share : sharedLabelList) {
+ final String type = share.getSize().toString();
+ if (type.equals(rLT)) {
+ SharedLabelTypeMap.put(share, new Integer(k));
+ k++;
+ }
+ }
+ SharedLabelTypeMapIndexed.put(rLT, SharedLabelTypeMap);
+ }
+ HashMap<Label, Integer> LabelIndexedType = new HashMap<Label, Integer>();
+ for (final String rLT : readLabelType) {
+ LabelIndexedType = SharedLabelTypeMapIndexed.get(rLT);
+ for (final Label share : sharedLabelList) {
+ final String type = share.getSize().toString();
+ if ((type.equals(rLT)) & (readLabels.contains(share))) {
+ fw.write("\t\t" + share.getName() + "_" + task.getName() + "\t=\tshared_label_"
+ + type.replace(" ", "") + "_read(" + LabelIndexedType.get(share) + ");\n");
+ }
+ }
+ }
+ for (final Label lab : listWithoutDuplicates2) {
+ if (labelCoreCommonList.contains(lab)) {
+ fw.write("\t\t" + lab.getName() + "_" + task.getName() + "\t=\t" + lab.getName() + ";\n");
+ }
+ }
+ fw.write("\t}\n");
+ fw.write("\n\tvoid cOUT_" + task.getName() + "()\n\t{\n");
+ final ArrayList<Label> labellist2 = new ArrayList<Label>();
+ runnablesOfTask = runnablesOfTask.stream().distinct().collect(Collectors.toList());
+ for (final Runnable run : runnablesOfTask) {
+ final Set<Label> labellist = SoftwareUtil.getWriteLabelSet(run, null);
+ labellist2.addAll(labellist);
+ }
+ final List<Label> listWithoutDuplicates1 = labellist2.stream().distinct().collect(Collectors.toList());
+ for (final Label lab : listWithoutDuplicates1) {
+ if (labelCoreCommonList.contains(lab) & (writeLabels.contains(lab))) {
+ fw.write("\t\t" + lab.getName() + "\t=\t" + lab.getName() + "_" + task.getName() + ";\n");
+ }
+ }
+ HashMap<Label, Integer> LabelWriteIndexedType = new HashMap<Label, Integer>();
+ for (final String rLT : readLabelType) {
+ LabelWriteIndexedType = SharedLabelTypeMapIndexed.get(rLT);
+ for (final Label share : sharedLabelList) {
+ final String type = share.getSize().toString();
+ if ((type.equals(rLT)) & (writeLabels.contains(share))) {
+ fw.write("\t\t" + share.getName() + "_" + task.getName() + "++;\n");
+ fw.write("\t\tshared_label_" + type.replace(" ", "") + "_write("
+ + LabelWriteIndexedType.get(share) + "," + share.getName() + "_" + task.getName()
+ + " );\n");
+ }
+ }
+ }
+ fw.write("\t}\n");
+ fw.write("\n\n");
+ }
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+ private static void LabelDeclarationLocalHeader(final File file, final List<Task> tasks,
+ final List<Label> labelList) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ for (final Task task : tasks) {
+ List<Runnable> runnablesOfTask = SoftwareUtil.getRunnableList(task, null);
+ final ArrayList<Label> labellist1 = new ArrayList<Label>();
+ runnablesOfTask = runnablesOfTask.stream().distinct().collect(Collectors.toList());
+ for (final Runnable run : runnablesOfTask) {
+ final Set<Label> labellist = SoftwareUtil.getAccessedLabelSet(run, null);
+ labellist1.addAll(labellist);
+ }
+ fw.write("\n\tvoid cIN_" + task.getName() + "();");
+ fw.write("\n\tvoid cOUT_" + task.getName() + "();");
+ }
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+ public static List<Label> SharedLabelFinder(final Amalthea model) {
+ final EList<Task> tasks = model.getSwModel().getTasks();
+ final ArrayList<Label> labelCombined = new ArrayList<Label>();
+ final ArrayList<Label> labelOhneDuplicate = new ArrayList<Label>();
+ for (final Task task : tasks) {
+ final Set<Label> labellist = SoftwareUtil.getAccessedLabelSet(task, null);
+ labelCombined.addAll(labellist);
+ }
+ final Set<Label> uniques = new HashSet<>();
+ for (final Label t : labelCombined) {
+ if (!uniques.add(t)) {
+ labelOhneDuplicate.add(t);
+ }
+ }
+ final List<Label> sharedLabelList = labelOhneDuplicate.stream().distinct().collect(Collectors.toList());
+ return sharedLabelList;
+ }
+
+ @SuppressWarnings("null")
+ public static HashMap<Label, HashMap<Task, ProcessingUnit>> LabelTaskMap(final Amalthea model,
+ final List<Label> labelList) {
+ final EList<Task> tasks = model.getSwModel().getTasks();
+ final HashMap<Label, HashMap<Task, ProcessingUnit>> localLabelAllocation = new HashMap<Label, HashMap<Task, ProcessingUnit>>();
+
+ for (final Label label : labelList) {
+ final HashMap<Task, ProcessingUnit> localAllocation = new HashMap<Task, ProcessingUnit>();
+ for (final Task task : tasks) {
+ final ProcessingUnit pu = DeploymentUtil.getAssignedCoreForProcess(task, model).iterator().next();
+ final ArrayList<Label> labelListLocalTask = new ArrayList<Label>(
+ SoftwareUtil.getAccessedLabelSet(task, null));
+ if (labelListLocalTask.contains(label)) {
+ localAllocation.put(task, pu);
+ }
+ }
+ if (localAllocation != null) {
+ localLabelAllocation.put(label, localAllocation);
+ }
+ }
+ return localLabelAllocation;
+ }
+}
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/MainFileCreation.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/MainFileCreation.java
new file mode 100755
index 0000000..f0a3e6c
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/MainFileCreation.java
@@ -0,0 +1,259 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.amalthea.model.Label;
+import org.eclipse.app4mc.amalthea.model.ProcessingUnit;
+import org.eclipse.app4mc.amalthea.model.SchedulerAllocation;
+import org.eclipse.app4mc.amalthea.model.Task;
+import org.eclipse.app4mc.amalthea.model.util.DeploymentUtil;
+import org.eclipse.app4mc.cdgen.utils.fileUtil;
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * Implementation of Main function in which scheduling is done.
+ *
+ *
+ */
+
+public class MainFileCreation {
+ final private Amalthea model;
+
+ /**
+ * MainFileCreation Constructor
+ *
+ * @param Model
+ * @param srcPath
+ * @param configFlag
+ * @throws IOException
+ */
+ public MainFileCreation(final Amalthea Model, final String srcPath, final int configFlag) throws IOException {
+ this.model = Model;
+ System.out.println("Main File Creation Begins");
+ if (0x2000 == (configFlag & 0xF000)) {
+ fileCreatePthread(this.model, srcPath);
+ }
+ System.out.println("Main File Creation Ends");
+ }
+
+
+ /**
+ * Shared Label definition and initialization structure.
+ *
+ * @param file
+ * @param labellist
+ */
+ public static List<Label> SharedLabelCoreDefinition(final Amalthea model, final String srcPath) {
+ final EList<Label> labellist = model.getSwModel().getLabels();
+ final List<Label> SharedLabelListSortCore = new ArrayList<Label>();
+ if (labellist.size() == 0) {
+ System.out.println("Shared Label size 0");
+ }
+ else {
+ final HashMap<Label, HashMap<Task, ProcessingUnit>> sharedLabelTaskMap = LabelFileCreation
+ .LabelTaskMap(model, labellist);
+ int i = 0, k = 0, j = 0;
+ for (final Label share : labellist) {
+ final HashMap<Task, ProcessingUnit> TaskMap = sharedLabelTaskMap.get(share);
+ final Collection<ProcessingUnit> puList = TaskMap.values();
+ final List<ProcessingUnit> puListUnique = puList.stream().distinct().collect(Collectors.toList());
+ final Set<Task> TaskList = TaskMap.keySet();
+ if (puListUnique.size() == 1 && TaskList.size() > 1) {
+ SharedLabelListSortCore.add(share);
+ i++;
+ }
+ else if (puListUnique.size() > 1) {
+ j++;
+ }
+ else if (TaskList.size() == 1) {
+ k++;
+ }
+ }
+ System.out.println("Total Labels :" + sharedLabelTaskMap.keySet().size() + "=" + i + "+" + j + "+" + k + "="
+ + (i + j + k));
+ }
+ return SharedLabelListSortCore;
+ }
+
+
+ private static void sleepTimerMsPthread(final File f1) {
+ try {
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("void sleepTimerMs(int ticks)\n");
+ fw.write("{\n");
+ fw.write("\tint var;\n");
+ fw.write("\tfor (var = 0; var < ticks; ++var)\n");
+ fw.write("\t{\n");
+ fw.write("\t\tsuspendMe();\n");
+ fw.write("\t\t{\n");
+ fw.write("\t\t\tusleep(1000);\n");
+ fw.write("\t\t}\n");
+ fw.write("\t\tresumeMe();\n");
+ fw.write("\t}\n");
+ fw.write("}\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+ private static void fileCreatePthread(final Amalthea model, final String path1) throws IOException {
+ final EList<SchedulerAllocation> CoreNo = model.getMappingModel().getSchedulerAllocation();
+ int k = 0;
+ for (final SchedulerAllocation c : CoreNo) {
+ final ProcessingUnit pu = c.getResponsibility().get(0);
+ final Set<Task> tasks = DeploymentUtil.getTasksMappedToCore(pu, model);
+ final String fname = path1 + File.separator + "main" + k + ".c";
+ final File f2 = new File(path1);
+ final File f1 = new File(fname);
+ f2.mkdirs();
+ try {
+ f1.createNewFile();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ try {
+ fileUtil.fileMainHeader(f1);
+ mainFileHeader(f1);
+ headerIncludesMainPthread(f1, model, k, tasks);
+ sleepTimerMsPthread(f1);
+ mainFucntionPthread(f1, tasks);
+ }
+ finally {
+ try {
+ fw.close();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+ }
+ k++;
+ }
+ }
+
+ private static void mainFucntionPthread(final File f1, final Set<Task> tasks) {
+ try {
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("int main(void) \n{\n");
+ fw.write("\tpthread_t thread[NUM_THREADS];\n");
+ fw.write("\tpthread_attr_t attr;\n\n");
+ final int tasksize = tasks.size();
+ int init = 0;
+ while (init < tasksize) {
+ fw.write("\tlong rtr" + init + "=" + init + ";\n");
+ init++;
+ }
+ fw.write("\tlong t;\n");
+ fw.write("\tint rc;\n");
+ fw.write("\tvoid *status;\n\n");
+ fw.write("\tfor(;;)\n\t{\n");
+ fw.write("\t\tpthread_attr_init(&attr);\n");
+ fw.write("\t\tpthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);\n\n");
+ int init1 = 0;
+ while (init1 < tasksize) {
+ fw.write("\t\tpthread_create (&thread[" + init1 + "], &attr, v" + tasks.iterator().next().getName()
+ + ", (void *)rtr" + init1 + ");\n");
+ init1++;
+ }
+ fw.write("\t\tif (rc)\n");
+ fw.write("\t\t{\n");
+ fw.write("\t\t\tprintf(\"ERROR; return code from pthread_join() is %d\\n\", rc);\n");
+ fw.write("\t\t\texit(-1);\n");
+ fw.write("\t\t}\n");
+
+ fw.write("\n\t\tpthread_attr_destroy(&attr);\n");
+ fw.write("\n\t\tfor(t=0; t<NUM_THREADS; t++)\n");
+ fw.write("\t\t{\n");
+ fw.write("\t\t\trc = pthread_join(thread[t], &status);\n");
+ fw.write("\t\t\tif (rc)\n");
+ fw.write("\t\t\t{\n");
+ fw.write("\t\t\t\tprintf(\"ERROR; return code from pthread_join() is %d\\n\", rc);\n");
+ fw.write("\t\t\t\texit(-1);\n");
+ fw.write("\t\t\t}\n");
+ fw.write(
+ "\t\t\tprintf(\"Main: completed join with thread %ld having a status of %ld\\n\",t,(long)status);\n");
+ fw.write("\t\t}\n");
+ fw.write("\t\tprintf(\"\\n\");\n");
+ fw.write("\t}\n");
+ fw.write("\tprintf(\"Main: program completed. Exiting.\\n\");\n");
+ fw.write("\tpthread_exit(NULL);\n");
+ fw.write("}\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+ private static void headerIncludesMainPthread(final File f1, final Amalthea model2, final int k,
+ final Set<Task> tasks) {
+ try {
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("/* Standard includes. */\n");
+ fw.write("#include <stdio.h>\n");
+ fw.write("#include <stdlib.h>\n");
+ fw.write("#include <pthread.h>\n");
+ fw.write("#include <string.h>\n\n");
+ fw.write("/* Scheduler includes. */\n");
+ fw.write("#include \"taskDef" + k + ".h\"\n");
+ fw.write("#define NUM_THREADS\t" + tasks.size() + "\n\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+
+ }
+
+ private static void mainFileHeader(final File f1) {
+ try {
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("*Title : C File for Tasks Call\n");
+ fw.write("*Description : Main file in which scheduling is done \n");
+ fw.write("******************************************************************\n");
+ fw.write("******************************************************************\n");
+ fw.write("******************************************************************/\n\n\n");
+
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+
+ }
+}
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/MainRMSFileCreation.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/MainRMSFileCreation.java
new file mode 100644
index 0000000..16e3261
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/MainRMSFileCreation.java
@@ -0,0 +1,475 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.amalthea.model.Label;
+import org.eclipse.app4mc.amalthea.model.MappingModel;
+import org.eclipse.app4mc.amalthea.model.PeriodicStimulus;
+import org.eclipse.app4mc.amalthea.model.ProcessingUnit;
+import org.eclipse.app4mc.amalthea.model.SchedulerAllocation;
+import org.eclipse.app4mc.amalthea.model.Stimulus;
+import org.eclipse.app4mc.amalthea.model.Task;
+import org.eclipse.app4mc.amalthea.model.Time;
+import org.eclipse.app4mc.amalthea.model.TimeUnit;
+import org.eclipse.app4mc.amalthea.model.util.DeploymentUtil;
+import org.eclipse.app4mc.amalthea.model.util.RuntimeUtil;
+import org.eclipse.app4mc.amalthea.model.util.RuntimeUtil.TimeType;
+import org.eclipse.app4mc.amalthea.model.util.SoftwareUtil;
+import org.eclipse.app4mc.amalthea.model.util.TimeUtil;
+import org.eclipse.app4mc.cdgen.utils.fileUtil;
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * Implementation of Main function in which scheduling is done. Specific to RMS
+ * Scheduler
+ *
+ *
+ */
+
+public class MainRMSFileCreation {
+ final private Amalthea model;
+
+ /**
+ * MainRMSFileCreation Constructor
+ *
+ * @param Model
+ * @param srcPath
+ * @param configFlag
+ * @throws IOException
+ */
+ public MainRMSFileCreation(final Amalthea Model, final String srcPath, final int configFlag) throws IOException {
+ this.model = Model;
+ System.out.println("Main File Creation Begins");
+ fileCreate(this.model, srcPath, configFlag);
+ System.out.println("Main File Creation Ends");
+ }
+
+ /**
+ * MainRMSFileCreation - File Creation
+ *
+ * @param model
+ * @param srcPath
+ * @param configFlag
+ * @throws IOException
+ */
+ private static void fileCreate(final Amalthea model, final String srcPath, final int configFlag)
+ throws IOException {
+ final EList<SchedulerAllocation> CoreNo = model.getMappingModel().getSchedulerAllocation();
+ int k = 0;
+ for (final SchedulerAllocation c : CoreNo) {
+ final ProcessingUnit pu = c.getResponsibility().get(0);
+ final Set<Task> tasks = DeploymentUtil.getTasksMappedToCore(pu, model);
+ final String fname = srcPath + File.separator + "main" + k + ".c";
+ final File f2 = new File(srcPath);
+ final File f1 = new File(fname);
+ f2.mkdirs();
+ try {
+ f1.createNewFile();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ try {
+ fileUtil.fileMainHeader(f1);
+ mainFileHeader(f1);
+ if ((0x0100 == (0x0F00 & configFlag)) & (0x3000 == (0xF000 & configFlag))) {
+ headerIncludesMainRMS(f1, k);
+ mainTaskStimuli(model, f1, tasks);
+ mainTaskPriority(f1, tasks);
+ mainFucntionRMS(model, f1, tasks);
+ // SharedLabelDeclarationHead(f1, model);
+ }
+ else {
+ headerIncludesMainFreeRTOS(f1, k);
+ mainTaskStimuli(model, f1, tasks);
+ mainTaskPriority(f1, tasks);
+ mainFucntionFreeRTOS(model, f1, tasks);
+ }
+ }
+ finally {
+ try {
+ fw.close();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+ }
+ k++;
+ }
+ }
+
+ /**
+ * Main function in Main file of RMS specific scheduler
+ *
+ * @param model
+ * @param file
+ * @param tasks
+ */
+ private static void mainFucntionRMS(final Amalthea model, final File file, final Set<Task> tasks) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("int main(void) \n{\n");
+ fw.write("\toutbuf_init();\n");
+ final List<Label> SharedLabelList = LabelFileCreation.SharedLabelFinder(model);
+ final List<Label> SharedLabelListSortCore = new ArrayList<Label>();
+ if (SharedLabelList.size() == 0) {
+ System.out.println("Shared Label size 0");
+ }
+ else {
+ final HashMap<Label, HashMap<Task, ProcessingUnit>> sharedLabelTaskMap = LabelFileCreation
+ .LabelTaskMap(model, SharedLabelList);
+ for (final Label share : SharedLabelList) {
+ final HashMap<Task, ProcessingUnit> TaskMap = sharedLabelTaskMap.get(share);
+ final Collection<ProcessingUnit> puList = TaskMap.values();
+ final List<ProcessingUnit> puListUnique = puList.stream().distinct().collect(Collectors.toList());
+ if (puListUnique.size() > 1) {
+ SharedLabelListSortCore.add(share);
+ }
+ }
+ }
+
+ final HashMap<Label, String> SharedLabelTypeMap = new HashMap<Label, String>();
+ for (final Label share : SharedLabelListSortCore) {
+ SharedLabelTypeMap.put(share, share.getSize().toString());
+ }
+ final List<String> SharedTypeMapList = new ArrayList<>(
+ SharedLabelTypeMap.values().stream().distinct().collect(Collectors.toList()));
+ final List<Label> SharedLabelMapList = new ArrayList<Label>(SharedLabelTypeMap.keySet());
+ for (int k = 0; k < SharedTypeMapList.size(); k++) {
+ final List<Label> SharedLabel = new ArrayList<Label>();
+ final String sh = SharedTypeMapList.get(k);
+ for (final Label s : SharedLabelMapList) {
+ final String ShTy = SharedLabelTypeMap.get(s);
+ if (sh.equals(ShTy)) {
+ SharedLabel.add(s);
+ }
+ }
+ int SharedLabelCounter = SharedLabel.size();
+ if (SharedLabelCounter != 0) {
+ fw.write("\tshared_label_" + sh.toString().replace(" ", "") + "_init();\n");
+ }
+ SharedLabelCounter = 0;
+ }
+
+ for (final Task task : tasks) {
+ final MappingModel mappingModel = model.getMappingModel();
+ ProcessingUnit pu = null;
+ if (mappingModel != null) {
+ pu = DeploymentUtil.getAssignedCoreForProcess(task, model).iterator().next();
+ Time taskTime = RuntimeUtil.getExecutionTimeForProcess(task, pu, null, TimeType.WCET);
+ taskTime = TimeUtil.convertToTimeUnit(taskTime, TimeUnit.MS);
+ final BigInteger sleepTime = taskTime.getValue();
+ final BigInteger b2 = new BigInteger("1000");
+ final int comparevalue = sleepTime.compareTo(b2);
+ if (comparevalue < 0) {
+ fw.write("\tAmaltheaTask AmalTk_" + task.getName() + " = createAmaltheaTask( v" + task.getName()
+ + ", cIN_" + task.getName() + ", cOUT_" + task.getName() + ", "
+ + task.getStimuli().get(0).getName() + ", " + task.getStimuli().get(0).getName()
+ + ", 1);\n");
+ }
+ else {
+ fw.write("\tAmaltheaTask AmalTk_" + task.getName() + " = createAmaltheaTask( v" + task.getName()
+ + ", cIN_" + task.getName() + ", cOUT_" + task.getName() + ", "
+ + task.getStimuli().get(0).getName() + ", " + task.getStimuli().get(0).getName() + ", "
+ + sleepTime + ");\n");
+ }
+ }
+ }
+ for (final Task task : tasks) {
+ final Set<Label> taskLabel = SoftwareUtil.getAccessedLabelSet(task, null);
+ final List<Label> taskLabelList = new ArrayList<>(taskLabel);
+ final HashMap<Label, String> LabelTypeMap = new HashMap<Label, String>();
+ for (final Label tl : taskLabelList) {
+ LabelTypeMap.put(tl, tl.getSize().toString());
+ }
+ final List<String> TypeList = new ArrayList<>(
+ LabelTypeMap.values().stream().distinct().collect(Collectors.toList()));
+ final List<Label> LabelList = new ArrayList<>(
+ LabelTypeMap.keySet().stream().distinct().collect(Collectors.toList()));
+ fw.write("\tcreateRTOSTask( &AmalTk_" + task.getName() + ", main" + task.getName() + ", "
+ + TypeList.size() + ",");
+ final List<Label> dataTypeList = new ArrayList<Label>();
+ int k = 0;
+ for (final String tl : TypeList) {
+ fw.write(fileUtil.datatypeSize(tl) + ", ");
+ for (final Label La : LabelList) {
+ if (LabelTypeMap.get(La).contains(tl) && (SharedLabelListSortCore.contains(La))) {
+ dataTypeList.add(La);
+ }
+ }
+ fw.write("" + dataTypeList.size() + "");
+ k++;
+ if (k < TypeList.size()) {
+ fw.write(", ");
+ }
+ }
+ fw.write(");\n");
+ }
+ fw.write("\tvTaskStartScheduler();\n");
+ fw.write("\t" + "return EXIT_SUCCESS;\n");
+ fw.write("}\n\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+
+ /**
+ * Main function in Main file of RMS specific scheduler
+ *
+ * @param model
+ * @param file
+ * @param tasks
+ */
+ private static void mainFucntionFreeRTOS(final Amalthea model, final File file, final Set<Task> tasks) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("int main(void) \n{\n");
+ fw.write("\toutbuf_init();\n");
+ final List<Label> SharedLabelList = LabelFileCreation.SharedLabelFinder(model);
+ final List<Label> SharedLabelListSortCore = new ArrayList<Label>();
+ if (SharedLabelList.size() == 0) {
+ System.out.println("Shared Label size 0");
+ }
+ else {
+ // System.out.println("Shared Label size
+ // "+SharedLabelList.size());
+ final HashMap<Label, HashMap<Task, ProcessingUnit>> sharedLabelTaskMap = LabelFileCreation
+ .LabelTaskMap(model, SharedLabelList);
+ for (final Label share : SharedLabelList) {
+ final HashMap<Task, ProcessingUnit> TaskMap = sharedLabelTaskMap.get(share);
+ final Collection<ProcessingUnit> puList = TaskMap.values();
+ final List<ProcessingUnit> puListUnique = puList.stream().distinct().collect(Collectors.toList());
+ if (puListUnique.size() > 1) {
+ SharedLabelListSortCore.add(share);
+ }
+ }
+ }
+
+ final HashMap<Label, String> SharedLabelTypeMap = new HashMap<Label, String>();
+ for (final Label share : SharedLabelListSortCore) {
+ SharedLabelTypeMap.put(share, share.getSize().toString());
+ }
+ final List<String> SharedTypeMapList = new ArrayList<>(
+ SharedLabelTypeMap.values().stream().distinct().collect(Collectors.toList()));
+ final List<Label> SharedLabelMapList = new ArrayList<Label>(SharedLabelTypeMap.keySet());
+ for (int k = 0; k < SharedTypeMapList.size(); k++) {
+ final List<Label> SharedLabel = new ArrayList<Label>();
+ final String sh = SharedTypeMapList.get(k);
+ for (final Label s : SharedLabelMapList) {
+ final String ShTy = SharedLabelTypeMap.get(s);
+ if (sh.equals(ShTy)) {
+ SharedLabel.add(s);
+ }
+ }
+ int SharedLabelCounter = SharedLabel.size();
+ if (SharedLabelCounter != 0) {
+ fw.write("\tshared_label_" + sh.toString().replace(" ", "") + "_init();\n");
+ // fw.write("void shared_label_"+sh.toString().replace(" ",
+ // "")+"_init_core();\n");
+
+ }
+ SharedLabelCounter = 0;
+ }
+
+ for (final Task task : tasks) {
+ fw.write("\txTaskCreate( v" + task.getName() + " , \"" + task.getName()
+ + "\", configMINIMAL_STACK_SIZE, &v" + task.getName() + ", main" + task.getName()
+ + ", NULL);\n");
+ }
+ fw.write("\tvTaskStartScheduler();\n");
+ fw.write("\t" + "return EXIT_SUCCESS;\n");
+ fw.write("}\n\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+
+ /**
+ * Title Card of MainRMSFileCreation
+ *
+ * @param file
+ */
+ private static void mainFileHeader(final File file) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("*Title : C File for Tasks Call\n");
+ fw.write("*Description : Main file in which scheduling is done \n");
+ fw.write("******************************************************************\n");
+ fw.write("******************************************************************\n");
+ fw.write("******************************************************************/\n\n\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+
+ /**
+ * MainRMSFileCreation Header inclusion
+ *
+ * @param file
+ */
+ private static void headerIncludesMainRMS(final File file, final int k) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("/* Standard includes. */\n");
+ fw.write("#include <stdio.h>\n");
+ fw.write("#include <stdlib.h>\n");
+ fw.write("#include <string.h>\n");
+ fw.write("#include <e_lib.h>\n\n");
+ fw.write("/* Scheduler includes. */\n");
+ fw.write("#include \"FreeRTOS.h\"\n");
+ fw.write("#include \"task.h\"\n");
+ fw.write("#include \"queue.h\"\n");
+ fw.write("#include \"AmaltheaConverter.h\"\n");
+ fw.write("#include \"debugFlags.h\"\n");
+ fw.write("#include \"ParallellaUtils.h\"\n");
+ fw.write("#include \"taskDef" + k + ".h\"\n");
+ fw.write("#include \"shared_comms.h\"\n\n");
+ fw.write("#include \"label" + k + ".h\"\n");
+ // fw.write("#include \"c2c.h\"\n\n");
+ // fw.write("#define READ_PRECISION_US 1000\n\n\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+ /**
+ * Assign Priority to task in RMS
+ *
+ * @param file
+ * @param tasks
+ */
+ private static void mainTaskPriority(final File file, final Set<Task> tasks) {
+ try {
+ final File fn = file;
+ final List<Task> localTaskPriority = new ArrayList<Task>();
+ localTaskPriority.addAll(tasks);
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("/* TaskPriorities. */\n");
+ final HashMap<Task, Long> periodMap = new HashMap<Task, Long>();
+ for (final Task task : tasks) {
+ final long period = fileUtil.getRecurrence(task).getValue().longValue();
+ periodMap.put(task, period);
+ }
+ final Map<Task, Long> periodMapSorted = fileUtil.sortByValue(periodMap);
+ // System.out.println("periodMapSorted Size "+
+ // periodMapSorted.size());
+ // for (int i=0;i<(periodMapSorted.size());i++) {
+ for (int i = (periodMapSorted.size()), k = 0; i > 0; i--, k++) {
+ final Task task = (Task) periodMapSorted.keySet().toArray()[k];
+ fw.write("\t#define main" + task.getName() + "\t( tskIDLE_PRIORITY +" + (i) + " )\n");
+ }
+ fw.write("\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+ /**
+ * MainRMSFileCreation Header inclusion
+ *
+ * @param file
+ */
+ private static void headerIncludesMainFreeRTOS(final File file, final int k) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("/* Standard includes. */\n");
+ fw.write("#include <stdio.h>\n");
+ fw.write("#include <stdlib.h>\n");
+ fw.write("#include <string.h>\n");
+ fw.write("#include <e_lib.h>\n\n");
+ fw.write("/* Scheduler includes. */\n");
+ fw.write("#include \"FreeRTOS.h\"\n");
+ fw.write("#include \"task.h\"\n");
+ fw.write("#include \"queue.h\"\n");
+ fw.write("#include \"AmaltheaConverter.h\"\n");
+ fw.write("#include \"debugFlags.h\"\n");
+ fw.write("#include \"ParallellaUtils.h\"\n");
+ fw.write("#include \"taskDef" + k + ".h\"\n");
+ fw.write("#include \"shared_comms.h\"\n\n");
+ fw.write("#include \"label" + k + ".h\"\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+ /**
+ * Macro for Stimuli in the model
+ *
+ * @param model
+ * @param file
+ * @param tasks
+ */
+ private static void mainTaskStimuli(final Amalthea model, final File f1, final Set<Task> tasks) {
+ try {
+ final File fn = f1;
+
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("/* TaskStimuli. */\n");
+ final EList<Stimulus> Stimuli = model.getStimuliModel().getStimuli();
+ for (final Stimulus s : Stimuli) {
+ if (s instanceof PeriodicStimulus) {
+ fw.write("\t#define " + s.getName() + "\t" + ((PeriodicStimulus) s).getRecurrence().getValue()
+ + " \n");
+ }
+ }
+ fw.write("\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+}
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/MakeFileCreation.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/MakeFileCreation.java
new file mode 100644
index 0000000..a57b805
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/MakeFileCreation.java
@@ -0,0 +1,179 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.amalthea.model.SchedulerAllocation;
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * Implementation of Main function in which scheduling is done.
+ *
+ *
+ */
+
+public class MakeFileCreation {
+ final private Amalthea model;
+
+ public MakeFileCreation(final Amalthea Model, final String path1, final int configFlag) throws IOException {
+ this.model = Model;
+ System.out.println("MAKEFILE Creation Begins");
+ fileCreate(this.model, path1, configFlag);
+ System.out.println("MAKEFILE Creation Ends");
+ }
+
+ private static void fileCreate(final Amalthea model, final String path1, final int configFlag) throws IOException {
+ model.getMappingModel().getTaskAllocation();
+ final EList<SchedulerAllocation> CoreNo = model.getMappingModel().getSchedulerAllocation();
+ final String fname = path1 + File.separator + "Makefile";
+ final File f2 = new File(path1);
+ final File f1 = new File(fname);
+ f2.mkdirs();
+ try {
+ f1.createNewFile();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ try {
+ // fileUtil.fileMainHeader(f1);
+ makeFileHeader(f1);
+ headerIncludesMainRMS(f1, CoreNo);
+ }
+ finally {
+ try {
+ fw.close();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+
+ private static void makeFileHeader(final File f1) {
+ try {
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("#******************************************************************\n");
+ fw.write("#*Title : Makefile Setup\n");
+ fw.write("#*Description : Makefile Setup for the Scheduler \n");
+ fw.write("#******************************************************************\n");
+ fw.write("#******************************************************************\n");
+ fw.write("#******************************************************************\n\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+ private static void headerIncludesMainRMS(final File f1, final EList<SchedulerAllocation> coreNo) {
+ try {
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("EPIPHANY_HOME=/opt/adapteva/esdk\n");
+ fw.write("#host compiler path\n");
+ fw.write("LCC=/opt/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc\n");
+ fw.write("#device compiler path\n");
+ fw.write("CC=e-gcc\n");
+ fw.write("#FreeRTOS dependencies\n");
+ fw.write("CFLAGS=-I.\n");
+ fw.write("FREERTOSSRC=../../Source\n");
+ fw.write("INCLUDES= -g -I$(FREERTOSSRC)/include -I$(FREERTOSSRC)/portable/GCC/Epiphany -I.\n");
+ fw.write("DEPS = $(FREERTOSSRC)/portable/GCC/Epiphany/");
+ fw.write("portmacro.h ");
+ fw.write("Makefile ");
+ fw.write("FreeRTOSConfig.h ");
+ fw.write("debugFlags.h ");
+ fw.write("AmaltheaConverter.h ");
+ int coreIndex;
+ for (coreIndex = 0; coreIndex < coreNo.size(); coreIndex++) {
+ fw.write("taskDef" + coreIndex + ".h ");
+ }
+ for (coreIndex = 0; coreIndex < coreNo.size(); coreIndex++) {
+ fw.write("label" + coreIndex + ".h ");
+ }
+ for (coreIndex = 0; coreIndex < coreNo.size(); coreIndex++) {
+ fw.write("runnable" + coreIndex + ".h ");
+ }
+ fw.write("ParallellaUtils.h \n");
+ fw.write("#Epiphany SDK dependencies\n");
+ fw.write("ESDK=${EPIPHANY_HOME} \n");
+ fw.write("ELIBS=${ESDK}/tools/host.armv7l/lib \n");
+ fw.write("EINCS=${ESDK}/tools/host.armv7l/include \n");
+ fw.write("ELDF=${ESDK}/bsps/current/fast.ldf \n");
+ fw.write("EHDF=${EPIPHANY_HDF} \n");
+ fw.write("#search paths for C source code files \n");
+ fw.write(
+ "vpath %.c .:$(FREERTOSSRC)/:$(FREERTOSSRC)/portable/MemMang:$(FREERTOSSRC)/portable/GCC/Epiphany:/ \n");
+ fw.write("#search path for assembly listings \n");
+ fw.write("vpath %.s $(FREERTOSSRC)/portable/GCC/Epiphany \n");
+ fw.write("#main target \n");
+ fw.write("run: armcode ");
+ for (coreIndex = 0; coreIndex < coreNo.size(); coreIndex++) {
+ fw.write("main" + coreIndex + ".elf ");
+ }
+ fw.write("\n @echo build status : successful\n\n");
+ fw.write("#rule for every device target\n");
+ fw.write(
+ "%.elf: $(ELDF) tasks.o queue.o list.o port.o portasm.o heap_1.o c2c.o debugFlags.o AmaltheaConverter.o ");
+ for (coreIndex = 0; coreIndex < coreNo.size(); coreIndex++) {
+ fw.write("taskDef" + coreIndex + ".o ");
+ }
+ for (coreIndex = 0; coreIndex < coreNo.size(); coreIndex++) {
+ fw.write("label" + coreIndex + ".o ");
+ }
+ for (coreIndex = 0; coreIndex < coreNo.size(); coreIndex++) {
+ fw.write("runnable" + coreIndex + ".o ");
+ }
+
+ fw.write("ParallellaUtils.o shared_comms.o %.o \n");
+ fw.write(" $(CC) -g -T$< -Wl,--gc-sections -o $@ $(filter-out $<,$^) -le-lib\n\n");
+ fw.write("#host target\n");
+ fw.write("armcode: armcode.c $(DEPS)\n");
+ fw.write(" $(LCC) $< -o $@ -I ${EINCS} -L ${ELIBS} -lpal -le-hal -le-loader -lpthread\n");
+ fw.write("#clean target\n");
+ fw.write("clean:\n");
+ fw.write(" rm -f *.o *.srec *.elf armcode\n\n");
+ fw.write(".SECONDARY:\n");
+ fw.write("%.o: %.c $(DEPS)\n");
+ fw.write(" $(CC) -fdata-sections -ffunction-sections -c -o $@ $< $(INCLUDES)\n\n");
+ fw.write("%.o: %.s $(DEPS)\n");
+ fw.write(" $(CC) -c -o $@ $< $(INCLUDES)\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+
+ /**
+ * helper function to get the Amalthea Model
+ *
+ */
+ public Amalthea getModel() {
+ return this.model;
+ }
+
+}
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/RunFileCreation.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/RunFileCreation.java
new file mode 100755
index 0000000..3d723f7
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/RunFileCreation.java
@@ -0,0 +1,375 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.amalthea.model.Process;
+import org.eclipse.app4mc.amalthea.model.ProcessingUnit;
+import org.eclipse.app4mc.amalthea.model.Runnable;
+import org.eclipse.app4mc.amalthea.model.SchedulerAllocation;
+import org.eclipse.app4mc.amalthea.model.Task;
+import org.eclipse.app4mc.amalthea.model.Time;
+import org.eclipse.app4mc.amalthea.model.TimeUnit;
+import org.eclipse.app4mc.amalthea.model.util.DeploymentUtil;
+import org.eclipse.app4mc.amalthea.model.util.RuntimeUtil;
+import org.eclipse.app4mc.amalthea.model.util.RuntimeUtil.TimeType;
+import org.eclipse.app4mc.amalthea.model.util.SoftwareUtil;
+import org.eclipse.app4mc.amalthea.model.util.TimeUtil;
+import org.eclipse.app4mc.cdgen.utils.fileUtil;
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * Implementation of Runnable Definition with Runnable specific delay.
+ *
+ *
+ */
+
+public class RunFileCreation {
+ final private Amalthea model;
+
+ /**
+ * Constructor RunFileCreation
+ *
+ * @param Model
+ * Amalthea Model
+ * @param srcPath
+ * @param pthreadFlag
+ * @throws IOException
+ */
+ public RunFileCreation(final Amalthea Model, final String srcPath, final String path2, final int configFlag)
+ throws IOException {
+ this.model = Model;
+ System.out.println("Runnable File Creation Begins");
+ fileCreate(this.model, srcPath, path2, configFlag);
+ System.out.println("Runnable File Creation Ends");
+
+ }
+
+
+ /**
+ * Runnable File Creation
+ *
+ * @param model
+ * @param srcPath
+ * @param path2
+ * @param configFlag
+ * @param tasks
+ * @param runnables
+ * @throws IOException
+ */
+ private static void fileCreate(final Amalthea model, final String srcPath, final String path2, final int configFlag)
+ throws IOException {
+ final EList<SchedulerAllocation> CoreNo = model.getMappingModel().getSchedulerAllocation();
+ int k = 0;
+ for (final SchedulerAllocation c : CoreNo) {
+ final ProcessingUnit pu = c.getResponsibility().get(0);
+ final Set<Task> task = DeploymentUtil.getTasksMappedToCore(pu, model);
+ final List<Task> tasks = new ArrayList<Task>(task);
+ final String fname = srcPath + File.separator + "runnable" + k + ".c";
+ final File f2 = new File(srcPath);
+ final File f1 = new File(fname);
+ f2.mkdirs();
+ try {
+ f1.createNewFile();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ try {
+ if (0x2000 == (configFlag & 0xF000)) {
+ fileUtil.fileMainHeader(f1);
+ runFileHeader(f1);
+ headerIncludesRun(f1, k);
+ runnablePthreadDefinition(f1, tasks, model);
+ }
+ else {
+ fileUtil.fileMainHeader(f1);
+ runFileHeader(f1);
+ headerIncludesRun(f1, k);
+ runnableDefinition(f1, tasks, model);
+ }
+
+ }
+ finally {
+ try {
+ fw.close();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+ }
+ final String fname2 = srcPath + File.separator + "runnable" + k + ".h";
+ final File f4 = new File(srcPath);
+ final File f3 = new File(fname2);
+ f4.mkdirs();
+ try {
+ f1.createNewFile();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+
+ final File fn1 = f3;
+ @SuppressWarnings("resource")
+ final FileWriter fw1 = new FileWriter(fn1, true);
+ try {
+ if (0x2000 == (configFlag & 0xF000)) {
+ fileUtil.fileMainHeader(f3);
+ runFileHeader(f3);
+ headerIncludesRunPthreadHead(f3);
+ runnableDeclaration(f3, tasks);
+ }
+ else {
+ fileUtil.fileMainHeader(f3);
+ runFileHeader(f3);
+ headerIncludesRunHead(f3);
+ runnableDeclaration(f3, tasks);
+ }
+
+ }
+ finally {
+ try {
+ fw1.close();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+ }
+ k++;
+ }
+ }
+
+ /**
+ * Title Card for RunFileCreation
+ *
+ * @param file
+ */
+ private static void runFileHeader(final File file) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("*Title : Runnable Header\n");
+ fw.write("*Description : Runnable Definition with Runnable delay\n");
+ fw.write("******************************************************************\n");
+ fw.write("******************************************************************/\n\n\n");
+
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+
+ }
+
+ /**
+ * Header inclusion for the Runnable.c file
+ *
+ * @param file
+ */
+ private static void headerIncludesRun(final File file, final int k) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("/* Standard includes. */\n");
+ fw.write("#include <stdio.h>\n");
+ fw.write("#include <stdlib.h>\n");
+ fw.write("#include <string.h>\n\n");
+ fw.write("/* Scheduler includes. */\n");
+ fw.write("#include \"runnable" + k + ".h\"\n");
+
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+
+ }
+
+ /**
+ * RunFileCreation - Header inclusion for runnable.h
+ *
+ * @param file
+ */
+ private static void headerIncludesRunHead(final File file) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("/* Standard includes. */\n");
+ fw.write("#include <stdio.h>\n");
+ fw.write("#include <stdlib.h>\n");
+ fw.write("#include <string.h>\n\n");
+ fw.write("/* Scheduler includes. */\n");
+ // fw.write("#include \"runnable.h\"\n\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+
+ }
+
+ /**
+ * RunFileCreation - Header inclusion for runnable.h pthread specific
+ *
+ * @param file
+ */
+ private static void headerIncludesRunPthreadHead(final File file) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("/* Standard includes. */\n");
+ fw.write("#include <stdio.h>\n");
+ fw.write("#include <stdlib.h>\n");
+ fw.write("#include <string.h>\n\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+ /**
+ * RunFileCreation - Runnable Definition Pthread specific
+ *
+ * @param file
+ * @param tasks
+ * @param model
+ */
+ private static void runnablePthreadDefinition(final File file, final List<Task> tasks, final Amalthea model) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ // int taskCounter =1;
+ for (final Task t : tasks) {
+ List<Runnable> runnablesOfTask = SoftwareUtil.getRunnableList(t, null);
+ runnablesOfTask = runnablesOfTask.stream().distinct().collect(Collectors.toList());
+ // int runnableCounter =1;
+ for (final Runnable Run : runnablesOfTask) {
+ fw.write("void " + Run.getName() + " (void)\t{\n");
+ /*
+ * fw.write("\tvDisplayMessagePthread(\" " + t.getName() +
+ * " \tRunnable Execution " + "\t" + Run.getName() +
+ * "\\n\");\n");
+ */
+ final Process RunTaskName = SoftwareUtil.getCallingProcesses(Run, null).get(0);
+ final Set<ProcessingUnit> pu = DeploymentUtil.getAssignedCoreForProcess(RunTaskName, model);
+ if (pu != null) {
+ for (final ProcessingUnit p : pu) {
+ Time RunTime1 = RuntimeUtil.getExecutionTimeForRunnable(Run, p, null, TimeType.WCET);
+ RunTime1 = TimeUtil.convertToTimeUnit(RunTime1, TimeUnit.US);
+
+ final double sleepTime = RunTime1.getValue().doubleValue();
+
+ fw.write("\tusleep(" + sleepTime + ");\n");
+ break;
+ }
+ }
+ fw.write("}\n");
+ // runnableCounter++;
+ }
+ // taskCounter++;
+ }
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+ /**
+ * Runnable Definition(Generic)
+ *
+ * @param file
+ * @param tasks
+ * @param model
+ */
+ private static void runnableDefinition(final File file, final List<Task> tasks, final Amalthea model) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ for (final Task t : tasks) {
+ List<Runnable> runnablesOfTask = SoftwareUtil.getRunnableList(t, null);
+ runnablesOfTask = runnablesOfTask.stream().distinct().collect(Collectors.toList());
+ for (final Runnable Run : runnablesOfTask) {
+ fw.write("void " + Run.getName() + " \t(void)\t{\n");
+ final Process RunTaskName = SoftwareUtil.getCallingProcesses(Run, null).get(0);
+ final Set<ProcessingUnit> pu = DeploymentUtil.getAssignedCoreForProcess(RunTaskName, model);
+ for (final ProcessingUnit p : pu) {
+ Time RunTime1 = RuntimeUtil.getExecutionTimeForRunnable(Run, p, null, TimeType.WCET);
+ RunTime1 = TimeUtil.convertToTimeUnit(RunTime1, TimeUnit.US);
+ break;
+ }
+ fw.write("}\n");
+ }
+ }
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+
+ }
+
+ /**
+ * Runnable Declaration in runnable.h
+ *
+ * @param file
+ * @param runnables
+ */
+ private static void runnableDeclaration(final File file, final List<Task> tasks) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ final List<Runnable> runnables = new ArrayList<Runnable>();
+ for (final Task ta : tasks) {
+ runnables.addAll(SoftwareUtil.getRunnableList(ta, null));
+ }
+ for (final Runnable Run : runnables) {
+ fw.write("void " + Run.getName() + " (void);\n");
+ }
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+
+ }
+
+ /**
+ * helper function to get the Amalthea Model
+ *
+ */
+ public Amalthea getModel() {
+ return this.model;
+ }
+
+}
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/SharedLabelsFileCreation.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/SharedLabelsFileCreation.java
new file mode 100644
index 0000000..a991ec3
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/SharedLabelsFileCreation.java
@@ -0,0 +1,367 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.amalthea.model.Label;
+import org.eclipse.app4mc.amalthea.model.ProcessingUnit;
+import org.eclipse.app4mc.amalthea.model.Task;
+import org.eclipse.app4mc.cdgen.utils.fileUtil;
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * Declaration of Labels with initial values .
+ *
+ *
+ */
+
+/**
+ * @author rpras
+ *
+ */
+public class SharedLabelsFileCreation {
+ final private Amalthea model;
+
+ /**
+ * Constructor LabelFileCreation
+ *
+ * @param Model
+ * Amalthea Model
+ * @param srcPath
+ * @throws IOException
+ */
+ public SharedLabelsFileCreation(final Amalthea Model, final String srcPath) throws IOException {
+ this.model = Model;
+ System.out.println("Shared Label File Creation Begins");
+ fileCreate(this.model, srcPath);
+ System.out.println("Shared Label File Creation Ends");
+ }
+
+ /**
+ * FileCreation LabelFileCreation
+ *
+ * @param model
+ * @param srcPath
+ * @throws IOException
+ */
+ private static void fileCreate(final Amalthea model, final String srcPath) throws IOException {
+ final EList<Label> labellist = model.getSwModel().getLabels();
+ final String fname1 = srcPath + File.separator + "shared_comms.c";
+ final String fname2 = srcPath + File.separator + "shared_comms.h";
+ final File f2 = new File(srcPath);
+ final File f1 = new File(fname1);
+ final File f3 = new File(fname2);
+ f2.mkdirs();
+ try {
+ f1.createNewFile();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+
+ final File fn1 = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn1, true);
+ try {
+ fileUtil.fileMainHeader(f1);
+ sharedLabelFileHeader(f1);
+ headerIncludesSharedLabel(f1);
+ SharedLabelDeclaration(f1, model, labellist);
+ }
+ finally {
+ try {
+ fw.close();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+ }
+ try {
+ fileUtil.fileMainHeader(f3);
+ sharedLabelFileHeaderHead(f3);
+ headerIncludesSharedLabelHead(f3);
+ SharedLabelDeclarationHead(f3, model, labellist);
+ }
+ finally {
+ try {
+ fw.close();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ /**
+ * Title card - LabelFileCreation
+ *
+ * @param file
+ */
+ private static void sharedLabelFileHeader(final File file) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("*Title : Shared Label Declaration\n");
+ fw.write("*Description : Declaration and Initialisation of Shared Label\n");
+ fw.write("******************************************************************\n");
+ fw.write("******************************************************************/\n\n\n");
+
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+ /**
+ * Title card - LabelFileCreation
+ *
+ * @param file
+ */
+ private static void sharedLabelFileHeaderHead(final File file) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("*Title : Shared Label Declaration\n");
+ fw.write("*Description : Header file for Declaration and Initialisation of Shared Label\n");
+ fw.write("******************************************************************\n");
+ fw.write("******************************************************************/\n\n\n");
+
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+
+ /**
+ * Header inclusion - LabelFileCreation
+ *
+ * @param file
+ */
+ private static void headerIncludesSharedLabelHead(final File file) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("#ifndef DEMO_PARALLELLA_SHARED_COMMS_H_\n");
+ fw.write("#define DEMO_PARALLELLA_SHARED_COMMS_H_\n\n");
+
+ fw.write("/* Standard includes. */\n");
+ fw.write("#include <stdlib.h>\n");
+ fw.write("#include <stdint.h>\n\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+
+ /**
+ * Header inclusion - LabelFileCreation
+ *
+ * @param file
+ */
+ private static void headerIncludesSharedLabel(final File file) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("/* Standard includes. */\n");
+ fw.write("#include \"shared_comms.h\"\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+
+ /**
+ * Shared Label definition and initialization structure.
+ *
+ * @param file
+ * @param labellist
+ */
+ private static void SharedLabelDeclaration(final File file, final Amalthea model, final EList<Label> labellist) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ final List<Label> SharedLabelList = LabelFileCreation.SharedLabelFinder(model);
+ final List<Label> SharedLabelListSortCore = new ArrayList<Label>();
+ if (SharedLabelList.size() == 0) {
+ // System.out.println("Shared Label size 0");
+ }
+ else {
+ // System.out.println("Shared Label size
+ // "+SharedLabelList.size());
+ final HashMap<Label, HashMap<Task, ProcessingUnit>> sharedLabelTaskMap = LabelFileCreation
+ .LabelTaskMap(model, SharedLabelList);
+ for (final Label share : SharedLabelList) {
+ final HashMap<Task, ProcessingUnit> TaskMap = sharedLabelTaskMap.get(share);
+ final Collection<ProcessingUnit> puList = TaskMap.values();
+ final List<ProcessingUnit> puListUnique = puList.stream().distinct().collect(Collectors.toList());
+ if (puListUnique.size() > 1) {
+ SharedLabelListSortCore.add(share);
+ }
+ }
+ }
+
+ final HashMap<Label, String> SharedLabelTypeMap = new HashMap<Label, String>();
+ for (final Label share : SharedLabelListSortCore) {
+ SharedLabelTypeMap.put(share, share.getSize().toString());
+ }
+ final List<String> SharedTypeMapList = new ArrayList<>(
+ SharedLabelTypeMap.values().stream().distinct().collect(Collectors.toList()));
+ final List<Label> SharedLabelMapList = new ArrayList<Label>(SharedLabelTypeMap.keySet());
+ for (int k = 0; k < SharedTypeMapList.size(); k++) {
+ final List<Label> SharedLabel = new ArrayList<Label>();
+ final String sh = SharedTypeMapList.get(k);
+ for (final Label s : SharedLabelMapList) {
+ final String ShTy = SharedLabelTypeMap.get(s);
+ if (sh.equals(ShTy)) {
+ SharedLabel.add(s);
+ }
+ }
+ int SharedLabelCounter = SharedLabel.size();
+ if (SharedLabelCounter != 0) {
+
+
+ fw.write(fileUtil.datatype(sh.toString()) + " *outbuf_shared" + sh.toString().replace(" ", "")
+ + "[" + SharedLabelCounter + "];\n\n");
+ fw.write("void shared_label_" + sh.toString().replace(" ", "") + "_init(){\n");
+ fw.write("\toutbuf_shared" + sh.toString().replace(" ", "") + "[0] = ("
+ + fileUtil.datatype(sh.toString()) + " *) shared_mem_section"
+ + sh.toString().replace(" ", "") + ";\n");
+ for (int i = 1; i < SharedLabelCounter; i++) {
+ fw.write("\toutbuf_shared" + sh.toString().replace(" ", "") + "[" + i + "]=outbuf_shared"
+ + sh.toString().replace(" ", "") + "[" + i + "] + 1;\n");
+ }
+ fw.write("\tfor (int i=0;i<" + SharedLabelCounter + ";i++){\n");
+ fw.write("\t\t*outbuf_shared" + sh.toString().replace(" ", "") + "[i] =0;\n");
+ fw.write("\t}\n");
+ fw.write("}\n\n");
+ fw.write("void shared_label_" + sh.toString().replace(" ", "")
+ + "_write(int label_indx,int payload){\n");
+ // fw.write("\t"+fileUtil.datatype(sh.toString())+"
+ // retval=NULL;\n");
+ fw.write("\t*outbuf_shared" + sh.toString().replace(" ", "") + "[label_indx] = payload;\n");
+ // fw.write("\treturn retval;\n\n");
+ fw.write("}\n\n");
+ fw.write("" + fileUtil.datatype(sh.toString()) + " shared_label_" + sh.toString().replace(" ", "")
+ + "_read(int label_indx){\n");
+ fw.write("\treturn *outbuf_shared" + sh.toString().replace(" ", "") + "[label_indx];\n");
+ fw.write("}\n\n");
+ }
+ SharedLabelCounter = 0;
+ }
+ fw.write("\n\n\n\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+ /**
+ * Shared Label definition and initialization structure.
+ *
+ * @param file
+ * @param labellist
+ */
+ private static void SharedLabelDeclarationHead(final File file, final Amalthea model,
+ final EList<Label> labellist) {
+ try {
+ final File fn = file;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ final List<Label> SharedLabelList = LabelFileCreation.SharedLabelFinder(model);
+ final List<Label> SharedLabelListSortCore = new ArrayList<Label>();
+ if (SharedLabelList.size() == 0) {
+ System.out.println("Shared Label size 0");
+ }
+ else {
+ // System.out.println("Shared Label size
+ // "+SharedLabelList.size());
+ final HashMap<Label, HashMap<Task, ProcessingUnit>> sharedLabelTaskMap = LabelFileCreation
+ .LabelTaskMap(model, SharedLabelList);
+ for (final Label share : SharedLabelList) {
+ final HashMap<Task, ProcessingUnit> TaskMap = sharedLabelTaskMap.get(share);
+ final Collection<ProcessingUnit> puList = TaskMap.values();
+ final List<ProcessingUnit> puListUnique = puList.stream().distinct().collect(Collectors.toList());
+ if (puListUnique.size() > 1) {
+ SharedLabelListSortCore.add(share);
+ }
+ }
+ }
+
+ final HashMap<Label, String> SharedLabelTypeMap = new HashMap<Label, String>();
+ for (final Label share : SharedLabelListSortCore) {
+ SharedLabelTypeMap.put(share, share.getSize().toString());
+ }
+ final List<String> SharedTypeMapList = new ArrayList<>(
+ SharedLabelTypeMap.values().stream().distinct().collect(Collectors.toList()));
+ final List<Label> SharedLabelMapList = new ArrayList<Label>(SharedLabelTypeMap.keySet());
+ for (int k = 0; k < SharedTypeMapList.size(); k++) {
+ final List<Label> SharedLabel = new ArrayList<Label>();
+ final String sh = SharedTypeMapList.get(k);
+ for (final Label s : SharedLabelMapList) {
+ final String ShTy = SharedLabelTypeMap.get(s);
+ if (sh.equals(ShTy)) {
+ SharedLabel.add(s);
+ }
+ }
+ int SharedLabelCounter = SharedLabel.size();
+ if (SharedLabelCounter != 0) {
+ fw.write("\n#define shared_mem_section" + sh.toString().replace(" ", "") + " 0x0" + (k + 1)
+ + "000000\n\n");
+ fw.write("void shared_label_" + sh.toString().replace(" ", "") + "_init();\n");
+ fw.write("void shared_label_" + sh.toString().replace(" ", "")
+ + "_write(int label_indx,int payload);\n");
+ fw.write("" + fileUtil.datatype(sh.toString()) + " shared_label_" + sh.toString().replace(" ", "")
+ + "_read(int label_indx);\n");
+ }
+ SharedLabelCounter = 0;
+ }
+ fw.write("\n\n");
+ fw.write("#endif");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+
+ /**
+ * helper function to get the Amalthea Model
+ *
+ */
+ public Amalthea getModel() {
+ return this.model;
+ }
+}
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/TaskFileCreation.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/TaskFileCreation.java
new file mode 100755
index 0000000..96d2815
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/TaskFileCreation.java
@@ -0,0 +1,683 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.amalthea.model.Label;
+import org.eclipse.app4mc.amalthea.model.MappingModel;
+import org.eclipse.app4mc.amalthea.model.PeriodicStimulus;
+import org.eclipse.app4mc.amalthea.model.ProcessingUnit;
+import org.eclipse.app4mc.amalthea.model.Runnable;
+import org.eclipse.app4mc.amalthea.model.SchedulerAllocation;
+import org.eclipse.app4mc.amalthea.model.Stimulus;
+import org.eclipse.app4mc.amalthea.model.Task;
+import org.eclipse.app4mc.amalthea.model.Time;
+import org.eclipse.app4mc.amalthea.model.TimeUnit;
+import org.eclipse.app4mc.amalthea.model.util.DeploymentUtil;
+import org.eclipse.app4mc.amalthea.model.util.HardwareUtil;
+import org.eclipse.app4mc.amalthea.model.util.RuntimeUtil;
+import org.eclipse.app4mc.amalthea.model.util.RuntimeUtil.TimeType;
+import org.eclipse.app4mc.amalthea.model.util.SoftwareUtil;
+import org.eclipse.app4mc.amalthea.model.util.TimeUtil;
+import org.eclipse.app4mc.cdgen.utils.fileUtil;
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * Implementation of Task Definition with Cin and Cout Calls.
+ *
+ *
+ */
+
+public class TaskFileCreation {
+ final private Amalthea model;
+
+ /**
+ * Constructor TaskFileCreation
+ *
+ * @param Model
+ * - Amalthea Model
+ * @param srcPath
+ * @param pthreadFlag
+ * @param preemptionFlag
+ * @throws IOException
+ */
+ public TaskFileCreation(final Amalthea Model, final String srcPath, final String path2, final int configFlag)
+ throws IOException {
+ this.model = Model;
+
+ if ((0x3100 == (0xFF00 & configFlag)) || (0x1300 == (0xFF00 & configFlag))) {
+ System.out.println("Task File Creation Begins");
+ fileCreate(this.model, srcPath, path2, configFlag);
+ System.out.println("Task File Creation Ends");
+ }
+ else {
+ System.out.println("Task File Creation Begins");
+ fileCreatePthread(this.model, srcPath, path2, configFlag);
+ System.out.println("Task File Creation Ends");
+ }
+
+ }
+
+
+ private static void fileCreate(final Amalthea model, final String srcPath, final String path2, final int configFlag)
+ throws IOException {
+ boolean preemptionFlag = false;
+ if (0x0020 == (0x00F0 & configFlag)) {
+ preemptionFlag = true;
+ }
+ else {
+ preemptionFlag = false;
+ }
+ final EList<SchedulerAllocation> CoreNo = model.getMappingModel().getSchedulerAllocation();
+ int k = 0;
+ for (final SchedulerAllocation c : CoreNo) {
+ final ProcessingUnit pu = c.getResponsibility().get(0);
+ final Set<Task> task = DeploymentUtil.getTasksMappedToCore(pu, model);
+ final List<Task> tasks = new ArrayList<Task>(task);
+ final String fname = srcPath + File.separator + "taskDef" + k + ".c";
+ final File f2 = new File(srcPath);
+ final File f1 = new File(fname);
+ f2.mkdirs();
+ try {
+ f1.createNewFile();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ try {
+ fileUtil.fileMainHeader(f1);
+ taskFileHeader(f1);
+ if ((0x3000 == (0xF000 & configFlag)) & (0x0100 == (0x0F00 & configFlag))) {
+ headerIncludesTaskHeadRMS(f1, k);
+ TaskCounter(f1, tasks);
+ TaskDefinitionRMS(f1, model, tasks, preemptionFlag);
+ }
+ else if ((0x1000 == (0xF000 & configFlag)) & (0x0300 == (0x0F00 & configFlag))) {
+ headerIncludesTaskHeadRMS(f1, k);
+ TaskCounter(f1, tasks);
+ TaskDefinitionFreeRTOS(f1, model, tasks, preemptionFlag);
+ }
+ }
+ finally {
+ try {
+ fw.close();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+ }
+ final String fname2 = srcPath + File.separator + "taskDef" + k + ".h";
+ final File f4 = new File(srcPath);
+ final File f3 = new File(fname2);
+ f4.mkdirs();
+ try {
+ f1.createNewFile();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+
+ final File fn1 = f3;
+ @SuppressWarnings("resource")
+ final FileWriter fw1 = new FileWriter(fn1, true);
+ try {
+ fileUtil.fileMainHeader(f3);
+ taskFileHeader(f3);
+ headerIncludesTaskRMSHead(f3, k);
+ mainStaticTaskDef(f3, tasks);
+
+ }
+ finally {
+ try {
+ fw1.close();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+ }
+ k++;
+ }
+ }
+
+
+ private static void TaskCounter(final File f3, final List<Task> tasks) {
+ try {
+ final File fn = f3;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true); // the true will
+ // append the new
+ // data
+ fw.write("/* Task Counter Declaration. */\n");
+ for (final Task ta : tasks) {
+ fw.write("int taskCount" + ta.getName() + "\t=\t0;\n");
+ }
+ fw.write("\n\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+
+ private static void fileCreatePthread(final Amalthea model, final String path1, final String path2,
+ final int configFlag) throws IOException {
+ boolean preemptionFlag = false;
+ if (0x0020 == (0x00F0 & configFlag)) {
+ preemptionFlag = true;
+ }
+ else {
+ preemptionFlag = false;
+ }
+ final EList<SchedulerAllocation> CoreNo = model.getMappingModel().getSchedulerAllocation();
+ int k = 0;
+ for (final SchedulerAllocation c : CoreNo) {
+ final ProcessingUnit pu = c.getResponsibility().get(0);
+ final Set<Task> task = DeploymentUtil.getTasksMappedToCore(pu, model);
+ final List<Task> tasks = new ArrayList<Task>(task);
+ final String fname = path1 + File.separator + "taskDef" + k + ".c";
+ final File f2 = new File(path1);
+ final File f1 = new File(fname);
+ f2.mkdirs();
+ try {
+ f1.createNewFile();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ try {
+ fileUtil.fileMainHeader(f1);
+ taskFileHeader(f1);
+ headerIncludesTaskPthreadHead(f1);
+ TaskDefinitionPthread(f1, tasks, model, preemptionFlag);
+ }
+ finally {
+ try {
+ fw.close();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+ }
+ final String fname2 = path1 + File.separator + "taskDef" + k + ".h";
+ final File f4 = new File(path1);
+ final File f3 = new File(fname2);
+ f4.mkdirs();
+ try {
+ f1.createNewFile();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+ final File fn1 = f3;
+ @SuppressWarnings("resource")
+ final FileWriter fw1 = new FileWriter(fn1, true);
+ try {
+ fileUtil.fileMainHeader(f3);
+ taskFileHeader(f3);
+ headerIncludesPthreadTask(f3, k);
+ mainStaticTaskPthreadDef(f3, tasks);
+ }
+ finally {
+ try {
+ fw1.close();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+ }
+ k++;
+ }
+ }
+
+ private static void headerIncludesPthreadTask(final File f3, final int k) {
+ try {
+ final File fn = f3;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true); // the true will
+ // append the new
+ // data
+ fw.write("/* Standard includes. */\n");
+ fw.write("#include <stdio.h>\n");
+ fw.write("#include <stdlib.h>\n");
+ fw.write("#include <string.h>\n\n");
+ fw.write("#include <stdint.h>\n\n");
+ fw.write("/* Scheduler includes. */\n");
+ fw.write("#include \"runnable" + k + ".h\"\n");
+ fw.write("#include \"label" + k + ".h\"\n");
+
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+
+ }
+
+ private static void mainStaticTaskPthreadDef(final File f3, final List<Task> tasks) {
+ try {
+ final File fn = f3;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("/* Static definition of the tasks. */\n");
+ for (final Task task : tasks) {
+ fw.write("void v" + task.getName() + "( void *t );\n");
+ }
+ fw.write("\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+
+ }
+
+ private static void TaskDefinitionPthread(final File f1, final List<Task> tasks, final Amalthea model,
+ final boolean preemptionFlag) {
+ try {
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ for (final Task task : tasks) {
+ final List<Runnable> runnablesOfTask = SoftwareUtil.getRunnableList(task, null);
+ final ArrayList<Label> labellist1 = new ArrayList<Label>();
+ for (final Runnable run : runnablesOfTask) {
+ final Set<Label> labellist = SoftwareUtil.getAccessedLabelSet(run, null);
+ labellist1.addAll(labellist);
+ }
+ final List<Label> listWithoutDuplicates2 = labellist1.stream().distinct().collect(Collectors.toList());
+ for (final Label lab : listWithoutDuplicates2) {
+ final String type = fileUtil.datatype(lab.getSize().toString());
+ fw.write("\t\textern\t" + type + "\t" + lab.getName() + ";\n");
+ }
+ fw.write("\n\n\n");
+ for (final Label lab : listWithoutDuplicates2) {
+ final String type = fileUtil.datatype(lab.getSize().toString());
+ fw.write("\t\textern\t" + type + "\t" + lab.getName() + "_" + task.getName() + ";\n");
+ }
+ fw.write("\n\n\n");
+
+ fw.write("\n\tvoid cIN_" + task.getName() + "()\n\t{\n");
+ for (final Label lab : listWithoutDuplicates2) {
+ fw.write("\t\t" + lab.getName() + "_" + task.getName() + "\t=\t" + lab.getName() + ";\n");
+ }
+ fw.write("\t}\n");
+ fw.write("\n\tvoid cOUT_" + task.getName() + "()\n\t{\n");
+ final ArrayList<Label> labellist2 = new ArrayList<Label>();
+ for (final Runnable run : runnablesOfTask) {
+ final Set<Label> labellist = SoftwareUtil.getWriteLabelSet(run, null);
+ labellist2.addAll(labellist);
+ }
+ final List<Label> listWithoutDuplicates1 = labellist2.stream().distinct().collect(Collectors.toList());
+
+ for (final Label lab : listWithoutDuplicates1) {
+ fw.write("\t\t" + lab.getName() + "\t=\t" + lab.getName() + "_" + task.getName() + ";\n");
+ }
+ fw.write("\t}\n");
+ fw.write("\n\tvoid v" + task.getName() + "( void *t )" + "\n\t{\n");
+ final MappingModel mappingModel = model.getMappingModel();
+ if (mappingModel != null) {
+ final List<ProcessingUnit> processingUnits = HardwareUtil
+ .getModulesFromHwModel(ProcessingUnit.class, model);
+ final ArrayList<ProcessingUnit> localPU = new ArrayList<ProcessingUnit>();
+ localPU.addAll(processingUnits);
+
+ final HashMap<ProcessingUnit, Long> CoreMap = new HashMap<ProcessingUnit, Long>();
+ long count = 0;
+ for (final ProcessingUnit p : localPU) {
+ CoreMap.put(p, count);
+ count++;
+ }
+ final ProcessingUnit pu = DeploymentUtil.getAssignedCoreForProcess(task, model).iterator().next();
+ final Long coreID = CoreMap.get(pu);
+ fw.write("\t\tcpu_set_t cpuset;\n");
+ fw.write("\t\tint cpu = " + coreID + ";\n");
+ fw.write("\t\tCPU_ZERO(&cpuset);\n");
+ fw.write("\t\tCPU_SET( cpu , &cpuset);\n");
+ final Set<ProcessingUnit> procUniSet = DeploymentUtil.getAssignedCoreForProcess(task, model);
+ List<ProcessingUnit> procUniList = null;
+ if (procUniSet != null) {
+ procUniList = new ArrayList<ProcessingUnit>(procUniSet);
+ }
+ if (procUniList != null) {
+ procUniList.get(0);
+ }
+ fw.write("\t\tsched_setaffinity(0, sizeof(cpuset), &cpuset);\n\n");
+ }
+ fw.write("\t\tfor( ;; )\n\t\t{\n");
+ fw.write("\t\t\tsuspendMe ();\n");
+ fw.write("\t\tprint_affinity();\n");
+ fw.write("\t\t\tvDisplayMessagePthread( \"" + task.getName() + " is running\\r\\n\" );\n");
+ fw.write("\t\t\t/* Cin - Create local variables and copy the actual variable to them */\n");
+ fw.write("\t\t\tcIN_" + task.getName() + "();\n");
+ if (preemptionFlag == true) {
+ fw.write("\t\t\tresumeMe ();\n");
+ }
+ fw.write("\n\t\t\t/*Runnable calls */\n");
+ for (final Runnable run : runnablesOfTask) {
+ fw.write("\t\t\t" + run.getName() + "();\n");
+ }
+ fw.write("\n\t\t\t/* Cout - Write back the local variables back to the actual variables */\n");
+ if (preemptionFlag == true) {
+ fw.write("\t\t\tsuspendMe ();\n");
+ }
+ fw.write("\t\t\tcOUT_" + task.getName() + "();\n");
+ fw.write("\t\t\tresumeMe ();\n");
+ fw.write("\t\t\tsleepTimerMs(DELAY_MULT*NULL);\n");
+ fw.write("\t\t\tpthread_exit((void*) t);\n");
+ final Time tasktime = fileUtil.getRecurrence(task);
+ if (tasktime != null) {
+ // TimeUtil.getAsTimeUnit(fileUtil.getRecurrence(task),
+ // null);
+
+ }
+ fw.write("\t\t}\n");
+ fw.write("\t}\n\n");
+ }
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+ private static void taskFileHeader(final File f1) {
+ try {
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("*Title : Task Definition\n");
+ fw.write("*Description : Task Definition with Task Structure\n");
+ fw.write("******************************************************************\n");
+ fw.write("******************************************************************/\n\n\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+ private static void headerIncludesTaskPthreadHead(final File f1) {
+ try {
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("#define _GNU_SOURCE\n\n");
+ fw.write("/* Standard includes. */\n");
+ fw.write("#include <stdio.h>\n");
+ fw.write("#include <stdlib.h>\n");
+ fw.write("#include <string.h>\n");
+ fw.write("#include <pthread.h>\n");
+ fw.write("#include <sched.h>\n");
+ fw.write("#include <stdint.h>\n\n");
+
+ // fw.write("#define DELAY_MULT 100\n\n\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+ private static void headerIncludesTaskRMSHead(final File f1, final int k) {
+ try {
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("/* Standard includes. */\n");
+ fw.write("#include <stdio.h>\n");
+ fw.write("#include <stdlib.h>\n");
+ fw.write("#include <string.h>\n");
+ fw.write("#include <stdint.h>\n\n");
+ fw.write("/* Scheduler includes. */\n");
+ fw.write("#include \"FreeRTOS.h\"\n");
+ fw.write("#include \"queue.h\"\n");
+ fw.write("#include \"croutine.h\"\n");
+ fw.write("#include \"debugFlags.h\"\n");
+ fw.write("#include \"task.h\"\n");
+ fw.write("#include \"ParallellaUtils.h\"\n");
+ fw.write("#include \"label" + k + ".h\"\n");
+ fw.write("#include \"runnable" + k + ".h\"\n\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+ private static void headerIncludesTaskHeadRMS(final File f1, final int k) {
+ try {
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("#include \"taskDef" + k + ".h\"\n\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+ public static void mainStaticTaskDef(final File f1, final List<Task> tasks) {
+ try {
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("/* Static definition of the tasks. */\n");
+ for (final Task task : tasks) {
+ fw.write("void v" + task.getName() + "( );\n");
+ }
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+ public static HashMap<Task, Integer> TaskIndexMapping(final Amalthea model) {
+ final EList<Task> tasks = model.getSwModel().getTasks();
+ final HashMap<Task, Integer> TaskMapping = new HashMap<Task, Integer>();
+ int i = 0;
+ for (final Task Ta : tasks) {
+ TaskMapping.put(Ta, i);
+ i++;
+ }
+ return TaskMapping;
+ }
+
+
+ private static void TaskDefinitionRMS(final File f1, final Amalthea model, final List<Task> tasks,
+ final boolean preemptionFlag) {
+ try {
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ final HashMap<Task, Integer> taskIndex = TaskIndexMapping(model);
+ for (final Task task : tasks) {
+ final Integer taskCount = taskIndex.get(task);
+ List<Runnable> runnablesOfTask = SoftwareUtil.getRunnableList(task, null);
+ runnablesOfTask = runnablesOfTask.stream().distinct().collect(Collectors.toList());
+ fw.write("\n");
+ final List<Label> taskLabelList = TaskSpecificLabel(model, task);
+ for (final Label lab : taskLabelList) {
+ final String type = fileUtil.datatype(lab.getSize().toString());
+ fw.write("\t" + type + "\t" + lab.getName() + ";\n");
+ }
+ fw.write("\n");
+ fw.write("\n\n");
+ fw.write("\n\tvoid v" + task.getName() + "()" + "\n\t{\n");
+
+ // fw.write("\n\n");
+ fw.write("\t\tupdateDebugFlag(700);\n");
+ fw.write("\t\ttraceTaskPasses(1,1);\n");
+ fw.write("\n\t\t\t/*Runnable calls */\n");
+ for (final Runnable run : runnablesOfTask) {
+ fw.write("\t\t\t" + run.getName() + "();\n");
+ }
+ final MappingModel mappingModel = model.getMappingModel();
+ ProcessingUnit pu = null;
+ if (mappingModel != null) {
+ pu = DeploymentUtil.getAssignedCoreForProcess(task, model).iterator().next();
+ Time taskTime = RuntimeUtil.getExecutionTimeForProcess(task, pu, null, TimeType.WCET);
+ taskTime = TimeUtil.convertToTimeUnit(taskTime, TimeUnit.MS);
+ final BigInteger sleepTime = taskTime.getValue();
+ final BigInteger b2 = new BigInteger("1000");
+ final int comparevalue = sleepTime.compareTo(b2);
+ if (comparevalue < 0) {
+ fw.write("\n\t\t\tsleepTimerMs(1 , 1" + (taskCount + 1) + ");\n");
+ }
+ else {
+ fw.write("\n\t\t\tsleepTimerMs(" + sleepTime + ", " + taskCount + 1 + ");\n");
+ }
+
+ }
+ fw.write("\n\t\t\ttaskCount" + task.getName() + "++;");
+ fw.write("\n\t\t\ttraceTaskPasses(" + taskCount + ", taskCount" + task.getName() + ");");
+ fw.write("\n\t\t\ttraceRunningTask(0);\n");
+ fw.write("\t}\n\n");
+ }
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+ private static void TaskDefinitionFreeRTOS(final File f1, final Amalthea model, final List<Task> tasks,
+ final boolean preemptionFlag) {
+ try {
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ final HashMap<Task, Integer> taskIndex = TaskIndexMapping(model);
+ for (final Task task : tasks) {
+ Integer taskCount = taskIndex.get(task);
+ List<Runnable> runnablesOfTask = SoftwareUtil.getRunnableList(task, null);
+ runnablesOfTask = runnablesOfTask.stream().distinct().collect(Collectors.toList());
+ final List<Label> taskLabelList = TaskSpecificLabel(model, task);
+ fw.write("\n");
+ for (final Label lab : taskLabelList) {
+ final String type = fileUtil.datatype(lab.getSize().toString());
+ fw.write("\t\t" + type + "\t" + lab.getName() + ";\n");
+ }
+ fw.write("\n");
+ fw.write("\n\tvoid v" + task.getName() + "()" + "\n\t{\n");
+ fw.write("\tportTickType xLastWakeTime=xTaskGetTickCount();\n");
+ fw.write("\n\t\tfor( ;; )\n\t\t{\n");
+ fw.write("\t\tupdateDebugFlag(700);\n");
+ fw.write("\t\ttraceTaskPasses(1,1);\n");
+ fw.write("\t\t\t/* Cin - Create local variables and copy the actual variable to them */\n");
+ fw.write("\t\t\ttaskENTER_CRITICAL ();\n");
+ fw.write("\t\t\tcIN_" + task.getName() + "();\n");
+ fw.write("\t\t\ttaskEXIT_CRITICAL ();\n");
+ fw.write("\n\t\t\t/*Runnable calls */\n");
+ for (final Runnable run : runnablesOfTask) {
+ fw.write("\t\t\t" + run.getName() + "();\n");
+ }
+ fw.write("\n\t\t\t/* Cout - Write back the local variables back to the actual variables */\n");
+ fw.write("\t\t\ttaskENTER_CRITICAL ();\n");
+ fw.write("\t\t\tcOUT_" + task.getName() + "();\n");
+ fw.write("\t\t\ttaskEXIT_CRITICAL ();\n");
+ final MappingModel mappingModel = model.getMappingModel();
+ ProcessingUnit pu = null;
+ if (mappingModel != null) {
+ pu = DeploymentUtil.getAssignedCoreForProcess(task, model).iterator().next();
+ Time taskTime = RuntimeUtil.getExecutionTimeForProcess(task, pu, null, TimeType.WCET);
+ taskTime = TimeUtil.convertToTimeUnit(taskTime, TimeUnit.MS);
+ final BigInteger sleepTime = taskTime.getValue();
+ final BigInteger b2 = new BigInteger("1000");
+ final int comparevalue = sleepTime.compareTo(b2);
+ if (comparevalue < 0) {
+ fw.write("\n\t\t\tsleepTimerMs(1 , 1" + (taskCount + 1) + ");\n");
+ }
+ else {
+ fw.write("\n\t\t\tsleepTimerMs(" + sleepTime + ", " + taskCount + 1 + ");\n");
+ }
+ taskCount++;
+ }
+ fw.write("\n\t\t\ttaskCount" + task.getName() + "++;");
+ fw.write("\n\t\t\ttraceTaskPasses(" + taskCount + ", taskCount" + task.getName() + ");");
+ fw.write("\n\t\t\ttraceRunningTask(0);\n");
+ final EList<Stimulus> Stimuli = model.getStimuliModel().getStimuli();
+ for (final Stimulus s : Stimuli) {
+ if (s instanceof PeriodicStimulus) {
+ if (task.getStimuli().get(0) == s) {
+ fw.write("\t\t\tvTaskDelayUntil(&xLastWakeTime, "
+ + ((PeriodicStimulus) s).getRecurrence().getValue() + ");\n");
+ }
+ }
+ }
+ fw.write("\t\t}\n");
+ fw.write("\t}\n\n");
+ }
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+ }
+
+ /**
+ * Shared Label definition and initialization structure.
+ *
+ * @param file
+ * @param labellist
+ */
+ public static List<Label> TaskSpecificLabel(final Amalthea model, final Task tasks) {
+ List<Label> SharedLabelList = new ArrayList<Label>(SoftwareUtil.getAccessedLabelSet(tasks, null));
+ SharedLabelList = SharedLabelList.stream().distinct().collect(Collectors.toList());
+ final List<Label> SharedLabelListSortCore = new ArrayList<Label>();
+ if (SharedLabelList.size() == 0) {
+ // System.out.println("Shared Label size 0");
+ }
+ else {
+ final HashMap<Label, HashMap<Task, ProcessingUnit>> sharedLabelTaskMap = LabelFileCreation
+ .LabelTaskMap(model, SharedLabelList);
+ for (final Label share : SharedLabelList) {
+ final HashMap<Task, ProcessingUnit> TaskMap = sharedLabelTaskMap.get(share);
+ final Set<Task> taskList = TaskMap.keySet();
+ final Collection<ProcessingUnit> puList = TaskMap.values();
+ final List<ProcessingUnit> puListUnique = puList.stream().distinct().collect(Collectors.toList());
+ if (!((puListUnique.size() == 1 && taskList.size() > 1) || (puListUnique.size() > 1))) {
+ SharedLabelListSortCore.add(share);
+ }
+ }
+ }
+ return SharedLabelListSortCore;
+ }
+
+ /**
+ * helper function to get the Amalthea Model
+ *
+ */
+ public Amalthea getModel() {
+ return this.model;
+ }
+}
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/checks/checkFileCreateGUI.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/checks/checkFileCreateGUI.java
new file mode 100755
index 0000000..1f71463
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/checks/checkFileCreateGUI.java
@@ -0,0 +1,322 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen.checks;
+
+import java.awt.Color;
+import java.awt.Desktop;
+import java.awt.EventQueue;
+import java.awt.Font;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.sql.Timestamp;
+
+import javax.imageio.ImageIO;
+import javax.swing.ButtonGroup;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JFileChooser;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JRadioButton;
+import javax.swing.JSeparator;
+import javax.swing.JTextField;
+import javax.swing.filechooser.FileNameExtensionFilter;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.amalthea.model.io.AmaltheaLoader;
+
+/**
+ * Implementation of GUI Design and Action on Button Click.
+ */
+
+public class checkFileCreateGUI {
+ JFrame frame;
+
+ public static void main(final String[] args) {
+ EventQueue.invokeLater(new Runnable() {
+ @SuppressWarnings("null")
+ @Override
+ public void run() {
+ checkFileCreateGUI window = null;
+ try {
+ window = new checkFileCreateGUI();
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+ window.frame.setVisible(true);
+ window.frame.setTitle("CDGen");
+
+ }
+ });
+
+ }
+
+ public checkFileCreateGUI() throws IOException {
+ initialize();
+ }
+
+ int modelIndex;
+ String fileInput;
+ String fileInput1;
+ JTextField txtFieldScheduler = new JTextField("FreeRTOS / RMS / POSIX Browse path");
+ JTextField txtFieldModel = new JTextField("Amalthea Model Browse path");
+
+ private void initialize() throws IOException {
+ this.frame = new JFrame();
+ this.frame.setBounds(100, 100, 864, 272);
+ this.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ this.frame.getContentPane().setLayout(null);
+
+ final JRadioButton cdgenFreeRTOS = new JRadioButton("FreeRTOS");
+ cdgenFreeRTOS.setBounds(40, 80, 145, 25);
+ this.frame.getContentPane().add(cdgenFreeRTOS);
+
+ final JRadioButton cdgenPosix = new JRadioButton("POSIX");
+ cdgenPosix.setBounds(40, 110, 145, 25);
+ this.frame.getContentPane().add(cdgenPosix);
+
+ final JRadioButton cdgenCustom = new JRadioButton("RMS(Rate Monotonic)");
+ cdgenCustom.setBounds(40, 140, 210, 25);
+ this.frame.getContentPane().add(cdgenCustom);
+
+ final ButtonGroup group = new ButtonGroup();
+ group.add(cdgenFreeRTOS);
+ group.add(cdgenPosix);
+ group.add(cdgenCustom);
+
+ final JRadioButton cdgenCooperative = new JRadioButton("Cooperative");
+ cdgenCooperative.setBounds(190, 80, 145, 25);
+ this.frame.getContentPane().add(cdgenCooperative);
+
+ final JRadioButton cdgenPreemptive = new JRadioButton("Preemptive");
+ cdgenPreemptive.setBounds(190, 110, 145, 25);
+ this.frame.getContentPane().add(cdgenPreemptive);
+
+ final ButtonGroup group3 = new ButtonGroup();
+ group3.add(cdgenCooperative);
+ group3.add(cdgenPreemptive);
+ final BufferedImage browseButtonIconScheduler = ImageIO.read(new File("./cdgen.graphics/browse.png"));
+ final JButton btnBrowseScheduler = new JButton(new ImageIcon(browseButtonIconScheduler));
+ final JFileChooser fc = new JFileChooser();
+ btnBrowseScheduler.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(final ActionEvent e) {
+ if (e.getSource() == btnBrowseScheduler) {
+ final int returnVal = fc.showOpenDialog(checkFileCreateGUI.this.frame);
+ if (returnVal == JFileChooser.APPROVE_OPTION) {
+ final File file = fc.getCurrentDirectory();
+ checkFileCreateGUI.this.fileInput = file.getPath();
+ checkFileCreateGUI.this.txtFieldScheduler.setText(checkFileCreateGUI.this.fileInput);
+ }
+ }
+ }
+ });
+ btnBrowseScheduler.setBounds(673, 75, 120, 35);
+ this.frame.getContentPane().add(btnBrowseScheduler);
+
+ final BufferedImage browseButtonIconModel = ImageIO.read(new File("./cdgen.graphics/browse.png"));
+ final JButton btnBrowseModel = new JButton(new ImageIcon(browseButtonIconModel));
+ final JFileChooser fc1 = new JFileChooser();
+ // final String fileInput1;
+ btnBrowseModel.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(final ActionEvent e) {
+
+ if (e.getSource() == btnBrowseModel) {
+ final FileNameExtensionFilter filter = new FileNameExtensionFilter("*.amxmi", "*.amxmi");
+ fc1.addChoosableFileFilter(filter);
+ fc1.setMultiSelectionEnabled(false);
+ // fc1.showOpenDialog(null);
+ final int returnVal = fc1.showOpenDialog(checkFileCreateGUI.this.frame);
+ // System.out.println("\nRam " +
+ // fileUtil.getFileExtension(fc1.getSelectedFile()));
+ // if(fileUtil.getFileExtension(fc1.getSelectedFile())=="amxmi"){
+ if (returnVal == JFileChooser.APPROVE_OPTION) {
+ final File file = fc1.getSelectedFile();
+ checkFileCreateGUI.this.fileInput1 = file.getPath();
+ checkFileCreateGUI.this.txtFieldModel.setText(checkFileCreateGUI.this.fileInput1);
+ }
+ /*
+ * }else { JOptionPane.showMessageDialog(null,
+ * " choose a file with \".amxmi\" file ","Wrong model file"
+ * ,2); }
+ */
+ }
+ }
+ });
+ btnBrowseModel.setBounds(673, 130, 120, 35);
+ this.frame.getContentPane().add(btnBrowseModel);
+ final BufferedImage helpButtonIcon = ImageIO.read(new File("./cdgen.graphics/help.png"));
+ final JButton btnHelp = new JButton(new ImageIcon(helpButtonIcon));
+ btnHelp.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(final ActionEvent e) {
+ try {
+ Desktop.getDesktop()
+ .browse(new URL("https://cdgendoc.readthedocs.io/en/latest/GUI_Layout.html").toURI());
+ }
+ catch (final Exception e1) {
+ e1.printStackTrace();
+ }
+ }
+ });
+ btnHelp.setBounds(800, 10, 30, 30);
+ this.frame.getContentPane().add(btnHelp);
+
+ this.txtFieldScheduler.setBounds(370, 80, 280, 25);
+ this.frame.getContentPane().add(this.txtFieldScheduler);
+
+
+ this.txtFieldModel.setBounds(370, 140, 280, 25);
+ this.frame.getContentPane().add(this.txtFieldModel);
+
+
+ final BufferedImage startButtonIcon = ImageIO.read(new File("./cdgen.graphics/start.png"));
+ final JButton btnSelectTasks = new JButton(new ImageIcon(startButtonIcon));
+ btnSelectTasks.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(final ActionEvent e) {
+ // File inputFile = new File();
+ // String inputFile = Constants.DEMOCARMULTI;
+ final Amalthea model = AmaltheaLoader
+ .loadFromFileNamed(checkFileCreateGUI.this.txtFieldModel.getText());
+ System.out.println("\n Model file " + checkFileCreateGUI.this.txtFieldModel.getText());
+ if (model == null) {
+ System.out.println("Error: No model loaded!");
+ return;
+ }
+ final String path = System.getProperty("user.dir");
+ String timestamp = new Timestamp(System.currentTimeMillis()).toString();
+ timestamp = timestamp.substring(0, timestamp.length() - 6).replaceAll(":", "");
+ timestamp = timestamp.replaceAll("-", "_");
+ timestamp = timestamp.replaceAll(" ", "_");
+ final File theDir = new File(timestamp);
+ if (!theDir.exists()) {
+ System.out.println("creating directory: " + theDir.getName());
+ boolean result = false;
+ try {
+ theDir.mkdir();
+ result = true;
+ }
+ catch (final SecurityException se) {
+ System.exit(0);
+ }
+ if (result) {
+ System.out.println("DIR created");
+ }
+ }
+ final String path1 = path + "/" + timestamp;
+ final String path2 = checkFileCreateGUI.this.txtFieldScheduler.getText();
+ int configFlag = 0xFFFF;
+ /*
+ *
+ * 0X1000 ==> FreeRTOS 0X2000 ==> POSIX 0x3000 ==> RMS
+ *
+ * 0X0010 ==> Cooperative 0X0020 ==> Preemptive
+ *
+ * FreeRTOS == Cooperative == 0x1X10 FreeRTOS == Preemptive ==
+ * 0x1X20 POSIX == Cooperative == 0x2X10 POSIX == Preemptive ==
+ * 0x2X20 RMS == Cooperative == 0x3X10 RMS == Preemptive ==
+ * 0x3X20 X == Don't care
+ */
+
+ System.out.println("############################################################");
+ if (cdgenFreeRTOS.isSelected() & cdgenPreemptive.isSelected()) {
+ configFlag = 0x1320;
+ System.out.println("\t\tFreeRTOS\tPreemptive");
+ System.out.println("############################################################");
+ new checkFreeRTOSConfiguration(model, path1, path2, configFlag);
+ }
+ else if (cdgenFreeRTOS.isSelected() & cdgenCooperative.isSelected()) {
+ configFlag = 0x1310;
+ System.out.println("\t\tFreeRTOS\tCooperative");
+ System.out.println("############################################################");
+ new checkFreeRTOSConfiguration(model, path1, path2, configFlag);
+ }
+ else if (cdgenPosix.isSelected() & cdgenPreemptive.isSelected()) {
+ configFlag = 0x2320;
+ System.out.println("\t\tPosix\tPreemptive");
+ System.out.println("############################################################");
+ new checkPOSIXConfiguration(model, path1, path2, configFlag);
+ }
+ else if (cdgenPosix.isSelected() & cdgenCooperative.isSelected()) {
+ configFlag = 0x2310;
+ System.out.println("\t\tPosix\tCooperative");
+ System.out.println("############################################################");
+ new checkPOSIXConfiguration(model, path1, path2, configFlag);
+ }
+ else if (cdgenCustom.isSelected() & cdgenPreemptive.isSelected()) {
+ configFlag = 0x3120;
+ System.out.println("\t\tRMS\tPreemptive");
+ System.out.println("############################################################");
+ new checkRMSConfiguration(model, path1, path2, configFlag);
+ }
+ else if (cdgenCustom.isSelected() & cdgenCooperative.isSelected()) {
+ configFlag = 0x3110;
+ System.out.println("\t\tRMS\tCooperative");
+ System.out.println("############################################################");
+ new checkRMSConfiguration(model, path1, path2, configFlag);
+ }
+ else {
+ System.out.println("Configuration Not Defined!");
+ }
+ }
+ });
+ btnSelectTasks.setBounds(190, 190, 120, 35);
+ this.frame.getContentPane().add(btnSelectTasks);
+ final BufferedImage closeButtonIcon = ImageIO.read(new File("./cdgen.graphics/close.png"));
+ final JButton btnClose = new JButton(new ImageIcon(closeButtonIcon));
+ btnClose.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(final ActionEvent e) {
+ System.exit(0);
+ }
+ });
+ btnClose.setBounds(370, 190, 120, 35);
+ this.frame.getContentPane().add(btnClose);
+ final JLabel lblAllTasks = new JLabel("OS Options");
+ lblAllTasks.setFont(new Font("Tahoma", Font.BOLD, 13));
+ lblAllTasks.setBounds(40, 55, 110, 16);
+ this.frame.getContentPane().add(lblAllTasks);
+
+ final JLabel lblModelSelection = new JLabel("Model selection");
+ lblModelSelection.setFont(new Font("Tahoma", Font.BOLD, 13));
+ lblModelSelection.setBounds(370, 110, 145, 25);
+ this.frame.getContentPane().add(lblModelSelection);
+
+ final JLabel lblSourcePath = new JLabel("Source Path");
+ lblSourcePath.setFont(new Font("Tahoma", Font.BOLD, 13));
+ lblSourcePath.setBounds(370, 50, 145, 25);
+ this.frame.getContentPane().add(lblSourcePath);
+
+ final JLabel lblResponsetime = new JLabel("Task Preemption");
+ lblResponsetime.setFont(new Font("Tahoma", Font.BOLD, 13));
+ lblResponsetime.setBounds(190, 55, 150, 16);
+ this.frame.getContentPane().add(lblResponsetime);
+
+ final JLabel lblPerformanceMetric = new JLabel("CDGen - Code Generator for APP4MC");
+ lblPerformanceMetric.setForeground(Color.ORANGE);
+ lblPerformanceMetric.setFont(new Font("Tahoma", Font.BOLD, 20));
+ lblPerformanceMetric.setBounds(27, 13, 450, 30);
+ this.frame.getContentPane().add(lblPerformanceMetric);
+
+ final JSeparator separator = new JSeparator();
+ separator.setBounds(12, 42, 822, 272);
+ this.frame.getContentPane().add(separator);
+ }
+}
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/checks/checkFreeRTOSConfiguration.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/checks/checkFreeRTOSConfiguration.java
new file mode 100644
index 0000000..28b8fc0
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/checks/checkFreeRTOSConfiguration.java
@@ -0,0 +1,124 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen.checks;
+
+import java.awt.Desktop;
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Paths;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.cdgen.FreeRTOSConfigFileCreation;
+import org.eclipse.app4mc.cdgen.LabelFileCreation;
+import org.eclipse.app4mc.cdgen.MainRMSFileCreation;
+import org.eclipse.app4mc.cdgen.MakeFileCreation;
+import org.eclipse.app4mc.cdgen.RunFileCreation;
+import org.eclipse.app4mc.cdgen.SharedLabelsFileCreation;
+import org.eclipse.app4mc.cdgen.TaskFileCreation;
+import org.eclipse.app4mc.cdgen.test.testTaskStructure;
+import org.eclipse.app4mc.cdgen.utils.fileUtil;
+
+
+/**
+ * Implementation of GUI Design and Action on Button Click.
+ *
+ */
+
+public class checkFreeRTOSConfiguration {
+ public checkFreeRTOSConfiguration(final Amalthea model, final String srcPath, final String headerPath,
+ final int configFlag) {
+ FreeRTOSConfiguration(model, srcPath, headerPath, configFlag);
+ }
+
+ public void FreeRTOSConfiguration(final Amalthea model, final String srcPath, final String headerPath,
+ final int configFlag) {
+ try {
+ // String path = System.getProperty("user.dir");
+ // create new file
+ final File l_SourceDirectory = new File(headerPath);
+ // array of files and directory
+ final String[] filesName = l_SourceDirectory.list();
+ // for each name in the path array
+ for (final String pathi : filesName) {
+ final File SourceFile = new File(l_SourceDirectory.toString() + "/" + pathi);
+ final File DestinationFile = new File(Paths.get(srcPath).toString() + "/" + pathi);
+ if (fileUtil.getFileExtension(SourceFile) == "c" || fileUtil.getFileExtension(SourceFile) == "h"
+ || fileUtil.getFileExtension(SourceFile) == "") {
+ com.google.common.io.Files.copy(SourceFile, DestinationFile);
+ }
+ }
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ try {
+ new MainRMSFileCreation(model, srcPath, configFlag);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ try {
+ new RunFileCreation(model, srcPath, headerPath, configFlag);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ try {
+ new MakeFileCreation(model, srcPath, configFlag);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ try {
+ new FreeRTOSConfigFileCreation(model, srcPath, configFlag);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ try {
+ new TaskFileCreation(model, srcPath, headerPath, configFlag);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ try {
+ new SharedLabelsFileCreation(model, srcPath);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ try {
+ new LabelFileCreation(model, srcPath);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ try {
+ new testTaskStructure(model, srcPath, configFlag);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ System.out.println("Generation completed, Check path " + srcPath);
+ // TODO: Set hyperlink for path
+ // System.out.println("<a href=\"http://www.google.com\">whatever</a>");
+ try {
+ Desktop.getDesktop().open(new File(srcPath));
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ System.exit(0);
+ }
+
+}
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/checks/checkPOSIXConfiguration.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/checks/checkPOSIXConfiguration.java
new file mode 100644
index 0000000..4bb4628
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/checks/checkPOSIXConfiguration.java
@@ -0,0 +1,106 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen.checks;
+
+import java.awt.Desktop;
+import java.io.File;
+import java.io.IOException;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.cdgen.FreeRTOSConfigFileCreation;
+import org.eclipse.app4mc.cdgen.LabelFileCreation;
+import org.eclipse.app4mc.cdgen.MainFileCreation;
+import org.eclipse.app4mc.cdgen.MakeFileCreation;
+import org.eclipse.app4mc.cdgen.RunFileCreation;
+import org.eclipse.app4mc.cdgen.TaskFileCreation;
+import org.eclipse.app4mc.cdgen.test.testTaskStructure;
+
+
+/**
+ * Implementation of GUI Design and Action on Button Click.
+ *
+ *
+ */
+
+public class checkPOSIXConfiguration {
+ public checkPOSIXConfiguration(final Amalthea model, final String srcPath, final String headerPath,
+ final int configFlag) {
+ POSIXConfiguration(model, srcPath, headerPath, configFlag);
+ }
+
+ public void POSIXConfiguration(final Amalthea model, final String srcPath, final String headerPath,
+ final int configFlag) {
+ try {
+ new MainFileCreation(model, srcPath, configFlag);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ try {
+ new RunFileCreation(model, srcPath, headerPath, configFlag);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ try {
+ new LabelFileCreation(model, srcPath);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ try {
+ new FreeRTOSConfigFileCreation(model, srcPath, configFlag);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ try {
+ new TaskFileCreation(model, srcPath, headerPath, configFlag);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ try {
+ new TaskFileCreation(model, srcPath, headerPath, configFlag);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ try {
+ new MakeFileCreation(model, srcPath, configFlag);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ try {
+ new testTaskStructure(model, srcPath, configFlag);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+
+
+ System.out.println("Generation completed, Check path " + srcPath);
+ // TODO: Set hyperlink for path
+ try {
+ Desktop.getDesktop().open(new File(srcPath));
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+
+ System.exit(0);
+
+ }
+
+}
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/checks/checkRMSConfiguration.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/checks/checkRMSConfiguration.java
new file mode 100644
index 0000000..85b3211
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/checks/checkRMSConfiguration.java
@@ -0,0 +1,144 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen.checks;
+
+import java.awt.Desktop;
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Paths;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.cdgen.ArmCodeFileCreation;
+import org.eclipse.app4mc.cdgen.FreeRTOSConfigFileCreation;
+import org.eclipse.app4mc.cdgen.LabelFileCreation;
+import org.eclipse.app4mc.cdgen.MainRMSFileCreation;
+import org.eclipse.app4mc.cdgen.MakeFileCreation;
+import org.eclipse.app4mc.cdgen.RunFileCreation;
+import org.eclipse.app4mc.cdgen.SharedLabelsFileCreation;
+import org.eclipse.app4mc.cdgen.TaskFileCreation;
+import org.eclipse.app4mc.cdgen.test.testTaskStructure;
+import org.eclipse.app4mc.cdgen.utils.fileUtil;
+
+/**
+ * Implementation of GUI Design and Action on Button Click.
+ *
+ *
+ */
+
+public class checkRMSConfiguration {
+
+
+ public checkRMSConfiguration(final Amalthea model, final String srcPath, final String headerPath,
+ final int configFlag) {
+ RMSConfiguration(model, srcPath, headerPath, configFlag);
+ }
+
+ public void RMSConfiguration(final Amalthea model, final String srcPath, final String headerPath,
+ final int configFlag) {
+ /*
+ * try { String path = System.getProperty("user.dir"); File
+ * l_SourceDirectory = null; if(0x3110 == (configFlag & 0xFFF0)) {
+ * l_SourceDirectory = new File(path + "/ref/rms_coop/"); }else
+ * if(0x3120 == (configFlag & 0xFFF0)){ l_SourceDirectory = new
+ * File(path + "/ref/freertos_preem/"); } String[] filesName =
+ * l_SourceDirectory.list(); for(String pathi:filesName) { File
+ * SourceFile = new File(l_SourceDirectory.toString() +"/" + pathi);
+ * File DestinationFile = new File(Paths.get(srcPath).toString() + "/" +
+ * pathi ); com.google.common.io.Files.copy(SourceFile , DestinationFile
+ * ); } } catch (IOException e1) { e1.printStackTrace(); }
+ */
+ try {
+ // String path = System.getProperty("user.dir");
+ // create new file
+ final File l_SourceDirectory = new File(headerPath);
+ // array of files and directory
+ final String[] filesName = l_SourceDirectory.list();
+ // for each name in the path array
+ for (final String pathi : filesName) {
+ final File SourceFile = new File(l_SourceDirectory.toString() + "/" + pathi);
+ final File DestinationFile = new File(Paths.get(srcPath).toString() + "/" + pathi);
+ if (fileUtil.getFileExtension(SourceFile) == "c" || fileUtil.getFileExtension(SourceFile) == "h"
+ || fileUtil.getFileExtension(SourceFile) == "") {
+ com.google.common.io.Files.copy(SourceFile, DestinationFile);
+ }
+ }
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ try {
+ new MainRMSFileCreation(model, srcPath, configFlag);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ try {
+ new RunFileCreation(model, srcPath, headerPath, configFlag);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ try {
+ new TaskFileCreation(model, srcPath, headerPath, configFlag);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ try {
+ new FreeRTOSConfigFileCreation(model, srcPath, configFlag);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ try {
+ new MakeFileCreation(model, srcPath, configFlag);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ try {
+ new SharedLabelsFileCreation(model, srcPath);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ try {
+ new LabelFileCreation(model, srcPath);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ try {
+ new ArmCodeFileCreation(model, srcPath, headerPath, configFlag);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ try {
+ new testTaskStructure(model, srcPath, configFlag);
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ System.out.println("Generation completed, Check path " + srcPath);
+ // TODO: Set hyperlink for path
+ try {
+ Desktop.getDesktop().open(new File(srcPath));
+ }
+ catch (final IOException e1) {
+ e1.printStackTrace();
+ }
+ System.exit(0);
+ }
+
+}
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testLabel.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testLabel.java
new file mode 100644
index 0000000..49a84a8
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testLabel.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen.test;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.amalthea.model.Label;
+import org.eclipse.app4mc.amalthea.model.Runnable;
+import org.eclipse.app4mc.amalthea.model.Task;
+import org.eclipse.app4mc.amalthea.model.util.SoftwareUtil;
+
+/**
+ * Implementation of testing Task, Runnable structure and Label types.
+ *
+ */
+
+public class testLabel
+
+{
+
+ public testLabel(final Amalthea Model, final String path1, final int k, final List<Task> taskmod)
+ throws IOException {
+ fileTestLabel(Model, path1, k, taskmod);
+ }
+
+ private void fileTestLabel(final Amalthea model2, final String path1, final int k, final List<Task> tasks)
+ throws IOException {
+ final String fname = path1 + File.separator + "label" + k + ".c";
+ // EList<Label> label = model2.getSwModel().getLabels();
+ final List<Label> label = new ArrayList<Label>();
+ for (final Task ta : tasks) {
+ label.addAll(SoftwareUtil.getAccessedLabelSet(ta, null));
+ }
+ final File f1 = new File(fname);
+ String[] words = null;
+ @SuppressWarnings("resource")
+ final FileReader fr = new FileReader(f1);
+ @SuppressWarnings("resource")
+ final BufferedReader br = new BufferedReader(fr);
+ String s;
+ final String input = "\tuint", input1 = "\t=\t";
+ int count = 0, count1 = 0;
+ int Counter = 0;
+ while ((s = br.readLine()) != null) {
+ words = s.split(" ");
+ for (final String word : words) {
+ if (word.contains(input)) {
+ count++;
+ }
+ if (word.equals(input1)) {
+ count1++;
+ }
+ }
+ }
+ for (final Task task : tasks) {
+ List<Runnable> runnablesOfTask = SoftwareUtil.getRunnableList(task, null);
+ final ArrayList<Label> labellist1 = new ArrayList<Label>();
+ runnablesOfTask = runnablesOfTask.stream().distinct().collect(Collectors.toList());
+ for (final Runnable run : runnablesOfTask) {
+ final Set<Label> labellist = SoftwareUtil.getAccessedLabelSet(run, null);
+ labellist1.addAll(labellist);
+ }
+ final List<Label> listWithoutDuplicates2 = labellist1.stream().distinct().collect(Collectors.toList());
+ Counter = Counter + listWithoutDuplicates2.size();
+ }
+ if (count != label.size() + Counter) {
+ System.out.println((label.size() + Counter) + "\tLabel : ERROR: Label2 count\t" + count);
+ }
+ else {
+ System.out.println("Label : Label2 count OK");
+ }
+ if (count1 != label.size()) {
+ System.out.println(label.size() + "\tLabel : ERROR: Label count\t" + count1);
+ }
+ else {
+ System.out.println("Label : Label1 count OK");
+ }
+ fr.close();
+ }
+
+}
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testMain.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testMain.java
new file mode 100644
index 0000000..5b860a2
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testMain.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen.test;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.List;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.amalthea.model.Task;
+
+/**
+ * Implementation of testing Task, Runnable structure and Label types.
+ *
+ */
+
+public class testMain
+
+{
+
+ public testMain(final Amalthea model, final String path1, final int configFlag, final int k,
+ final List<Task> taskmod) throws IOException {
+ if ((0x1000 == (configFlag & 0xF000))) {
+ fileTestmainTask(model, path1, k, taskmod);
+ }
+ else if (0x2000 == (configFlag & 0xF000)) {
+ fileTestmainTaskPthread(model, path1, k, taskmod);
+ }
+ }
+
+ private void fileTestmainTaskPthread(final Amalthea model2, final String path1, final int k,
+ final List<Task> taskmod) throws IOException {
+ final String fname = path1 + File.separator + "main" + k + ".c";
+ // EList<Task> taskmod = model2.getSwModel().getTasks();
+ final File f1 = new File(fname);
+ String[] words = null;
+ @SuppressWarnings("resource")
+ final FileReader fr = new FileReader(f1);
+ @SuppressWarnings("resource")
+ final BufferedReader br = new BufferedReader(fr);
+ String s;
+ final String input = "\t\tpthread_create";
+ int count = 0;
+ while ((s = br.readLine()) != null) {
+ words = s.split(" ");
+ for (final String word : words) {
+ if (word.equals(input)) {
+ count++;
+ }
+ }
+ }
+ if (count != taskmod.size()) {
+ System.out.println(taskmod.size() + "\tMain" + k + " : ERROR: Task create count\t" + count);
+ }
+ else {
+ System.out.println("Main" + k + " : Task create count OK");
+ }
+ fr.close();
+ }
+
+ private void fileTestmainTask(final Amalthea model2, final String path1, final int k, final List<Task> taskmod)
+ throws IOException {
+ final String fname = path1 + File.separator + "main" + k + ".c";
+ // EList<Task> taskmod = model2.getSwModel().getTasks();
+ final File f1 = new File(fname);
+ String[] words = null;
+ @SuppressWarnings("resource")
+ final FileReader fr = new FileReader(f1);
+ @SuppressWarnings("resource")
+ final BufferedReader br = new BufferedReader(fr);
+ String s;
+ final String input = "\txTaskCreate(";
+ final String input2 = "configMINIMAL_STACK_SIZE,";
+ int count = 0, count1 = 0;
+ while ((s = br.readLine()) != null) {
+ words = s.split(" ");
+ for (final String word : words) {
+ if (word.equals(input)) {
+ count++;
+ }
+ else if (word.equals(input2)) {
+ count1++;
+ }
+ }
+ }
+ if (count != taskmod.size()) {
+ System.out.println(taskmod.size() + "\tMain" + k + " : ERROR: Task create count\t" + count);
+ }
+ else {
+ System.out.println("Main" + k + " : Task create count OK");
+ }
+ if (count1 != taskmod.size()) {
+ System.out.println(taskmod.size() + "\tMain" + k + " : ERROR: Task Priorities count\t" + count1);
+ }
+ else {
+ System.out.println("Main" + k + " : Task Priorities count OK");
+ }
+ fr.close();
+ }
+}
+
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testRunnable.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testRunnable.java
new file mode 100644
index 0000000..a30d9a2
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testRunnable.java
@@ -0,0 +1,146 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen.test;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.amalthea.model.Runnable;
+import org.eclipse.app4mc.amalthea.model.Task;
+import org.eclipse.app4mc.amalthea.model.util.SoftwareUtil;
+
+/**
+ * Implementation of testing Task, Runnable structure and Label types.
+ *
+ */
+
+
+public class testRunnable {
+ public testRunnable(final Amalthea Model, final String path1, final int configFlag, final int k,
+ final List<Task> tasks) throws IOException {
+ this.model = Model;
+ if (0x2000 != (configFlag & 0xF000)) {
+ fileTestRunnable(this.model, path1, k, tasks);
+ }
+ else {
+ fileTestRunnablePthread(this.model, path1, k, tasks);
+ }
+ }
+
+
+ private void fileTestRunnable(final Amalthea model2, final String path1, final int k, final List<Task> tasks)
+ throws IOException {
+ final String fname = path1 + File.separator + "runnable" + k + ".c";
+ final List<Runnable> runmod = new ArrayList<Runnable>();
+ for (final Task ta : tasks) {
+ runmod.addAll(SoftwareUtil.getRunnableList(ta, null));
+ }
+
+ final File f1 = new File(fname);
+ String[] words = null;
+ @SuppressWarnings("resource")
+ final FileReader fr = new FileReader(f1);
+ @SuppressWarnings("resource")
+ final BufferedReader br = new BufferedReader(fr);
+ String s;
+ final String input1 = "void";
+ int count1 = 0;
+ while ((s = br.readLine()) != null) {
+ words = s.split(" ");
+ for (final String word : words) {
+ /*
+ * if (word.equals(input)) { count++; }
+ */
+ if (word.equals(input1)) {
+ count1++;
+ }
+ }
+ }
+ /*
+ * if (count != runmod.size()) { System.out.println(runmod.size() +
+ * "\tRunnable"+k+" : ERROR: Runnable size Not matching count\t" +
+ * count); } else {
+ * System.out.println("Runnable : Number of Runnables OK"); }
+ */
+ if (count1 == runmod.size()) {
+ System.out.println("Runnable" + k + " : Number of Runnables void OK");
+ }
+ else {
+
+ System.out.println(
+ runmod.size() + "\tRunnable" + k + " : ERROR: Runnable VOID Not matching count\t" + count1);
+ }
+ fr.close();
+ }
+
+ private void fileTestRunnablePthread(final Amalthea model2, final String path1, final int k, final List<Task> tasks)
+ throws IOException {
+ final String fname = path1 + File.separator + "runnable" + k + ".c";
+ final List<Runnable> runmod = new ArrayList<Runnable>();
+ for (final Task ta : tasks) {
+ runmod.addAll(SoftwareUtil.getRunnableList(ta, null));
+ }
+
+ final File f1 = new File(fname);
+ String[] words = null;
+ @SuppressWarnings("resource")
+ final FileReader fr = new FileReader(f1);
+ @SuppressWarnings("resource")
+ final BufferedReader br = new BufferedReader(fr);
+ String s;
+ boolean flagRun = false;
+ final String input = "\tRunnable", input1 = "void";
+ int count = 0, count1 = 0;
+ while ((s = br.readLine()) != null) {
+ words = s.split(" ");
+ for (final String word : words) {
+ if (flagRun) {
+ // System.out.println("\nRunnable "+word);
+ flagRun = false;
+ }
+ if (word.equals(input)) {
+ count++;
+ }
+ if (word.equals(input1)) {
+ count1++;
+ flagRun = true;
+ }
+ }
+ }
+ if (count != runmod.size()) {
+ System.out
+ .println(runmod.size() + "\tRunnable" + k + " : ERROR: Runnable size Not matching count\t" + count);
+ }
+ else {
+ System.out.println("Runnable" + k + " : Number of Runnables OK");
+ }
+ if (count1 != runmod.size()) {
+ System.out.println(
+ runmod.size() + "\tRunnable" + k + " : ERROR: Runnable VOID Not matching count\t" + count1);
+ }
+ else {
+ System.out.println("Runnable" + k + " : Number of Runnables void OK");
+ }
+ fr.close();
+ }
+
+
+ final private Amalthea model;
+
+
+}
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testTaskDef.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testTaskDef.java
new file mode 100644
index 0000000..f8710e2
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testTaskDef.java
@@ -0,0 +1,238 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen.test;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.List;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.amalthea.model.Task;
+
+/**
+ * Implementation of testing Task, Runnable structure and Label types.
+ *
+ */
+
+public class testTaskDef
+
+{
+
+
+ public testTaskDef(final Amalthea model, final String path1, final int configFlag, final int k,
+ final List<Task> tasks) throws IOException {
+
+ if (0x2000 != (configFlag & 0xF000)) {
+ fileTestTask(model, path1, configFlag, k, tasks);
+ }
+ else {
+ fileTestTaskPthread(model, path1, configFlag, k, tasks);
+ }
+ }
+
+ /**
+ *
+ * @param model2
+ * @param path1
+ * @param configFlag
+ * @throws IOException
+ */
+ private void fileTestTask(final Amalthea model2, final String path1, final int configFlag, final int k,
+ final List<Task> taskmod) throws IOException {
+ final String fname = path1 + File.separator + "taskDef" + k + ".c";
+ // EList<Task> taskmod = model2.getSwModel().getTasks();
+ final File f1 = new File(fname);
+ String[] words = null;
+ @SuppressWarnings("resource")
+ final FileReader fr = new FileReader(f1);
+ @SuppressWarnings("resource")
+ final BufferedReader br = new BufferedReader(fr);
+ String s;
+ // TODO
+ final String input = "Cout", input2 = "Cin", input3 = "\t\t\ttaskENTER_CRITICAL",
+ input4 = "\t\t\ttaskEXIT_CRITICAL";
+ final String input5 = "\tvoid";
+ int count = 0, count1 = 0, count2 = 0, count3 = 0, count4 = 0;
+ while ((s = br.readLine()) != null) {
+ words = s.split(" ");
+ for (final String word : words) {
+ if (word.equals(input)) {
+ count++;
+ }
+ else if (word.equals(input2)) {
+ count1++;
+ }
+ else if (word.equals(input3)) {
+ count2++;
+ }
+ else if (word.equals(input4)) {
+ count3++;
+ }
+ else if (word.equals(input5)) {
+ count4++;
+ }
+ }
+ }
+ if (0x1000 == (configFlag & 0xF000)) {
+ if (count != taskmod.size()) {
+ System.out.println(taskmod.size() + "\tTask" + k + " : ERROR: Cout count\t" + count);
+ }
+ else {
+ System.out.println("Task" + k + " : Cout count OK");
+ }
+ if (count1 != taskmod.size()) {
+ System.out.println(taskmod.size() + "\tTask" + k + " : ERROR: Cin count\t" + count1);
+ }
+ else {
+ System.out.println("Task" + k + " : Cin count OK");
+ }
+ // if(0x0020 == (configFlag & 0x00F0)) {
+ if (count2 != taskmod.size() * 2) {
+ System.out.println(taskmod.size() * 2 + "\tTask" + k + " : ERROR: taskENTER_CRITICAL\t" + count2);
+ }
+ else {
+ System.out.println("Task" + k + " : taskENTER_CRITICAL OK");
+ }
+ /*
+ * else { if (count2 != taskmod.size()) {
+ * System.out.println(taskmod.size() * 2 +
+ * "\tTask"+k+" : ERROR: taskENTER_CRITICAL\t" + count2); } else {
+ * System.out.println("Task"+k+" : taskENTER_CRITICAL OK"); } }
+ */
+ // if(0x0020 == (configFlag & 0x00F0)) {
+ if (count3 != taskmod.size() * 2) {
+ System.out.println(taskmod.size() * 2 + "\tTask" + k + " : ERROR: taskEXIT_CRITICAL\t" + count2);
+ }
+ else {
+ System.out.println("Task" + k + " : taskEXIT_CRITICAL OK");
+ }
+ /*
+ * else { if (count3 != taskmod.size()) {
+ * System.out.println(taskmod.size()+
+ * "\tTask"+k+" : ERROR: taskEXIT_CRITICAL\t" + count2); } else {
+ * System.out.println("Task"+k+" : taskEXIT_CRITICAL OK"); }
+ */
+
+ if (count3 != count2) {
+ System.out.println(taskmod.size() + "\tTask" + k + " : ERROR: taskEXIT_CRITICAL\t" + count2);
+ }
+ else {
+ System.out.println("Task" + k + " : taskEXIT_CRITICAL and taskENTER_CRITICAL OK");
+ }
+ }
+ if (count4 != taskmod.size()) {
+ System.out.println(taskmod.size() + "\tTask" + k + " : ERROR: taskEXIT_CRITICAL\t" + count4);
+ }
+ else {
+ System.out.println("Task" + k + " : Task Count OK");
+ }
+
+ fr.close();
+ }
+
+ private void fileTestTaskPthread(final Amalthea model2, final String path1, final int configFlag, final int k,
+ final List<Task> taskmod) throws IOException {
+ final String fname = path1 + File.separator + "taskDef" + k + ".c";
+ // EList<Task> taskmod = model2.getSwModel().getTasks();
+ final File f1 = new File(fname);
+ String[] words = null;
+ @SuppressWarnings("resource")
+ final FileReader fr = new FileReader(f1);
+ @SuppressWarnings("resource")
+ final BufferedReader br = new BufferedReader(fr);
+ String s;
+ final String input1 = "Cout", input2 = "Cin", input3 = "\t\t\tsuspendMe", input4 = "\t\t\tresumeMe",
+ input5 = "void";
+ int count1 = 0, count2 = 0, count3 = 0, count4 = 0, count5 = 0;
+ while ((s = br.readLine()) != null) {
+ words = s.split(" ");
+ for (final String word : words) {
+ if (word.equals(input1)) {
+ count1++;
+ }
+ else if (word.equals(input2)) {
+ count2++;
+ }
+ else if (word.equals(input3)) {
+ count3++;
+ }
+ else if (word.equals(input4)) {
+ count4++;
+ }
+ else if (word.equals(input5)) {
+ count5++;
+ }
+ }
+ }
+ if (0x3110 == (configFlag & 0xFFF0)) {
+ if (count1 != taskmod.size()) {
+ System.out.println(taskmod.size() + "\tTask" + k + " : ERROR: Cout count\t" + count1);
+ }
+ else {
+ System.out.println("Task" + k + " : Cout count OK");
+ }
+ if (count2 != taskmod.size()) {
+ System.out.println(taskmod.size() + "\tTask" + k + " : ERROR: Cin count\t" + count2);
+ }
+ else {
+ System.out.println("Task" + k + " : Cin count OK");
+ }
+
+ // if(0x0020 == (configFlag & 0x00F0)){
+ if (count3 != taskmod.size() * 2) {
+ System.out.println(taskmod.size() * 2 + "\tTask" + k + " : ERROR: suspendMe\t" + count3);
+ }
+ else {
+ System.out.println("Task" + k + " : suspendMe OK");
+ }
+ /*
+ * }else { if (count3 != taskmod.size()) {
+ * System.out.println(taskmod.size()+
+ * "\tTask"+k+" : ERROR: suspendMe\t" + count3); } else {
+ * System.out.println("Task"+k+" : suspendMe OK"); } }
+ */
+
+ // if(0x0020 == (configFlag & 0x00F0)) {
+ if (count4 != taskmod.size() * 2) {
+ System.out.println(taskmod.size() * 2 + "\tTask" + k + " : ERROR: resumeMe\t" + count4);
+ }
+ else {
+ System.out.println("Task" + k + " : resumeMe OK");
+ }
+ /*
+ * }else { if (count4 != taskmod.size()) {
+ * System.out.println(taskmod.size()+
+ * "\tTask"+k+" : ERROR: resumeMe\t" + count4); } else {
+ * System.out.println("Task"+k+" : resumeMe OK"); } }
+ */
+
+ if (count4 != count3) {
+ System.out.println(count4 + "\tTask" + k + " : ERROR: suspendMe \t" + count3);
+ }
+ else {
+ System.out.println("Task" + k + " : suspendMe and resumeMe OK");
+ }
+ if (count5 != taskmod.size()) {
+ System.out.println(taskmod.size() + "\tTask" + k + " : ERROR: taskEXIT_CRITICAL\t" + count5);
+ }
+ else {
+ System.out.println("Task" + k + " : Task Count OK");
+ }
+ }
+ fr.close();
+ }
+
+
+}
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testTaskStructure.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testTaskStructure.java
new file mode 100755
index 0000000..40199ab
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testTaskStructure.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen.test;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.amalthea.model.ProcessingUnit;
+import org.eclipse.app4mc.amalthea.model.SchedulerAllocation;
+import org.eclipse.app4mc.amalthea.model.Task;
+import org.eclipse.app4mc.amalthea.model.util.DeploymentUtil;
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * Implementation of testing Task, Runnable structure and Label types.
+ *
+ */
+
+public class testTaskStructure
+
+{
+ final private Amalthea model;
+
+ public testTaskStructure(final Amalthea Model, final String path1, final int configFlag) throws IOException {
+ this.model = Model;
+ System.out.println("############################################################");
+ System.out.println("\t\t\tTest Begins");
+ System.out.println("############################################################");
+ final EList<SchedulerAllocation> CoreNo = this.model.getMappingModel().getSchedulerAllocation();
+ int k = 0;
+ for (final SchedulerAllocation c : CoreNo) {
+ final ProcessingUnit pu = c.getResponsibility().get(0);
+ final Set<Task> task = DeploymentUtil.getTasksMappedToCore(pu, this.model);
+ final List<Task> tasks = new ArrayList<Task>(task);
+ new testRunnable(this.model, path1, configFlag, k, tasks);
+ new testTaskDef(this.model, path1, configFlag, k, tasks);
+ new testMain(this.model, path1, configFlag, k, tasks);
+ // new testLabel(model, path1, k, tasks);
+ k++;
+ }
+ System.out.println("############################################################");
+ System.out.println("\t\t\tTest Ends");
+ System.out.println("############################################################");
+ }
+}
+
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/utils/fileUtil.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/utils/fileUtil.java
new file mode 100755
index 0000000..5b0598b
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/utils/fileUtil.java
@@ -0,0 +1,290 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen.utils;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.amalthea.model.Label;
+import org.eclipse.app4mc.amalthea.model.PeriodicStimulus;
+import org.eclipse.app4mc.amalthea.model.ProcessingUnit;
+import org.eclipse.app4mc.amalthea.model.Stimulus;
+import org.eclipse.app4mc.amalthea.model.Task;
+import org.eclipse.app4mc.amalthea.model.Time;
+import org.eclipse.app4mc.amalthea.model.util.SoftwareUtil;
+import org.eclipse.app4mc.cdgen.LabelFileCreation;
+
+
+/**
+ * Implementation of Common API for CDGen.
+ *
+ */
+
+public class fileUtil {
+
+ @SuppressWarnings({ "null", "resource" })
+ public static void fileMainHeader(final File f) throws IOException {
+ FileWriter fr = null;
+ try {
+ fr = new FileWriter(f);
+ fr.write("/******************************************************************\n");
+ fr.write("******************************************************************\n");
+ fr.write("**************#####**####*****#####**######*###****##*************\n");
+ fr.write("*************##******#***##**##******##*****##*#***##*************\n");
+ fr.write("*************#*******#****#**#****##*######*##**#**##*************\n");
+ fr.write("*************##******#***##**##***##*##*****##***#*##*************\n");
+ fr.write("**************#####**####*****######*######*##****###*************\n");
+ fr.write("******************************************************************\n");
+ fr.write("******************************************************************\n");
+ fr.write("*Author : Ram Prasath Govindarajan\n");
+ fr.write("*Tool : CDGen_GSoC\n");
+ fr.write("*Version : V1.0.0\n");
+ }
+ catch (final IOException e) {
+ e.printStackTrace();
+ }
+
+ fr.close();
+ }
+
+ public static void FreeRTOSConfigFileHeader(final File f1) {
+ try {
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true);
+ fw.write("*Title : FreeRTOSConfig\n");
+ fw.write("*Description : Holds configuration for the FreeRTOS Software\n");
+ fw.write("******************************************************************\n");
+ fw.write("******************************************************************/\n\n\n");
+
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+
+ }
+
+
+ public static String getFileExtension(final File file) {
+ final String fileName = file.getName();
+ String fileExtension = null;
+ if (fileName.lastIndexOf(".") != -1 && fileName.lastIndexOf(".") != 0) {
+ fileExtension = fileName.substring(fileName.lastIndexOf(".") + 1);
+ // return fileName.substring(fileName.lastIndexOf(".") + 1);
+ }
+ return fileExtension;
+ }
+
+ public static String datatype(final String string) {
+ String type = null;
+ switch (string) {
+ case "8 bit":
+ type = "uint8_t";
+ break;
+ case "16 bit":
+ type = "uint16_t";
+ break;
+ case "32 bit":
+ type = "uint32_t";
+ break;
+ case "64 bit":
+ type = "uint64_t";
+ break;
+ default:
+ type = "int";
+ break;
+ }
+ return type;
+ }
+
+
+ public static String datatypeSize(final String string) {
+ String type = null;
+ switch (string) {
+ case "8 bit":
+ type = "8";
+ break;
+ case "16 bit":
+ type = "16";
+ break;
+ case "32 bit":
+ type = "32";
+ break;
+ case "64 bit":
+ type = "64";
+ break;
+ default:
+ type = "00";
+ break;
+ }
+ return type;
+ }
+
+ /**
+ * Shared Label definition and initialization structure.
+ *
+ * @param tasks
+ *
+ * @param file
+ * @param labellist
+ * @return
+ */
+ public static List<Label> CoreSpecificLabel(final Amalthea model, final List<Task> tasks) {
+ List<Label> SharedLabelList = new ArrayList<Label>();
+ for (final Task ta : tasks) {
+ SharedLabelList.addAll(SoftwareUtil.getReadLabelSet(ta, null));
+ }
+ SharedLabelList = SharedLabelList.stream().distinct().collect(Collectors.toList());
+ final List<Label> SharedLabelListSortCore = new ArrayList<Label>();
+ if (SharedLabelList.size() == 0) {
+ System.out.println("Shared Label size 0");
+ }
+ else {
+ // System.out.println("Shared Label size "+SharedLabelList.size());
+ final HashMap<Label, HashMap<Task, ProcessingUnit>> sharedLabelTaskMap = LabelFileCreation
+ .LabelTaskMap(model, SharedLabelList);
+ for (final Label share : SharedLabelList) {
+ final HashMap<Task, ProcessingUnit> TaskMap = sharedLabelTaskMap.get(share);
+ final Set<Task> taskList = TaskMap.keySet();
+ final Collection<ProcessingUnit> puList = TaskMap.values();
+ final List<ProcessingUnit> puListUnique = puList.stream().distinct().collect(Collectors.toList());
+ if (puListUnique.size() == 1 && taskList.size() > 1) {
+ SharedLabelListSortCore.add(share);
+ }
+ }
+ }
+ return SharedLabelListSortCore;
+ }
+
+ /**
+ * Shared Label definition and initialization structure.
+ *
+ * @param tasks
+ *
+ * @param file
+ * @param labellist
+ * @return
+ */
+ // public static List<Label> SharedLabelDeclarationHead(Amalthea model,
+ // List<Task> tasks) {
+ public static List<Label> SharedLabelDeclarationHead(final Amalthea model, final List<Task> tasks) {
+ final List<Label> SharedLabelList = LabelFileCreation.SharedLabelFinder(model);
+ final List<Label> SharedLabelListSortCore = new ArrayList<Label>();
+ final List<Label> SharedLabel = new ArrayList<Label>();
+ if (SharedLabelList.size() == 0) {
+ // System.out.println("Shared Label size 0");
+ }
+ else {
+ // System.out.println("Shared Label size "+SharedLabelList.size());
+ final HashMap<Label, HashMap<Task, ProcessingUnit>> sharedLabelTaskMap = LabelFileCreation
+ .LabelTaskMap(model, SharedLabelList);
+ for (final Label share : SharedLabelList) {
+ final HashMap<Task, ProcessingUnit> TaskMap = sharedLabelTaskMap.get(share);
+ final Collection<ProcessingUnit> puList = TaskMap.values();
+ final List<ProcessingUnit> puListUnique = puList.stream().distinct().collect(Collectors.toList());
+ if (puListUnique.size() > 1) {
+ SharedLabelListSortCore.add(share);
+ }
+ }
+ }
+
+ final HashMap<Label, String> SharedLabelTypeMap = new HashMap<Label, String>();
+ for (final Label share : SharedLabelListSortCore) {
+ SharedLabelTypeMap.put(share, share.getSize().toString());
+ }
+ final List<String> SharedTypeMapList = new ArrayList<>(
+ SharedLabelTypeMap.values().stream().distinct().collect(Collectors.toList()));
+ final List<Label> SharedLabelMapList = new ArrayList<Label>(SharedLabelTypeMap.keySet());
+ for (int k = 0; k < SharedTypeMapList.size(); k++) {
+ final String sh = SharedTypeMapList.get(k);
+ for (final Label s : SharedLabelMapList) {
+ final String ShTy = SharedLabelTypeMap.get(s);
+ if (sh.equals(ShTy)) {
+ SharedLabel.add(s);
+ }
+ }
+ }
+ return SharedLabel;
+ }
+
+
+ public static long intialisation(final String string) {
+ long init = 0;
+ switch (string) {
+ case "8 bit":
+ init = 255;
+ break;
+ case "16 bit":
+ init = 65535;
+ break;
+ // case "32 bit": init =4294967295; break;
+ // case "64 bit": init =18446744073709551615; break;
+ default:
+ init = 0000;
+ break;
+ }
+ return init;
+ }
+
+ public static void defineMain(final File f1) {
+ try {
+ final File fn = f1;
+ @SuppressWarnings("resource")
+ final FileWriter fw = new FileWriter(fn, true); // the true will
+ // append the new
+ // data
+ fw.write("#define DELAY_MULT 100");
+ fw.write("\n");
+ fw.close();
+ }
+ catch (final IOException ioe) {
+ System.err.println("IOException: " + ioe.getMessage());
+ }
+
+ }
+
+ public static Time getRecurrence(final Task t) {
+ final List<Stimulus> lStimuli = t.getStimuli();
+ for (final Stimulus s : lStimuli) {
+ if (s instanceof PeriodicStimulus) {
+ return ((PeriodicStimulus) s).getRecurrence();
+ }
+ System.out.println("ERR: Unsupported Stimulus in Task " + t + " -> " + s);
+ }
+ return null;
+ }
+
+ // This code is form stackoverflow https://stackoverflow.com/a/2581754
+ public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(final Map<K, V> map) {
+ final List<Entry<K, V>> list = new ArrayList<>(map.entrySet());
+ list.sort(Entry.comparingByValue());
+
+ final Map<K, V> result = new LinkedHashMap<>();
+ for (final Entry<K, V> entry : list) {
+ result.put(entry.getKey(), entry.getValue());
+ }
+ return result;
+ }
+}
diff --git a/eclipse-tools/emf-graphical-viewer/.gitignore b/eclipse-tools/emf-graphical-viewer/.gitignore
new file mode 100644
index 0000000..f1c734e
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/.gitignore
@@ -0,0 +1,5 @@
+.metadata/
+
+# Eclipse target directories
+bin/
+target/
diff --git a/eclipse-tools/emf-graphical-viewer/.mvn/extensions.xml b/eclipse-tools/emf-graphical-viewer/.mvn/extensions.xml
new file mode 100644
index 0000000..710a9ec
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/.mvn/extensions.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<extensions>
+ <extension>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-pomless</artifactId>
+ <version>1.6.0</version>
+ </extension>
+</extensions>
\ No newline at end of file
diff --git a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/.project b/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/.project
deleted file mode 100644
index c93b42d..0000000
--- a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/.project
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.app4mc.emfutils.extractor.build</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- </buildSpec>
- <natures>
- </natures>
-</projectDescription>
diff --git a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/META-INF/MANIFEST.MF b/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/META-INF/MANIFEST.MF
deleted file mode 100644
index a77fb88..0000000
--- a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,13 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: EMF Content Extractor Build
-Bundle-SymbolicName: org.eclipse.app4mc.emfutils.extractor.build;singleton:=true
-Bundle-Version: 1.2.0
-Bundle-Activator: org.eclipse.app4mc.emfutils.content.extractor.Activator
-Require-Bundle: org.eclipse.ui
-Bundle-RequiredExecutionEnvironment: JavaSE-1.7,
- JavaSE-1.8
-Bundle-ActivationPolicy: lazy
-Bundle-ClassPath: .,
- lib/plantuml.8041.jar
-Bundle-Vendor: Eclipse APP4MC
diff --git a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/about.html b/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/about.html
deleted file mode 100644
index 164f781..0000000
--- a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!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 30, 2017</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 2.0 ("EPL"). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</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/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/epl-2.0.html b/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/epl-2.0.html
deleted file mode 100644
index 637a181..0000000
--- a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/epl-2.0.html
+++ /dev/null
@@ -1,300 +0,0 @@
-<!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" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Eclipse Public License - Version 2.0</title>
- <style type="text/css">
- body {
- margin: 1.5em 3em;
- }
- h1{
- font-size:1.5em;
- }
- h2{
- font-size:1em;
- margin-bottom:0.5em;
- margin-top:1em;
- }
- p {
- margin-top: 0.5em;
- margin-bottom: 0.5em;
- }
- ul, ol{
- list-style-type:none;
- }
- </style>
- </head>
- <body>
- <h1>Eclipse Public License - v 2.0</h1>
- <p>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.
- </p>
- <h2 id="definitions">1. DEFINITIONS</h2>
- <p>“Contribution” means:</p>
- <ul>
- <li>a) in the case of the initial Contributor, the initial content
- Distributed under this Agreement, and
- </li>
- <li>
- b) in the case of each subsequent Contributor:
- <ul>
- <li>i) changes to the Program, and</li>
- <li>ii) additions to the Program;</li>
- </ul>
- 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 changes or additions to the Program that
- are not Modified Works.
- </li>
- </ul>
- <p>“Contributor” means any person or entity that Distributes the Program.</p>
- <p>“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.
- </p>
- <p>“Program” means the Contributions Distributed in accordance with this
- Agreement.
- </p>
- <p>“Recipient” means anyone who receives the Program under this Agreement
- or any Secondary License (as applicable), including Contributors.
- </p>
- <p>“Derivative Works” shall mean any work, whether in Source Code or other
- form, that is based on (or derived from) the Program and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship.
- </p>
- <p>“Modified Works” shall mean any work in Source Code or other form that
- results from an addition to, deletion from, or modification of the
- contents of the Program, including, for purposes of clarity any new file
- in Source Code form that contains any contents of the Program. Modified
- Works shall not include works that contain only declarations, interfaces,
- types, classes, structures, or files of the Program solely in each case
- in order to link to, bind by name, or subclass the Program or Modified
- Works thereof.
- </p>
- <p>“Distribute” means the acts of a) distributing or b) making available
- in any manner that enables the transfer of a copy.
- </p>
- <p>“Source Code” means the form of a Program preferred for making
- modifications, including but not limited to software source code,
- documentation source, and configuration files.
- </p>
- <p>“Secondary License” means either the GNU General Public License,
- Version 2.0, or any later versions of that license, including any
- exceptions or additional permissions as identified by the initial
- Contributor.
- </p>
- <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
- <ul>
- <li>a) Subject to the terms of this Agreement, each Contributor hereby
- grants Recipient a non-exclusive, worldwide, royalty-free copyright
- license to reproduce, prepare Derivative Works of, publicly display,
- publicly perform, Distribute and sublicense the Contribution of such
- Contributor, if any, and such Derivative Works.
- </li>
- <li>b) Subject to the terms of this Agreement, each Contributor hereby
- grants Recipient a non-exclusive, worldwide, 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 or other 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.
- </li>
- <li>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.
- </li>
- <li>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.
- </li>
- <li>e) Notwithstanding the terms of any Secondary License, no Contributor
- makes additional grants to any Recipient (other than those set forth
- in this Agreement) as a result of such Recipient's receipt of the
- Program under the terms of a Secondary License (if permitted under
- the terms of Section 3).
- </li>
- </ul>
- <h2 id="requirements">3. REQUIREMENTS</h2>
- <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
- <ul>
- <li>a) the Program must also be made available as Source Code, in
- accordance with section 3.2, and the Contributor must accompany
- the Program with a statement that the Source Code for the Program
- is available under this Agreement, and informs Recipients how to
- obtain it in a reasonable manner on or through a medium customarily
- used for software exchange; and
- </li>
- <li>
- b) the Contributor may Distribute the Program under a license
- different than this Agreement, provided that such license:
- <ul>
- <li>i) effectively disclaims on behalf of all other 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;
- </li>
- <li>ii) effectively excludes on behalf of all other Contributors all
- liability for damages, including direct, indirect, special, incidental
- and consequential damages, such as lost profits;
- </li>
- <li>iii) does not attempt to limit or alter the recipients' rights in the
- Source Code under section 3.2; and
- </li>
- <li>iv) requires any subsequent distribution of the Program by any party
- to be under a license that satisfies the requirements of this section 3.
- </li>
- </ul>
- </li>
- </ul>
- <p>3.2 When the Program is Distributed as Source Code:</p>
- <ul>
- <li>a) it must be made available under this Agreement, or if the Program (i)
- is combined with other material in a separate file or files made available
- under a Secondary License, and (ii) the initial Contributor attached to
- the Source Code the notice described in Exhibit A of this Agreement,
- then the Program may be made available under the terms of such
- Secondary Licenses, and
- </li>
- <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
- </ul>
- <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
- attribution notices, disclaimers of warranty, or limitations of liability
- (‘notices’) contained within the Program from any copy of the Program which
- they Distribute, provided that Contributors may add their own appropriate
- notices.
- </p>
- <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
- <p>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.
- </p>
- <p>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.
- </p>
- <h2 id="warranty">5. NO WARRANTY</h2>
- <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
- BY APPLICABLE LAW, 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.
- </p>
- <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
- <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
- BY APPLICABLE LAW, 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.
- </p>
- <h2 id="general">7. GENERAL</h2>
- <p>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.
- </p>
- <p>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.
- </p>
- <p>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.
- </p>
- <p>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.
- </p>
- <p>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. Nothing in this Agreement is intended
- to be enforceable by any entity that is not a Contributor or Recipient.
- No third-party beneficiary rights are created under this Agreement.
- </p>
- <h2 id="exhibit-a">Exhibit A – Form of Secondary Licenses Notice</h2>
- <p>“This Source Code may also be made available under the following
- Secondary Licenses when the conditions for such availability set forth
- in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
- version(s), and exceptions or additional permissions here}.”
- </p>
- <blockquote>
- <p>Simply including a copy of this Agreement, including this Exhibit A
- is not sufficient to license the Source Code under Secondary Licenses.
- </p>
- <p>If it is not possible or desirable to put the notice in a particular file,
- then You may include the notice in a location (such as a LICENSE file in a
- relevant directory) where a recipient would be likely to look for
- such a notice.
- </p>
- <p>You may add additional accurate notices of copyright ownership.</p>
- </blockquote>
- </body>
-</html>
\ No newline at end of file
diff --git a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/pom.xml b/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/pom.xml
deleted file mode 100644
index 9fed643..0000000
--- a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/pom.xml
+++ /dev/null
@@ -1,196 +0,0 @@
-<project>
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.eclipse.app4mc.emfutils.content.extractor</groupId>
- <artifactId>org.eclipse.app4mc.emfutils.extractor.build</artifactId>
- <version>0.8.3</version>
- <packaging>pom</packaging>
- <name>Ecore Reference Extractor</name>
-
- <properties>
- <tycho.version>0.22.0</tycho.version>
- <jacoco.version>0.7.4.201502262128</jacoco.version>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <luna-repo.url>http://download.eclipse.org/releases/luna</luna-repo.url>
- <amalthea-repo.url>http://download.eclipse.org/app4mc/updatesites/releases/0.8.3/</amalthea-repo.url>
-
- <franca-repo.url>http://franca.github.io/franca/update_site/releases/0.9.1/</franca-repo.url>
- <orbit-repo.url>http://download.eclipse.org/tools/orbit/downloads/drops/R20150124073747/repository/</orbit-repo.url>
- <ease-repo-url>http://download.eclipse.org/ease/update/release</ease-repo-url>
- <sphinx-repo-url>http://download.eclipse.org/sphinx/updates/interim</sphinx-repo-url>
- </properties>
- <repositories>
-<repository>
- <id>amalthea</id>
- <url>${amalthea-repo.url}</url>
- <layout>p2</layout>
- </repository>
- <repository>
- <id>franca</id>
- <url>${franca-repo.url}</url>
- <layout>p2</layout>
- </repository>
- <repository>
- <id>luna</id>
- <url>${luna-repo.url}</url>
- <layout>p2</layout>
- </repository>
- <repository>
- <id>orbit</id>
- <url>${orbit-repo.url}</url>
- <layout>p2</layout>
- </repository>
- <repository>
- <id>ease</id>
- <url>${ease-repo-url}</url>
- <layout>p2</layout>
- </repository>
- <repository>
- <id>sphinx</id>
- <url>${sphinx-repo-url}</url>
- <layout>p2</layout>
- </repository>
- </repositories>
-
-
- <modules>
- <!-- Plugins -->
- <module>../../plugins/org.eclipse.app4mc.emfutils.content.extractor</module>
- <module>../../plugins/org.eclipse.app4mc.emfutils.metamodelviewer</module>
- <module>../../plugins/org.eclipse.app4mc.emfutils.resourceset.mapper</module>
-
- <module>../../plugins/net.sourceforge.plantuml</module>
-
- <!-- Tests -->
-
- <!-- Features -->
- <module>../../features/org.eclipse.app4mc.emfutils.content.extractor.feature</module>
- <module>../../features/org.eclipse.app4mc.emfutils.metamodelviewer.feature</module>
-
- <!-- P2Repo -->
- <module>../org.eclipse.app4mc.emfutils.p2repo</module>
-
- </modules>
-
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.eclipse.tycho</groupId>
- <artifactId>tycho-maven-plugin</artifactId>
- <version>${tycho.version}</version>
- <extensions>true</extensions>
- <configuration>
-
- </configuration>
- </plugin>
-
- <plugin>
- <groupId>org.eclipse.tycho</groupId>
- <artifactId>tycho-compiler-plugin</artifactId>
- <version>${tycho.version}</version>
- <configuration>
- <verbose>true</verbose>
- <source>1.8</source>
- <target>1.8</target>
- </configuration>
- </plugin>
-
- <plugin>
- <groupId>org.eclipse.tycho</groupId>
- <artifactId>target-platform-configuration</artifactId>
- <version>${tycho.version}</version>
- <configuration>
- <dependency-resolution>
- <extraRequirements>
- <requirement>
- <type>eclipse-plugin</type>
- <id>org.hamcrest</id>
- <versionRange>0.0.0</versionRange>
- </requirement>
- </extraRequirements>
- </dependency-resolution>
- <environments>
- <environment>
- <os>linux</os>
- <ws>gtk</ws>
- <arch>x86</arch>
- </environment>
- <environment>
- <os>linux</os>
- <ws>gtk</ws>
- <arch>x86_64</arch>
- </environment>
- <environment>
- <os>win32</os>
- <ws>win32</ws>
- <arch>x86</arch>
- </environment>
- <environment>
- <os>win32</os>
- <ws>win32</ws>
- <arch>x86_64</arch>
- </environment>
- <environment>
- <os>macosx</os>
- <ws>cocoa</ws>
- <arch>x86_64</arch>
- </environment>
- </environments>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.eclipse.tycho</groupId>
- <artifactId>tycho-surefire-plugin</artifactId>
- <version>${tycho.version}</version>
- <configuration>
- <!-- argLine>${tycho.testArgLine}</argLine> -->
- <forkMode>never</forkMode>
- <includes>
- <include>**/*Test.*</include>
- </includes>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.jacoco</groupId>
- <artifactId>jacoco-maven-plugin</artifactId>
- <version>0.7.4.201502262128</version>
- <configuration>
- <excludes>
-
- </excludes>
- </configuration>
- <executions>
- <!-- Prepares the property pointing to the JaCoCo runtime agent which
- is passed as VM argument when Maven the Surefire plugin is executed. -->
- <execution>
- <id>pre-unit-test</id>
- <goals>
- <goal>prepare-agent</goal>
- </goals>
- <configuration>
- <!-- Sets the path to the file which contains the execution data. -->
- <destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile>
- </configuration>
- </execution>
- <!-- Ensures that the code coverage report for unit tests is created
- after unit tests have been run. -->
- <execution>
- <id>post-unit-test</id>
- <phase>verify</phase>
- <goals>
- <goal>report</goal>
- </goals>
- <configuration>
- <!-- Sets the path to the file which contains the execution data. -->
- <dataFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</dataFile>
- <!-- Sets the output directory for the code coverage report. -->
- <outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/category.xml b/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/category.xml
deleted file mode 100644
index 661b7f4..0000000
--- a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/category.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site>
- <feature url="features/org.eclipse.app4mc.emfutils.metamodelviewer.feature_0.8.3.jar" id="org.eclipse.app4mc.emfutils.metamodelviewer.feature" version="0.8.3">
- <category name="Ecore Tools"/>
- </feature>
- <feature url="features/org.eclipse.app4mc.emfutils.content.extractor.feature_0.8.3.jar" id="org.eclipse.app4mc.emfutils.content.extractor.feature" version="0.8.3">
- <category name="Ecore Tools"/>
- </feature>
- <category-def name="Ecore Tools" label="org.eclipse.app4mc.emfutils.content.extractor"/>
-</site>
diff --git a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/pom.xml b/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/pom.xml
deleted file mode 100644
index 973db9b..0000000
--- a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/pom.xml
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <relativePath>../org.eclipse.app4mc.emfutils.extractor.build</relativePath>
- <groupId>org.eclipse.app4mc.emfutils.content.extractor</groupId>
- <artifactId>org.eclipse.app4mc.emfutils.extractor.build</artifactId>
- <version>0.8.3</version>
- </parent>
-
- <artifactId>org.eclipse.app4mc.emfutils.p2repo</artifactId>
- <packaging>eclipse-repository</packaging>
-
- <properties>
- <org.jboss.tools.tycho-plugins.version>0.22.0</org.jboss.tools.tycho-plugins.version>
- </properties>
-
- <pluginRepositories>
- <pluginRepository>
- <id>jboss-public-repository-group</id>
- <name>JBoss Public Repository Group</name>
- <url>http://repository.jboss.org/nexus/content/groups/public/</url>
- </pluginRepository>
-
- <pluginRepository>
- <id>jboss-snapshots-repository</id>
- <name>JBoss Snapshots Repository</name>
- <url>https://repository.jboss.org/nexus/content/repositories/snapshots/</url>
- </pluginRepository>
- </pluginRepositories>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.eclipse.tycho</groupId>
- <artifactId>tycho-p2-repository-plugin</artifactId>
- <version>${tycho.version}</version>
-
- <configuration>
- <compress/>
- </configuration>
- </plugin>
-
-
- <plugin>
- <groupId>org.jboss.tools.tycho-plugins</groupId>
- <artifactId>repository-utils</artifactId>
- <version>${org.jboss.tools.tycho-plugins.version}</version>
-
- <executions>
- <execution>
- <id>generate-facade</id>
- <phase>package</phase>
-
- <goals>
- <goal>generate-repository-facade</goal>
- </goals>
-
- <configuration>
- <siteTemplateFolder>siteTemplate</siteTemplateFolder>
-
- <!-- Symbols are used while expanding index.html template -->
- <symbols>
- <update.site.name>${project.parent.name}</update.site.name>
- <target.eclipse.version>4.3.2</target.eclipse.version>
- </symbols>
-
- <associateSites>
- <!-- site>http://hudson.eclipse.org/hudson/job/damos-master/lastSuccessfulBuild/artifact/update-site</site>
- <site>http://download.eclipse.org/modeling/emf/emf/updates/releases</site>
- <site>http://download.eclipse.org/modeling/emf/compare/updates/releases</site>
- <site>http://download.eclipse.org/rmf/updates</site>
- <site>http://download.eclipse.org/sphinx/updates/interim</site>
- <site>http://download.eclipse.org/modeling/tmf/xtext/updates/composite/releases</site>
- <site>http://franca.github.io/franca/update_site/releases</site>
- <site>http://updates.yakindu.org/sct/kepler/releases</site>
-
- <site>http://download.eclipse.org/sphinx/updates/interim</site-->
- </associateSites>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/site.xml b/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/site.xml
deleted file mode 100644
index 806f343..0000000
--- a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/site.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site>
- <feature url="features/org.eclipse.app4mc.emfutils.content.extractor.feature_0.8.3.201704071342.jar" id="org.eclipse.app4mc.emfutils.content.extractor.feature" version="0.8.3.201704071342">
- <category name="Ecore Tools"/>
- </feature>
- <feature url="features/org.eclipse.app4mc.emfutils.metamodelviewer.feature_0.8.3.201704071342.jar" id="org.eclipse.app4mc.emfutils.metamodelviewer.feature" version="0.8.3.201704071342">
- <category name="Ecore Tools"/>
- </feature>
- <category-def name="Ecore Tools" label="Ecore Tools"/>
-</site>
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/.gitignore b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/.gitignore
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/.gitignore
rename to eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/.gitignore
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/.project b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/.project
similarity index 83%
rename from eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/.project
rename to eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/.project
index 2b681c4..30a42d9 100644
--- a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/.project
+++ b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/.project
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>org.eclipse.app4mc.emfutils.metamodelviewer.feature</name>
+ <name>org.eclipse.app4mc.emf.metamodelviewers</name>
<comment></comment>
<projects>
</projects>
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/about.html b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/about.html
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/about.html
rename to eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/about.html
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/build.properties b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/build.properties
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/build.properties
rename to eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/build.properties
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/epl-2.0.html b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/epl-2.0.html
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/epl-2.0.html
rename to eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/epl-2.0.html
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/feature.xml b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/feature.xml
new file mode 100644
index 0000000..d4d985d
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/feature.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.app4mc.emf.metamodelviewers"
+ label="APP4MC EMF MetaModel Viewers"
+ version="0.9.8.qualifier"
+ provider-name="Eclipse APP4MC"
+ license-feature="org.eclipse.license"
+ license-feature-version="2.0.2.qualifier">
+
+ <description url="https://projects.eclipse.org/projects/technology.app4mc">
+ APP4MC EMF MetaModel Viewers
+ </description>
+
+ <copyright url="https://projects.eclipse.org/projects/technology.app4mc">
+ (c) Copyright Robert Bosch GmbH. 2017-2020.
+All rights reserved.
+ </copyright>
+
+ <requires>
+ <import plugin="org.eclipse.core.runtime"/>
+ <import plugin="org.eclipse.sphinx.emf"/>
+ <import plugin="org.eclipse.ui"/>
+ </requires>
+
+ <plugin
+ id="org.eclipse.app4mc.emf.metamodelviewer"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/.gitignore b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/.gitignore
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/.gitignore
rename to eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/.gitignore
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/.project b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/.project
similarity index 83%
copy from eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/.project
copy to eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/.project
index 2b681c4..921ceb6 100644
--- a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/.project
+++ b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/.project
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>org.eclipse.app4mc.emfutils.metamodelviewer.feature</name>
+ <name>org.eclipse.app4mc.emf.viewers.graphical</name>
<comment></comment>
<projects>
</projects>
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/about.html b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/about.html
similarity index 100%
copy from eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/about.html
copy to eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/about.html
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/build.properties b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/build.properties
similarity index 100%
copy from eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/build.properties
copy to eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/build.properties
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/epl-2.0.html b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/epl-2.0.html
similarity index 100%
copy from eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/epl-2.0.html
copy to eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/epl-2.0.html
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/feature.xml b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/feature.xml
new file mode 100644
index 0000000..f9d3655
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/feature.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.app4mc.emf.viewers.graphical"
+ label="APP4MC EMF Graphical Viewers"
+ version="0.9.8.qualifier"
+ provider-name="Eclipse APP4MC"
+ license-feature="org.eclipse.license"
+ license-feature-version="2.0.2.qualifier">
+
+ <description url="https://projects.eclipse.org/projects/technology.app4mc">
+ APP4MC EMF Graphical Viewers
+ </description>
+
+ <copyright url="https://projects.eclipse.org/projects/technology.app4mc">
+ (c) Copyright Robert Bosch GmbH. 2017-2020.
+All rights reserved.
+ </copyright>
+
+ <includes
+ id="org.eclipse.app4mc.emf.metamodelviewers"
+ version="0.0.0"/>
+
+ <requires>
+ <import plugin="org.eclipse.core.runtime"/>
+ <import plugin="org.eclipse.emf.ecore"/>
+ <import plugin="org.eclipse.emf.ecore.xmi"/>
+ <import plugin="org.eclipse.sphinx.emf"/>
+ <import plugin="org.eclipse.sphinx.emf.editors"/>
+ <import plugin="org.eclipse.sphinx.emf.editors.forms"/>
+ <import plugin="org.eclipse.ui"/>
+ <import plugin="org.eclipse.ui.browser"/>
+ <import feature="net.sourceforge.plantuml.ecore.feature" version="1.1.24"/>
+ <import feature="net.sourceforge.plantuml.feature" version="1.1.24"/>
+ <import feature="net.sourceforge.plantuml.lib.feature" version="1.2019.11"/>
+ </requires>
+
+ <plugin
+ id="org.eclipse.app4mc.emf.viewer.plantuml"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/.project b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/.project
deleted file mode 100644
index b090637..0000000
--- a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.app4mc.emfutils.content.extractor.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/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/feature.xml b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/feature.xml
deleted file mode 100644
index 92e1e33..0000000
--- a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/feature.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature id="org.eclipse.app4mc.emfutils.content.extractor.feature" label="AMALTHEA Graphical Tools" provider-name="Eclipse APP4MC" version="0.8.3">
- <copyright url="http://www.example.com/copyright">
- [Enter Copyright Description here.]
- </copyright>
- <description url="http://www.example.com/description">
- [Enter Feature Description here.]
- </description>
- <includes id="org.eclipse.app4mc.emfutils.metamodelviewer.feature" version="0.0.0"/>
- <license url="http://www.example.com/license">
- [Enter License Description here.]
- </license>
- <plugin download-size="0" id="net.sourceforge.plantuml" install-size="0" version="0.0.0"/>
- <plugin download-size="0" id="org.eclipse.app4mc.emfutils.content.extractor" install-size="0" unpack="false" version="0.0.0"/>
- <requires>
- <import plugin="org.eclipse.core.runtime"/>
- <import plugin="org.eclipse.emf.ecore"/>
- <import plugin="org.eclipse.emf.ecore.xmi"/>
- <import plugin="org.eclipse.sphinx.emf"/>
- <import plugin="org.eclipse.sphinx.emf.editors"/>
- <import plugin="org.eclipse.sphinx.emf.editors.forms"/>
- <import plugin="org.eclipse.ui"/>
- <import plugin="org.eclipse.ui.browser"/>
- </requires>
-</feature>
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/pom.xml b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/pom.xml
deleted file mode 100644
index 19ab779..0000000
--- a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/pom.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <relativePath>../../build/org.eclipse.app4mc.emfutils.extractor.build</relativePath>
- <groupId>org.eclipse.app4mc.emfutils.content.extractor</groupId>
- <artifactId>org.eclipse.app4mc.emfutils.extractor.build</artifactId>
- <version>0.8.3</version>
- </parent>
-
- <artifactId>org.eclipse.app4mc.emfutils.content.extractor.feature</artifactId>
- <packaging>eclipse-feature</packaging>
-
-</project>
\ No newline at end of file
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/about.html b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/about.html
deleted file mode 100644
index 164f781..0000000
--- a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!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 30, 2017</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 2.0 ("EPL"). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</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/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/build.properties b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/build.properties
deleted file mode 100644
index 1690c70..0000000
--- a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/build.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-# *******************************************************************************
-# Copyright (c) 2017 - 2018 Robert Bosch GmbH and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# Contributors:
-# Robert Bosch GmbH - initial API and implementation
-#
-# *******************************************************************************
-bin.includes = feature.xml,\
- epl-2.0.html,\
- about.html
-src.includes = about.html,\
- epl-2.0.html
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/epl-2.0.html b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/epl-2.0.html
deleted file mode 100644
index 637a181..0000000
--- a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/epl-2.0.html
+++ /dev/null
@@ -1,300 +0,0 @@
-<!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" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Eclipse Public License - Version 2.0</title>
- <style type="text/css">
- body {
- margin: 1.5em 3em;
- }
- h1{
- font-size:1.5em;
- }
- h2{
- font-size:1em;
- margin-bottom:0.5em;
- margin-top:1em;
- }
- p {
- margin-top: 0.5em;
- margin-bottom: 0.5em;
- }
- ul, ol{
- list-style-type:none;
- }
- </style>
- </head>
- <body>
- <h1>Eclipse Public License - v 2.0</h1>
- <p>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.
- </p>
- <h2 id="definitions">1. DEFINITIONS</h2>
- <p>“Contribution” means:</p>
- <ul>
- <li>a) in the case of the initial Contributor, the initial content
- Distributed under this Agreement, and
- </li>
- <li>
- b) in the case of each subsequent Contributor:
- <ul>
- <li>i) changes to the Program, and</li>
- <li>ii) additions to the Program;</li>
- </ul>
- 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 changes or additions to the Program that
- are not Modified Works.
- </li>
- </ul>
- <p>“Contributor” means any person or entity that Distributes the Program.</p>
- <p>“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.
- </p>
- <p>“Program” means the Contributions Distributed in accordance with this
- Agreement.
- </p>
- <p>“Recipient” means anyone who receives the Program under this Agreement
- or any Secondary License (as applicable), including Contributors.
- </p>
- <p>“Derivative Works” shall mean any work, whether in Source Code or other
- form, that is based on (or derived from) the Program and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship.
- </p>
- <p>“Modified Works” shall mean any work in Source Code or other form that
- results from an addition to, deletion from, or modification of the
- contents of the Program, including, for purposes of clarity any new file
- in Source Code form that contains any contents of the Program. Modified
- Works shall not include works that contain only declarations, interfaces,
- types, classes, structures, or files of the Program solely in each case
- in order to link to, bind by name, or subclass the Program or Modified
- Works thereof.
- </p>
- <p>“Distribute” means the acts of a) distributing or b) making available
- in any manner that enables the transfer of a copy.
- </p>
- <p>“Source Code” means the form of a Program preferred for making
- modifications, including but not limited to software source code,
- documentation source, and configuration files.
- </p>
- <p>“Secondary License” means either the GNU General Public License,
- Version 2.0, or any later versions of that license, including any
- exceptions or additional permissions as identified by the initial
- Contributor.
- </p>
- <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
- <ul>
- <li>a) Subject to the terms of this Agreement, each Contributor hereby
- grants Recipient a non-exclusive, worldwide, royalty-free copyright
- license to reproduce, prepare Derivative Works of, publicly display,
- publicly perform, Distribute and sublicense the Contribution of such
- Contributor, if any, and such Derivative Works.
- </li>
- <li>b) Subject to the terms of this Agreement, each Contributor hereby
- grants Recipient a non-exclusive, worldwide, 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 or other 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.
- </li>
- <li>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.
- </li>
- <li>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.
- </li>
- <li>e) Notwithstanding the terms of any Secondary License, no Contributor
- makes additional grants to any Recipient (other than those set forth
- in this Agreement) as a result of such Recipient's receipt of the
- Program under the terms of a Secondary License (if permitted under
- the terms of Section 3).
- </li>
- </ul>
- <h2 id="requirements">3. REQUIREMENTS</h2>
- <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
- <ul>
- <li>a) the Program must also be made available as Source Code, in
- accordance with section 3.2, and the Contributor must accompany
- the Program with a statement that the Source Code for the Program
- is available under this Agreement, and informs Recipients how to
- obtain it in a reasonable manner on or through a medium customarily
- used for software exchange; and
- </li>
- <li>
- b) the Contributor may Distribute the Program under a license
- different than this Agreement, provided that such license:
- <ul>
- <li>i) effectively disclaims on behalf of all other 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;
- </li>
- <li>ii) effectively excludes on behalf of all other Contributors all
- liability for damages, including direct, indirect, special, incidental
- and consequential damages, such as lost profits;
- </li>
- <li>iii) does not attempt to limit or alter the recipients' rights in the
- Source Code under section 3.2; and
- </li>
- <li>iv) requires any subsequent distribution of the Program by any party
- to be under a license that satisfies the requirements of this section 3.
- </li>
- </ul>
- </li>
- </ul>
- <p>3.2 When the Program is Distributed as Source Code:</p>
- <ul>
- <li>a) it must be made available under this Agreement, or if the Program (i)
- is combined with other material in a separate file or files made available
- under a Secondary License, and (ii) the initial Contributor attached to
- the Source Code the notice described in Exhibit A of this Agreement,
- then the Program may be made available under the terms of such
- Secondary Licenses, and
- </li>
- <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
- </ul>
- <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
- attribution notices, disclaimers of warranty, or limitations of liability
- (‘notices’) contained within the Program from any copy of the Program which
- they Distribute, provided that Contributors may add their own appropriate
- notices.
- </p>
- <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
- <p>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.
- </p>
- <p>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.
- </p>
- <h2 id="warranty">5. NO WARRANTY</h2>
- <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
- BY APPLICABLE LAW, 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.
- </p>
- <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
- <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
- BY APPLICABLE LAW, 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.
- </p>
- <h2 id="general">7. GENERAL</h2>
- <p>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.
- </p>
- <p>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.
- </p>
- <p>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.
- </p>
- <p>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.
- </p>
- <p>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. Nothing in this Agreement is intended
- to be enforceable by any entity that is not a Contributor or Recipient.
- No third-party beneficiary rights are created under this Agreement.
- </p>
- <h2 id="exhibit-a">Exhibit A – Form of Secondary Licenses Notice</h2>
- <p>“This Source Code may also be made available under the following
- Secondary Licenses when the conditions for such availability set forth
- in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
- version(s), and exceptions or additional permissions here}.”
- </p>
- <blockquote>
- <p>Simply including a copy of this Agreement, including this Exhibit A
- is not sufficient to license the Source Code under Secondary Licenses.
- </p>
- <p>If it is not possible or desirable to put the notice in a particular file,
- then You may include the notice in a location (such as a LICENSE file in a
- relevant directory) where a recipient would be likely to look for
- such a notice.
- </p>
- <p>You may add additional accurate notices of copyright ownership.</p>
- </blockquote>
- </body>
-</html>
\ No newline at end of file
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/feature.xml b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/feature.xml
deleted file mode 100644
index e6a90b8..0000000
--- a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/feature.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature id="org.eclipse.app4mc.emfutils.metamodelviewer.feature" label="AMALTHEA MetaModel Viewer" provider-name="Eclipse APP4MC" version="0.8.3">
- <copyright url="http://www.example.com/copyright">
- [Enter Copyright Description here.]
- </copyright>
- <description url="http://www.example.com/description">
- [Enter Feature Description here.]
- </description>
- <license url="http://www.example.com/license">
- [Enter License Description here.]
- </license>
- <plugin download-size="0" id="org.eclipse.app4mc.emfutils.metamodelviewer" install-size="0" unpack="false" version="0.0.0"/>
- <requires>
- <import plugin="org.eclipse.core.runtime"/>
- <import plugin="org.eclipse.sphinx.emf"/>
- <import plugin="org.eclipse.ui"/>
- </requires>
-</feature>
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/pom.xml b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/pom.xml
deleted file mode 100644
index 0dd477c..0000000
--- a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/pom.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <relativePath>../../build/org.eclipse.app4mc.emfutils.extractor.build</relativePath>
- <groupId>org.eclipse.app4mc.emfutils.content.extractor</groupId>
- <artifactId>org.eclipse.app4mc.emfutils.extractor.build</artifactId>
- <version>0.8.3</version>
- </parent>
-
- <artifactId>org.eclipse.app4mc.emfutils.metamodelviewer.feature</artifactId>
- <packaging>eclipse-feature</packaging>
-
-</project>
\ No newline at end of file
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.classpath b/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.classpath
deleted file mode 100644
index 3cd64d4..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry exported="true" kind="lib" path="lib/plantuml-2018.8.jar"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.gitignore b/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.gitignore
deleted file mode 100644
index 09e3bc9..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/bin/
-/target/
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/META-INF/MANIFEST.MF b/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/META-INF/MANIFEST.MF
deleted file mode 100644
index 19c6390..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,152 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Plantuml
-Bundle-SymbolicName: net.sourceforge.plantuml
-Bundle-Version: 8000.0.0.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Bundle-ClassPath: lib/plantuml-2018.8.jar
-Export-Package: gen.lib.cdt,
- gen.lib.cgraph,
- gen.lib.circogen,
- gen.lib.common,
- gen.lib.dotgen,
- gen.lib.fdpgen,
- gen.lib.gvc,
- gen.lib.label,
- gen.lib.ortho,
- gen.lib.pack,
- gen.lib.pathplan,
- gen.lib.xdot,
- gen.plugin.core,
- gen.plugin.dot_layout,
- h,
- net.sourceforge.plantuml,
- net.sourceforge.plantuml.activitydiagram,
- net.sourceforge.plantuml.activitydiagram.command,
- net.sourceforge.plantuml.activitydiagram3,
- net.sourceforge.plantuml.activitydiagram3.command,
- net.sourceforge.plantuml.activitydiagram3.ftile,
- net.sourceforge.plantuml.activitydiagram3.ftile.vcompact,
- net.sourceforge.plantuml.activitydiagram3.ftile.vcompact.cond,
- net.sourceforge.plantuml.activitydiagram3.ftile.vertical,
- net.sourceforge.plantuml.anim,
- net.sourceforge.plantuml.ant,
- net.sourceforge.plantuml.api,
- net.sourceforge.plantuml.api.mda.option2,
- net.sourceforge.plantuml.api.mda.option3,
- net.sourceforge.plantuml.asciiart,
- net.sourceforge.plantuml.bpm,
- net.sourceforge.plantuml.braille,
- net.sourceforge.plantuml.brotli,
- net.sourceforge.plantuml.classdiagram,
- net.sourceforge.plantuml.classdiagram.command,
- net.sourceforge.plantuml.code,
- net.sourceforge.plantuml.command,
- net.sourceforge.plantuml.command.note,
- net.sourceforge.plantuml.command.note.sequence,
- net.sourceforge.plantuml.command.regex,
- net.sourceforge.plantuml.compositediagram,
- net.sourceforge.plantuml.compositediagram.command,
- net.sourceforge.plantuml.core,
- net.sourceforge.plantuml.creole,
- net.sourceforge.plantuml.cucadiagram,
- net.sourceforge.plantuml.cucadiagram.dot,
- net.sourceforge.plantuml.cucadiagram.entity,
- net.sourceforge.plantuml.cute,
- net.sourceforge.plantuml.dedication,
- net.sourceforge.plantuml.definition,
- net.sourceforge.plantuml.descdiagram,
- net.sourceforge.plantuml.descdiagram.command,
- net.sourceforge.plantuml.directdot,
- net.sourceforge.plantuml.donors,
- net.sourceforge.plantuml.eggs,
- net.sourceforge.plantuml.eps,
- net.sourceforge.plantuml.flashcode,
- net.sourceforge.plantuml.flowdiagram,
- net.sourceforge.plantuml.font,
- net.sourceforge.plantuml.ftp,
- net.sourceforge.plantuml.fun,
- net.sourceforge.plantuml.geom,
- net.sourceforge.plantuml.geom.kinetic,
- net.sourceforge.plantuml.golem,
- net.sourceforge.plantuml.graph,
- net.sourceforge.plantuml.graph2,
- net.sourceforge.plantuml.graphic,
- net.sourceforge.plantuml.graphic.color,
- net.sourceforge.plantuml.hector,
- net.sourceforge.plantuml.hector2,
- net.sourceforge.plantuml.hector2.continuity,
- net.sourceforge.plantuml.hector2.graphic,
- net.sourceforge.plantuml.hector2.layering,
- net.sourceforge.plantuml.hector2.mpos,
- net.sourceforge.plantuml.html,
- net.sourceforge.plantuml.jdot,
- net.sourceforge.plantuml.jungle,
- net.sourceforge.plantuml.math,
- net.sourceforge.plantuml.mda,
- net.sourceforge.plantuml.mjpeg,
- net.sourceforge.plantuml.objectdiagram,
- net.sourceforge.plantuml.objectdiagram.command,
- net.sourceforge.plantuml.openiconic,
- net.sourceforge.plantuml.openiconic.data,
- net.sourceforge.plantuml.oregon,
- net.sourceforge.plantuml.pdf,
- net.sourceforge.plantuml.png,
- net.sourceforge.plantuml.posimo,
- net.sourceforge.plantuml.postit,
- net.sourceforge.plantuml.preproc,
- net.sourceforge.plantuml.printskin,
- net.sourceforge.plantuml.project,
- net.sourceforge.plantuml.project.command,
- net.sourceforge.plantuml.project.graphic,
- net.sourceforge.plantuml.project2,
- net.sourceforge.plantuml.project2.command,
- net.sourceforge.plantuml.project3,
- net.sourceforge.plantuml.real,
- net.sourceforge.plantuml.salt,
- net.sourceforge.plantuml.salt.element,
- net.sourceforge.plantuml.salt.factory,
- net.sourceforge.plantuml.sequencediagram,
- net.sourceforge.plantuml.sequencediagram.command,
- net.sourceforge.plantuml.sequencediagram.graphic,
- net.sourceforge.plantuml.sequencediagram.puma,
- net.sourceforge.plantuml.sequencediagram.teoz,
- net.sourceforge.plantuml.skin,
- net.sourceforge.plantuml.skin.bluemodern,
- net.sourceforge.plantuml.skin.rose,
- net.sourceforge.plantuml.statediagram,
- net.sourceforge.plantuml.statediagram.command,
- net.sourceforge.plantuml.stats,
- net.sourceforge.plantuml.stats.api,
- net.sourceforge.plantuml.suggest,
- net.sourceforge.plantuml.svek,
- net.sourceforge.plantuml.svek.extremity,
- net.sourceforge.plantuml.svek.image,
- net.sourceforge.plantuml.svg,
- net.sourceforge.plantuml.swing,
- net.sourceforge.plantuml.syntax,
- net.sourceforge.plantuml.telnet,
- net.sourceforge.plantuml.tikz,
- net.sourceforge.plantuml.timingdiagram,
- net.sourceforge.plantuml.ugraphic,
- net.sourceforge.plantuml.ugraphic.arc,
- net.sourceforge.plantuml.ugraphic.crossing,
- net.sourceforge.plantuml.ugraphic.eps,
- net.sourceforge.plantuml.ugraphic.g2d,
- net.sourceforge.plantuml.ugraphic.hand,
- net.sourceforge.plantuml.ugraphic.html5,
- net.sourceforge.plantuml.ugraphic.sprite,
- net.sourceforge.plantuml.ugraphic.svg,
- net.sourceforge.plantuml.ugraphic.tikz,
- net.sourceforge.plantuml.ugraphic.txt,
- net.sourceforge.plantuml.ugraphic.visio,
- net.sourceforge.plantuml.utils,
- net.sourceforge.plantuml.version,
- net.sourceforge.plantuml.vizjs,
- net.sourceforge.plantuml.xmi,
- net.sourceforge.plantuml.xmlsc,
- net.sourceforge.plantuml.zopfli,
- smetana.core,
- smetana.core.amiga,
- smetana.core.debug
-Automatic-Module-Name: net.sourceforge.plantuml
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/build.properties b/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/build.properties
deleted file mode 100644
index dc20abe..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/build.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-# *******************************************************************************
-# Copyright (c) 2017 - 2018 Robert Bosch GmbH and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# Contributors:
-# Robert Bosch GmbH - initial API and implementation
-#
-# *******************************************************************************
-bin.includes = META-INF/,\
- lib-src/,\
- lib/plantuml-2018.8.jar
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/lib-src/README.txt b/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/lib-src/README.txt
deleted file mode 100644
index 6416959..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/lib-src/README.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-Goto http://plantuml.sourceforge.net/ for product info
-
-CQ clearance as a part of eclipse IPZilla (CQ 8178): https://dev.eclipse.org/ipzilla/show_bug.cgi?id=8178
-
-Downloaded jar from : http://sourceforge.net/projects/plantuml/files/plantuml-jar-epl-8000.zip/download
-
-Downloaded sources from : https://dev.eclipse.org/ipzilla/attachment.cgi?id=11627
\ No newline at end of file
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/lib-src/plantuml-sources-epl-8000.zip b/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/lib-src/plantuml-sources-epl-8000.zip
deleted file mode 100644
index 69db480..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/lib-src/plantuml-sources-epl-8000.zip
+++ /dev/null
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/lib/plantuml-2018.8.jar b/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/lib/plantuml-2018.8.jar
deleted file mode 100644
index 7f4bde6..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/lib/plantuml-2018.8.jar
+++ /dev/null
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/license/license.txt b/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/license/license.txt
deleted file mode 100644
index 47adaf9..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/license/license.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-========================================================================
-PlantUML : a free UML diagram generator
-========================================================================
-
-(C) Copyright 2009-2014, Arnaud Roques
-
-Project Info: http://plantuml.sourceforge.net
-
-PlantUML is free software; you can redistribute it and/or modify it
-under the terms of the Eclipse Public License.
-
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
-LICENSE ("AGREEMENT"). [Eclipse Public License - v 1.0]
-
-ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES
-RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-
-You may obtain a copy of the License at
-
-http://www.eclipse.org/legal/epl-v10.html
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-Note that images (whatever their format : PNG, SVG...) generated by running PlantUML
-are owned by the author of their corresponding sources code (that is, their
-textual description in PlantUML language). Those images are not covered by
-the Eclipse Public License.
-
-The generated images can then be used without any reference to the Eclipse Public License.
-It is not even necessary to stipulate that they have been generated with PlantUML,
-also this will be appreciate by PlantUML team.
-
-There is an exception : if the textual description in PlantUML language is also covered
-by a license (like the EPL), then the generated images are logically covered
-by the very same license.
-
-Icon provided by OpenIconic : https://useiconic.com/open/
-
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/pom.xml b/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/pom.xml
deleted file mode 100644
index f489eaa..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/pom.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
-<parent>
- <relativePath>../../build/org.eclipse.app4mc.emfutils.extractor.build</relativePath>
- <groupId>org.eclipse.app4mc.emfutils.content.extractor</groupId>
- <artifactId>org.eclipse.app4mc.emfutils.extractor.build</artifactId>
- <version>0.8.3</version>
- </parent>
-
- <artifactId>net.sourceforge.plantuml</artifactId>
- <packaging>eclipse-plugin</packaging>
- <version>8000.0.0-SNAPSHOT</version>
-
-</project>
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.classpath b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/.classpath
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.classpath
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/.classpath
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.gitignore b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/.gitignore
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.gitignore
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/.gitignore
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.project b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/.project
similarity index 91%
copy from eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.project
copy to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/.project
index 7614bd0..751de6a 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.project
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/.project
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>net.sourceforge.plantuml</name>
+ <name>org.eclipse.app4mc.emf.metamodelviewer</name>
<comment></comment>
<projects>
</projects>
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.settings/org.eclipse.jdt.core.prefs b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/.settings/org.eclipse.jdt.core.prefs
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.settings/org.eclipse.jdt.core.prefs
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/.settings/org.eclipse.jdt.core.prefs
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/META-INF/MANIFEST.MF b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..b54e4f2
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/META-INF/MANIFEST.MF
@@ -0,0 +1,20 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: APP4MC EMF Metamodel Viewer
+Bundle-SymbolicName: org.eclipse.app4mc.emf.metamodelviewer;singleton:=true
+Bundle-Version: 0.9.8.qualifier
+Bundle-Vendor: Eclipse APP4MC
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.sphinx.emf,
+ org.eclipse.jface;bundle-version="3.14.0",
+ org.eclipse.ui
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Activator: org.eclipse.app4mc.emf.metamodelviewer.base.Activator
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.app4mc.emf.metamodelviewer.base,
+ org.eclipse.app4mc.emf.metamodelviewer.dialogs,
+ org.eclipse.app4mc.emf.metamodelviewer.preferences,
+ org.eclipse.app4mc.emf.metamodelviewer.utils,
+ org.eclipse.app4mc.emf.metamodelviewer.views,
+ org.eclipse.app4mc.emf.metamodelviewer.views.providers
+Automatic-Module-Name: org.eclipse.app4mc.emf.metamodelviewer
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/about.html b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/about.html
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/about.html
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/about.html
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/build.properties b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/build.properties
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/build.properties
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/build.properties
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/epl-2.0.html b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/epl-2.0.html
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/epl-2.0.html
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/epl-2.0.html
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/abstract_class_obj.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/abstract_class_obj.png
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/abstract_class_obj.png
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/abstract_class_obj.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/attribute.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/attribute.png
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/attribute.png
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/attribute.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/attribute_containment.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/attribute_containment.png
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/attribute_containment.png
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/attribute_containment.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/attribute_reference.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/attribute_reference.png
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/attribute_reference.png
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/attribute_reference.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/class_obj.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/class_obj.png
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/class_obj.png
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/class_obj.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/container.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/container.gif
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/container.gif
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/container.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/downward_co.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/downward_co.gif
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/downward_co.gif
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/downward_co.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/enum_obj.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/enum_obj.png
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/enum_obj.png
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/enum_obj.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/hierarchy.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/hierarchy.gif
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/hierarchy.gif
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/hierarchy.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/interface_obj.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/interface_obj.png
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/interface_obj.png
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/interface_obj.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/prop_ps.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/prop_ps.gif
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/prop_ps.gif
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/prop_ps.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/register_ecores.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/register_ecores.png
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/register_ecores.png
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/register_ecores.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/sample.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/sample.gif
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/sample.gif
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/sample.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/super_co.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/super_co.gif
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/super_co.gif
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/super_co.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/type_obj.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/type_obj.gif
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/type_obj.gif
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/type_obj.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/plugin.xml b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/plugin.xml
new file mode 100644
index 0000000..8834d5d
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/plugin.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+ <extension
+ point="org.eclipse.ui.views">
+ <category
+ name="Meta Model Explorer"
+ id="org.eclipse.app4mc.emf.metamodelviewer.explorer.view.category">
+ </category>
+ <view
+ allowMultiple="true"
+ category="org.eclipse.app4mc.emf.metamodelviewer.explorer.view.category"
+ class="org.eclipse.app4mc.emf.metamodelviewer.views.MetaModelExplorerView"
+ icon="icons/sample.gif"
+ id="org.eclipse.app4mc.emf.metamodelviewer.views.MetaModel-ExplorerView"
+ name="Meta Model Explorer">
+ </view>
+ </extension>
+ <extension
+ point="org.eclipse.core.runtime.preferences">
+ <initializer
+ class="org.eclipse.app4mc.emf.metamodelviewer.preferences.PreferenceInitializer">
+ </initializer>
+ </extension>
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ class="org.eclipse.app4mc.emf.metamodelviewer.preferences.MetaModelViewerPreferencePage"
+ id="org.eclipse.app4mc.emf.metamodelviewer.page1"
+ name="Meta Model Viewer">
+ </page>
+ </extension>
+
+</plugin>
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/Activator.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/base/Activator.java
similarity index 86%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/Activator.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/base/Activator.java
index c86b924..952b3f5 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/Activator.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/base/Activator.java
@@ -1,6 +1,6 @@
- /**
+/**
********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -12,7 +12,8 @@
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
-package org.eclipse.app4mc.emfutils.content.extractor;
+
+package org.eclipse.app4mc.emf.metamodelviewer.base;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
@@ -23,7 +24,7 @@
public class Activator extends AbstractUIPlugin {
// The plug-in ID
- public static final String PLUGIN_ID = "org.eclipse.app4mc.emfutils.content.extractor"; //$NON-NLS-1$
+ public static final String PLUGIN_ID = "org.eclipse.app4mc.emf.metamodelviewer"; //$NON-NLS-1$
// The shared instance
private static Activator plugin;
@@ -36,7 +37,7 @@
/*
* (non-Javadoc)
- *
+ *
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
*/
@Override
@@ -47,7 +48,7 @@
/*
* (non-Javadoc)
- *
+ *
* @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
*/
@Override
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/dialogs/SelectedElementContentDialog.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/dialogs/SelectedElementContentDialog.java
similarity index 84%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/dialogs/SelectedElementContentDialog.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/dialogs/SelectedElementContentDialog.java
index 71538d3..8de6d96 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/dialogs/SelectedElementContentDialog.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/dialogs/SelectedElementContentDialog.java
@@ -1,6 +1,6 @@
- /**
+/**
********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -12,15 +12,16 @@
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
-package org.eclipse.app4mc.emfutils.metamodelviewer.dialogs;
+
+package org.eclipse.app4mc.emf.metamodelviewer.dialogs;
import java.util.AbstractMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map.Entry;
-import org.eclipse.app4mc.emfutils.metamodelviewer.base.Activator;
-import org.eclipse.app4mc.emfutils.metamodelviewer.preferences.MetaModelViewerPreferenceConstants;
+import org.eclipse.app4mc.emf.metamodelviewer.base.Activator;
+import org.eclipse.app4mc.emf.metamodelviewer.preferences.MetaModelViewerPreferenceConstants;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.action.IContributionItem;
@@ -54,7 +55,6 @@
this.iWorkbenchPartSite = iWorkbenchPartSite;
}
-
@Override
protected Control createDialogArea(final Composite parent) {
final Composite container = (Composite) super.createDialogArea(parent);
@@ -73,13 +73,11 @@
//
// this.tv = filteredTree.getViewer();
-
this.tv = new TreeViewer(container);
this.tv.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
this.tv.setContentProvider(
- new org.eclipse.app4mc.emfutils.metamodelviewer.views.providers.ViewContentProvider());
- this.tv.setLabelProvider(new org.eclipse.app4mc.emfutils.metamodelviewer.views.providers.ViewLabelProvider());
-
+ new org.eclipse.app4mc.emf.metamodelviewer.views.providers.ViewContentProvider());
+ this.tv.setLabelProvider(new org.eclipse.app4mc.emf.metamodelviewer.views.providers.ViewLabelProvider());
final Entry<String, EObject> entry = new AbstractMap.SimpleEntry<String, EObject>("Selected Element",
this.eObject);
@@ -117,7 +115,6 @@
getIWorkbenchPartSite().registerContextMenu(menuMgr, this.tv);
}
-
private void hookDoubleClickAction() {
this.tv.addDoubleClickListener(new IDoubleClickListener() {
@Override
@@ -129,20 +126,24 @@
if (selection instanceof TreeSelection) {
final Object firstElement = ((TreeSelection) selection).getFirstElement();
if (firstElement instanceof EObject) {
- Shell parentShell = null;
-
- String displayDialogStyle=(Activator.getDefault().getPreferenceStore().getString(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY));
-
- if(displayDialogStyle !=null && displayDialogStyle.equals(MetaModelViewerPreferenceConstants.V_ON_TOP)){
- parentShell=new Shell(SWT.ON_TOP);
- }else{
- parentShell=new Shell();
- }
+ Shell parentShell = null;
- // final String name = ((firstElement instanceof EClass) ? ((EClass) firstElement).getName() :
+ String displayDialogStyle = (Activator.getDefault().getPreferenceStore()
+ .getString(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY));
+
+ if (displayDialogStyle != null
+ && displayDialogStyle.equals(MetaModelViewerPreferenceConstants.V_ON_TOP)) {
+ parentShell = new Shell(SWT.ON_TOP);
+ } else {
+ parentShell = new Shell();
+ }
+
+ // final String name = ((firstElement instanceof EClass) ? ((EClass)
+ // firstElement).getName() :
// "");
//
- // parentShell.setText("Details of : " + ((EClass) firstElement).eClass().getName() + " " +
+ // parentShell.setText("Details of : " + ((EClass)
+ // firstElement).eClass().getName() + " " +
// name);
//
//
@@ -153,7 +154,6 @@
// taskItem.setOverlayText(name);
// taskItem.setText(name);
-
new SelectedElementContentDialog(parentShell, getIWorkbenchPartSite(), (EObject) firstElement)
.open();
@@ -186,14 +186,12 @@
return new Point(450, 300);
}
-
@Override
protected void setShellStyle(final int newShellStyle) {
super.setShellStyle(SWT.CLOSE | SWT.MODELESS | SWT.BORDER | SWT.TITLE | SWT.RESIZE);
setBlockOnOpen(false);
}
-
public IWorkbenchPartSite getIWorkbenchPartSite() {
return this.iWorkbenchPartSite;
}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/preferences/MetaModelViewerPreferenceConstants.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/preferences/MetaModelViewerPreferenceConstants.java
similarity index 86%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/preferences/MetaModelViewerPreferenceConstants.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/preferences/MetaModelViewerPreferenceConstants.java
index 7a9cfcf..33bf14b 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/preferences/MetaModelViewerPreferenceConstants.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/preferences/MetaModelViewerPreferenceConstants.java
@@ -1,6 +1,6 @@
- /**
+/**
********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -12,7 +12,8 @@
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
-package org.eclipse.app4mc.emfutils.metamodelviewer.preferences;
+
+package org.eclipse.app4mc.emf.metamodelviewer.preferences;
/**
* Constant definitions for plug-in preferences
@@ -22,8 +23,7 @@
public static final String P_DIALOG_DISPLAY = "P_DIALOG_DISPLAY";
public static final String V_ON_TOP = "On Top";
-
- public static final String V_DEFAUT = "Default";
+ public static final String V_DEFAUT = "Default";
}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/preferences/MetaModelViewerPreferencePage.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/preferences/MetaModelViewerPreferencePage.java
similarity index 66%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/preferences/MetaModelViewerPreferencePage.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/preferences/MetaModelViewerPreferencePage.java
index ae3c590..4fdf827 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/preferences/MetaModelViewerPreferencePage.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/preferences/MetaModelViewerPreferencePage.java
@@ -1,6 +1,6 @@
- /**
+/**
********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -12,24 +12,21 @@
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
-package org.eclipse.app4mc.emfutils.metamodelviewer.preferences;
-import org.eclipse.app4mc.emfutils.metamodelviewer.base.Activator;
+package org.eclipse.app4mc.emf.metamodelviewer.preferences;
+
+import org.eclipse.app4mc.emf.metamodelviewer.base.Activator;
import org.eclipse.jface.preference.ComboFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
-
-
-public class MetaModelViewerPreferencePage extends FieldEditorPreferencePage
- implements IWorkbenchPreferencePage {
+public class MetaModelViewerPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
public MetaModelViewerPreferencePage() {
super(GRID);
setPreferenceStore(Activator.getDefault().getPreferenceStore());
- setDescription(
- "Preference page to specify the properties/behaviour of MetaModel viewer");
+ setDescription("Preference page to specify the properties/behaviour of MetaModel viewer");
}
/**
@@ -39,17 +36,12 @@
@Override
public void createFieldEditors() {
-
+ final String[][] options = {
+ { MetaModelViewerPreferenceConstants.V_DEFAUT, MetaModelViewerPreferenceConstants.V_DEFAUT },
+ { MetaModelViewerPreferenceConstants.V_ON_TOP, MetaModelViewerPreferenceConstants.V_ON_TOP } };
- final String[][] options = { { MetaModelViewerPreferenceConstants.V_DEFAUT,
- MetaModelViewerPreferenceConstants.V_DEFAUT} ,{ MetaModelViewerPreferenceConstants.V_ON_TOP, MetaModelViewerPreferenceConstants.V_ON_TOP }
- };
-
-
- addField(new ComboFieldEditor(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY, "&Configure the way child dialogs should be displayed", options,
- getFieldEditorParent()));
-
-
+ addField(new ComboFieldEditor(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY,
+ "&Configure the way child dialogs should be displayed", options, getFieldEditorParent()));
}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/preferences/PreferenceInitializer.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/preferences/PreferenceInitializer.java
similarity index 75%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/preferences/PreferenceInitializer.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/preferences/PreferenceInitializer.java
index 08cdcee..2efdec9 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/preferences/PreferenceInitializer.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/preferences/PreferenceInitializer.java
@@ -1,6 +1,6 @@
- /**
+/**
********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -12,9 +12,10 @@
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
-package org.eclipse.app4mc.emfutils.metamodelviewer.preferences;
-import org.eclipse.app4mc.emfutils.metamodelviewer.base.Activator;
+package org.eclipse.app4mc.emf.metamodelviewer.preferences;
+
+import org.eclipse.app4mc.emf.metamodelviewer.base.Activator;
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
import org.eclipse.jface.preference.IPreferenceStore;
@@ -31,7 +32,9 @@
@Override
public void initializeDefaultPreferences() {
final IPreferenceStore store = Activator.getDefault().getPreferenceStore();
- store.setDefault(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY, store.getString(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY) != null
- ? store.getString(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY) : "");
+ store.setDefault(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY,
+ store.getString(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY) != null
+ ? store.getString(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY)
+ : "");
}
}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/ElementSearchPatternFilter.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/ElementSearchPatternFilter.java
similarity index 82%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/ElementSearchPatternFilter.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/ElementSearchPatternFilter.java
index 9fd047a..d11f69b 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/ElementSearchPatternFilter.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/ElementSearchPatternFilter.java
@@ -1,6 +1,6 @@
- /**
+/**
********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -12,7 +12,8 @@
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
-package org.eclipse.app4mc.emfutils.metamodelviewer.utils;
+
+package org.eclipse.app4mc.emf.metamodelviewer.utils;
import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.ecore.EStructuralFeature;
@@ -21,7 +22,6 @@
public class ElementSearchPatternFilter extends PatternFilter {
-
private boolean filterForEClassifiersBoolean;
private boolean filterForAttributesBoolean;
@@ -38,11 +38,9 @@
if (element instanceof SuperClassesListBuilder) {
return false;
- }
- else if (element instanceof SubClassesListBuilder) {
+ } else if (element instanceof SubClassesListBuilder) {
return false;
- }
- else if (element instanceof EStructuralFeature) {
+ } else if (element instanceof EStructuralFeature) {
return false;
}
@@ -62,21 +60,17 @@
}
return super.isLeafMatch(viewer, element);
- }
- else if ((element instanceof EStructuralFeature)) {
+ } else if ((element instanceof EStructuralFeature)) {
if (!isFilterForAttributesBoolean()) {
return false;
}
return super.isLeafMatch(viewer, element);
- }
- else if (element instanceof SuperClassesListBuilder) {
+ } else if (element instanceof SuperClassesListBuilder) {
return false;
- }
- else if (element instanceof org.eclipse.app4mc.emfutils.metamodelviewer.utils.SubClassesListBuilder) {
+ } else if (element instanceof org.eclipse.app4mc.emf.metamodelviewer.utils.SubClassesListBuilder) {
return false;
- }
- else if (element instanceof TypeElement) {
+ } else if (element instanceof TypeElement) {
return false;
}
return super.isLeafMatch(viewer, element);
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/PluginUtils.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/PluginUtils.java
similarity index 82%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/PluginUtils.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/PluginUtils.java
index de67922..6d84865 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/PluginUtils.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/PluginUtils.java
@@ -1,6 +1,6 @@
- /**
+/**
********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -12,12 +12,13 @@
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
-package org.eclipse.app4mc.emfutils.metamodelviewer.utils;
+
+package org.eclipse.app4mc.emf.metamodelviewer.utils;
import java.io.IOException;
import java.net.URL;
-import org.eclipse.app4mc.emfutils.metamodelviewer.base.Activator;
+import org.eclipse.app4mc.emf.metamodelviewer.base.Activator;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.jface.resource.ImageDescriptor;
@@ -34,11 +35,9 @@
fileURL = FileLocator.toFileURL(entry);
if (fileURL != null) {
-
return ImageDescriptor.createFromURL(fileURL);
}
- }
- catch (final IOException e) {
+ } catch (final IOException e) {
e.printStackTrace();
}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/RegisterECOREfilesAction.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/RegisterECOREfilesAction.java
similarity index 82%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/RegisterECOREfilesAction.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/RegisterECOREfilesAction.java
index 814999c..e57bad8 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/RegisterECOREfilesAction.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/RegisterECOREfilesAction.java
@@ -1,6 +1,6 @@
- /**
+/**
********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -13,7 +13,7 @@
********************************************************************************
*/
-package org.eclipse.app4mc.emfutils.metamodelviewer.utils;
+package org.eclipse.app4mc.emf.metamodelviewer.utils;
import java.io.File;
import java.io.IOException;
@@ -26,8 +26,8 @@
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.emf.ecore.EPackage.Registry;
+import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
@@ -39,48 +39,47 @@
@SuppressWarnings({ "unused", "rawtypes", "unchecked" })
public static ResourceSet loadECOREs(List<String> ecoreFiles, ComboViewer combo_ecore) throws IOException {
-
+
final Registry master_ePackageRegistry = EPackage.Registry.INSTANCE;
-
+
System.out.println(master_ePackageRegistry.size());
-
+
ResourceSet metaDataResourceSet = new ResourceSetImpl();
- if(metaDataResourceSet instanceof ResourceSetImpl){
+ if (metaDataResourceSet instanceof ResourceSetImpl) {
((ResourceSetImpl) metaDataResourceSet).setURIResourceMap(new HashMap<>());
}
- Map<String, Object> extensionToFactoryMap = metaDataResourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap();
+ Map<String, Object> extensionToFactoryMap = metaDataResourceSet.getResourceFactoryRegistry()
+ .getExtensionToFactoryMap();
extensionToFactoryMap.put("ecore", new EcoreResourceFactoryImpl());
// extensionToFactoryMap.put("xmi", new XMIResourceFactoryImpl());
-
+
// resourceSet.getURIConverter().getURIMap().putAll(EcorePlugin.computePlatformURIMap(true));
EcorePackage ecorePackage = EcorePackage.eINSTANCE;
// register Ecore model in resourceSet registry
Map packageRegistry = metaDataResourceSet.getPackageRegistry();
-
- packageRegistry.put("http://www.eclipse.org/emf/2002/Ecore",
- EcorePackage.eINSTANCE);
-
+
+ packageRegistry.put("http://www.eclipse.org/emf/2002/Ecore", EcorePackage.eINSTANCE);
for (String ecorePath : ecoreFiles) {
EPackage loadEPackage = loadEPackage(ecorePath, metaDataResourceSet);
- if(packageRegistry.containsKey(loadEPackage.getNsURI())){
+ if (packageRegistry.containsKey(loadEPackage.getNsURI())) {
Object object = packageRegistry.get(loadEPackage.getNsURI());
-
- if(object instanceof EPackage){
- ((EPackage)object).getESubpackages().add(loadEPackage);
+
+ if (object instanceof EPackage) {
+ ((EPackage) object).getESubpackages().add(loadEPackage);
}
- }else{
+ } else {
packageRegistry.put(loadEPackage.getNsURI(), loadEPackage);
-
+
}
-
+
// master_ePackageRegistry.put(loadEPackage.getNsURI(), loadEPackage);
}
@@ -88,27 +87,24 @@
EcoreUtil.resolveAll(metaDataResourceSet);
/*-for sorting */
-
+
ArrayList arrayList = new ArrayList(master_ePackageRegistry.keySet());
Collections.sort(arrayList);
-
+
arrayList.addAll(0, metaDataResourceSet.getPackageRegistry().keySet());
-
+
master_ePackageRegistry.putAll(metaDataResourceSet.getPackageRegistry());
-
-
+
combo_ecore.setInput(arrayList.toArray());
-
-
+
return metaDataResourceSet;
}
-
- private static EPackage loadEPackage(String path, ResourceSet metaResourceSet) throws IOException {
+ private static EPackage loadEPackage(String path, ResourceSet metaResourceSet) throws IOException {
// path = path.contains("file:////") ? path : "file:////" + getCanonicalPathFullPath(path);
- path = getCanonicalPathFullPath(path);
+ path = getCanonicalPathFullPath(path);
// Resource metaResource = metaResourceSet.getResource(URI.createURI(path), true);
Resource metaResource = metaResourceSet.getResource(URI.createFileURI(path), true);
@@ -118,9 +114,9 @@
EObject eObject = metaResource.getContents().get(0);
return (EPackage) eObject;
-
+
}
-
+
private static String getCanonicalPathFullPath(String path) throws IOException {
File file = new File(path);
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/SubClassesListBuilder.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/SubClassesListBuilder.java
similarity index 88%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/SubClassesListBuilder.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/SubClassesListBuilder.java
index 040bb44..d0a6fbc 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/SubClassesListBuilder.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/SubClassesListBuilder.java
@@ -1,6 +1,6 @@
- /**
+/**
********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -12,7 +12,8 @@
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
-package org.eclipse.app4mc.emfutils.metamodelviewer.utils;
+
+package org.eclipse.app4mc.emf.metamodelviewer.utils;
import java.util.ArrayList;
import java.util.HashSet;
@@ -51,12 +52,10 @@
this.allSubClasses.addAll(classList.getAllSubClasses());
-
}
}
-
return this.allSubClasses;
}
@@ -82,30 +81,29 @@
// final EObject eObject = contents.get(0);
for (EObject eObj : contents) {
-
+
if (eObj instanceof EPackage) {
allSubClasses.addAll(getSubClasses(selectedObjClass, (EPackage) eObj));
}
-
+
}
}
}
- }
- else {
+ } else {
final EPackage ePackage = selectedObjClass.getEPackage();
-
- if(ePackage !=null){
- EObject rootEPackage=org.eclipse.emf.ecore.util.EcoreUtil.getRootContainer(selectedObjClass);
-
- if(rootEPackage instanceof EPackage){
+
+ if (ePackage != null) {
+ EObject rootEPackage = org.eclipse.emf.ecore.util.EcoreUtil.getRootContainer(selectedObjClass);
+
+ if (rootEPackage instanceof EPackage) {
return getSubClasses(selectedObjClass, (EPackage) rootEPackage);
- }
- }
-
- return getSubClasses(selectedObjClass, ePackage);
-
+ }
+ }
+
+ return getSubClasses(selectedObjClass, ePackage);
+
}
return allSubClasses;
@@ -113,17 +111,15 @@
}
private List<EClass> getSubClasses(final EClass selectedObjClass, final EPackage ePackage) {
-
-
-
+
final List<EClass> allSubClasses = new ArrayList<EClass>();
EList<EPackage> eSubpackages = ePackage.getESubpackages();
-
+
for (EPackage eSubPackage : eSubpackages) {
allSubClasses.addAll(getSubClasses(selectedObjClass, eSubPackage));
}
-
+
final EList<EClassifier> eClassifiers = ePackage.getEClassifiers();
for (final EClassifier eClassifier : eClassifiers) {
@@ -134,7 +130,6 @@
allSubClasses.add((EClass) eClassifier);
}
-
}
}
return allSubClasses;
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/SuperClassesListBuilder.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/SuperClassesListBuilder.java
similarity index 91%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/SuperClassesListBuilder.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/SuperClassesListBuilder.java
index 9f7991f..8d38bf2 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/SuperClassesListBuilder.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/SuperClassesListBuilder.java
@@ -1,6 +1,6 @@
- /**
+/**
********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -12,7 +12,8 @@
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
-package org.eclipse.app4mc.emfutils.metamodelviewer.utils;
+
+package org.eclipse.app4mc.emf.metamodelviewer.utils;
import java.util.HashSet;
import java.util.Set;
@@ -46,7 +47,6 @@
this.allSuperClasses.addAll(classList.getAllSuperClasses());
-
}
}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/TypeElement.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/TypeElement.java
similarity index 87%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/TypeElement.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/TypeElement.java
index 886f3f9..543e82e 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/TypeElement.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/TypeElement.java
@@ -1,6 +1,6 @@
- /**
+/**
********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -12,7 +12,8 @@
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
-package org.eclipse.app4mc.emfutils.metamodelviewer.utils;
+
+package org.eclipse.app4mc.emf.metamodelviewer.utils;
import org.eclipse.emf.ecore.EClassifier;
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/views/MetaModelExplorerView.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/views/MetaModelExplorerView.java
new file mode 100644
index 0000000..dea0599
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/views/MetaModelExplorerView.java
@@ -0,0 +1,448 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
+package org.eclipse.app4mc.emf.metamodelviewer.views;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.app4mc.emf.metamodelviewer.base.Activator;
+import org.eclipse.app4mc.emf.metamodelviewer.dialogs.SelectedElementContentDialog;
+import org.eclipse.app4mc.emf.metamodelviewer.preferences.MetaModelViewerPreferenceConstants;
+import org.eclipse.app4mc.emf.metamodelviewer.utils.ElementSearchPatternFilter;
+import org.eclipse.app4mc.emf.metamodelviewer.utils.PluginUtils;
+import org.eclipse.app4mc.emf.metamodelviewer.utils.RegisterECOREfilesAction;
+import org.eclipse.app4mc.emf.metamodelviewer.views.providers.ViewContentProvider;
+import org.eclipse.app4mc.emf.metamodelviewer.views.providers.ViewLabelProvider;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EPackage.Registry;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TreeSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.sphinx.emf.metamodel.IMetaModelDescriptor;
+import org.eclipse.sphinx.emf.metamodel.MetaModelDescriptorRegistry;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.dialogs.FilteredTree;
+import org.eclipse.ui.part.ViewPart;
+
+public class MetaModelExplorerView extends ViewPart {
+ /**
+ * The ID of the view as specified by the extension.
+ */
+ public static final String ID = "org.eclipse.app4mc.emf.metamodelviewer.views.MetaModelExplorerView";
+ private static int id_Counter = 1;
+ private TreeViewer viewer;
+ private Action filterClassesAction;
+ private Action registerEcoreFilesAction;
+ private Action filterAttributesAction;
+ private Action cloneViewAction;
+ private boolean filterForEClassifiersBoolean = true;
+ private boolean filterForAttributesBoolean;
+ private ElementSearchPatternFilter patternFilter;
+ private ComboViewer combo_ecore;
+
+ /**
+ * The constructor.
+ */
+ public MetaModelExplorerView() {
+ }
+
+ /**
+ * This is a callback that will allow us to create the viewer and initialize it.
+ */
+ @Override
+ public void createPartControl(final Composite parent) {
+ parent.setLayout(new GridLayout(2, false));
+
+ final Label label = new Label(parent, 0);
+
+ label.setText("SPHINX Registry");
+
+ label.setLayoutData(new GridData());
+
+ final Combo combo = new Combo(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.READ_ONLY);
+
+ final Label label_ecore = new Label(parent, 0);
+
+ label_ecore.setText("ECORE Registry");
+
+ label_ecore.setLayoutData(new GridData());
+
+ combo_ecore = new ComboViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.READ_ONLY);
+
+ final Registry ePackageRegistry = EPackage.Registry.INSTANCE;
+
+ final Set<String> keySet = ePackageRegistry.keySet();
+ // for (final String string : new TreeSet<String>(keySet)) {
+ //
+ // combo_ecore.add(string);
+ // }
+ combo_ecore.setContentProvider(ArrayContentProvider.getInstance());
+ combo_ecore.setLabelProvider(new LabelProvider() {
+ @Override
+ public String getText(Object element) {
+ return super.getText(element);
+ }
+ });
+
+ ArrayList<String> arrayList = new ArrayList<String>(keySet);
+
+ Collections.sort(arrayList);
+
+ combo_ecore.setInput(arrayList.toArray());
+
+ combo_ecore.getCombo().addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ combo.deselectAll();
+
+ final String text = combo_ecore.getCombo().getText();
+
+ final EPackage ePackage = ePackageRegistry.getEPackage(text);
+
+ getViewer().setInput(ePackage);
+ }
+ });
+
+ final List<IMetaModelDescriptor> descriptors = MetaModelDescriptorRegistry.INSTANCE
+ .getDescriptors(MetaModelDescriptorRegistry.ANY_MM);
+
+ for (final IMetaModelDescriptor iMetaModelDescriptor : descriptors) {
+ final String identifier = iMetaModelDescriptor.getIdentifier();
+ combo.add(identifier);
+ }
+
+ combo.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ combo_ecore.getCombo().deselectAll();
+
+ final String text = combo.getText();
+
+ final IMetaModelDescriptor descriptor = MetaModelDescriptorRegistry.INSTANCE.getDescriptor(text);
+
+ getViewer().setInput(descriptor);
+ }
+ });
+
+ this.patternFilter = new ElementSearchPatternFilter(this.filterForEClassifiersBoolean,
+ this.filterForAttributesBoolean);
+
+ final FilteredTree filteredTree = new FilteredTree(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER,
+ this.patternFilter, true);
+
+ filteredTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 0));
+
+ this.viewer = filteredTree.getViewer();
+
+ final GridData gridLayoutData = new GridData();
+ gridLayoutData.horizontalSpan = 2;
+ gridLayoutData.grabExcessHorizontalSpace = true;
+ gridLayoutData.grabExcessVerticalSpace = true;
+ gridLayoutData.horizontalAlignment = GridData.FILL;
+ gridLayoutData.verticalAlignment = GridData.FILL;
+
+ this.viewer.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 0));
+
+ this.viewer.setContentProvider(new ViewContentProvider());
+
+ this.viewer.setInput(getViewSite());
+
+ this.viewer.setLabelProvider(new ViewLabelProvider());
+
+ getSite().setSelectionProvider(this.viewer);
+
+ makeActions();
+
+ hookContextMenu();
+
+ hookDoubleClickAction();
+
+ contributeToActionBars();
+ }
+
+ public TreeViewer getViewer() {
+ return this.viewer;
+ }
+
+ private void hookContextMenu() {
+ final MenuManager menuMgr = new MenuManager("#PopupMenu") {
+ @Override
+ public IContributionItem[] getItems() {
+ IContributionItem[] menuItems = super.getItems();
+
+ final List<IContributionItem> filteredContributionItems = new LinkedList<IContributionItem>();
+
+ for (final IContributionItem contributionItem : menuItems) {
+ if ((contributionItem != null) && ((contributionItem.getId() != null) && (!(contributionItem.getId()
+ .startsWith("org.eclipse.emf.ecore.editor.CreateDynamicInstance"))))) {
+ filteredContributionItems.add(contributionItem);
+ }
+ }
+
+ menuItems = new IContributionItem[filteredContributionItems.size()];
+
+ return filteredContributionItems.toArray(menuItems);
+ }
+ };
+
+ menuMgr.setRemoveAllWhenShown(true);
+ menuMgr.addMenuListener(new IMenuListener() {
+ @Override
+ public void menuAboutToShow(final IMenuManager manager) {
+ MetaModelExplorerView.this.fillContextMenu(manager);
+ }
+ });
+
+ final Menu menu = menuMgr.createContextMenu(this.viewer.getControl());
+ this.viewer.getControl().setMenu(menu);
+ getSite().registerContextMenu(menuMgr, this.viewer);
+ }
+
+ private void contributeToActionBars() {
+ final IActionBars bars = getViewSite().getActionBars();
+ fillLocalPullDown(bars.getMenuManager());
+ fillLocalToolBar(bars.getToolBarManager());
+ }
+
+ private void fillLocalPullDown(final IMenuManager manager) {
+ manager.add(this.filterClassesAction);
+ manager.add(new Separator());
+ manager.add(this.filterAttributesAction);
+ manager.add(new Separator());
+ manager.add(this.cloneViewAction);
+ }
+
+ void fillContextMenu(final IMenuManager manager) {
+ // manager.add(this.filterClassesAction);
+ // manager.add(this.filterAttributesAction);
+ // manager.add(new Separator());
+ // this.drillDownAdapter.addNavigationActions(manager);
+ // Other plug-ins can contribute there actions here
+ // manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+ }
+
+ private void fillLocalToolBar(final IToolBarManager manager) {
+ manager.add(this.filterClassesAction);
+ manager.add(this.filterAttributesAction);
+ manager.add(new Separator());
+
+ manager.add(this.registerEcoreFilesAction);
+ }
+
+ private void makeActions() {
+ this.filterClassesAction = new Action("Filter for EClassifers", IAction.AS_CHECK_BOX) {
+ @Override
+ public void run() {
+ if (isChecked()) {
+ setFilterForEClassifiersBoolean(true);
+ } else {
+ setFilterForEClassifiersBoolean(false);
+ }
+ }
+ };
+
+ this.filterClassesAction.setEnabled(true);
+
+ this.filterClassesAction.setToolTipText("Filter for EClassifiers");
+ this.filterClassesAction.setImageDescriptor(PluginUtils.getImageDescriptor("icons/class_obj.png"));
+
+ this.filterAttributesAction = new Action("Filter for Attributes", IAction.AS_CHECK_BOX) {
+ @Override
+ public void run() {
+ if (isChecked()) {
+ setFilterForAttributesBoolean(true);
+ } else {
+ setFilterForAttributesBoolean(false);
+ }
+ }
+ };
+ this.filterAttributesAction.setToolTipText("Filter for Attributes");
+ this.filterAttributesAction.setImageDescriptor(PluginUtils.getImageDescriptor("icons/prop_ps.gif"));
+
+ this.cloneViewAction = new Action("Clone View", IAction.AS_CHECK_BOX) {
+ @Override
+ public void run() {
+ try {
+ getViewSite().getPage().showView(ID, id_Counter++ + "", IWorkbenchPage.VIEW_VISIBLE);
+ } catch (PartInitException e) {
+ e.printStackTrace();
+ }
+ }
+ };
+ this.cloneViewAction.setToolTipText("Clone View");
+ this.cloneViewAction.setImageDescriptor(PluginUtils.getImageDescriptor("icons/prop_ps.gif"));
+
+ this.registerEcoreFilesAction = new Action("Register ECORE files") {
+ @Override
+ public void run() {
+ // TODO: add implementation for CSV report generation
+ Object input = viewer.getInput();
+
+ FileDialog dialog = new FileDialog(Display.getDefault().getActiveShell(), SWT.OPEN | SWT.MULTI);
+
+ dialog.setFilterExtensions(new String[] { "*.ecore" });
+
+ dialog.open();
+
+ if ((dialog.getFileName() == null) || (dialog.getFileNames() == null)) {
+ return;
+ }
+
+ List<String> files = new ArrayList<String>();
+
+ for (String fileName : dialog.getFileNames()) {
+ String filePath = dialog.getFilterPath() + File.separator + fileName;
+
+ files.add(filePath);
+ }
+
+ try {
+ RegisterECOREfilesAction.loadECOREs(files, combo_ecore);
+ } catch (Exception e) {
+ Display.getDefault().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", e.getMessage());
+ }
+ });
+ }
+ }
+ };
+ this.registerEcoreFilesAction.setToolTipText("Register ECORE files");
+ this.registerEcoreFilesAction.setImageDescriptor(PluginUtils.getImageDescriptor("icons/register_ecores.png"));
+ }
+
+ private void hookDoubleClickAction() {
+ this.viewer.addDoubleClickListener(new IDoubleClickListener() {
+ @Override
+ public void doubleClick(final DoubleClickEvent event) {
+ final ISelection selection = event.getSelection();
+
+ if (selection instanceof TreeSelection) {
+ final Object firstElement = ((TreeSelection) selection).getFirstElement();
+
+ if (firstElement instanceof EObject) {
+ Shell parentShell = null;
+
+ String displayDialogStyle = (Activator.getDefault().getPreferenceStore()
+ .getString(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY));
+
+ if ((displayDialogStyle != null)
+ && displayDialogStyle.equals(MetaModelViewerPreferenceConstants.V_ON_TOP)) {
+ parentShell = new Shell(SWT.ON_TOP);
+ } else {
+ parentShell = new Shell();
+ }
+
+ // final String name = ((firstElement instanceof EClass) ? ((EClass)
+ // firstElement).getName() :
+ // "");
+ //
+ // parentShell.setText("Details of : " + ((EClass)
+ // firstElement).eClass().getName() + " " +
+ // name);
+ //
+ //
+ // final TaskBar systemTaskBar = parentShell.getDisplay().getSystemTaskBar();
+ // final TaskItem taskItem = systemTaskBar.getItem(parentShell);
+ //
+ // taskItem.setData(parentShell);
+ // taskItem.setOverlayText(name);
+ // taskItem.setText(name);
+ new SelectedElementContentDialog(parentShell, getSite(), (EObject) firstElement).open();
+ }
+ }
+ }
+ });
+ }
+
+ /**
+ * Passing the focus request to the viewer's control.
+ */
+ @Override
+ public void setFocus() {
+ this.viewer.getControl().setFocus();
+ }
+
+ public Action getFilterClassesAction() {
+ return this.filterClassesAction;
+ }
+
+ public Action getFilterAttributesAction() {
+ return this.filterAttributesAction;
+ }
+
+ public boolean isFilterForEClassifiersBoolean() {
+ return this.filterForEClassifiersBoolean;
+ }
+
+ public boolean isFilterForAttributesBoolean() {
+ return this.filterForAttributesBoolean;
+ }
+
+ public void setFilterClassesAction(final Action filterClassesAction) {
+ this.filterClassesAction = filterClassesAction;
+ }
+
+ public void setFilterAttributesAction(final Action filterAttributesAction) {
+ this.filterAttributesAction = filterAttributesAction;
+ }
+
+ public void setFilterForEClassifiersBoolean(final boolean filterForEClassifiersBoolean) {
+ this.filterForEClassifiersBoolean = filterForEClassifiersBoolean;
+
+ this.patternFilter.setFilterForEClassifiersBoolean(filterForEClassifiersBoolean);
+ }
+
+ public void setFilterForAttributesBoolean(final boolean filterForAttributesBoolean) {
+ this.filterForAttributesBoolean = filterForAttributesBoolean;
+
+ this.patternFilter.setFilterForAttributesBoolean(filterForAttributesBoolean);
+ }
+}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/views/providers/ViewContentProvider.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/views/providers/ViewContentProvider.java
similarity index 85%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/views/providers/ViewContentProvider.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/views/providers/ViewContentProvider.java
index 22e154f..aa2519d 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/views/providers/ViewContentProvider.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/views/providers/ViewContentProvider.java
@@ -1,6 +1,6 @@
- /**
+/**
********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -12,7 +12,8 @@
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
-package org.eclipse.app4mc.emfutils.metamodelviewer.views.providers;
+
+package org.eclipse.app4mc.emf.metamodelviewer.views.providers;
import java.util.ArrayList;
import java.util.Collection;
@@ -22,9 +23,9 @@
import java.util.Map.Entry;
import java.util.Set;
-import org.eclipse.app4mc.emfutils.metamodelviewer.utils.SubClassesListBuilder;
-import org.eclipse.app4mc.emfutils.metamodelviewer.utils.SuperClassesListBuilder;
-import org.eclipse.app4mc.emfutils.metamodelviewer.utils.TypeElement;
+import org.eclipse.app4mc.emf.metamodelviewer.utils.SubClassesListBuilder;
+import org.eclipse.app4mc.emf.metamodelviewer.utils.SuperClassesListBuilder;
+import org.eclipse.app4mc.emf.metamodelviewer.utils.TypeElement;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EClassifier;
@@ -48,8 +49,7 @@
final Collection<EPackage> ePackages = ((IMetaModelDescriptor) parent).getEPackages();
return ePackages.toArray();
- }
- else if (parent instanceof EPackage) {
+ } else if (parent instanceof EPackage) {
final EList<EPackage> eSubpackages = ((EPackage) parent).getESubpackages();
final EList<EClassifier> eClassifiers = ((EPackage) parent).getEClassifiers();
@@ -58,7 +58,6 @@
arrayList1.addAll(eSubpackages);
-
Collections.sort(arrayList1, this.comparator);
final ArrayList<EClassifier> arrayList2 = new ArrayList<EClassifier>();
@@ -74,8 +73,7 @@
return combinedList.toArray();
- }
- else if (parent instanceof Entry) {
+ } else if (parent instanceof Entry) {
return new Object[] { ((Entry<?, ?>) parent).getValue() };
}
@@ -87,11 +85,9 @@
if (child instanceof EPackage) {
return ((EPackage) child).eContainer();
- }
- else if (child instanceof EClass) {
+ } else if (child instanceof EClass) {
return ((EClass) child).eContainer();
- }
- else if (child instanceof EStructuralFeature) {
+ } else if (child instanceof EStructuralFeature) {
return ((EStructuralFeature) child).eContainer();
}
@@ -110,7 +106,6 @@
arrayList1.addAll(eSubpackages);
-
Collections.sort(arrayList1, this.comparator);
final ArrayList<EClassifier> arrayList2 = new ArrayList<EClassifier>();
@@ -126,8 +121,7 @@
return combinedList.toArray();
- }
- else if (parent instanceof EClass) {
+ } else if (parent instanceof EClass) {
final EList<EStructuralFeature> eAllStructuralFeatures = ((EClass) parent).getEAllStructuralFeatures();
@@ -135,7 +129,6 @@
list.addAll(eAllStructuralFeatures);
-
Collections.sort(list, this.comparator);
int index = 0;
@@ -154,8 +147,7 @@
}
return list.toArray();
- }
- else if (parent instanceof EDataType) {
+ } else if (parent instanceof EDataType) {
if (parent instanceof EEnum) {
@@ -179,8 +171,7 @@
Collections.sort(list, this.comparator);
return list.toArray();
- }
- else if (parent instanceof EEnum) {
+ } else if (parent instanceof EEnum) {
final EList<EEnumLiteral> eLiterals = ((EEnum) parent).getELiterals();
@@ -191,24 +182,20 @@
Collections.sort(list, this.comparator);
return list.toArray();
- }
- else if (parent instanceof SuperClassesListBuilder) {
+ } else if (parent instanceof SuperClassesListBuilder) {
final Set<EClass> allSuperClasses = ((SuperClassesListBuilder) parent).getAllSuperClasses();
final ArrayList<ENamedElement> arrayList = new ArrayList<ENamedElement>(allSuperClasses);
Collections.sort(arrayList, this.comparator);
return arrayList.toArray();
- }
- else if (parent instanceof SubClassesListBuilder) {
+ } else if (parent instanceof SubClassesListBuilder) {
final Set<EClass> allSubClasses = ((SubClassesListBuilder) parent).getAllSubClasses();
final ArrayList<ENamedElement> arrayList = new ArrayList<ENamedElement>(allSubClasses);
Collections.sort(arrayList, this.comparator);
return arrayList.toArray();
- }
- else if (parent instanceof EStructuralFeature) {
+ } else if (parent instanceof EStructuralFeature) {
final EClassifier eType = ((EStructuralFeature) parent).getEType();
return new Object[] { new TypeElement(eType) };
- }
- else if (parent instanceof TypeElement) {
+ } else if (parent instanceof TypeElement) {
final EClassifier eType = ((TypeElement) parent).getClassifier();
return new Object[] { eType };
}
@@ -219,18 +206,15 @@
public boolean hasChildren(final Object parent) {
if (parent instanceof EPackage) {
return true;
- }
- else if (parent instanceof EClass) {
+ } else if (parent instanceof EClass) {
return true;
- }
- else if (parent instanceof EDataType) {
+ } else if (parent instanceof EDataType) {
if (parent instanceof EEnum) {
return ((EEnum) parent).getELiterals().size() > 0;
}
return ((EDataType) parent).getETypeParameters().size() > 0;
- }
- else if (parent instanceof EEnum) {
+ } else if (parent instanceof EEnum) {
return ((EEnum) parent).getELiterals().size() > 0;
}
@@ -240,14 +224,11 @@
else if (parent instanceof SuperClassesListBuilder) {
return ((SuperClassesListBuilder) parent).getAllSuperClasses().size() > 0;
- }
- else if (parent instanceof SubClassesListBuilder) {
+ } else if (parent instanceof SubClassesListBuilder) {
return ((SubClassesListBuilder) parent).getAllSubClasses().size() > 0;
- }
- else if (parent instanceof EEnumLiteral) {
+ } else if (parent instanceof EEnumLiteral) {
return false;
- }
- else if (parent instanceof TypeElement) {
+ } else if (parent instanceof TypeElement) {
return true;
}
return true;
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/views/providers/ViewLabelProvider.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/views/providers/ViewLabelProvider.java
similarity index 74%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/views/providers/ViewLabelProvider.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/views/providers/ViewLabelProvider.java
index 2ce42f0..907a5cd 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/views/providers/ViewLabelProvider.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/views/providers/ViewLabelProvider.java
@@ -1,6 +1,6 @@
- /**
+/**
********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -12,15 +12,16 @@
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
-package org.eclipse.app4mc.emfutils.metamodelviewer.views.providers;
+
+package org.eclipse.app4mc.emf.metamodelviewer.views.providers;
import java.io.IOException;
import java.net.URL;
-import org.eclipse.app4mc.emfutils.metamodelviewer.base.Activator;
-import org.eclipse.app4mc.emfutils.metamodelviewer.utils.SubClassesListBuilder;
-import org.eclipse.app4mc.emfutils.metamodelviewer.utils.SuperClassesListBuilder;
-import org.eclipse.app4mc.emfutils.metamodelviewer.utils.TypeElement;
+import org.eclipse.app4mc.emf.metamodelviewer.base.Activator;
+import org.eclipse.app4mc.emf.metamodelviewer.utils.SubClassesListBuilder;
+import org.eclipse.app4mc.emf.metamodelviewer.utils.SuperClassesListBuilder;
+import org.eclipse.app4mc.emf.metamodelviewer.utils.TypeElement;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
@@ -39,12 +40,11 @@
public class ViewLabelProvider extends LabelProvider {
-
private final Image classImage;
private final Image enumImage;
private final Image containmentImage;
private final Image superClassListImage;
- private final Image SubClassesListBuilderImage;
+ private final Image subClassListImage;
private final Image attributeImage;
private final Image attribute_referenceImage;
private final Image abstractClassImage;
@@ -57,7 +57,7 @@
this.enumImage = getImage("icons/enum_obj.png");
this.containmentImage = getImage("icons/attribute_containment.png");
this.superClassListImage = getImage("icons/super_co.gif");
- this.SubClassesListBuilderImage = getImage("icons/downward_co.gif");
+ this.subClassListImage = getImage("icons/downward_co.gif");
this.attributeImage = getImage("icons/attribute.png");
this.attribute_referenceImage = getImage("icons/attribute_reference.png");
this.abstractClassImage = getImage("icons/abstract_class_obj.png");
@@ -65,7 +65,6 @@
this.eTypeImage = getImage("icons/type_obj.gif");
}
-
private Image getImage(final String location) {
final URL entry = Activator.getDefault().getBundle().getEntry(location);
@@ -78,8 +77,7 @@
if (fileURL != null) {
return new Image(Display.getDefault(), new ImageData(fileURL.getFile()));
}
- }
- catch (final IOException e) {
+ } catch (final IOException e) {
e.printStackTrace();
}
@@ -87,26 +85,20 @@
return null;
}
-
@Override
public String getText(final Object child) {
if (child instanceof EPackage) {
return ((EPackage) child).getName();
- }
- else if (child instanceof EClass) {
+ } else if (child instanceof EClass) {
return ((EClass) child).getName();
- }
- else if (child instanceof EDataType) {
+ } else if (child instanceof EDataType) {
return ((EDataType) child).getName();
- }
- else if (child instanceof EEnum) {
+ } else if (child instanceof EEnum) {
return "Enum : " + ((EEnum) child).getName();
- }
- else if (child instanceof EEnumLiteral) {
+ } else if (child instanceof EEnumLiteral) {
return ((EEnumLiteral) child).getName();
- }
- else if (child instanceof EStructuralFeature) {
+ } else if (child instanceof EStructuralFeature) {
final EStructuralFeature eStFeature = (EStructuralFeature) child;
final int lowerBound = eStFeature.getLowerBound();
@@ -119,14 +111,11 @@
final String multiplicity = "[" + lowerBoundString + " " + upperBoundString + "]";
return eStFeature.getName() + " " + multiplicity + " " + eStFeature.getEType().getName();
- }
- else if (child instanceof SuperClassesListBuilder) {
- return "Super Classes";
- }
- else if (child instanceof SubClassesListBuilder) {
- return "All-Sub Classes";
- }
- else if (child instanceof TypeElement) {
+ } else if (child instanceof SuperClassesListBuilder) {
+ return "All Super Classes (flat)";
+ } else if (child instanceof SubClassesListBuilder) {
+ return "All Sub Classes (flat)";
+ } else if (child instanceof TypeElement) {
return "<--EType-->";
}
return child.toString();
@@ -137,28 +126,24 @@
String imageKey = ISharedImages.IMG_OBJ_ELEMENT;
if (obj instanceof EPackage) {
imageKey = ISharedImages.IMG_OBJ_FOLDER;
- }
- else if (obj instanceof EStructuralFeature && obj instanceof EReference) {
+ } else if (obj instanceof EStructuralFeature && obj instanceof EReference) {
if (((EReference) obj).isContainment()) {
return this.containmentImage;
}
return this.attribute_referenceImage;
- }
- else if (obj instanceof EAttribute) {
+ } else if (obj instanceof EAttribute) {
return this.attributeImage;
- }
- else if (obj instanceof EDataType) {
+ } else if (obj instanceof EDataType) {
imageKey = ISharedImages.IMG_OBJ_ELEMENT;
if (obj instanceof EEnum) {
return this.enumImage;
}
- }
- else if (obj instanceof EClass) {
+ } else if (obj instanceof EClass) {
if (((EClass) obj).isAbstract() && ((EClass) obj).isInterface()) {
return this.interfaceImage;
}
@@ -167,18 +152,14 @@
}
return this.classImage;
- }
- else if (obj instanceof EEnum) {
+ } else if (obj instanceof EEnum) {
return this.enumImage;
- }
- else if (obj instanceof SuperClassesListBuilder) {
+ } else if (obj instanceof SuperClassesListBuilder) {
return this.superClassListImage;
- }
- else if (obj instanceof SubClassesListBuilder) {
+ } else if (obj instanceof SubClassesListBuilder) {
- return this.SubClassesListBuilderImage;
- }
- else if (obj instanceof TypeElement) {
+ return this.subClassListImage;
+ } else if (obj instanceof TypeElement) {
return this.eTypeImage;
}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.classpath b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/.classpath
similarity index 100%
copy from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.classpath
copy to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/.classpath
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/.gitignore b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/.gitignore
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/.gitignore
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/.gitignore
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/.project b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/.project
similarity index 92%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/.project
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/.project
index 5f0bcdd..c38f4fa 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/.project
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/.project
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>org.eclipse.app4mc.emfutils.content.extractor</name>
+ <name>org.eclipse.app4mc.emf.viewer.plantuml</name>
<comment></comment>
<projects>
</projects>
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.settings/org.eclipse.jdt.core.prefs b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/.settings/org.eclipse.jdt.core.prefs
similarity index 100%
copy from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.settings/org.eclipse.jdt.core.prefs
copy to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/.settings/org.eclipse.jdt.core.prefs
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/META-INF/MANIFEST.MF b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..63a221b
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/META-INF/MANIFEST.MF
@@ -0,0 +1,37 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: APP4MC EMF Viewer (PlantUML)
+Bundle-SymbolicName: org.eclipse.app4mc.emf.viewer.plantuml;singleton:=true
+Bundle-Version: 0.9.8.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.app4mc.emf.viewer.plantuml.Activator
+Bundle-Vendor: Eclipse APP4MC
+Require-Bundle: com.google.guava,
+ org.eclipse.core.runtime,
+ org.eclipse.emf.ecore,
+ org.eclipse.emf.ecore.xmi,
+ org.eclipse.xtext.xbase.lib,
+ org.eclipse.xtend.lib,
+ org.eclipse.xtend.lib.macro,
+ org.eclipse.ui,
+ org.eclipse.ui.browser,
+ org.eclipse.sphinx.emf,
+ org.eclipse.sphinx.emf.editors,
+ org.eclipse.sphinx.emf.editors.forms,
+ org.eclipse.e4.ui.model.workbench,
+ org.eclipse.e4.core.di,
+ org.eclipse.e4.core.contexts,
+ org.eclipse.e4.core.di.extensions,
+ org.eclipse.e4.ui.di,
+ org.eclipse.e4.ui.services,
+ org.eclipse.e4.ui.workbench,
+ org.eclipse.e4.core.services
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ActivationPolicy: lazy
+Import-Package: javax.annotation;version="1.2.0",
+ javax.inject;version="1.0.0",
+ net.sourceforge.plantuml;version="1.2019.0",
+ net.sourceforge.plantuml.core;version="1.2019.0",
+ net.sourceforge.plantuml.eclipse.utils,
+ org.slf4j;version="1.7.2"
+Automatic-Module-Name: org.eclipse.app4mc.emf.viewer.plantuml
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/about.html b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/about.html
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/about.html
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/about.html
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/build.properties b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/build.properties
new file mode 100644
index 0000000..4f03bd5
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/build.properties
@@ -0,0 +1,11 @@
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ icons/,\
+ epl-2.0.html,\
+ about.html,\
+ fragment.e4xmi
+src.includes = about.html,\
+ epl-2.0.html
+source.. = src/
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/epl-2.0.html b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/epl-2.0.html
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/epl-2.0.html
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/epl-2.0.html
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/fragment.e4xmi b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/fragment.e4xmi
new file mode 100644
index 0000000..eb733e8
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/fragment.e4xmi
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="ASCII"?>
+<fragment:ModelFragments xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/descriptor/basic" xmlns:commands="http://www.eclipse.org/ui/2010/UIModel/application/commands" xmlns:fragment="http://www.eclipse.org/ui/2010/UIModel/fragment" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmlns:ui="http://www.eclipse.org/ui/2010/UIModel/application/ui" xmi:id="_24JxkGmpEeqly_jY3FLnyw">
+ <fragments xsi:type="fragment:StringModelFragment" xmi:id="_4M1skGmpEeqly_jY3FLnyw" featurename="descriptors" parentElementId="xpath:/">
+ <elements xsi:type="basic:PartDescriptor" xmi:id="_7EwU4GmpEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.views.DiagramView" label="Diagram View" iconURI="platform:/plugin/org.eclipse.app4mc.emf.viewer.plantuml/icons/sample.gif" category="APP4MC" closeable="true" contributionURI="bundleclass://org.eclipse.app4mc.emf.viewer.plantuml/org.eclipse.app4mc.emf.viewer.plantuml.views.DiagramView">
+ <toolbar xmi:id="_DIC14GmqEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.toolbar.0">
+ <children xsi:type="menu:DirectToolItem" xmi:id="_jgBp0GmqEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.directtoolitem.select" iconURI="platform:/plugin/org.eclipse.app4mc.emf.viewer.plantuml/icons/synced.png" tooltip="Link the selection in the editor with the current diagram type" type="Check" contributionURI="bundleclass://org.eclipse.app4mc.emf.viewer.plantuml/org.eclipse.app4mc.emf.viewer.plantuml.handlers.LinkWithEditorHandler"/>
+ </toolbar>
+ </elements>
+ </fragments>
+ <fragments xsi:type="fragment:StringModelFragment" xmi:id="_gMvh4GmvEeqly_jY3FLnyw" featurename="commands" parentElementId="xpath:/">
+ <elements xsi:type="commands:Command" xmi:id="_hnm9YGmvEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.command.extracteclasshierarchy" commandName="Extract EClass Hierarchy" category="_qKzGcGmvEeqly_jY3FLnyw"/>
+ <elements xsi:type="commands:Command" xmi:id="_1iuA8GmvEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.command.extracteobjectreferences" commandName="Extract EObject References" category="_qKzGcGmvEeqly_jY3FLnyw"/>
+ <elements xsi:type="commands:Command" xmi:id="_P8RuoGmwEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.command.extracteclassallreferences" commandName="Extract EClass All References" category="_qKzGcGmvEeqly_jY3FLnyw"/>
+ <elements xsi:type="commands:Command" xmi:id="_SVoLoGmwEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.command.extracteclasshierarchyandtheircontents" commandName="Extract EClass Hierarchy And Their Contents" category="_qKzGcGmvEeqly_jY3FLnyw"/>
+ <elements xsi:type="commands:Command" xmi:id="_W4xmsGmwEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.command.extracteclassumlcontents" commandName="Extract EClass UML Contents" category="_qKzGcGmvEeqly_jY3FLnyw"/>
+ <elements xsi:type="commands:Command" xmi:id="_Zw9UwGmwEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.command.fromreference-extracteclassumlcontents" commandName="From reference -> Extract EClass UML Contents" category="_qKzGcGmvEeqly_jY3FLnyw"/>
+ <elements xsi:type="commands:Command" xmi:id="_dIkJwGmwEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.command.copycontentsandgeneratecsv" commandName="Copy Contents and Generate CSV" category="_qKzGcGmvEeqly_jY3FLnyw"/>
+ </fragments>
+ <fragments xsi:type="fragment:StringModelFragment" xmi:id="_nfvOYGmvEeqly_jY3FLnyw" featurename="categories" parentElementId="xpath:/">
+ <elements xsi:type="commands:Category" xmi:id="_qKzGcGmvEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.category" name="Extract Eclass References"/>
+ </fragments>
+ <fragments xsi:type="fragment:StringModelFragment" xmi:id="_bQFvwGmxEeqly_jY3FLnyw" featurename="handlers" parentElementId="xpath:/">
+ <elements xsi:type="commands:Handler" xmi:id="_ceh40GmxEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handler.0" contributionURI="bundleclass://org.eclipse.app4mc.emf.viewer.plantuml/org.eclipse.app4mc.emf.viewer.plantuml.handlers.EClassHierarchyHandler" command="_hnm9YGmvEeqly_jY3FLnyw"/>
+ <elements xsi:type="commands:Handler" xmi:id="_kV_kUGmxEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handler.1" contributionURI="bundleclass://org.eclipse.app4mc.emf.viewer.plantuml/org.eclipse.app4mc.emf.viewer.plantuml.handlers.EObjectRefsHandler" command="_1iuA8GmvEeqly_jY3FLnyw"/>
+ <elements xsi:type="commands:Handler" xmi:id="_qg0H0GmxEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handler.2" contributionURI="bundleclass://org.eclipse.app4mc.emf.viewer.plantuml/org.eclipse.app4mc.emf.viewer.plantuml.handlers.EClassAllReferencesHandler" command="_P8RuoGmwEeqly_jY3FLnyw"/>
+ <elements xsi:type="commands:Handler" xmi:id="_uBWPUGmxEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handler.3" contributionURI="bundleclass://org.eclipse.app4mc.emf.viewer.plantuml/org.eclipse.app4mc.emf.viewer.plantuml.handlers.EClassContentsAndHierarchyHandler" command="_SVoLoGmwEeqly_jY3FLnyw"/>
+ <elements xsi:type="commands:Handler" xmi:id="_ylP4UGmxEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handler.4" contributionURI="bundleclass://org.eclipse.app4mc.emf.viewer.plantuml/org.eclipse.app4mc.emf.viewer.plantuml.handlers.EClassContentsHandler" command="_W4xmsGmwEeqly_jY3FLnyw"/>
+ <elements xsi:type="commands:Handler" xmi:id="_17314GmxEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handler.5" contributionURI="bundleclass://org.eclipse.app4mc.emf.viewer.plantuml/org.eclipse.app4mc.emf.viewer.plantuml.handlers.EClassContentsFromReferenceHandler" command="_Zw9UwGmwEeqly_jY3FLnyw"/>
+ <elements xsi:type="commands:Handler" xmi:id="_43st0GmxEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handler.6" contributionURI="bundleclass://org.eclipse.app4mc.emf.viewer.plantuml/org.eclipse.app4mc.emf.viewer.plantuml.handlers.CopyContentsHandler" command="_dIkJwGmwEeqly_jY3FLnyw"/>
+ </fragments>
+ <fragments xsi:type="fragment:StringModelFragment" xmi:id="_U-pKYGmyEeqly_jY3FLnyw" featurename="menuContributions" parentElementId="xpath:/">
+ <elements xsi:type="menu:MenuContribution" xmi:id="_WQga4GmyEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.menucontribution.0" positionInParent="after=additions" parentId="popup">
+ <children xsi:type="menu:Menu" xmi:id="_ddrMMGmyEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.menu" label="APP4MC EMF Utils" mnemonics="">
+ <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_n6-cEGmzEeqly_jY3FLnyw" coreExpressionId="org.eclipse.app4mc.emf.viewer.plantuml.definition.ecore"/>
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_hJ60cGmyEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handledmenuitem.eclasshierarchy" label="EClass Hierarchy" iconURI="platform:/plugin/org.eclipse.app4mc.emf.viewer.plantuml/icons/keygroups_obj.gif" mnemonics="" command="_hnm9YGmvEeqly_jY3FLnyw"/>
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_n74QcGmyEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handledmenuitem.eobjectrefs" label="EObject Refs" iconURI="platform:/plugin/org.eclipse.app4mc.emf.viewer.plantuml/icons/sample.gif" command="_1iuA8GmvEeqly_jY3FLnyw"/>
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_tYaKkGmyEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handledmenuitem.eclassallreferences" label="EClass All References" iconURI="platform:/plugin/org.eclipse.app4mc.emf.viewer.plantuml/icons/tag_blue_add.png" command="_P8RuoGmwEeqly_jY3FLnyw"/>
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_0rNCwGmyEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handledmenuitem.eclasscontentshierarchy" label="EClass Contents + Hierarchy" iconURI="platform:/plugin/org.eclipse.app4mc.emf.viewer.plantuml/icons/elements_obj.gif" command="_SVoLoGmwEeqly_jY3FLnyw"/>
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_8Xoi8GmyEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handledmenuitem.eclasscontents" label="EClass Contents" iconURI="platform:/plugin/org.eclipse.app4mc.emf.viewer.plantuml/icons/prop_ps.gif" command="_W4xmsGmwEeqly_jY3FLnyw"/>
+ <children xsi:type="menu:HandledMenuItem" xmi:id="__g6BAGmyEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handledmenuitem.eclasscontentsfromreference" label="EClass Contents from Reference" iconURI="platform:/plugin/org.eclipse.app4mc.emf.viewer.plantuml/icons/drive_go.png" command="_Zw9UwGmwEeqly_jY3FLnyw"/>
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_HvDuMGmzEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handledmenuitem.copycontentscommand" label="Copy Contents Command" iconURI="platform:/plugin/org.eclipse.app4mc.emf.viewer.plantuml/icons/keygroups_obj.gif" command="_dIkJwGmwEeqly_jY3FLnyw"/>
+ </children>
+ </elements>
+ </fragments>
+</fragment:ModelFragments>
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/drive_go.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/drive_go.png
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/drive_go.png
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/drive_go.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/elements_obj.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/elements_obj.gif
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/elements_obj.gif
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/elements_obj.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/filenav_nav.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/filenav_nav.gif
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/filenav_nav.gif
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/filenav_nav.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/keygroups_obj.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/keygroups_obj.gif
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/keygroups_obj.gif
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/keygroups_obj.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/prop_ps.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/prop_ps.gif
similarity index 100%
copy from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/prop_ps.gif
copy to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/prop_ps.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/sample.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/sample.gif
similarity index 100%
copy from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/sample.gif
copy to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/sample.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/super_co.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/super_co.gif
similarity index 100%
copy from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/super_co.gif
copy to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/super_co.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/synced.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/synced.png
new file mode 100644
index 0000000..3e630fc
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/synced.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/tag_blue_add.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/tag_blue_add.png
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/tag_blue_add.png
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/tag_blue_add.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/targetinternal_obj.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/targetinternal_obj.png
new file mode 100644
index 0000000..9c483c1
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/targetinternal_obj.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/plugin.xml b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/plugin.xml
new file mode 100644
index 0000000..4c28402
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/plugin.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin>
+
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ class="org.eclipse.app4mc.emf.viewer.plantuml.preferences.AmaltheaGraphicalRepresentationPreferencePage"
+ id="org.eclipse.app4mc.emf.viewer.plantuml.preferences.AmaltheaPreferencePage"
+ name="AMALTHEA Graphical Representation">
+ </page>
+ </extension>
+ <extension
+ point="org.eclipse.core.runtime.preferences">
+ <initializer
+ class="org.eclipse.app4mc.emf.viewer.plantuml.preferences.PreferenceInitializer">
+ </initializer>
+ </extension>
+ <extension
+ point="org.eclipse.ui.perspectiveExtensions">
+ <perspectiveExtension
+ targetID="org.eclipse.jdt.ui.JavaPerspective">
+ <view
+ id="org.eclipse.app4mc.emf.viewer.plantuml.views.DiagramView"
+ ratio="0.5"
+ relationship="right"
+ relative="org.eclipse.ui.views.ProblemView">
+ </view>
+ </perspectiveExtension>
+ </extension>
+ <extension
+ id="org.eclipse.app4mc.emf.viewer.plantuml.fragment"
+ point="org.eclipse.e4.workbench.model">
+ <fragment
+ uri="fragment.e4xmi"
+ apply="always">
+ </fragment>
+ </extension>
+ <extension
+ point="org.eclipse.core.expressions.definitions">
+ <definition
+ id="org.eclipse.app4mc.emf.viewer.plantuml.definition.ecore">
+ <with
+ variable="activeMenuSelection">
+ <iterate>
+ <instanceof
+ value="org.eclipse.emf.ecore.EObject">
+ </instanceof>
+ </iterate>
+ </with>
+ </definition>
+ </extension>
+
+</plugin>
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/Activator.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/Activator.java
similarity index 86%
copy from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/Activator.java
copy to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/Activator.java
index c86b924..54ff0f8 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/Activator.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/Activator.java
@@ -1,6 +1,6 @@
- /**
+/**
********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -12,7 +12,8 @@
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
-package org.eclipse.app4mc.emfutils.content.extractor;
+
+package org.eclipse.app4mc.emf.viewer.plantuml;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
@@ -23,7 +24,7 @@
public class Activator extends AbstractUIPlugin {
// The plug-in ID
- public static final String PLUGIN_ID = "org.eclipse.app4mc.emfutils.content.extractor"; //$NON-NLS-1$
+ public static final String PLUGIN_ID = "org.eclipse.app4mc.emf.viewer.plantuml"; //$NON-NLS-1$
// The shared instance
private static Activator plugin;
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/AbstractPlantUMLBuilder.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/AbstractPlantUMLBuilder.java
new file mode 100644
index 0000000..4ed3691
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/AbstractPlantUMLBuilder.java
@@ -0,0 +1,317 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
+package org.eclipse.app4mc.emf.viewer.plantuml.builders;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EEnumLiteral;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+public abstract class AbstractPlantUMLBuilder {
+
+ private Map<String, Object> id2ObjectMap;
+ private Map<Object, String> object2IdMap;
+ private Set<Object> nodes;
+ private Set<String> connections;
+
+ public BuilderResult generatePlantUML(Object selectedObject) {
+ if (selectedObject instanceof EClass) {
+ return generatePlantUML((EClass) selectedObject);
+ } else if (selectedObject instanceof EObject) {
+ return generatePlantUML((EObject) selectedObject);
+ }
+ return null;
+ }
+
+ public abstract BuilderResult generatePlantUML(EClass selectedObjClass);
+
+ public abstract BuilderResult generatePlantUML(EObject eObject);
+
+ protected void resetCaches() {
+ id2ObjectMap = null;
+ object2IdMap = null;
+ nodes = null;
+ connections = null;
+ }
+
+ protected Map<String, Object> getId2ObjectMap() {
+ if (id2ObjectMap == null) {
+ id2ObjectMap = new HashMap<String, Object>();
+ }
+ return id2ObjectMap;
+ }
+
+ protected Map<Object, String> getObject2IdMap() {
+ if (object2IdMap == null) {
+ object2IdMap = new HashMap<Object, String>();
+ }
+ return object2IdMap;
+ }
+
+ protected String getIdForObject(Object obj) {
+ if (getObject2IdMap().containsKey(obj)) {
+ return getObject2IdMap().get(obj);
+ }
+
+ // create new UUID
+ final String uuid = EcoreUtil.generateUUID();
+ getId2ObjectMap().put(uuid, obj);
+ getObject2IdMap().put(obj, uuid);
+
+ return uuid;
+ }
+
+ protected Set<Object> getNodes() {
+ if (nodes == null) {
+ nodes = new HashSet<Object>();
+ }
+ return nodes;
+ }
+
+ protected Set<String> getConnections() {
+ if (connections == null) {
+ connections = new HashSet<String>();
+ }
+ return connections;
+ }
+
+ protected void addNode(Object obj) {
+ getNodes().add(obj);
+ }
+
+ protected void addConnection(String str) {
+ getConnections().add(str);
+ }
+
+ protected String timestamp() {
+ final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
+ return dateFormat.format(new Date());
+ }
+
+ protected void appendSkinParams(final StringBuilder plantuml) {
+ plantuml.append("skinparam class {");
+ plantuml.append("\n BackgroundColor PaleGreen");
+ plantuml.append("\n ArrowColor SeaGreen");
+ plantuml.append("\n BorderColor SpringGreen");
+ plantuml.append("\n BackgroundColor<<H>> Wheat");
+ plantuml.append("\n BorderColor<<H>> Tomato");
+
+ plantuml.append("\n BackgroundColor<<SelectedElement>> DarkOrange ");
+ plantuml.append("\n BorderColor<<SelectedElement>> Tomato");
+ plantuml.append("\n}");
+ plantuml.append("\nskinparam stereotypeCBackgroundColor YellowGreen");
+ plantuml.append("\nskinparam stereotypeCBackgroundColor<<H>> DimGray");
+ plantuml.append("\n");
+ }
+
+ protected void appendInheritance(final StringBuilder plantuml, final EClass superClass, final EClass subClass, final String color) {
+
+ String connector = superClass.getName() + " <|-- " + subClass.getName();
+ String style = (color != null && color.length() > 0) ? (" " + color) : "";
+
+ appendConnection(plantuml, connector, style);
+ }
+
+ protected void appendAsContainment(final StringBuilder plantuml, final EStructuralFeature feature) {
+ final EClass source = feature.getEContainingClass();
+ final EClassifier target = feature.getEType();
+
+ appendAsContainment(plantuml, feature, source, target);
+ }
+
+ protected void appendAsContainment(final StringBuilder plantuml, final EStructuralFeature feature, final EClass source, final EClassifier target) {
+
+ final String cardinality = feature.isMany() ? " (0-*) " : "";
+ final String refName = feature.getName();
+
+ String connector = source.getName() + " *--> " + target.getName() + " : " + refName + cardinality;
+
+ appendConnection(plantuml, connector, "");
+ }
+
+ protected void appendReference(final StringBuilder plantuml, final EReference reference) {
+ final EClass source = reference.getEContainingClass();
+ final EClass target = (EClass) reference.getEType();
+
+ appendReference(plantuml, reference, source, target);
+ }
+
+ protected void appendReference(final StringBuilder plantuml, final EReference ref, final EClass source, final EClass target) {
+
+ final String relation = ref.isContainment() ? " *--> " : " --> ";
+ final String lowerBound = ref.getLowerBound() == -1 ? "*" : Integer.toString(ref.getLowerBound());
+ final String upperBound = ref.getUpperBound() == -1 ? "*" : Integer.toString(ref.getUpperBound());
+ final String cardinality = " [" + lowerBound + ":" + upperBound + "]";
+ final String refName = ref.getName();
+
+ String connector = source.getName() + relation + target.getName() + " : "+ refName + cardinality ;
+
+ appendConnection(plantuml, connector, "");
+ }
+
+ private void appendConnection(final StringBuilder plantuml, String connection, String style) {
+
+ if (!getConnections().contains(connection)) {
+ addConnection(connection); // mark as created
+
+ plantuml.append(connection + style);
+ plantuml.append("\n");
+ }
+ }
+
+ protected void appendClassifier(final StringBuilder plantuml, final EClassifier eClassifier, final boolean withUUID) {
+
+ if (!getNodes().contains(eClassifier)) {
+ addNode(eClassifier); // mark as created
+
+ plantuml.append("class \"" + eClassifier.getName() + "\"");
+
+ if (withUUID) {
+ final String uuid = getIdForObject(eClassifier);
+ plantuml.append(" [[" + uuid + "]]");
+ }
+
+ plantuml.append("\n");
+ }
+ }
+
+ protected void appendEnum(final StringBuilder plantuml, final EEnum eEnum) {
+
+ if (!getNodes().contains(eEnum)) {
+ addNode(eEnum); // mark as created
+
+ plantuml.append("enum \"" + eEnum.getName() + "\"");
+ plantuml.append(" {");
+
+ for (final EEnumLiteral literal : eEnum.getELiterals()) {
+
+ plantuml.append("\n ");
+ plantuml.append(literal.getName());
+ }
+
+ plantuml.append("\n}\n");
+ }
+ }
+
+ protected void appendDataType(final StringBuilder plantuml, final EDataType eDataType) {
+
+ }
+
+ protected void appendClass(final StringBuilder plantuml, final EClass eClass, final String stereoType,
+ final boolean withUUID, final EList<EAttribute> attributes, final EList<EReference> references) {
+
+ if (!getNodes().contains(eClass)) {
+ addNode(eClass); // mark as created
+
+ appendClassHeader(plantuml, eClass, stereoType, withUUID);
+
+ boolean withAttributes = attributes != null && attributes.isEmpty() == false;
+ boolean withReferences = references != null && references.isEmpty() == false;
+
+ if (withAttributes || withReferences) {
+ plantuml.append(" {");
+
+ if (withAttributes) {
+ appendClassAttributes(plantuml, eClass, attributes);
+ }
+
+ if (withReferences) {
+ appendClassReferences(plantuml, eClass, references);
+ }
+
+ plantuml.append("\n}");
+ }
+
+ plantuml.append("\n");
+ }
+ }
+
+ private void appendClassHeader(final StringBuilder plantuml, final EClass eClass, final String stereoType, final boolean withUUID) {
+
+ if (eClass.isAbstract() && eClass.isInterface()) {
+ plantuml.append("interface \"" + eClass.getName() + "\"");
+ } else if (eClass.isAbstract()) {
+ plantuml.append("abstract \"" + eClass.getName() + "\"");
+ } else if (eClass.isInterface()) {
+ plantuml.append("interface \"" + eClass.getName() + "\"");
+ } else {
+ plantuml.append("class \"" + eClass.getName() + "\"");
+ }
+
+ if (stereoType != null) {
+ plantuml.append("<<" + stereoType + ">>");
+ }
+
+ if (withUUID) {
+ final String uuid = getIdForObject(eClass);
+ plantuml.append(" [[" + uuid + "]]");
+ }
+ }
+
+ private void appendClassAttributes(final StringBuilder plantuml, final EClass eClass, EList<EAttribute> attributeList) {
+
+ /* listing attributes belonging to the specific EMF element */
+
+ for (final EAttribute attribute : attributeList) {
+
+ plantuml.append("\n ");
+
+ final String lowerBound = attribute.getLowerBound() == -1 ? "*" : attribute.getLowerBound() + "";
+ final String upperBound = attribute.getUpperBound() == -1 ? "*" : attribute.getUpperBound() + "";
+
+ plantuml.append(
+ attribute.getEType().getName() + " "
+ + attribute.getName()
+ + " [" + lowerBound + ":" + upperBound + "]");
+ }
+ }
+
+ private void appendClassReferences(final StringBuilder plantuml, final EClass eClass, EList<EReference> referenceList) {
+
+ /* listing references belonging to the specific EMF element */
+
+ for (final EReference reference : referenceList) {
+
+ plantuml.append("\n ");
+
+ final String lowerBound = reference.getLowerBound() == -1 ? "*" : reference.getLowerBound() + "";
+ final String upperBound = reference.getUpperBound() == -1 ? "*" : reference.getUpperBound() + "";
+
+ plantuml.append(
+ reference.getEType().getName() + " "
+ + reference.getName()
+ + " [" + lowerBound + ":" + upperBound + "]");
+ }
+ }
+
+}
+
+
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/BuilderResult.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/BuilderResult.java
new file mode 100644
index 0000000..a5e0975
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/BuilderResult.java
@@ -0,0 +1,41 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
+package org.eclipse.app4mc.emf.viewer.plantuml.builders;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class BuilderResult {
+
+ private Map<String, Object> id2Object;
+ private String plantUML;
+
+ public BuilderResult(Map<String, Object> id2ObjectMap, String plantUMLText) {
+ this.id2Object = new HashMap<String, Object>();
+ if (id2ObjectMap != null && !id2ObjectMap.isEmpty()) {
+ id2Object.putAll(id2ObjectMap);
+ }
+ this.plantUML = plantUMLText;
+ }
+
+ public Map<String, Object> getId2ObjectMap() {
+ return id2Object;
+ }
+
+ public String getPlantUMLText() {
+ return plantUML;
+ }
+}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/BuilderUtil.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/BuilderUtil.java
new file mode 100644
index 0000000..3ac4d49
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/BuilderUtil.java
@@ -0,0 +1,69 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
+package org.eclipse.app4mc.emf.viewer.plantuml.builders;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+
+public class BuilderUtil {
+
+ public static Set<EClass> getSubClasses(final EClass eClass) {
+
+ final Set<EClass> allSubClasses = new HashSet<EClass>();
+
+ final Resource eResource = eClass.eResource();
+ if (eResource != null && eResource.getResourceSet() != null) {
+
+ // Find the subclasses for the supplied EClass in all the packages belonging to the resource set
+
+ for (final Resource resource : eResource.getResourceSet().getResources()) {
+ for (EObject eObj : resource.getContents()) {
+ if (eObj instanceof EPackage) {
+ allSubClasses.addAll(getSubClasses(eClass, (EPackage) eObj));
+ }
+ }
+ }
+
+ } else {
+
+ return getSubClasses(eClass, eClass.getEPackage());
+ }
+
+ return allSubClasses;
+ }
+
+ public static Set<EClass> getSubClasses(final EClass eClass, final EPackage ePackage) {
+ final Set<EClass> allSubClasses = new HashSet<EClass>();
+
+ for (final EClassifier eClassifier : ePackage.getEClassifiers()) {
+
+ if (eClassifier instanceof EClass) {
+
+ if (!(eClass == eClassifier) && eClass.isSuperTypeOf((EClass) eClassifier)) {
+ allSubClasses.add((EClass) eClassifier);
+ }
+ }
+ }
+ return allSubClasses;
+ }
+
+}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/EClassAllReferencesBuilder.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/EClassAllReferencesBuilder.java
new file mode 100644
index 0000000..0480aa8
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/EClassAllReferencesBuilder.java
@@ -0,0 +1,206 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
+package org.eclipse.app4mc.emf.viewer.plantuml.builders;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EStructuralFeature.Setting;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+public class EClassAllReferencesBuilder extends AbstractPlantUMLBuilder {
+
+ @Override
+ public BuilderResult generatePlantUML(final EClass selectedObjClass) {
+
+ resetCaches();
+
+ final StringBuilder plantuml = new StringBuilder();
+
+ plantuml.append("@startuml\n\n");
+
+ plantuml.append("' Created by EClassAllReferencesBuilder (" + timestamp() + ")\n\n");
+
+ plantuml.append("skinparam class {\n");
+ plantuml.append(" BackgroundColor<<selected>> Moccasin\n");
+ plantuml.append("}\n\n");
+
+ plantuml.append("' ===== Main Class =====\n\n");
+
+ appendClass(plantuml, selectedObjClass, "selected", false, null, null);
+
+ plantuml.append("\n' ===== Super Classes =====\n\n");
+
+ populateSuperClasses(plantuml, selectedObjClass);
+
+ plantuml.append("\n' ===== Sub Classes =====\n\n");
+
+ populateSubClasses(plantuml, selectedObjClass, BuilderUtil.getSubClasses(selectedObjClass));
+
+ plantuml.append("\n@enduml");
+
+ return new BuilderResult(getId2ObjectMap(), plantuml.toString());
+ }
+
+ @Override
+ public BuilderResult generatePlantUML(EObject eObject) {
+ return generatePlantUML(eObject.eClass());
+ }
+
+ private void populateSuperClasses(final StringBuilder plantuml, final EClass eClass) {
+
+ populateEClassReferences(plantuml, eClass);
+
+ for (final EClass superClass : eClass.getESuperTypes()) {
+
+ appendClass(plantuml, superClass, null, true, null, null);
+
+ appendInheritance(plantuml, superClass, eClass, "#darkblue");
+
+ populateSuperClasses(plantuml, superClass);
+ }
+ }
+
+ private void populateSubClasses(final StringBuilder plantuml, final EClass eClass, final Set<EClass> subClasses) {
+
+ for (final EClass subClass : subClasses) {
+
+ if (subClass.getESuperTypes().contains(eClass)) {
+
+ appendClass(plantuml, subClass, null, true, null, null);
+
+ appendInheritance(plantuml, eClass, subClass, "#darkGreen");
+
+ populateEClassContainerInfo(plantuml, subClass);
+
+ populateSubClasses(plantuml, subClass, subClasses);
+ }
+ }
+ }
+
+ private void populateEClassReferences(final StringBuilder plantuml, final EClass selectedObjClass) {
+ final List<EReference> result = new ArrayList<EReference>();
+
+ final Object searchScope = (selectedObjClass.eResource().getResourceSet() == null)
+ ? selectedObjClass.eResource()
+ : selectedObjClass.eResource().getResourceSet();
+
+ /*- getting all the elements from the selected objects EClass --> by supplying the EResource of the corresponding EClass (i.e. ecore or Xcore) */
+
+ Collection<Setting> allRefSettings = null;
+ if (searchScope instanceof Resource) {
+ allRefSettings = EcoreUtil.UsageCrossReferencer.find(selectedObjClass, (Resource) searchScope);
+ } else if (searchScope instanceof ResourceSet) {
+ allRefSettings = EcoreUtil.UsageCrossReferencer.find(selectedObjClass, (ResourceSet) searchScope);
+ }
+
+ /*- if refs of the EClass are found, then fill the plantUMLBuffer with the appropriate contents */
+
+ if (allRefSettings.size() > 0) {
+
+ for (final EStructuralFeature.Setting refSetting : allRefSettings) {
+
+ if (refSetting.getEObject() instanceof EReference
+ && !isElementContained(result, (EReference) refSetting.getEObject())) {
+ result.add((EReference) refSetting.getEObject());
+ }
+ }
+
+ for (final EReference eReference : result) {
+
+ final EClass sourceClass = eReference.getEContainingClass();
+
+ appendClassifier(plantuml, sourceClass, true);
+
+ appendReference(plantuml, eReference, sourceClass, selectedObjClass);
+ }
+
+ } else {
+ /*- no references for this EClass are found */
+
+ appendClassifier(plantuml, selectedObjClass, true);
+ }
+ }
+
+ private void populateEClassContainerInfo(final StringBuilder plantuml, final EClass selectedObjClass) {
+ final List<EReference> result = new ArrayList<EReference>();
+
+ final Object searchScope = (selectedObjClass.eResource().getResourceSet() == null)
+ ? selectedObjClass.eResource()
+ : selectedObjClass.eResource().getResourceSet();
+
+ /*- getting all the elements from the selected objects EClass --> by supplying the EResource of the corresponding EClass (i.e. ecore or Xcore) */
+
+ Collection<Setting> allRefSettings = null;
+ if (searchScope instanceof Resource) {
+ allRefSettings = EcoreUtil.UsageCrossReferencer.find(selectedObjClass, (Resource) searchScope);
+ } else if (searchScope instanceof ResourceSet) {
+ allRefSettings = EcoreUtil.UsageCrossReferencer.find(selectedObjClass, (ResourceSet) searchScope);
+ }
+
+ /*- if refs of the EClass are found, then fill the plantUMLBuffer with the appropriate contents */
+
+ if (allRefSettings.size() > 0) {
+
+ for (final EStructuralFeature.Setting refSetting : allRefSettings) {
+
+ if (refSetting.getEObject() instanceof EReference
+ && !isElementContained(result, (EReference) refSetting.getEObject())) {
+ if (((EReference) refSetting.getEObject()).isContainment()) {
+ result.add((EReference) refSetting.getEObject());
+ }
+ }
+ }
+
+ for (final EReference eReference : result) {
+
+ final EClass sourceClass = eReference.getEContainingClass();
+
+ appendClassifier(plantuml, sourceClass, true);
+
+ appendReference(plantuml, eReference, sourceClass, selectedObjClass);
+ }
+
+ } else {
+
+ /*- no references for this EClass are found */
+
+ appendClassifier(plantuml, selectedObjClass, true);
+ }
+ }
+
+ private boolean isElementContained(final List<EReference> l, final EReference eRef) {
+ boolean isElementFound = false;
+ final Iterator<EReference> it = l.iterator();
+ while (it.hasNext() && !isElementFound) {
+ final EReference isContained = it.next();
+ if (isContained.equals(eRef)) {
+ isElementFound = true;
+ }
+ }
+ return isElementFound;
+ }
+
+}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/EClassContentsAndHierarchyBuilder.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/EClassContentsAndHierarchyBuilder.java
new file mode 100644
index 0000000..e9fdb9d
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/EClassContentsAndHierarchyBuilder.java
@@ -0,0 +1,121 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
+package org.eclipse.app4mc.emf.viewer.plantuml.builders;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+
+public class EClassContentsAndHierarchyBuilder extends AbstractPlantUMLBuilder {
+
+ @Override
+ public BuilderResult generatePlantUML(final EClass selectedObjClass) {
+
+ this.resetCaches();
+
+ final StringBuilder plantuml = new StringBuilder();
+
+ plantuml.append("@startuml\n\n");
+
+ plantuml.append("' Created by EClassContentsAndHierarchyBuilder (" + timestamp() + ")\n\n");
+
+ appendSkinParams(plantuml);
+
+ plantuml.append("\n' ===== Main Class =====\n\n");
+
+ createClass(plantuml, selectedObjClass, "SelectedElement");
+
+ plantuml.append("\n' ===== Super Classes =====\n\n");
+
+ populateSuperClasses(plantuml, selectedObjClass);
+
+ plantuml.append("\n' ===== Sub Classes =====\n\n");
+
+ populateSubClassInfo(plantuml, selectedObjClass);
+
+ plantuml.append("\n@enduml");
+
+ return new BuilderResult(getId2ObjectMap(), plantuml.toString());
+ }
+
+ @Override
+ public BuilderResult generatePlantUML(EObject eObject) {
+ return generatePlantUML(eObject.eClass());
+ }
+
+ private void populateSubClassInfo(final StringBuilder plantuml, final EClass eClass) {
+
+ for (final EClass subClass : BuilderUtil.getSubClasses(eClass)) {
+
+ createClass(plantuml, subClass, "H");
+
+ appendInheritance(plantuml, eClass, subClass, null);
+ }
+ }
+
+ private void populateSuperClasses(final StringBuilder plantuml, final EClass eClass) {
+
+ for (final EClass superClass : eClass.getESuperTypes()) {
+
+ createClass(plantuml, superClass, "H");
+
+ appendInheritance(plantuml, superClass, eClass, null);
+
+ populateSuperClasses(plantuml, superClass);
+ }
+ }
+
+ private void createClass(final StringBuilder plantuml, final EClass eClass, final String stereoType) {
+
+ if (!getNodes().contains(eClass)) {
+
+ boolean createUUID = ("SelectedElement".equals(stereoType) == false);
+
+ appendClass(plantuml, eClass, stereoType, createUUID, eClass.getEAttributes(), eClass.getEReferences());
+
+ /*- managing EEnums belonging to the specific EMF element */
+
+ for (final EAttribute attribute : eClass.getEAttributes()) {
+ if (attribute.getEAttributeType() instanceof EEnum) {
+
+ EEnum eEnum = (EEnum) attribute.getEType();
+
+ appendEnum(plantuml, eEnum);
+
+ appendAsContainment(plantuml, attribute, eClass, eEnum);
+ }
+ }
+
+ /*- managing EReferences belonging to the specific EMF element */
+
+ for (final EReference reference : eClass.getEReferences()) {
+ if (reference.getEType() instanceof EClass) {
+
+ EClass target = (EClass) reference.getEType();
+
+ createClass(plantuml, target, null);
+
+ appendReference(plantuml, reference, eClass, target);
+ }
+ }
+
+ plantuml.append("\n");
+ }
+ }
+
+}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/EClassContentsFromReferenceBuilder.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/EClassContentsFromReferenceBuilder.java
new file mode 100644
index 0000000..203fb48
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/EClassContentsFromReferenceBuilder.java
@@ -0,0 +1,107 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
+package org.eclipse.app4mc.emf.viewer.plantuml.builders;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+
+public class EClassContentsFromReferenceBuilder extends AbstractPlantUMLBuilder {
+
+ @Override
+ public BuilderResult generatePlantUML(final EClass selectedObjClass) {
+
+ this.resetCaches();
+
+ final StringBuilder plantuml = new StringBuilder();
+
+ plantuml.append("@startuml\n\n");
+
+ plantuml.append("' Created by EClassContentsFromReferenceBuilder (" + timestamp() + ")\n\n");
+
+ appendSkinParams(plantuml);
+
+ plantuml.append("\n' ===== Main Class =====\n\n");
+
+ createClass(plantuml, selectedObjClass, "SelectedElement", 1);
+
+ plantuml.append("\n' ===== Sub Classes =====\n\n");
+
+ populateSubClassInfo(plantuml, selectedObjClass);
+
+ plantuml.append("\n@enduml");
+
+ return new BuilderResult(getId2ObjectMap(), plantuml.toString());
+ }
+
+ @Override
+ public BuilderResult generatePlantUML(EObject eObject) {
+ return generatePlantUML(eObject.eClass());
+ }
+
+ private void populateSubClassInfo(final StringBuilder plantuml, final EClass eClass) {
+
+ for (final EClass subClass : BuilderUtil.getSubClasses(eClass)) {
+
+ createClass(plantuml, subClass, "H", 1);
+
+ appendInheritance(plantuml, eClass, subClass, null);
+ }
+ }
+
+ private void createClass(final StringBuilder plantuml, final EClass eClass, final String stereoType, final int level) {
+
+ if (level > 2) return;
+
+ if (!getNodes().contains(eClass)) {
+
+ boolean createUUID = ("SelectedElement".equals(stereoType) == false);
+
+ appendClass(plantuml, eClass, stereoType, createUUID, eClass.getEAllAttributes(), eClass.getEAllReferences());
+
+ /*- managing EEnums belonging to the specific EMF element */
+
+ for (final EAttribute attribute : eClass.getEAllAttributes()) {
+ if (attribute.getEAttributeType() instanceof EEnum) {
+
+ EEnum eEnum = (EEnum) attribute.getEType();
+
+ appendEnum(plantuml, eEnum);
+
+ appendAsContainment(plantuml, attribute, eClass, eEnum);
+ }
+ }
+
+ /*- managing EReferences belonging to the specific EMF element */
+
+ for (final EReference reference : eClass.getEAllReferences()) {
+ if (reference.getEType() instanceof EClass) {
+
+ EClass target = (EClass) reference.getEType();
+
+ createClass(plantuml, target, null, level + 1);
+
+ appendReference(plantuml, reference, eClass, target);
+ }
+ }
+
+ plantuml.append("\n");
+ }
+ }
+
+}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/EClassHierarchyBuilder.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/EClassHierarchyBuilder.java
new file mode 100644
index 0000000..cf8b598
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/EClassHierarchyBuilder.java
@@ -0,0 +1,89 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
+package org.eclipse.app4mc.emf.viewer.plantuml.builders;
+
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+public class EClassHierarchyBuilder extends AbstractPlantUMLBuilder {
+
+ @Override
+ public BuilderResult generatePlantUML(EClass selectedObjClass) {
+
+ resetCaches();
+
+ final StringBuilder plantuml = new StringBuilder();
+
+ plantuml.append("@startuml\n\n");
+
+ plantuml.append("' Created by EClassHierarchyBuilder (" + timestamp() + ")\n\n");
+
+ plantuml.append("skinparam class {\n");
+ plantuml.append(" BackgroundColor<<selected>> Moccasin\n");
+ plantuml.append("}\n\n");
+
+ plantuml.append("' ===== Main Class =====\n\n");
+
+ appendClass(plantuml, selectedObjClass, "selected", false, null, null);
+
+ plantuml.append("\n' ===== Super Classes =====\n\n");
+
+ populateSuperClasses(plantuml, selectedObjClass);
+
+ plantuml.append("\n' ===== Sub Classes =====\n\n");
+
+ populateSubClasses(plantuml, selectedObjClass, BuilderUtil.getSubClasses(selectedObjClass));
+
+ plantuml.append("\n@enduml");
+
+ return new BuilderResult(getId2ObjectMap(), plantuml.toString());
+ }
+
+ @Override
+ public BuilderResult generatePlantUML(EObject eObject) {
+ return generatePlantUML(eObject.eClass());
+ }
+
+ private void populateSuperClasses(final StringBuilder plantuml, final EClass eClass) {
+
+ for (final EClass superClass : eClass.getESuperTypes()) {
+
+ appendClass(plantuml, superClass, null, true, null, null);
+
+ appendInheritance(plantuml, superClass, eClass, null);
+
+ populateSuperClasses(plantuml, superClass);
+ }
+ }
+
+ private void populateSubClasses(final StringBuilder plantuml, final EClass eClass, final Set<EClass> subClasses) {
+
+ for (final EClass subClass : subClasses) {
+
+ if (subClass.getESuperTypes().contains(eClass)) {
+
+ appendClass(plantuml, subClass, null, true, null, null);
+
+ appendInheritance(plantuml, eClass, subClass, null);
+
+ populateSubClasses(plantuml, subClass, subClasses);
+ }
+ }
+ }
+
+}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/EObjectRefsBuilder.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/EObjectRefsBuilder.java
new file mode 100644
index 0000000..af73c89
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/EObjectRefsBuilder.java
@@ -0,0 +1,283 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
+package org.eclipse.app4mc.emf.viewer.plantuml.builders;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.regex.Pattern;
+
+import org.eclipse.e4.ui.di.UISynchronize;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EStructuralFeature.Setting;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IInputValidator;
+import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.swt.widgets.Display;
+
+public class EObjectRefsBuilder extends AbstractPlantUMLBuilder {
+
+ UISynchronize sync;
+
+ public EObjectRefsBuilder(UISynchronize sync) {
+ this.sync = sync;
+ }
+
+ // NOTE: EClass is an EObject
+
+ @Override
+ public BuilderResult generatePlantUML(final EClass eObject) {
+ return generatePlantUML((EObject) eObject);
+ }
+
+ @Override
+ public BuilderResult generatePlantUML(final EObject eObject) {
+
+ resetCaches();
+
+ final StringBuilder plantuml = new StringBuilder();
+
+ plantuml.append("@startuml\n\n");
+
+ plantuml.append("' Created by EObjectRefsBuilder (" + timestamp() + ")\n\n");
+
+ plantuml.append("skinparam class {\n");
+ plantuml.append(" BackgroundColor<<selected>> Moccasin\n");
+ plantuml.append("}\n\n");
+
+ plantuml.append("' ===== Main Object =====\n\n");
+
+ buildBuffer(eObject, plantuml);
+
+ plantuml.append("\n@enduml");
+
+ return new BuilderResult(getId2ObjectMap(), plantuml.toString());
+ }
+
+ private void buildBuffer(final EObject selectedEObj, final StringBuilder plantuml) {
+
+ final List<EObject> result = new ArrayList<EObject>();
+
+ /* getting all the elements from the selected objects EClass --> by supplying the EResource of the corresponding EClass (i.e. ecore or Xcore) */
+
+ final Collection<Setting> allRefSettings = filterBackReferences(getAllRefSettings(selectedEObj));
+
+ /*
+ * In case of many elements it is difficult to visualize the contents in the diagram.
+ *
+ * Below code provides the possibility to specify the range
+ */
+ if (allRefSettings.size() > 100) {
+
+ if (sync != null) {
+ sync.syncExec(() -> {
+ InputDialog inputDialog = new InputDialog(
+ Display.getDefault().getActiveShell(),
+ "Element selection dialog",
+ "There are " + allRefSettings.size() + " references. Specify the range for which contents should be represented graphically",
+ "0-" + (allRefSettings.size() - 1), new IInputValidator() {
+
+ @Override
+ public String isValid(final String newText) {
+ if (!Pattern.matches("(\\d)+\\-(\\d)+", newText)) {
+ return "Specify the range in the following way int-int eg. 10-20 ";
+ }
+ return null;
+ }
+ });
+
+ int status = inputDialog.open();
+
+ List<Setting> subList = null;
+ if (status == Dialog.OK) {
+ String value = inputDialog.getValue();
+ String[] split = value.split("-");
+
+ subList = new ArrayList<>(allRefSettings).subList(Integer.parseInt(split[0]),
+ Integer.parseInt(split[1]) < allRefSettings.size()
+ ? Integer.parseInt(split[1])
+ : (allRefSettings.size() - 1));
+
+ } else {
+ subList = new ArrayList<Setting>(allRefSettings).subList(0, 99);
+ }
+
+ allRefSettings.clear();
+ allRefSettings.addAll(subList);
+ });
+
+ } else {
+ List<Setting> subList = new ArrayList<>(allRefSettings).subList(0, 99);
+ allRefSettings.clear();
+ allRefSettings.addAll(subList);
+ }
+ }
+
+ /*- if refs of the EClass are found, then fill the plantUMLBuffer with the appropriate contents */
+
+ if (allRefSettings.size() > 0) {
+
+ for (final EStructuralFeature.Setting setting : allRefSettings) {
+
+ if (!isElementContained(result, setting.getEObject())) {
+ result.add(setting.getEObject());
+ }
+ }
+
+ createClass(plantuml, selectedEObj);
+
+ for (final EObject eobj : result) {
+
+ createClass(plantuml, eobj);
+
+ if (!isNamePresent(eobj)) {
+
+ /*- As name is not present, generate the hierarchy till the level Object with Structural Feature name is present */
+ associateContainer(plantuml, eobj);
+ }
+ }
+
+ for (final EObject eobj : result) {
+
+ final String name = getName(eobj).toString();
+
+ plantuml.append(name + "--> " + getName(selectedEObj));
+ plantuml.append("\n");
+ }
+
+ } else {
+
+ /*- no references for this EClass are found */
+ createClass(plantuml, selectedEObj);
+ }
+ }
+
+ /**
+ * In case of certain meta-models (e.g: Amalthea), to have back references -> derived attributes are specified on Reference in Ecore.
+ * This method is used to remove back reference objects from the collection.
+ * @param allRefSettings
+ * @return filteredSettings which do not have derived references
+ */
+ private Collection<Setting> filterBackReferences(Collection<Setting> allRefSettings) {
+
+ Collection<Setting> filteredSettingElements=new ArrayList<EStructuralFeature.Setting>();
+
+ if (allRefSettings.size() > 0) {
+
+ for (final EStructuralFeature.Setting setting : allRefSettings) {
+
+ EStructuralFeature eStructuralFeature = setting.getEStructuralFeature();
+
+ if (eStructuralFeature instanceof EReference
+ && (((EReference) eStructuralFeature).isContainment() == false)
+ && (((EReference) eStructuralFeature).isDerived() == false)) {
+ filteredSettingElements.add(setting);
+ }
+ }
+ }
+
+ return filteredSettingElements;
+ }
+
+ private Collection<Setting> getAllRefSettings(EObject selectedEObj) {
+ Resource eResource = selectedEObj.eResource();
+ if (eResource == null) {
+ return EcoreUtil.UsageCrossReferencer.find(selectedEObj, EcoreUtil.getRootContainer(selectedEObj));
+ } else if (eResource.getResourceSet() == null) {
+ return EcoreUtil.UsageCrossReferencer.find(selectedEObj, eResource);
+ }
+ return EcoreUtil.UsageCrossReferencer.find(selectedEObj, eResource.getResourceSet());
+ }
+
+ private void createClass(final StringBuilder plantuml, final EObject selectedEObj) {
+ if (!getNodes().contains(selectedEObj)) {
+ addNode(selectedEObj); // mark as created
+
+ final Object name = getName(selectedEObj);
+ final String className = selectedEObj.eClass().getName();
+ final String uuid = getIdForObject(selectedEObj);
+
+ plantuml.append("class " + name + " << (O,#B4A7E5) " + className + " >>" + " [[" + uuid + "]]");
+ plantuml.append("\n");
+ }
+ }
+
+ private Object getName(final EObject eObject) {
+ final EStructuralFeature eStructuralFeature = eObject.eClass().getEStructuralFeature("name");
+
+ if (eStructuralFeature != null) {
+
+ final Object originalName = eObject.eGet(eStructuralFeature);
+
+ if (originalName == null || originalName.toString().length() == 0) {
+ return eObject.eClass().getName() + "__" + eObject.hashCode();
+ }
+
+ return "\"" + originalName + "\"";
+ }
+
+ return eObject.eClass().getName() + "__" + eObject.hashCode();
+ }
+
+ private void associateContainer(final StringBuilder plantuml, final EObject eObject) {
+
+ final EObject eContainerObj = eObject.eContainer();
+
+ if (eContainerObj == null) {
+ return;
+ }
+
+ createClass(plantuml, eContainerObj);
+
+ plantuml.append(getName(eContainerObj) + " *-- " + getName(eObject));
+
+ plantuml.append("\n");
+
+ if (!isNamePresent(eContainerObj)) {
+ associateContainer(plantuml, eContainerObj);
+ }
+
+ }
+
+ private boolean isNamePresent(final EObject eObject) {
+ final EStructuralFeature eStructuralFeature = eObject.eClass().getEStructuralFeature("name");
+
+ if (eStructuralFeature == null) {
+ return false;
+ }
+
+ return true;
+ }
+
+ private boolean isElementContained(final List<EObject> list, final EObject eRef) {
+ boolean isElementFound = false;
+ final Iterator<EObject> it = list.iterator();
+ while (it.hasNext() && !isElementFound) {
+ final EObject isContained = it.next();
+ if (isContained.equals(eRef)) {
+ isElementFound = true;
+ }
+ }
+ return isElementFound;
+ }
+
+}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/ObjectContentBuilder.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/ObjectContentBuilder.java
new file mode 100644
index 0000000..6057aad
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/ObjectContentBuilder.java
@@ -0,0 +1,272 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
+package org.eclipse.app4mc.emf.viewer.plantuml.builders;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Pattern;
+
+import org.eclipse.e4.ui.di.UISynchronize;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IInputValidator;
+import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.swt.widgets.Display;
+
+public class ObjectContentBuilder extends AbstractPlantUMLBuilder {
+
+ UISynchronize sync;
+
+ public ObjectContentBuilder(UISynchronize sync) {
+ this.sync = sync;
+ }
+
+ @Override
+ public BuilderResult generatePlantUML(Object selectedObject) {
+ if (selectedObject instanceof EList) {
+ return generatePlantUMLForCollection((EList<?>) selectedObject);
+ }
+ return super.generatePlantUML(selectedObject);
+ }
+
+ // NOTE: EClass is an EObject
+
+ @Override
+ public BuilderResult generatePlantUML(final EClass eObject) {
+ return generatePlantUML((EObject) eObject);
+ }
+
+ @Override
+ public BuilderResult generatePlantUML(final EObject eObject) {
+
+ resetCaches();
+
+ final StringBuilder plantuml = new StringBuilder();
+
+ plantuml.append("@startuml\n\n");
+
+ plantuml.append("' Created by ObjectContentBuilder (" + timestamp() + ")\n\n");
+
+ plantuml.append("' ===== Main Object =====\n\n");
+
+ buildBuffer(eObject, plantuml);
+
+ plantuml.append("\n@enduml");
+
+ return new BuilderResult(getId2ObjectMap(), plantuml.toString());
+ }
+
+ public BuilderResult generatePlantUMLForCollection(final EList<?> eList) {
+
+ resetCaches();
+
+ final StringBuilder plantuml = new StringBuilder();
+
+ plantuml.append("@startuml\n\n");
+
+ plantuml.append("' Created by ObjectContentBuilder (" + timestamp() + ")\n\n");
+
+ plantuml.append("' ===== Main Objects =====\n\n");
+
+ createClass(plantuml, eList, null);
+
+ for (final Object object : getElementsBasedOnRange(eList)) {
+ if (object instanceof EObject) {
+
+ createClass(plantuml, (EObject) object);
+
+ final String name = getName((EObject) object).toString();
+
+ plantuml.append("Collection --> " + name);
+ plantuml.append("\n");
+ }
+ }
+
+ plantuml.append("\n@enduml");
+
+ return new BuilderResult(getId2ObjectMap(), plantuml.toString());
+ }
+
+ private void buildBuffer(final EObject selectedEObj, final StringBuilder plantuml) {
+
+ final EList<EStructuralFeature> eStructuralFeatures = selectedEObj.eClass().getEAllStructuralFeatures();
+
+ /*- if refs of the EClass are found, then fill the plantUMLBuffer with the appropriate contents */
+
+ if (eStructuralFeatures.size() > 0) {
+
+ createClass(plantuml, selectedEObj);
+
+ final List<EStructuralFeature> processedFeatures = new ArrayList<EStructuralFeature>();
+
+ for (final EStructuralFeature eStructuralFeature : eStructuralFeatures) {
+
+ final boolean eIsSet = selectedEObj.eIsSet(eStructuralFeature);
+
+ if (eIsSet && !processedFeatures.contains(eStructuralFeature)
+ && (eStructuralFeature instanceof EReference)) {
+
+ processedFeatures.add(eStructuralFeature);
+
+ final Object eobj = selectedEObj.eGet(eStructuralFeature);
+
+ if (eobj instanceof EObject) {
+ createClass(plantuml, (EObject) eobj);
+
+ final String name = getName((EObject) eobj).toString();
+
+ final String relation = ((EReference) eStructuralFeature).isContainment() ? " *-- " : "--> ";
+
+ plantuml.append(getName(selectedEObj) + relation + name);
+ plantuml.append("\n");
+
+ } else if (eobj instanceof EList) {
+
+ createClass(plantuml, (EList<?>) eobj, eStructuralFeature);
+
+ final String relation = ((EReference) eStructuralFeature).isContainment() ? " *-- " : "--> ";
+
+ plantuml.append(getName(selectedEObj) + relation + eStructuralFeature.getName());
+ plantuml.append("\n");
+ }
+
+ }
+ }
+
+ } else {
+
+ /*- no references for this EClass are found */
+ createClass(plantuml, selectedEObj);
+ }
+
+ }
+
+ private void createClass(final StringBuilder plantuml, final EList<?> eList, final EStructuralFeature eStructuralFeature) {
+
+ final String uuid = getIdForObject(eList);
+
+ if (eStructuralFeature != null) {
+ final String name = eStructuralFeature.getName();
+ final String typeName = eStructuralFeature.getEType().getName();
+
+ plantuml.append("class \"" + name + "\"" + " << (*,#FF7700) EList<" + typeName + "> >>" + " [[" + uuid + "]]");
+ } else {
+ plantuml.append("class \"" + "Collection" + "\"" + " << (*,#FF7700) Collection<" + "EList" + "> >>" + " [[" + uuid + "]]");
+ }
+
+ plantuml.append("\n");
+ }
+
+ private void createClass(final StringBuilder plantuml, final EObject selectedEObj) {
+
+ final Object name = getName(selectedEObj);
+ final String className = selectedEObj.eClass().getName();
+ final String uuid = getIdForObject(selectedEObj);
+
+ plantuml.append("class " + name + " << (O,#B4A7E5) " + className + " >>" + " [[" + uuid + "]]");
+
+ final EList<EAttribute> eAllAttributes = selectedEObj.eClass().getEAllAttributes();
+
+ if (eAllAttributes.size() > 0) {
+
+ plantuml.append(" {");
+
+ final List<EAttribute> processedFeatures = new ArrayList<EAttribute>();
+
+ for (final EAttribute eAttribute : eAllAttributes) {
+
+ if (selectedEObj.eIsSet(eAttribute) && !processedFeatures.contains(eAttribute)) {
+
+ processedFeatures.add(eAttribute);
+
+ plantuml.append("\n ");
+ plantuml.append(eAttribute.getEType().getName() + " " + eAttribute.getName() + " = " + selectedEObj.eGet(eAttribute));
+ }
+ }
+ plantuml.append("\n}");
+ }
+
+ plantuml.append("\n");
+ }
+
+ private Object getName(final EObject eObject) {
+ final EStructuralFeature eStructuralFeature = eObject.eClass().getEStructuralFeature("name");
+
+ if (eStructuralFeature != null) {
+
+ final Object originalName = eObject.eGet(eStructuralFeature);
+
+ return "\"" + originalName + "\"";
+ }
+
+ return eObject.eClass().getName() + "__" + eObject.hashCode();
+ }
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ private List<?> getElementsBasedOnRange(final EList<?> eList) {
+
+ if (eList.size() > 100) {
+
+ if (sync != null) {
+ sync.syncExec(() -> {
+
+ List subList = new ArrayList();
+
+ InputDialog inputDialog = new InputDialog(
+ Display.getDefault().getActiveShell(),
+ "Element selection dialog",
+ "There are " + eList.size() + " references. Specify the range for which contents should be represented graphically",
+ "0-" + (eList.size() - 1), new IInputValidator() {
+
+ @Override
+ public String isValid(final String newText) {
+ if (!Pattern.matches("(\\d)+\\-(\\d)+", newText)) {
+ return "Specify the range in the following way int-int eg. 10-20 ";
+ }
+ return null;
+ }
+ });
+
+ int status = inputDialog.open();
+
+ if (status == Dialog.OK) {
+ String value = inputDialog.getValue();
+
+ String[] split = value.split("-");
+
+ subList = new ArrayList<>(eList).subList(
+ Integer.parseInt(split[0]),
+ Integer.parseInt(split[1]) < eList.size()
+ ? Integer.parseInt(split[1])
+ : (eList.size() - 1));
+ } else {
+ subList = new ArrayList<>(eList).subList(0, 99);
+ }
+
+ eList.clear();
+ eList.addAll(subList);
+ });
+ }
+ }
+
+ return eList;
+ }
+}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/AbstractPlantUMLHandler.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/AbstractPlantUMLHandler.java
new file mode 100644
index 0000000..3de0a86
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/AbstractPlantUMLHandler.java
@@ -0,0 +1,156 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
+package org.eclipse.app4mc.emf.viewer.plantuml.handlers;
+
+import java.io.File;
+
+import org.eclipse.app4mc.emf.viewer.plantuml.builders.AbstractPlantUMLBuilder;
+import org.eclipse.app4mc.emf.viewer.plantuml.builders.BuilderResult;
+import org.eclipse.app4mc.emf.viewer.plantuml.utils.DiagramCreator;
+import org.eclipse.app4mc.emf.viewer.plantuml.utils.ExecutionCategory;
+import org.eclipse.app4mc.emf.viewer.plantuml.utils.ExecutionUtil;
+import org.eclipse.app4mc.emf.viewer.plantuml.views.DiagramView;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.e4.ui.di.UISynchronize;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.widgets.Shell;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public abstract class AbstractPlantUMLHandler {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(AbstractPlantUMLHandler.class);
+
+ protected abstract AbstractPlantUMLBuilder createPlantUMLBuilder(UISynchronize sync);
+
+ protected abstract ExecutionCategory getExecutionCategory();
+
+ public abstract String getFileNamePrefix(Object eObject);
+
+ public void execute(
+ Shell shell,
+ UISynchronize sync,
+ String dotPath,
+ String genFolderPath,
+ IStructuredSelection selection,
+ EPartService partService) {
+
+ EClass selectedObjClass = null;
+
+ Object element = selection.getFirstElement();
+ if (element instanceof EObject) {
+ if (element instanceof EClass) {
+ selectedObjClass = (EClass) element;
+ } else {
+ selectedObjClass = ((EObject) element).eClass();
+ }
+ } else {
+ openErrorDialog(shell);
+ return;
+ }
+
+ execute(
+ shell,
+ sync,
+ dotPath,
+ genFolderPath,
+ partService,
+ selectedObjClass,
+ (EObject)element);
+ }
+
+ public void execute(
+ Shell shell,
+ UISynchronize sync,
+ String dotPath,
+ String genFolderPath,
+ EPartService partService,
+ Object selected,
+ EObject eObject) {
+
+ // check if there is a valid dot path
+ if (verifyDotPath(shell, dotPath)) {
+
+ // generate UML
+ if (selected != null) {
+
+ String genFolder = DiagramCreator.getGenFolder(genFolderPath, eObject != null ? eObject.eResource() : null);
+ if (genFolder == null || genFolder.length() == 0) {
+ openErrorDialog(shell, "Folder for diagram generation is not set. Configure a folder path in Preferences -> AMALTHEA Graphical Representation");
+ return;
+ } else if (!new File(genFolder).exists()) {
+ openErrorDialog(shell, "Invalid folder path is specified. Configure a valid folder path in Preferences -> AMALTHEA Graphical Representation");
+ return;
+ }
+
+ // generate UML and SVG
+ Job job = Job.create("Generate diagram", monitor -> {
+ AbstractPlantUMLBuilder builder = createPlantUMLBuilder(sync);
+ BuilderResult result = builder.generatePlantUML(selected);
+
+ LOGGER.info(result.getPlantUMLText());
+
+ ExecutionUtil.setExecutionCategory(getExecutionCategory());
+ String fileNamePrefix = getFileNamePrefix(eObject != null ? eObject : selected);
+ String svgFilePath = DiagramCreator.generateSVG(result, genFolder, fileNamePrefix, eObject);
+
+ sync.asyncExec(() -> {
+ // display view
+ MPart diagramPart = partService.findPart(DiagramView.ID);
+ if (diagramPart == null) {
+ diagramPart = partService.createPart(DiagramView.ID);
+ }
+ if (diagramPart != null) {
+ partService.showPart(diagramPart, PartState.VISIBLE);
+ DiagramView diagramView = (DiagramView) diagramPart.getObject();
+ diagramView.showDiagram(fileNamePrefix, eObject, svgFilePath, result.getId2ObjectMap());
+ }
+ });
+ });
+ job.schedule();
+ }
+ }
+ }
+
+ protected boolean verifyDotPath(Shell shell, String dotPath) {
+ if (dotPath == null) {
+ openErrorDialog(shell, "Missing Graphviz DOT.exe location in Preferences."+System.getProperty("line.separator")+"Please specify location via \"Window - Preferences - PlantUML - Path to the dot executable of Graphviz.\"");
+ return false;
+ } else if (!new File(dotPath).exists()) {
+ openErrorDialog(shell, "Invalid path of Graphviz DOT.exe is present in Preferences."+System.getProperty("line.separator")+"Please specify valid path via \"Window - Preferences - PlantUML - Path to the dot executable of Graphviz.\"");
+ return false;
+ }
+
+ System.setProperty("GRAPHVIZ_DOT", dotPath);
+
+ return true;
+ }
+
+ protected void openErrorDialog(Shell shell) {
+ openErrorDialog(shell, "Selected object is not a EMF object");
+ }
+
+ protected void openErrorDialog(Shell shell, String msg) {
+ MessageDialog.openError(shell, "EMF content extractor dialog", msg);
+ }
+
+}
\ No newline at end of file
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/CopyContentsHandler.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/CopyContentsHandler.java
new file mode 100644
index 0000000..35c6ac1
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/CopyContentsHandler.java
@@ -0,0 +1,53 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
+package org.eclipse.app4mc.emf.viewer.plantuml.handlers;
+
+import java.awt.Toolkit;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.StringSelection;
+import java.util.Iterator;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.emf.ecore.ENamedElement;
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+public class CopyContentsHandler {
+
+ @Execute
+ public void execute(@Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection) {
+ StringBuilder sb = new StringBuilder();
+
+ Iterator<?> iterator = selection.iterator();
+
+ while (iterator.hasNext()) {
+ Object next = iterator.next();
+ System.out.println(next);
+
+ if (next instanceof ENamedElement) {
+ String name = ((ENamedElement) next).getName();
+ sb.append(name);
+ sb.append("\n");
+ }
+ }
+ StringSelection selection1 = new StringSelection(sb.toString());
+ Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
+ clipboard.setContents(selection1, selection1);
+ }
+
+}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/EClassAllReferencesHandler.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/EClassAllReferencesHandler.java
new file mode 100644
index 0000000..35d16ad
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/EClassAllReferencesHandler.java
@@ -0,0 +1,77 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
+package org.eclipse.app4mc.emf.viewer.plantuml.handlers;
+
+import javax.inject.Named;
+
+import org.eclipse.app4mc.emf.viewer.plantuml.builders.AbstractPlantUMLBuilder;
+import org.eclipse.app4mc.emf.viewer.plantuml.builders.EClassAllReferencesBuilder;
+import org.eclipse.app4mc.emf.viewer.plantuml.preferences.PreferenceConstants;
+import org.eclipse.app4mc.emf.viewer.plantuml.utils.ExecutionCategory;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.core.di.extensions.Preference;
+import org.eclipse.e4.ui.di.UISynchronize;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.widgets.Shell;
+
+import net.sourceforge.plantuml.eclipse.utils.PlantumlConstants;
+
+@SuppressWarnings("restriction")
+public class EClassAllReferencesHandler extends AbstractPlantUMLHandler {
+
+ @Override
+ protected AbstractPlantUMLBuilder createPlantUMLBuilder(UISynchronize sync) {
+ return new EClassAllReferencesBuilder();
+ }
+
+ @Override
+ protected ExecutionCategory getExecutionCategory() {
+ return ExecutionCategory.eClassAllReferences;
+ }
+
+ @Override
+ public String getFileNamePrefix(Object eObject) {
+ if (eObject instanceof EObject) {
+ return ((EObject)eObject).eClass().getName() + "_SuperTypes_References";
+ }
+ return eObject.getClass().getName() + "_SuperTypes_References";
+ }
+
+ @Override
+ @Execute
+ public void execute(
+ Shell shell,
+ UISynchronize sync,
+ @Optional
+ @Preference(
+ nodePath = "net.sourceforge.plantuml.eclipse",
+ value = PlantumlConstants.GRAPHVIZ_PATH)
+ String dotPath,
+ @Optional
+ @Preference(
+ nodePath = "org.eclipse.app4mc.emf.viewer.plantuml",
+ value = PreferenceConstants.P_FOLDER_PATH)
+ String genFolderPath,
+ @Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection,
+ EPartService partService) {
+
+ super.execute(shell, sync, dotPath, genFolderPath, selection, partService);
+ }
+}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/EClassContentsAndHierarchyHandler.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/EClassContentsAndHierarchyHandler.java
new file mode 100644
index 0000000..9a3dcbb
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/EClassContentsAndHierarchyHandler.java
@@ -0,0 +1,77 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
+package org.eclipse.app4mc.emf.viewer.plantuml.handlers;
+
+import javax.inject.Named;
+
+import org.eclipse.app4mc.emf.viewer.plantuml.builders.AbstractPlantUMLBuilder;
+import org.eclipse.app4mc.emf.viewer.plantuml.builders.EClassContentsAndHierarchyBuilder;
+import org.eclipse.app4mc.emf.viewer.plantuml.preferences.PreferenceConstants;
+import org.eclipse.app4mc.emf.viewer.plantuml.utils.ExecutionCategory;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.core.di.extensions.Preference;
+import org.eclipse.e4.ui.di.UISynchronize;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.widgets.Shell;
+
+import net.sourceforge.plantuml.eclipse.utils.PlantumlConstants;
+
+@SuppressWarnings("restriction")
+public class EClassContentsAndHierarchyHandler extends AbstractPlantUMLHandler {
+
+ @Override
+ protected AbstractPlantUMLBuilder createPlantUMLBuilder(UISynchronize sync) {
+ return new EClassContentsAndHierarchyBuilder();
+ }
+
+ @Override
+ protected ExecutionCategory getExecutionCategory() {
+ return ExecutionCategory.eClassContentsAndHierarchy;
+ }
+
+ @Override
+ public String getFileNamePrefix(Object eObject) {
+ if (eObject instanceof EObject) {
+ return ((EObject)eObject).eClass().getName() + "__contents_deep_Hierarchy";
+ }
+ return eObject.getClass().getName() + "__contents_deep_Hierarchy";
+ }
+
+ @Override
+ @Execute
+ public void execute(
+ Shell shell,
+ UISynchronize sync,
+ @Optional
+ @Preference(
+ nodePath = "net.sourceforge.plantuml.eclipse",
+ value = PlantumlConstants.GRAPHVIZ_PATH)
+ String dotPath,
+ @Optional
+ @Preference(
+ nodePath = "org.eclipse.app4mc.emf.viewer.plantuml",
+ value = PreferenceConstants.P_FOLDER_PATH)
+ String genFolderPath,
+ @Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection,
+ EPartService partService) {
+
+ super.execute(shell, sync, dotPath, genFolderPath, selection, partService);
+ }
+}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/EClassContentsFromReferenceHandler.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/EClassContentsFromReferenceHandler.java
new file mode 100644
index 0000000..2153391
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/EClassContentsFromReferenceHandler.java
@@ -0,0 +1,77 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
+package org.eclipse.app4mc.emf.viewer.plantuml.handlers;
+
+import javax.inject.Named;
+
+import org.eclipse.app4mc.emf.viewer.plantuml.builders.AbstractPlantUMLBuilder;
+import org.eclipse.app4mc.emf.viewer.plantuml.builders.EClassContentsFromReferenceBuilder;
+import org.eclipse.app4mc.emf.viewer.plantuml.preferences.PreferenceConstants;
+import org.eclipse.app4mc.emf.viewer.plantuml.utils.ExecutionCategory;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.core.di.extensions.Preference;
+import org.eclipse.e4.ui.di.UISynchronize;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.widgets.Shell;
+
+import net.sourceforge.plantuml.eclipse.utils.PlantumlConstants;
+
+@SuppressWarnings("restriction")
+public class EClassContentsFromReferenceHandler extends AbstractPlantUMLHandler {
+
+ @Override
+ protected AbstractPlantUMLBuilder createPlantUMLBuilder(UISynchronize sync) {
+ return new EClassContentsFromReferenceBuilder();
+ }
+
+ @Override
+ protected ExecutionCategory getExecutionCategory() {
+ return ExecutionCategory.eClassContentsFromReference;
+ }
+
+ @Override
+ public String getFileNamePrefix(Object eObject) {
+ if (eObject instanceof EObject) {
+ return ((EObject)eObject).eClass().getName() + "__reference_type_Hierarchy";
+ }
+ return eObject.getClass().getName() + "__reference_type_Hierarchy";
+ }
+
+ @Override
+ @Execute
+ public void execute(
+ Shell shell,
+ UISynchronize sync,
+ @Optional
+ @Preference(
+ nodePath = "net.sourceforge.plantuml.eclipse",
+ value = PlantumlConstants.GRAPHVIZ_PATH)
+ String dotPath,
+ @Optional
+ @Preference(
+ nodePath = "org.eclipse.app4mc.emf.viewer.plantuml",
+ value = PreferenceConstants.P_FOLDER_PATH)
+ String genFolderPath,
+ @Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection,
+ EPartService partService) {
+
+ super.execute(shell, sync, dotPath, genFolderPath, selection, partService);
+ }
+}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/EClassContentsHandler.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/EClassContentsHandler.java
new file mode 100644
index 0000000..28c262f
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/EClassContentsHandler.java
@@ -0,0 +1,77 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
+package org.eclipse.app4mc.emf.viewer.plantuml.handlers;
+
+import javax.inject.Named;
+
+import org.eclipse.app4mc.emf.viewer.plantuml.builders.AbstractPlantUMLBuilder;
+import org.eclipse.app4mc.emf.viewer.plantuml.builders.EClassContentsFromReferenceBuilder;
+import org.eclipse.app4mc.emf.viewer.plantuml.preferences.PreferenceConstants;
+import org.eclipse.app4mc.emf.viewer.plantuml.utils.ExecutionCategory;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.core.di.extensions.Preference;
+import org.eclipse.e4.ui.di.UISynchronize;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.widgets.Shell;
+
+import net.sourceforge.plantuml.eclipse.utils.PlantumlConstants;
+
+@SuppressWarnings("restriction")
+public class EClassContentsHandler extends AbstractPlantUMLHandler {
+
+ @Override
+ protected AbstractPlantUMLBuilder createPlantUMLBuilder(UISynchronize sync) {
+ return new EClassContentsFromReferenceBuilder();
+ }
+
+ @Override
+ protected ExecutionCategory getExecutionCategory() {
+ return ExecutionCategory.eClassContents;
+ }
+
+ @Override
+ public String getFileNamePrefix(Object eObject) {
+ if (eObject instanceof EObject) {
+ return ((EObject)eObject).eClass().getName() + "__precise_Hierarchy";
+ }
+ return eObject.getClass().getName() + "__precise_Hierarchy";
+ }
+
+ @Override
+ @Execute
+ public void execute(
+ Shell shell,
+ UISynchronize sync,
+ @Optional
+ @Preference(
+ nodePath = "net.sourceforge.plantuml.eclipse",
+ value = PlantumlConstants.GRAPHVIZ_PATH)
+ String dotPath,
+ @Optional
+ @Preference(
+ nodePath = "org.eclipse.app4mc.emf.viewer.plantuml",
+ value = PreferenceConstants.P_FOLDER_PATH)
+ String genFolderPath,
+ @Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection,
+ EPartService partService) {
+
+ super.execute(shell, sync, dotPath, genFolderPath, selection, partService);
+ }
+}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/EClassHierarchyHandler.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/EClassHierarchyHandler.java
new file mode 100644
index 0000000..b493ebb
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/EClassHierarchyHandler.java
@@ -0,0 +1,81 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
+package org.eclipse.app4mc.emf.viewer.plantuml.handlers;
+
+import javax.inject.Named;
+
+import org.eclipse.app4mc.emf.viewer.plantuml.builders.AbstractPlantUMLBuilder;
+import org.eclipse.app4mc.emf.viewer.plantuml.builders.EClassHierarchyBuilder;
+import org.eclipse.app4mc.emf.viewer.plantuml.preferences.PreferenceConstants;
+import org.eclipse.app4mc.emf.viewer.plantuml.utils.ExecutionCategory;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.core.di.extensions.Preference;
+import org.eclipse.e4.ui.di.UISynchronize;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.widgets.Shell;
+
+import net.sourceforge.plantuml.eclipse.utils.PlantumlConstants;
+
+@SuppressWarnings("restriction")
+public class EClassHierarchyHandler extends AbstractPlantUMLHandler {
+
+ EPartService partService;
+
+ @Override
+ protected AbstractPlantUMLBuilder createPlantUMLBuilder(UISynchronize sync) {
+ return new EClassHierarchyBuilder();
+ }
+
+ @Override
+ protected ExecutionCategory getExecutionCategory() {
+ return ExecutionCategory.eClassHierarchy;
+ }
+
+ @Override
+ public String getFileNamePrefix(Object eObject) {
+ if (eObject instanceof EObject) {
+ return ((EObject)eObject).eClass().getName() + "__eclass_Hierarchy";
+ }
+ return eObject.getClass().getName() + "__eclass_Hierarchy";
+ }
+
+ @Override
+ @Execute
+ public void execute(
+ Shell shell,
+ UISynchronize sync,
+ @Optional
+ @Preference(
+ nodePath = "net.sourceforge.plantuml.eclipse",
+ value = PlantumlConstants.GRAPHVIZ_PATH)
+ String dotPath,
+ @Optional
+ @Preference(
+ nodePath = "org.eclipse.app4mc.emf.viewer.plantuml",
+ value = PreferenceConstants.P_FOLDER_PATH)
+ String genFolderPath,
+ @Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection,
+ EPartService partService) {
+
+ this.partService = partService;
+
+ super.execute(shell, sync, dotPath, genFolderPath, selection, partService);
+ }
+}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/EObjectRefsHandler.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/EObjectRefsHandler.java
new file mode 100644
index 0000000..1ecb788
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/EObjectRefsHandler.java
@@ -0,0 +1,97 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
+package org.eclipse.app4mc.emf.viewer.plantuml.handlers;
+
+import javax.inject.Named;
+
+import org.eclipse.app4mc.emf.viewer.plantuml.builders.AbstractPlantUMLBuilder;
+import org.eclipse.app4mc.emf.viewer.plantuml.builders.EObjectRefsBuilder;
+import org.eclipse.app4mc.emf.viewer.plantuml.preferences.PreferenceConstants;
+import org.eclipse.app4mc.emf.viewer.plantuml.utils.ExecutionCategory;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.core.di.extensions.Preference;
+import org.eclipse.e4.ui.di.UISynchronize;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.widgets.Shell;
+
+import net.sourceforge.plantuml.eclipse.utils.PlantumlConstants;
+
+@SuppressWarnings("restriction")
+public class EObjectRefsHandler extends AbstractPlantUMLHandler {
+
+ @Override
+ protected AbstractPlantUMLBuilder createPlantUMLBuilder(UISynchronize sync) {
+ return new EObjectRefsBuilder(sync);
+ }
+
+ @Override
+ protected ExecutionCategory getExecutionCategory() {
+ return ExecutionCategory.eObjectRefs;
+ }
+
+ @Override
+ public String getFileNamePrefix(Object eObject) {
+ if (eObject instanceof EObject) {
+ EObject e = (EObject)eObject;
+ EStructuralFeature eStructuralFeature = e.eClass().getEStructuralFeature("name");
+
+ String name = (eStructuralFeature != null)
+ ? (String) e.eGet(eStructuralFeature)
+ : e.eClass().getName() + "__" + eObject.hashCode();
+
+ return e.eClass().getName() + "__" + name + "_References";
+ }
+ return eObject.getClass().getName() + "__" + "_References";
+ }
+
+ @Override
+ @Execute
+ public void execute(
+ Shell shell,
+ UISynchronize sync,
+ @Optional
+ @Preference(
+ nodePath = "net.sourceforge.plantuml.eclipse",
+ value = PlantumlConstants.GRAPHVIZ_PATH)
+ String dotPath,
+ @Optional
+ @Preference(
+ nodePath = "org.eclipse.app4mc.emf.viewer.plantuml",
+ value = PreferenceConstants.P_FOLDER_PATH)
+ String genFolderPath,
+ @Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection,
+ EPartService partService) {
+
+ Object element = selection.getFirstElement();
+ if (element instanceof EObject) {
+ execute(
+ shell,
+ sync,
+ dotPath,
+ genFolderPath,
+ partService,
+ element,
+ (EObject)element);
+ } else {
+ openErrorDialog(shell);
+ }
+ }
+}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/LinkWithEditorHandler.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/LinkWithEditorHandler.java
new file mode 100644
index 0000000..64ca72f
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/LinkWithEditorHandler.java
@@ -0,0 +1,42 @@
+/*********************************************************************************
+ * Copyright (c) 2020 Robert Bosch GmbH and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+package org.eclipse.app4mc.emf.viewer.plantuml.handlers;
+
+import org.eclipse.app4mc.emf.viewer.plantuml.views.DiagramView;
+import org.eclipse.e4.core.contexts.Active;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarElement;
+
+public class LinkWithEditorHandler {
+
+ @Execute
+ public void execute(@Active MPart activePart) {
+
+ if (activePart.getObject() instanceof DiagramView) {
+ for (MToolBarElement element : activePart.getToolbar().getChildren()) {
+ if (element.getElementId().equals("org.eclipse.app4mc.emf.viewer.plantuml.directtoolitem.select")) {
+ MDirectToolItem toolItem = (MDirectToolItem) element;
+
+ DiagramView diagramView = (DiagramView) activePart.getObject();
+
+ boolean isLinked = diagramView.isLinkedWithEditor();
+ diagramView.setLinkedWithEditor(!isLinked);
+ toolItem.setSelected(!isLinked);
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/ObjectContentHandler.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/ObjectContentHandler.java
new file mode 100644
index 0000000..aae6a8c
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/handlers/ObjectContentHandler.java
@@ -0,0 +1,102 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
+package org.eclipse.app4mc.emf.viewer.plantuml.handlers;
+
+import java.lang.reflect.Type;
+
+import javax.inject.Named;
+
+import org.eclipse.app4mc.emf.viewer.plantuml.builders.AbstractPlantUMLBuilder;
+import org.eclipse.app4mc.emf.viewer.plantuml.builders.ObjectContentBuilder;
+import org.eclipse.app4mc.emf.viewer.plantuml.preferences.PreferenceConstants;
+import org.eclipse.app4mc.emf.viewer.plantuml.utils.ExecutionCategory;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.core.di.extensions.Preference;
+import org.eclipse.e4.ui.di.UISynchronize;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.widgets.Shell;
+
+import net.sourceforge.plantuml.eclipse.utils.PlantumlConstants;
+
+@SuppressWarnings("restriction")
+public class ObjectContentHandler extends AbstractPlantUMLHandler {
+
+ @Override
+ protected AbstractPlantUMLBuilder createPlantUMLBuilder(UISynchronize sync) {
+ return new ObjectContentBuilder(sync);
+ }
+
+ @Override
+ protected ExecutionCategory getExecutionCategory() {
+ return ExecutionCategory.dummy;
+ }
+
+ @Override
+ public String getFileNamePrefix(Object eObject) {
+ if (eObject instanceof EList) {
+ EList<?> eList = (EList<?>) eObject;
+ String typeString = "";
+ if (!eList.isEmpty()) {
+ Type[] genericInterfaces = eList.getClass().getGenericInterfaces();
+
+ typeString = genericInterfaces.length > 0 ? genericInterfaces[0].getTypeName() : "";
+
+ // replace generic information
+ typeString = typeString.replaceAll("<[a-zA-Z]+>", "");
+ }
+ return "Collection" + "_" + typeString + "__object_Content";
+ }
+ return eObject.getClass().getName() + "__object_Content";
+ }
+
+ @Override
+ @Execute
+ public void execute(
+ Shell shell,
+ UISynchronize sync,
+ @Optional
+ @Preference(
+ nodePath = "net.sourceforge.plantuml.eclipse",
+ value = PlantumlConstants.GRAPHVIZ_PATH)
+ String dotPath,
+ @Optional
+ @Preference(
+ nodePath = "org.eclipse.app4mc.emf.viewer.plantuml",
+ value = PreferenceConstants.P_FOLDER_PATH)
+ String genFolderPath,
+ @Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection,
+ EPartService partService) {
+
+ Object element = selection.getFirstElement();
+ if (element instanceof EObject) {
+ execute(
+ shell,
+ sync,
+ dotPath,
+ genFolderPath,
+ partService,
+ element,
+ (EObject)element);
+ } else {
+ openErrorDialog(shell);
+ }
+ }
+}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/preferences/AmaltheaGraphicalRepresentationPreferencePage.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/preferences/AmaltheaGraphicalRepresentationPreferencePage.java
similarity index 65%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/preferences/AmaltheaGraphicalRepresentationPreferencePage.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/preferences/AmaltheaGraphicalRepresentationPreferencePage.java
index d52afef..fc30077 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/preferences/AmaltheaGraphicalRepresentationPreferencePage.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/preferences/AmaltheaGraphicalRepresentationPreferencePage.java
@@ -1,6 +1,6 @@
- /**
+/**
********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -12,15 +12,14 @@
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
-package org.eclipse.app4mc.emfutils.content.extractor.preferences;
+
+package org.eclipse.app4mc.emf.viewer.plantuml.preferences;
import java.io.IOException;
-import org.eclipse.app4mc.emfutils.content.extractor.Activator;
-import org.eclipse.jface.preference.BooleanFieldEditor;
+import org.eclipse.app4mc.emf.viewer.plantuml.Activator;
import org.eclipse.jface.preference.DirectoryFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
-import org.eclipse.jface.preference.FileFieldEditor;
import org.eclipse.jface.preference.IPersistentPreferenceStore;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.ui.IWorkbench;
@@ -41,8 +40,7 @@
public AmaltheaGraphicalRepresentationPreferencePage() {
super(GRID);
setPreferenceStore(Activator.getDefault().getPreferenceStore());
- setDescription(
- "Preference page to specify the Graphviz (dot executable) location & the folder (with RW access) to generate SVG files");
+ setDescription("Preference page to specify the directory in which the diagrams should be generated.");
}
/**
@@ -52,42 +50,22 @@
@Override
public void createFieldEditors() {
- addField(new FileFieldEditor(PreferenceConstants.P_DOT_PATH, "&Path to the dot executable of Graphviz:",
- getFieldEditorParent()));
-
addField(new DirectoryFieldEditor(PreferenceConstants.P_FOLDER_PATH,
"&Path to the directory where SVG files shall be generated:", getFieldEditorParent()));
- addField(new BooleanFieldEditor(PreferenceConstants.P_DRILL_DOWN,
- "&Show the details of selected element (Contents)", getFieldEditorParent()));
-
- addField(new BooleanFieldEditor(PreferenceConstants.P_REDRAW_TREE_ON_SELECTION,
- "&Collapse other elements and make the selection (by enabling this -> selected element will be focused more precisely in the tree )",
- getFieldEditorParent()));
-
}
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
- */
+ @Override
public void init(final IWorkbench workbench) {
}
@Override
- public boolean performOk() {
- // TODO Auto-generated method stub
- return super.performOk();
- }
-
- @Override
protected void performApply() {
super.performApply();
-
+
IPreferenceStore preferenceStore = getPreferenceStore();
-
- if(preferenceStore instanceof IPersistentPreferenceStore) {
+
+ if (preferenceStore instanceof IPersistentPreferenceStore) {
try {
((IPersistentPreferenceStore) preferenceStore).save();
} catch (IOException e) {
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/preferences/PreferenceConstants.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/preferences/PreferenceConstants.java
similarity index 66%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/preferences/PreferenceConstants.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/preferences/PreferenceConstants.java
index 23c5d43..363153e 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/preferences/PreferenceConstants.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/preferences/PreferenceConstants.java
@@ -1,6 +1,6 @@
- /**
+/**
********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -12,18 +12,14 @@
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
-package org.eclipse.app4mc.emfutils.content.extractor.preferences;
+
+package org.eclipse.app4mc.emf.viewer.plantuml.preferences;
/**
* Constant definitions for plug-in preferences
*/
public class PreferenceConstants {
- public static final String P_DOT_PATH = "P_DOT_PATH";
-
public static final String P_FOLDER_PATH = "P_FOLDER_PATH";
- public static final String P_DRILL_DOWN = "P_DRILL_DOWN";
-
- public static final String P_REDRAW_TREE_ON_SELECTION = "P_REDRAW_TREE_ON_SELECTION";
}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/preferences/PreferenceInitializer.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/preferences/PreferenceInitializer.java
similarity index 61%
copy from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/preferences/PreferenceInitializer.java
copy to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/preferences/PreferenceInitializer.java
index 08cdcee..15a13c1 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/preferences/PreferenceInitializer.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/preferences/PreferenceInitializer.java
@@ -1,6 +1,6 @@
- /**
+/**
********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -12,9 +12,10 @@
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
-package org.eclipse.app4mc.emfutils.metamodelviewer.preferences;
-import org.eclipse.app4mc.emfutils.metamodelviewer.base.Activator;
+package org.eclipse.app4mc.emf.viewer.plantuml.preferences;
+
+import org.eclipse.app4mc.emf.viewer.plantuml.Activator;
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
import org.eclipse.jface.preference.IPreferenceStore;
@@ -23,15 +24,14 @@
*/
public class PreferenceInitializer extends AbstractPreferenceInitializer {
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences()
- */
@Override
public void initializeDefaultPreferences() {
+
final IPreferenceStore store = Activator.getDefault().getPreferenceStore();
- store.setDefault(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY, store.getString(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY) != null
- ? store.getString(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY) : "");
+ store.setDefault(PreferenceConstants.P_FOLDER_PATH,
+ store.getString(PreferenceConstants.P_FOLDER_PATH) != null
+ ? store.getString(PreferenceConstants.P_FOLDER_PATH)
+ : "");
}
+
}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/utils/DiagramCreator.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/utils/DiagramCreator.java
new file mode 100644
index 0000000..6e4346f
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/utils/DiagramCreator.java
@@ -0,0 +1,126 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.emf.viewer.plantuml.utils;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+
+import org.eclipse.app4mc.emf.viewer.plantuml.builders.BuilderResult;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import net.sourceforge.plantuml.FileFormat;
+import net.sourceforge.plantuml.FileFormatOption;
+import net.sourceforge.plantuml.SourceStringReader;
+
+public final class DiagramCreator {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(DiagramCreator.class);
+
+ private DiagramCreator() {
+ // empty default constructor for static helper class
+ }
+
+ public static String generateSVG(
+ BuilderResult result,
+ String genFolder,
+ String fileNamePrefix,
+ EObject selectedElement) {
+
+ SourceStringReader reader = new SourceStringReader(result.getPlantUMLText());
+
+ String genFileLocation = genFolder + "/" + fileNamePrefix; // always use standard delimiter !
+
+ // write plantuml file
+ try (FileOutputStream fileOutputStream = new FileOutputStream(new File(genFileLocation + ".plantuml"));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fileOutputStream));) {
+ bw.write(result.getPlantUMLText());
+ } catch (IOException e) {
+ LOGGER.error("Error on PlantUML persistence", e);
+ }
+
+ // write SVG file
+ File svgFile = new File(genFileLocation + ".svg");
+ try (FileOutputStream fileOutputStream = new FileOutputStream(svgFile);) {
+ reader.outputImage(fileOutputStream, new FileFormatOption(FileFormat.SVG));
+ } catch (IOException e) {
+ LOGGER.error("Error on SVG persistence", e);
+ }
+
+ if (selectedElement != null) {
+ URI uri = selectedElement.eResource().getURI();
+ String platformString = uri.toPlatformString(true);
+ if (platformString != null) {
+ IPath path = new Path(platformString);
+ IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+
+ try {
+ file.getParent().refreshLocal(2, new NullProgressMonitor());
+ } catch (CoreException e) {
+ LOGGER.error("Error on refreshing workspace folder", e);
+ }
+ }
+ }
+
+ return svgFile.getAbsolutePath();
+ }
+
+ public static String getGenFolder(String genFolder, Resource resource) {
+ // extract the gen folder from the BuilderResult if no preference value is set
+ if ((genFolder == null || genFolder.length() == 0) && resource != null) {
+ URI uri = resource.getURI();
+ String platformString = uri.toPlatformString(true);
+ if (platformString != null) {
+ IPath path = new Path(platformString);
+ IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+
+ IContainer parentFolder = file.getParent();
+ if (parentFolder != null) {
+ // **** Find visualization folder (create if necessary)
+
+ IFolder folder = parentFolder.getFolder(new Path(".emf_viewer_diagrams"));
+
+ if (!folder.exists()) {
+ try {
+ folder.create(IResource.NONE, true, null);
+ } catch (CoreException e) {
+ LOGGER.error("Error on creating folder for generated diagrams.", e);
+ }
+ }
+
+ genFolder = ResourcesPlugin.getWorkspace().getRoot().getLocation().toString()
+ + folder.getFullPath().toString();
+ }
+ }
+ }
+
+ return genFolder;
+ }
+
+}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/utils/ExecutionCategory.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/utils/ExecutionCategory.java
similarity index 67%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/utils/ExecutionCategory.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/utils/ExecutionCategory.java
index a23d5cf..517012c 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/utils/ExecutionCategory.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/utils/ExecutionCategory.java
@@ -1,6 +1,6 @@
- /**
+/**
********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -12,8 +12,15 @@
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
-package org.eclipse.app4mc.emfutils.content.extractor.utils;
+
+package org.eclipse.app4mc.emf.viewer.plantuml.utils;
public enum ExecutionCategory {
- dummy, eClassHierarchy, eObjectRefs, eClassAllReferences, eClassContentsAndHierarchy, eClassContents, eClassContentsFromReference
+ dummy,
+ eClassHierarchy,
+ eObjectRefs,
+ eClassAllReferences,
+ eClassContentsAndHierarchy,
+ eClassContents,
+ eClassContentsFromReference
}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/utils/ExecutionUtil.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/utils/ExecutionUtil.java
similarity index 88%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/utils/ExecutionUtil.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/utils/ExecutionUtil.java
index cda8d2e..f6c93e8 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/utils/ExecutionUtil.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/utils/ExecutionUtil.java
@@ -1,6 +1,6 @@
- /**
+/**
********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -12,7 +12,8 @@
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
-package org.eclipse.app4mc.emfutils.content.extractor.utils;
+
+package org.eclipse.app4mc.emf.viewer.plantuml.utils;
public class ExecutionUtil {
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/views/DiagramView.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/views/DiagramView.java
new file mode 100644
index 0000000..eed789b
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/views/DiagramView.java
@@ -0,0 +1,278 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
+package org.eclipse.app4mc.emf.viewer.plantuml.views;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Stack;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import org.eclipse.app4mc.emf.viewer.plantuml.handlers.AbstractPlantUMLHandler;
+import org.eclipse.app4mc.emf.viewer.plantuml.handlers.EClassAllReferencesHandler;
+import org.eclipse.app4mc.emf.viewer.plantuml.handlers.EClassContentsAndHierarchyHandler;
+import org.eclipse.app4mc.emf.viewer.plantuml.handlers.EClassContentsFromReferenceHandler;
+import org.eclipse.app4mc.emf.viewer.plantuml.handlers.EClassHierarchyHandler;
+import org.eclipse.app4mc.emf.viewer.plantuml.handlers.EObjectRefsHandler;
+import org.eclipse.app4mc.emf.viewer.plantuml.handlers.ObjectContentHandler;
+import org.eclipse.app4mc.emf.viewer.plantuml.preferences.PreferenceConstants;
+import org.eclipse.app4mc.emf.viewer.plantuml.utils.ExecutionCategory;
+import org.eclipse.app4mc.emf.viewer.plantuml.utils.ExecutionUtil;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.core.di.extensions.Preference;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.di.Focus;
+import org.eclipse.e4.ui.di.PersistState;
+import org.eclipse.e4.ui.di.UISynchronize;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarElement;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.browser.Browser;
+import org.eclipse.swt.browser.LocationAdapter;
+import org.eclipse.swt.browser.LocationEvent;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Shell;
+
+import net.sourceforge.plantuml.eclipse.utils.PlantumlConstants;
+
+@SuppressWarnings("restriction")
+public class DiagramView {
+
+ /**
+ * The ID of the view.
+ */
+ public static final String ID = "org.eclipse.app4mc.emf.viewer.plantuml.views.DiagramView";
+
+ private static final String LINKED_KEY = "LINKED_WITH_EDITOR";
+
+ private boolean linkedWithEditor = false;
+
+ private Browser browser;
+
+ final HashMap<String, Object> idObjectsMap = new HashMap<>();
+
+ @Inject
+ Shell shell;
+
+ @Inject
+ UISynchronize sync;
+
+ @Inject
+ EPartService partService;
+
+ @Inject
+ IEventBroker broker;
+
+ @Inject
+ @Optional
+ @Preference(
+ nodePath = "net.sourceforge.plantuml.eclipse",
+ value = PlantumlConstants.GRAPHVIZ_PATH)
+ String dotPath;
+
+ @Inject
+ @Optional
+ @Preference(
+ nodePath = "org.eclipse.app4mc.emf.viewer.plantuml",
+ value = PreferenceConstants.P_FOLDER_PATH)
+ String genFolderPath;
+
+ private Stack<String> history = new Stack<>();
+
+ /**
+ * This is a callback that will allow us to create the viewer and initialize it.
+ */
+ @PostConstruct
+ public void createPartControl(Composite parent, MPart part) {
+ Map<String, String> state = part.getPersistedState();
+ String value = state.get(LINKED_KEY);
+ this.linkedWithEditor = value != null ? Boolean.valueOf(value) : false;
+
+ this.browser = new Browser(parent, SWT.None);
+ this.browser.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ this.browser.addKeyListener(new KeyAdapter() {
+
+ @Override
+ public void keyPressed(KeyEvent e) {
+ if (e.character == '\b' && !history.isEmpty()) {
+ String previous = history.pop();
+ if (previous != null) {
+
+ // extract ID from URL
+ int lastIndexOf = previous.lastIndexOf("/");
+
+ String id = "";
+ if (lastIndexOf != -1) {
+ id = previous.substring(lastIndexOf + 1, previous.lastIndexOf("."));
+ }
+
+ // get object of the previous view
+ Object eObject = idObjectsMap.get(id);
+ if (eObject != null && isLinkedWithEditor()) {
+ if (eObject instanceof EClass) {
+ updateDiagram((eObject), null);
+ } else if (eObject instanceof EObject) {
+ updateDiagram(((EObject) eObject).eClass(), (EObject) eObject);
+ }
+ selectInEditor(eObject);
+
+ e.doit = false;
+ }
+ }
+ }
+ }
+ });
+
+ this.browser.addLocationListener(new LocationAdapter() {
+
+ @Override
+ public void changing(LocationEvent event) {
+ String location = event.location;
+ if (!location.endsWith(".svg")) {
+ int lastIndexOf = location.lastIndexOf("/");
+
+ String id = "";
+ if (lastIndexOf != -1) {
+ id = location.substring(lastIndexOf + 1, location.length());
+ }
+
+ Object eObject = idObjectsMap.get(id);
+ if (eObject != null) {
+ if (eObject instanceof EClass) {
+ updateDiagram((eObject), null);
+ } else if (eObject instanceof EObject) {
+ updateDiagram(((EObject) eObject).eClass(), (EObject) eObject);
+ } else if (eObject instanceof EList<?>) {
+ // we pass the eObject which is a EList so the ObjectContentHandler can handle the EList special case
+ updateDiagram(eObject, null);
+ }
+ if (isLinkedWithEditor()) {
+ selectInEditor(eObject);
+ }
+ }
+
+ event.doit = false;
+ }
+ }
+ });
+ }
+
+ @Inject
+ @Optional
+ void handleSelection(@Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection) {
+ if (isLinkedWithEditor() && selection != null && !selection.isEmpty()) {
+ Object firstElement = selection.getFirstElement();
+ if (firstElement instanceof EObject) {
+ updateDiagram(((EObject)firstElement).eClass(), (EObject)firstElement);
+ }
+ }
+ }
+
+ private void updateDiagram(Object eClass, EObject eObject) {
+
+ Object selected = eClass;
+
+ /*
+ * Regeneration of SVG Buffer for populating content specific to the selection
+ */
+
+ AbstractPlantUMLHandler handler = null;
+ if (ExecutionUtil.isExecuting(ExecutionCategory.eClassHierarchy)) {
+ handler = new EClassHierarchyHandler();
+ } else if (ExecutionUtil.isExecuting(ExecutionCategory.eClassContentsAndHierarchy)) {
+ handler = new EClassContentsAndHierarchyHandler();
+ } else if (ExecutionUtil.isExecuting(ExecutionCategory.eClassAllReferences)) {
+ handler = new EClassAllReferencesHandler();
+ } else if (ExecutionUtil.isExecuting(ExecutionCategory.eClassContentsFromReference)) {
+ handler = new EClassContentsFromReferenceHandler();
+ } else if (ExecutionUtil.isExecuting(ExecutionCategory.eObjectRefs)) {
+ handler = new EObjectRefsHandler();
+ if (eObject != null) {
+ // if the eObject is not null we use this for the visualization, otherwise maybe a collection was selected
+ selected = eObject;
+ }
+ } else {
+ /*- EClassContents and EObjectRefs behaviour is included in ObjectContentBuilder java class */
+ handler = new ObjectContentHandler();
+ if (eObject != null) {
+ // if the eObject is not null we use this for the visualization, otherwise maybe a collection was selected
+ selected = eObject;
+ }
+ }
+
+ handler.execute(shell, sync, dotPath, genFolderPath, partService, selected, eObject);
+ }
+
+ /**
+ * This method is used to select specified AMALTHEA element in the Sphinx editor
+ *
+ * @param element
+ */
+ private void selectInEditor(Object element) {
+ HashMap<String, Object> data = new HashMap<>();
+ data.put("modelElements", Arrays.asList(element));
+ broker.send("org/eclipse/app4mc/amalthea/editor/SELECT", data);
+ }
+
+ @Focus
+ public void setFocus(MPart activePart) {
+ for (MToolBarElement element : activePart.getToolbar().getChildren()) {
+ if (element.getElementId().equals("org.eclipse.app4mc.emf.viewer.plantuml.directtoolitem.select")) {
+ MDirectToolItem toolItem = (MDirectToolItem) element;
+ toolItem.setSelected(linkedWithEditor);
+ }
+ }
+ }
+
+ @PersistState
+ public void persistState(MPart part) {
+ Map<String, String> state = part.getPersistedState();
+ state.put(LINKED_KEY, Boolean.valueOf(linkedWithEditor).toString());
+ }
+
+ public boolean isLinkedWithEditor() {
+ return this.linkedWithEditor;
+ }
+
+ public void setLinkedWithEditor(boolean linked) {
+ this.linkedWithEditor = linked;
+ }
+
+ public void showDiagram(String fileNamePrefix, Object element, String svgPath, Map<String, Object> id2ObjectsMap) {
+ if (this.browser != null && !this.browser.isDisposed()) {
+ if (element != null) {
+ this.idObjectsMap.put(fileNamePrefix, element);
+ }
+ this.idObjectsMap.putAll(id2ObjectsMap);
+ this.history.add(browser.getUrl());
+ this.browser.setUrl(svgPath);
+ }
+ }
+}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/.settings/org.eclipse.jdt.core.prefs b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index f42de36..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,7 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
-org.eclipse.jdt.core.compiler.compliance=1.7
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.7
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/META-INF/MANIFEST.MF b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/META-INF/MANIFEST.MF
deleted file mode 100644
index 421fcfc..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,24 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: EMF Content Extractor
-Bundle-SymbolicName: org.eclipse.app4mc.emfutils.content.extractor;singleton:=true
-Bundle-Version: 0.8.3
-Bundle-Activator: org.eclipse.app4mc.emfutils.content.extractor.Activator
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.emf.ecore,
- org.eclipse.emf.ecore.xmi,
- org.eclipse.ui.browser,
- org.eclipse.sphinx.emf,
- org.eclipse.sphinx.emf.editors,
- org.eclipse.sphinx.emf.editors.forms,
- com.google.guava,
- org.eclipse.xtext.xbase.lib,
- org.eclipse.xtend.lib,
- org.eclipse.xtend.lib.macro,
- net.sourceforge.plantuml
-Bundle-RequiredExecutionEnvironment: JavaSE-1.7,JavaSE-1.8
-Bundle-ActivationPolicy: lazy
-Bundle-ClassPath: .
-Bundle-Vendor: Eclipse.org
-
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/build.properties b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/build.properties
deleted file mode 100644
index 57a6026..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/build.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-# *******************************************************************************
-# Copyright (c) 2017 - 2018 Robert Bosch GmbH and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# Contributors:
-# Robert Bosch GmbH - initial API and implementation
-#
-# *******************************************************************************
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- plugin.xml,\
- icons/,\
- epl-2.0.html,\
- about.html
-src.includes = about.html,\
- epl-2.0.html
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/prop_ps.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/prop_ps.gif
deleted file mode 100644
index d11c996..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/prop_ps.gif
+++ /dev/null
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/sample.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/sample.gif
deleted file mode 100644
index 34fb3c9..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/sample.gif
+++ /dev/null
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/super_co.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/super_co.gif
deleted file mode 100644
index 59ac116..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/super_co.gif
+++ /dev/null
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/plugin.xml b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/plugin.xml
deleted file mode 100644
index f6f3fef..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/plugin.xml
+++ /dev/null
@@ -1,363 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<plugin>
- <extension
- point="org.eclipse.ui.commands">
- <category
- id="org.eclipse.app4mc.emfutils.content.extractor.category"
- name="Extract Eclass References Category">
- </category>
- <command
- categoryId="org.eclipse.app4mc.emfutils.content.extractor.category"
- id="org.eclipse.app4mc.emfutils.content.extractor.eClassHierarchy.command"
- name="Extract Eclass Hierarchy">
- </command>
- <command
- categoryId="org.eclipse.app4mc.emfutils.content.extractor.category"
- id="org.eclipse.app4mc.emfutils.content.extractor.eObjectReferences.command"
- name="Extract Eobject References">
- </command>
- <command
- categoryId="org.eclipse.app4mc.emfutils.content.extractor.category"
- id="org.eclipse.app4mc.emfutils.content.extractor.eClassAllReferences.command"
- name="Extract Eclass All References">
- </command>
- <command
- categoryId="org.eclipse.app4mc.emfutils.content.extractor.category"
- id="org.eclipse.app4mc.emfutils.content.extractor.eClassContentsAndHierarchy.command"
- name="Extract Eclass Hierarchy And Their Contents">
- </command>
- <command
- categoryId="org.eclipse.app4mc.emfutils.content.extractor.category"
- id="org.eclipse.app4mc.emfutils.content.extractor.eClassContents.command"
- name="Extract Eclass UML Contents">
- </command>
- <command
- categoryId="org.eclipse.app4mc.emfutils.content.extractor.category"
- id="org.eclipse.app4mc.emfutils.content.extractor.eClassContentsFromReference.command"
- name="From reference -> Extract Eclass UML Contents">
- </command>
-
- <command
- categoryId="org.eclipse.app4mc.emfutils.content.extractor.category"
- id="org.eclipse.app4mc.emfutils.content.extractor.copyContents.command"
- name="Copy Contents and Generate CSV">
- </command>
-
-
- </extension>
- <extension
- point="org.eclipse.ui.handlers">
- <handler
- class="org.eclipse.app4mc.emfutils.content.extractor.handlers.EClassHierarchyHandler"
- commandId="org.eclipse.app4mc.emfutils.content.extractor.eClassHierarchy.command">
- </handler>
- <handler
- class="org.eclipse.app4mc.emfutils.content.extractor.handlers.EObjectRefsHandler"
- commandId="org.eclipse.app4mc.emfutils.content.extractor.eObjectReferences.command">
- </handler>
- <handler
- class="org.eclipse.app4mc.emfutils.content.extractor.handlers.EClassAllReferencesHandler"
- commandId="org.eclipse.app4mc.emfutils.content.extractor.eClassAllReferences.command">
- </handler>
- <handler
- class="org.eclipse.app4mc.emfutils.content.extractor.handlers.EClassContentsAndHierarchyHandler"
- commandId="org.eclipse.app4mc.emfutils.content.extractor.eClassContentsAndHierarchy.command">
- </handler>
- <handler
- class="org.eclipse.app4mc.emfutils.content.extractor.handlers.EClassContentsHandler"
- commandId="org.eclipse.app4mc.emfutils.content.extractor.eClassContents.command">
- </handler>
- <handler
- class="org.eclipse.app4mc.emfutils.content.extractor.handlers.EClassContentsFromReferenceHandler"
- commandId="org.eclipse.app4mc.emfutils.content.extractor.eClassContentsFromReference.command">
- </handler>
- <handler
- class="org.eclipse.app4mc.emfutils.content.extractor.handlers.CopyContentsHandler"
- commandId="org.eclipse.app4mc.emfutils.content.extractor.copyContents.command">
- </handler>
- </extension>
-
- <extension
- point="org.eclipse.ui.menus">
- <menuContribution
- locationURI="popup:org.eclipse.ui.popup.any?after=additions">
- <menu
- id="org.eclipse.app4mc.emfutils.content.extractor.menu"
- label="APP4MC-EMF Utils"
- mnemonic="M">
- <command
- commandId="org.eclipse.app4mc.emfutils.content.extractor.eClassHierarchy.command"
- icon="icons/keygroups_obj.gif"
- id="com.test.menus.sampleCommand"
- label="EClass Hierarchy"
- mnemonic="S">
- <visibleWhen
- checkEnabled="true">
-
- <with
- variable="activeMenuSelection">
-
- <iterate
- operator="or">
- <not>
- <instanceof
- value="org.eclipse.emf.ecore.EDataType">
- </instanceof>
- </not>
- <or>
- <not>
- <instanceof
- value="org.eclipse.emf.ecore.EStructuralFeature">
- </instanceof>
- </not>
- </or>
- </iterate>
-
- </with>
- </visibleWhen>
- </command>
- <command
- commandId="org.eclipse.app4mc.emfutils.content.extractor.eObjectReferences.command"
- icon="icons/sample.gif"
- id="com.test.menus.sampleCommand1"
- label="Eobject Refs">
- <visibleWhen
- checkEnabled="true">
-
- <with
- variable="activeMenuSelection">
-
- <iterate>
- <not>
- <instanceof
- value="org.eclipse.emf.ecore.EClass">
- </instanceof>
- </not>
- <or>
- <not>
- <instanceof
- value="org.eclipse.emf.ecore.EStructuralFeature">
- </instanceof>
- </not>
- </or>
- <or>
- <not>
- <instanceof
- value="org.eclipse.emf.ecore.EDataType">
- </instanceof>
- </not>
- </or>
- </iterate>
-
- </with>
- </visibleWhen>
- </command>
- <command
- commandId="org.eclipse.app4mc.emfutils.content.extractor.eClassAllReferences.command"
- icon="icons/tag_blue_add.png"
- id="com.test.menus.sampleCommand4"
- label="EClass All References"
- mnemonic="S">
- <visibleWhen
- checkEnabled="true">
-
- <with
- variable="activeMenuSelection">
-
- <iterate>
- <not>
- <instanceof
- value="org.eclipse.emf.ecore.EDataType">
- </instanceof>
- </not>
- <or>
- <not>
- <instanceof
- value="org.eclipse.emf.ecore.EStructuralFeature">
- </instanceof>
- </not>
- </or>
- </iterate>
-
- </with>
- </visibleWhen>
- </command>
- <command
- commandId="org.eclipse.app4mc.emfutils.content.extractor.eClassContentsAndHierarchy.command"
- icon="icons/elements_obj.gif"
- id="com.test.menus.sampleCommand"
- label="EClass Contents + Hierarchy"
- mnemonic="S">
- <visibleWhen
- checkEnabled="true">
-
- <with
- variable="activeMenuSelection">
-
- <iterate>
- <not>
- <instanceof
- value="org.eclipse.emf.ecore.EDataType">
- </instanceof>
- </not>
- <or>
- <not>
- <instanceof
- value="org.eclipse.emf.ecore.EStructuralFeature">
- </instanceof>
- </not>
- </or>
- </iterate>
-
- </with>
-
- </visibleWhen>
- </command>
- <command
- commandId="org.eclipse.app4mc.emfutils.content.extractor.eClassContents.command"
- icon="icons/prop_ps.gif"
- id="com.test.menus.sampleCommand"
- label="EClass Contents"
- mnemonic="S">
- <visibleWhen
- checkEnabled="true">
-
- <with
- variable="activeMenuSelection">
-
- <iterate>
- <not>
- <instanceof
- value="org.eclipse.emf.ecore.EDataType">
- </instanceof>
- </not>
- <or>
- <not>
- <instanceof
- value="org.eclipse.emf.ecore.EStructuralFeature">
- </instanceof>
- </not>
- </or>
- </iterate>
-
- </with>
-
- </visibleWhen>
- </command>
-
-
-
- <command
- commandId="org.eclipse.app4mc.emfutils.content.extractor.eClassContentsFromReference.command"
- icon="icons/drive_go.png"
- id="com.test.menus.sampleCommand"
- label="EClass Contents from Reference"
- mnemonic="S">
- <visibleWhen
- checkEnabled="true">
-
- <with
- variable="activeMenuSelection">
-
- <iterate>
- <instanceof
- value="org.eclipse.emf.ecore.EStructuralFeature">
- </instanceof>
- </iterate>
-
- </with>
- </visibleWhen>
- </command>
-
- <command
- commandId="org.eclipse.app4mc.emfutils.content.extractor.copyContents.command"
- icon="icons/keygroups_obj.gif"
- id="com.test.menus.sampleCommand.copy"
- label="Copy Contents Command"
- mnemonic="S">
- <visibleWhen
- checkEnabled="true">
-
- <with
- variable="activeMenuSelection">
-
- <iterate
- operator="or">
- <not>
- <instanceof
- value="org.eclipse.emf.ecore.EDataType">
- </instanceof>
- </not>
- <or>
- <not>
- <instanceof
- value="org.eclipse.emf.ecore.EStructuralFeature">
- </instanceof>
- </not>
- </or>
- </iterate>
-
- </with>
- </visibleWhen>
- </command>
-
-
-
-
- <visibleWhen
- checkEnabled="true">
- <with
- variable="activeMenuSelection">
- <iterate>
- <instanceof
- value="org.eclipse.emf.ecore.EObject">
- </instanceof>
- </iterate>
- </with>
- </visibleWhen>
- </menu>
- </menuContribution>
- </extension>
- <extension
- point="org.eclipse.ui.preferencePages">
- <page
- class="org.eclipse.app4mc.emfutils.content.extractor.preferences.AmaltheaGraphicalRepresentationPreferencePage"
- id="org.eclipse.app4mc.emfutils.content.extractor.preferences.AmaltheaPreferencePage"
- name="AMALTHEA-Graphical-Representation">
- </page>
- </extension>
- <extension
- point="org.eclipse.core.runtime.preferences">
- <initializer
- class="org.eclipse.app4mc.emfutils.content.extractor.preferences.PreferenceInitializer">
- </initializer>
- </extension>
- <extension
- point="org.eclipse.ui.views">
- <category
- id="org.eclipse.app4mc.emfutils.content.extractor"
- name="AMALTHEA Graphical Representation">
- </category>
- <view
- category="org.eclipse.app4mc.emfutils.content.extractor"
- class="org.eclipse.app4mc.emfutils.content.extractor.views.DiagramView"
- icon="icons/sample.gif"
- id="org.eclipse.app4mc.emfutils.content.extractor.views.DiagramView"
- name="Diagram View">
- </view>
- </extension>
- <extension
- point="org.eclipse.ui.perspectiveExtensions">
- <perspectiveExtension
- targetID="org.eclipse.jdt.ui.JavaPerspective">
- <view
- id="org.eclipse.app4mc.emfutils.content.extractor.views.DiagramView"
- ratio="0.5"
- relationship="right"
- relative="org.eclipse.ui.views.ProblemView">
- </view>
- </perspectiveExtension>
- </extension>
-
-</plugin>
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/pom.xml b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/pom.xml
deleted file mode 100644
index 54aece7..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/pom.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <relativePath>../../build/org.eclipse.app4mc.emfutils.extractor.build</relativePath>
- <groupId>org.eclipse.app4mc.emfutils.content.extractor</groupId>
- <artifactId>org.eclipse.app4mc.emfutils.extractor.build</artifactId>
- <version>0.8.3</version>
- </parent>
-
- <artifactId>org.eclipse.app4mc.emfutils.content.extractor</artifactId>
- <packaging>eclipse-plugin</packaging>
-
- <build>
- <sourceDirectory>src</sourceDirectory>
- <resources>
- <resource>
- <directory>xtend-gen</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>src</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <version>2.4.1</version>
- <configuration>
- <filesets>
- <fileset>
- <directory>xtend-gen</directory>
- <includes>
- <include>**</include>
- </includes>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>1.7</version>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>xtend-gen</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.eclipse.xtend</groupId>
- <artifactId>xtend-maven-plugin</artifactId>
- <version>2.14.0</version>
- <dependencies>
- <dependency>
- <groupId>org.eclipse.jdt</groupId>
- <artifactId>org.eclipse.jdt.core</artifactId>
- <version>3.13.102</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jdt</groupId>
- <artifactId>org.eclipse.jdt.compiler.apt</artifactId>
- <version>1.3.110</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jdt</groupId>
- <artifactId>org.eclipse.jdt.compiler.tool</artifactId>
- <version>1.2.101</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.emf</groupId>
- <artifactId>org.eclipse.emf.codegen</artifactId>
- <version>2.11.0</version>
- </dependency>
- </dependencies>
-
- <executions>
- <execution>
- <goals>
- <goal>compile</goal>
- <goal>xtend-install-debug-info</goal>
- <goal>testCompile</goal>
- <goal>xtend-test-install-debug-info</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <outputDirectory>xtend-gen</outputDirectory>
- </configuration>
- </plugin>
- </plugins>
- </build>
-</project>
\ No newline at end of file
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/builders/EClassAllReferencesBufferBuilder.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/builders/EClassAllReferencesBufferBuilder.java
deleted file mode 100644
index b60a6c5..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/builders/EClassAllReferencesBufferBuilder.java
+++ /dev/null
@@ -1,451 +0,0 @@
- /**
- ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.emfutils.content.extractor.builders;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.emf.common.util.BasicEMap;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.common.util.EMap;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EClassifier;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EReference;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.EStructuralFeature.Setting;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-
-public class EClassAllReferencesBufferBuilder {
-
-
- private EMap<String, Object> id2ObjectsMap;
-
- public EMap<String, Object> getId2ObjectsMap() {
- return this.id2ObjectsMap;
- }
-
-
- public void setId2ObjectsMap(final EMap<String, Object> id2ObjectsMap) {
- this.id2ObjectsMap = id2ObjectsMap;
- }
-
-
- public StringBuffer buildBuffer(final EClass selectedObjClass) {
-
- this.id2ObjectsMap = new BasicEMap<String, Object>();
-
-
- final StringBuffer plantumlBuffer = new StringBuffer();
-
-
- plantumlBuffer.append("@startuml");
- plantumlBuffer.append(System.getProperty("line.separator"));
-
-
- addClassInfo(selectedObjClass, plantumlBuffer);
-
-
- populateHeirarchy(plantumlBuffer, selectedObjClass);
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- /*- also display information of sub-classes */
- populateSubClasses(plantumlBuffer, selectedObjClass);
-
-
- plantumlBuffer.append(System.getProperty("line.separator"));
- plantumlBuffer.append("@enduml");
-
- return plantumlBuffer;
-
- }
-
-
- private void addClassInfo(final EClass selectedObjClass, final StringBuffer plantumlBuffer) {
- plantumlBuffer.append(System.getProperty("line.separator"));
-
-
- if (selectedObjClass.isAbstract() && selectedObjClass.isInterface()) {
- plantumlBuffer.append("interface \"" + selectedObjClass.getName() + "\"");
-
- }
- else if (selectedObjClass.isAbstract()) {
- plantumlBuffer.append("abstract \"" + selectedObjClass.getName() + "\"");
-
- }
- else if (selectedObjClass.isInterface()) {
-
- plantumlBuffer.append("interface \"" + selectedObjClass.getName() + "\"");
- }
- else {
- plantumlBuffer.append("class \"" + selectedObjClass.getName() + "\"");
-
- }
-
- plantumlBuffer.append(System.getProperty("line.separator"));
- }
-
-
- private void populateHeirarchy(final StringBuffer plantumlBuffer, final EClass selectedObjClass) {
-
- populateEClassReferences(plantumlBuffer, selectedObjClass);
-
- for (final EClass superClass : selectedObjClass.getESuperTypes()) {
-
-
- if (superClass.isAbstract() && superClass.isInterface()) {
- addContentToBuffer(plantumlBuffer,
- "interface \"" + superClass.getName() + "\"" + " [[" + getUUID(superClass) + "]]");
-
- }
- else if (superClass.isAbstract()) {
- addContentToBuffer(plantumlBuffer,
- "abstract \"" + superClass.getName() + "\"" + " [[" + getUUID(superClass) + "]]");
-
- }
- else if (superClass.isInterface()) {
-
- addContentToBuffer(plantumlBuffer,
- "interface \"" + superClass.getName() + "\"" + " [[" + getUUID(superClass) + "]]");
- }
- else {
- addContentToBuffer(plantumlBuffer,
- "class \"" + superClass.getName() + "\"" + " [[" + getUUID(superClass) + "]]");
-
- }
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- addContentToBuffer(plantumlBuffer,
- superClass.getName() + " <|-- " + selectedObjClass.getName() + " #darkblue");
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- populateHeirarchy(plantumlBuffer, superClass);
-
-
- }
-
-
- }
-
- private void addContentToBuffer(final StringBuffer plantumlBuffer, final String data) {
-
- if (plantumlBuffer.toString().contains(data) == false) {
- plantumlBuffer.append(data);
- }
-
- }
-
- private void populateSubClasses(final StringBuffer plantumlBuffer, final EClass selectedObjClass) {
-
- for (final EClass subClass : getSubClasses(selectedObjClass)) {
-
-
- if (subClass.isAbstract() && subClass.isInterface()) {
-
-
- addContentToBuffer(plantumlBuffer,
- "interface \"" + subClass.getName() + "\"" + " [[" + getUUID(subClass) + "]]");
-
- }
- else if (subClass.isAbstract()) {
- addContentToBuffer(plantumlBuffer,
- "abstract \"" + subClass.getName() + "\"" + " [[" + getUUID(subClass) + "]]");
-
- }
- else if (subClass.isInterface()) {
-
- addContentToBuffer(plantumlBuffer,
- "interface \"" + subClass.getName() + "\"" + " [[" + getUUID(subClass) + "]]");
- }
- else {
- addContentToBuffer(plantumlBuffer,
- "class \"" + subClass.getName() + "\"" + " [[" + getUUID(subClass) + "]]");
-
- }
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- addContentToBuffer(plantumlBuffer,
- selectedObjClass.getName() + " <|-- " + subClass.getName() + " #darkGreen");
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- populateEClassContainerInfo(plantumlBuffer, subClass);
-
- populateSubClasses(plantumlBuffer, subClass);
-
- }
- }
-
-
- private List<EClass> getSubClasses(final EClass selectedObjClass) {
-
- final List<EClass> allSubClasses = new ArrayList<EClass>();
-
- final ResourceSet resourceSet = selectedObjClass.eResource().getResourceSet();
-
- if (resourceSet != null) {
-
- // With this approach check is made to find the Sub-Classes for the supplied EClass in all the packages
- // belonging to the resourceset
-
- final EList<Resource> resources = resourceSet.getResources();
-
- for (final Resource resource : resources) {
-
- final EList<EObject> contents = resource.getContents();
-
- if (contents.size() > 0) {
-// final EObject eObject = contents.get(0);
-
- for (EObject eobj : contents) {
-
- if (eobj instanceof EPackage) {
- allSubClasses.addAll(getSubClasses(selectedObjClass, (EPackage) eobj));
- }
- }
- }
-
- }
- }
- else {
-
- final EPackage ePackage = selectedObjClass.getEPackage();
- return getSubClasses(selectedObjClass, ePackage);
- }
-
- return allSubClasses;
-
- }
-
- private List<EClass> getSubClasses(final EClass selectedObjClass, final EPackage ePackage) {
- final List<EClass> allSubClasses = new ArrayList<EClass>();
-
- final EList<EClassifier> eClassifiers = ePackage.getEClassifiers();
-
- for (final EClassifier eClassifier : eClassifiers) {
-
- if (eClassifier instanceof EClass) {
-
- if (!(selectedObjClass == eClassifier) && selectedObjClass.isSuperTypeOf((EClass) eClassifier)) {
- allSubClasses.add((EClass) eClassifier);
- }
-
-
- }
- }
- return allSubClasses;
- }
-
-
- private void populateEClassReferences(final StringBuffer plantumlBuffer, final EClass selectedObjClass) {
- final List<EReference> result = new ArrayList<EReference>();
-
- final Object searchScope = (selectedObjClass.eResource().getResourceSet() == null)
- ? selectedObjClass.eResource() : selectedObjClass.eResource().getResourceSet();
-
- /*- getting all the elements from the selected objects EClass --> by supplying the EResource of the corresponding EClass (i.e. ecore or Xcore) */
-
- Collection<Setting> allRefSettings = null;
- if (searchScope instanceof Resource) {
- allRefSettings = EcoreUtil.UsageCrossReferencer.find(selectedObjClass, (Resource) searchScope);
- }
- else if (searchScope instanceof ResourceSet) {
- allRefSettings = EcoreUtil.UsageCrossReferencer.find(selectedObjClass, (ResourceSet) searchScope);
- }
-
-
- /*- if refs of the EClass are found, then fill the plantUMLBuffer with the appropriate contents */
-
- if (allRefSettings.size() > 0) {
-
- for (final EStructuralFeature.Setting refSetting : allRefSettings) {
-
- if (refSetting.getEObject() instanceof EReference
- && !isElementContained(result, (EReference) refSetting.getEObject())) {
- result.add((EReference) refSetting.getEObject());
- }
- }
-
- for (final EReference eReference : result) {
-
- final EClassifier eType = eReference.getEContainingClass();
-
- addContentToBuffer(plantumlBuffer, "class \"" + eType.getName() + "\""
- + (eReference.isContainment() ? "" : "") + " [[" + getUUID(eType) + "]]");
-
- plantumlBuffer.append(System.getProperty("line.separator"));
- }
-
- for (final EReference eReference : result) {
-
- final EClassifier referenceClasseType = eReference.getEContainingClass();
-
-
- final String name = eReference.getName();
-
- final boolean containment = eReference.isContainment();
-
- final boolean many = eReference.isMany();
-
- if (containment) {
-
- addContentToBuffer(plantumlBuffer, referenceClasseType.getName() + "*-- "
- + selectedObjClass.getName() + ":" + (many ? " (0-*) " : "") + name + " >");
- }
- else {
- addContentToBuffer(plantumlBuffer, referenceClasseType.getName() + "--> "
- + selectedObjClass.getName() + ":" + (many ? " (0-*) " : "") + name);
-
- }
-
- plantumlBuffer.append(System.getProperty("line.separator"));
- }
- }
- else {
-
- /*- no references for this EClass are found */
- addContentToBuffer(plantumlBuffer,
- "class \"" + selectedObjClass.getName() + "\"" + " [[" + getUUID(selectedObjClass) + "]]");
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- }
- }
-
-
- private void populateEClassContainerInfo(final StringBuffer plantumlBuffer, final EClass selectedObjClass) {
- final List<EReference> result = new ArrayList<EReference>();
-
-
- final Object searchScope = (selectedObjClass.eResource().getResourceSet() == null)
- ? selectedObjClass.eResource() : selectedObjClass.eResource().getResourceSet();
-
- /*- getting all the elements from the selected objects EClass --> by supplying the EResource of the corresponding EClass (i.e. ecore or Xcore) */
-
- Collection<Setting> allRefSettings = null;
- if (searchScope instanceof Resource) {
- allRefSettings = EcoreUtil.UsageCrossReferencer.find(selectedObjClass, (Resource) searchScope);
- }
- else if (searchScope instanceof ResourceSet) {
- allRefSettings = EcoreUtil.UsageCrossReferencer.find(selectedObjClass, (ResourceSet) searchScope);
- }
-
-
- /*- if refs of the EClass are found, then fill the plantUMLBuffer with the appropriate contents */
-
- if (allRefSettings.size() > 0) {
-
- for (final EStructuralFeature.Setting refSetting : allRefSettings) {
-
- if (refSetting.getEObject() instanceof EReference
- && !isElementContained(result, (EReference) refSetting.getEObject())) {
- if (((EReference) refSetting.getEObject()).isContainment()) {
- result.add((EReference) refSetting.getEObject());
- }
- }
- }
-
- for (final EReference eReference : result) {
-
- /*- only containment reference information should be displayed --> other info should be ignored */
-
- final EClassifier eType = eReference.getEContainingClass();
-
- addContentToBuffer(plantumlBuffer, "class \"" + eType.getName() + "\""
- + (eReference.isContainment() ? "" : "") + " [[" + getUUID(eType) + "]]");
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- }
-
- for (final EReference eReference : result) {
-
- final EClassifier referenceClasseType = eReference.getEContainingClass();
-
-
- final String name = eReference.getName();
-
- final boolean containment = eReference.isContainment();
-
- final boolean many = eReference.isMany();
-
- if (containment) {
-
- addContentToBuffer(plantumlBuffer, referenceClasseType.getName() + "*-- "
- + selectedObjClass.getName() + ":" + (many ? " (0-*) " : "") + name + " >");
- }
- else {
- addContentToBuffer(plantumlBuffer, referenceClasseType.getName() + "--> "
- + selectedObjClass.getName() + ":" + (many ? " (0-*) " : "") + name);
-
- }
-
- plantumlBuffer.append(System.getProperty("line.separator"));
- }
- }
- else {
-
- /*- no references for this EClass are found */
- addContentToBuffer(plantumlBuffer,
- "class \"" + selectedObjClass.getName() + "\"" + " [[" + getUUID(selectedObjClass) + "]]");
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- }
- }
-
-
- private boolean isElementContained(final List<EReference> l, final EReference eRef) {
- boolean isElementFound = false;
- final Iterator<EReference> it = l.iterator();
- while (it.hasNext() && !isElementFound) {
- final EReference isContained = it.next();
- if (isContained.equals(eRef)) {
- isElementFound = true;
- }
- }
- return isElementFound;
- }
-
-
- private String getUUID(final EClassifier eClass) {
-
- if (this.id2ObjectsMap.containsValue(eClass)) {
-
-
- for (final String key : this.id2ObjectsMap.keySet()) {
- if (eClass == this.id2ObjectsMap.get(key)) {
- return key;
- }
- }
- }
-
- final String uuid = EcoreUtil.generateUUID();
-
- this.id2ObjectsMap.put(uuid, eClass);
-
- return uuid;
-
- }
-
-
-}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/builders/EClassContentsAndHierarchyBufferBuilder.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/builders/EClassContentsAndHierarchyBufferBuilder.java
deleted file mode 100644
index 1998d31..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/builders/EClassContentsAndHierarchyBufferBuilder.java
+++ /dev/null
@@ -1,440 +0,0 @@
- /**
- ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.emfutils.content.extractor.builders;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.common.util.BasicEList;
-import org.eclipse.emf.common.util.BasicEMap;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.common.util.EMap;
-import org.eclipse.emf.ecore.EAttribute;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EClassifier;
-import org.eclipse.emf.ecore.EDataType;
-import org.eclipse.emf.ecore.EEnum;
-import org.eclipse.emf.ecore.EEnumLiteral;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EReference;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-
-public class EClassContentsAndHierarchyBufferBuilder {
-
- private EMap<String, Object> id2ObjectsMap;
-
- private final EList<EClass> addedEClassifiers = new BasicEList<EClass>();
-
- public EMap<String, Object> getId2ObjectsMap() {
- return this.id2ObjectsMap;
- }
-
-
- public void setId2ObjectsMap(final EMap<String, Object> id2ObjectsMap) {
- this.id2ObjectsMap = id2ObjectsMap;
- }
-
-
- public StringBuffer buildBuffer(final EClass selectedObjClass) {
-
- this.addedEClassifiers.clear();
-
- this.id2ObjectsMap = new BasicEMap<String, Object>();
-
- final StringBuffer plantumlBuffer = new StringBuffer();
-
-
- plantumlBuffer.append("@startuml");
- plantumlBuffer.append(System.getProperty("line.separator"));
-
-
- fillPlantUMLSkinParams(plantumlBuffer);
-
- if (selectedObjClass.getESuperTypes().size() > 0) {
-
- populateHeirarchy(plantumlBuffer, selectedObjClass);
-
- }
- else {
-
- /*- no references for this EClass are found */
- createClass(plantumlBuffer, selectedObjClass, "SelectedElement");
-
- }
-
-
- populateSubClassInfo(selectedObjClass, plantumlBuffer);
-
-
- plantumlBuffer.append(System.getProperty("line.separator"));
- plantumlBuffer.append("@enduml");
-
- return plantumlBuffer;
-
- }
-
-
- private void populateSubClassInfo(final EClass selectedObjClass, final StringBuffer plantumlBuffer) {
- for (final EClass subClass : getSubClasses(selectedObjClass)) {
-
-
- createClass(plantumlBuffer, subClass, "H");
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- plantumlBuffer.append(selectedObjClass.getName() + " <|-- " + subClass.getName());
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- }
- }
-
-
- private void fillPlantUMLSkinParams(final StringBuffer plantumlBuffer) {
- plantumlBuffer.append(System.getProperty("line.separator"));
- plantumlBuffer.append("skinparam class {");
- plantumlBuffer.append(System.getProperty("line.separator"));
- plantumlBuffer.append("BackgroundColor PaleGreen");
- plantumlBuffer.append(System.getProperty("line.separator"));
- plantumlBuffer.append("ArrowColor SeaGreen");
- plantumlBuffer.append(System.getProperty("line.separator"));
- plantumlBuffer.append("BorderColor SpringGreen");
- plantumlBuffer.append(System.getProperty("line.separator"));
- plantumlBuffer.append("BackgroundColor<<H>> Wheat");
- plantumlBuffer.append(System.getProperty("line.separator"));
- plantumlBuffer.append("BorderColor<<H>> Tomato");
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- plantumlBuffer.append("BackgroundColor<<SelectedElement>> DarkOrange ");
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- plantumlBuffer.append("BorderColor<<SelectedElement>> Tomato");
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- plantumlBuffer.append("}");
- plantumlBuffer.append(System.getProperty("line.separator"));
-
-
- plantumlBuffer.append("skinparam stereotypeCBackgroundColor YellowGreen");
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- plantumlBuffer.append("skinparam stereotypeCBackgroundColor <<H>> DimGray");
- plantumlBuffer.append(System.getProperty("line.separator"));
-
-
- }
-
- private void populateHeirarchy(final StringBuffer plantumlBuffer, final EClass selectedObjClass) {
-
- createClass(plantumlBuffer, selectedObjClass, "SelectedElement");
-
-
- for (final EClass superClass : selectedObjClass.getESuperTypes()) {
-
-
- createClass(plantumlBuffer, superClass, "H");
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- plantumlBuffer.append(superClass.getName() + " <|-- " + selectedObjClass.getName());
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- populateHeirarchy(plantumlBuffer, superClass);
- }
-
- }
-
-
- private void createEEnum(final StringBuffer plantumlBuffer, final EEnum eClassifier) {
-
- plantumlBuffer.append("enum \"" + eClassifier.getName() + "\"");
- plantumlBuffer.append("{");
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- final EList<EEnumLiteral> eTypeParameters = eClassifier.getELiterals();
-
- for (final EEnumLiteral eTypeParameter : eTypeParameters) {
-
- plantumlBuffer.append(System.getProperty("line.separator"));
- plantumlBuffer.append(eTypeParameter.getName());
-
-
- }
- plantumlBuffer.append(System.getProperty("line.separator"));
- plantumlBuffer.append("}");
-
-
- }
-
- private void createEDataType(final StringBuffer plantumlBuffer, final EDataType eClassifier) {
-
- }
-
-
- private void createClass(final StringBuffer plantumlBuffer, final EClass eClass, final String stereoType) {
-
- if (!this.addedEClassifiers.contains(eClass)) {
-
- this.addedEClassifiers.add(eClass);
-
- /*- =================================== Start of Class Object =================================== */
-
- final String uuid = EcoreUtil.generateUUID();
-
-
- if (eClass.isAbstract() && eClass.isInterface()) {
- plantumlBuffer.append("interface \"" + eClass.getName() + "\"");
-
- }
- else if (eClass.isAbstract()) {
- plantumlBuffer.append("abstract \"" + eClass.getName() + "\"");
-
- }
- else if (eClass.isInterface()) {
-
- plantumlBuffer.append("interface \"" + eClass.getName() + "\"");
- }
- else {
- plantumlBuffer.append("class \"" + eClass.getName() + "\"");
-
- }
-
- if (stereoType != null) {
- plantumlBuffer.append("<<" + stereoType + ">>");
- }
-
- plantumlBuffer.append(" [[" + uuid + "]] ");
-
- this.id2ObjectsMap.put(uuid, eClass);
-
-
- /*- listing attributes beloning to the specific EMF element */
-
- final EList<EAttribute> eAttributes = eClass.getEAttributes();
- final EList<EStructuralFeature> eStructuralFeatures = eClass.getEStructuralFeatures();
-
- plantumlBuffer.append("{");
-
- final List<EAttribute> referredEnums = new ArrayList<EAttribute>();
-
- if (eAttributes.size() > 0) {
-
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- final List<EAttribute> processedAttributes = new ArrayList<EAttribute>();
-
- for (final EAttribute eAttribute : eAttributes) {
-
- if (!processedAttributes.contains(eAttribute)) {
-
- if (eAttribute.getEAttributeType() instanceof EEnum) {
- referredEnums.add(eAttribute);
- }
-
- processedAttributes.add(eAttribute);
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- final String lowerBound = eAttribute.getLowerBound() == -1 ? "*"
- : eAttribute.getLowerBound() + "";
-
- final String upperBound = eAttribute.getUpperBound() == -1 ? "*"
- : eAttribute.getUpperBound() + "";
-
- plantumlBuffer.append(eAttribute.getEType().getName() + " " + eAttribute.getName() + " ["
- + lowerBound + ":" + upperBound + "]");
-
- plantumlBuffer.append(System.getProperty("line.separator"));
- }
-
-
- }
- plantumlBuffer.append(System.getProperty("line.separator"));
-
-
- }
- plantumlBuffer.append(System.getProperty("line.separator"));
-
-
- /*- listing EStructuralFeatures beloning to the specific EMF element */
-
- final List<EStructuralFeature> processedFeatures = new ArrayList<EStructuralFeature>();
-
- final List<EStructuralFeature> referredEStrcuturalFeatures = new ArrayList<EStructuralFeature>();
-
- for (final EStructuralFeature eStructuralFeature : eStructuralFeatures) {
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- if (!processedFeatures.contains(eStructuralFeature) && (eStructuralFeature instanceof EReference)) {
-
- processedFeatures.add(eStructuralFeature);
-
- referredEStrcuturalFeatures.add(eStructuralFeature);
-
- final String lowerBound = eStructuralFeature.getLowerBound() == -1 ? "*"
- : eStructuralFeature.getLowerBound() + "";
-
- final String upperBound = eStructuralFeature.getUpperBound() == -1 ? "*"
- : eStructuralFeature.getUpperBound() + "";
-
- plantumlBuffer.append(eStructuralFeature.getEType().getName() + " " + eStructuralFeature.getName()
- + " [" + lowerBound + ":" + upperBound + "]");
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- }
- }
-
- plantumlBuffer.append("}");
-
- /*- =================================== End of Class Object =================================== */
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- for (final EStructuralFeature eStructuralFeature : referredEStrcuturalFeatures) {
-
- createEClassifier(plantumlBuffer, eStructuralFeature.getEType());
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- final String relation = ((EReference) eStructuralFeature).isContainment() ? " *-- " : "--> ";
-
-
- final String lowerBound = eStructuralFeature.getLowerBound() == -1 ? "*"
- : eStructuralFeature.getLowerBound() + "";
-
- final String upperBound = eStructuralFeature.getUpperBound() == -1 ? "*"
- : eStructuralFeature.getUpperBound() + "";
-
-
- plantumlBuffer.append(eClass.getName() + relation + eStructuralFeature.getEType().getName() + " : "
- + eStructuralFeature.getName() + " [" + lowerBound + ":" + upperBound + "]");
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- }
-
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- for (final EAttribute eAttribute : referredEnums) {
-
- createEClassifier(plantumlBuffer, eAttribute.getEType());
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
-
- final String lowerBound = eAttribute.getLowerBound() == -1 ? "*" : eAttribute.getLowerBound() + "";
-
- final String upperBound = eAttribute.getUpperBound() == -1 ? "*" : eAttribute.getUpperBound() + "";
-
-
- plantumlBuffer.append(eClass.getName() + " *-- " + eAttribute.getEType().getName() + " : "
- + eAttribute.getName() + " [" + lowerBound + ":" + upperBound + "]");
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- }
-
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
-
- }
-
- }
-
-
- private void createEClassifier(final StringBuffer plantumlBuffer, final EClassifier eClassifier) {
-
- if (eClassifier instanceof EClass) {
- createClass(plantumlBuffer, (EClass) eClassifier, null);
- }
- else if (eClassifier instanceof EEnum) {
- createEEnum(plantumlBuffer, (EEnum) eClassifier);
- }
- else if (eClassifier instanceof EDataType) {
- createEDataType(plantumlBuffer, (EDataType) eClassifier);
- }
- }
-
- private List<EClass> getSubClasses(final EClass selectedObjClass) {
-
- final List<EClass> allSubClasses = new ArrayList<EClass>();
-
- final ResourceSet resourceSet = selectedObjClass.eResource().getResourceSet();
-
- if (resourceSet != null) {
-
- // With this approach check is made to find the Sub-Classes for the supplied EClass in all the packages
- // belonging to the resourceset
-
- final EList<Resource> resources = resourceSet.getResources();
-
- for (final Resource resource : resources) {
-
- final EList<EObject> contents = resource.getContents();
-
- if (contents.size() > 0) {
-// final EObject eObject = contents.get(0);
-
- for (EObject eobj : contents) {
-
- if (eobj instanceof EPackage) {
- allSubClasses.addAll(getSubClasses(selectedObjClass, (EPackage) eobj));
- }
- }
- }
-
- }
- }
- else {
-
- final EPackage ePackage = selectedObjClass.getEPackage();
- return getSubClasses(selectedObjClass, ePackage);
- }
-
- return allSubClasses;
-
- }
-
- private List<EClass> getSubClasses(final EClass selectedObjClass, final EPackage ePackage) {
- final List<EClass> allSubClasses = new ArrayList<EClass>();
-
- final EList<EClassifier> eClassifiers = ePackage.getEClassifiers();
-
- for (final EClassifier eClassifier : eClassifiers) {
-
- if (eClassifier instanceof EClass) {
-
- if (!(selectedObjClass == eClassifier) && selectedObjClass.isSuperTypeOf((EClass) eClassifier)) {
- allSubClasses.add((EClass) eClassifier);
- }
-
-
- }
- }
- return allSubClasses;
- }
-
-
-}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/builders/EClassContentsFromReferenceBufferBuilder.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/builders/EClassContentsFromReferenceBufferBuilder.java
deleted file mode 100644
index 2f205f9..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/builders/EClassContentsFromReferenceBufferBuilder.java
+++ /dev/null
@@ -1,424 +0,0 @@
- /**
- ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.emfutils.content.extractor.builders;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.common.util.BasicEList;
-import org.eclipse.emf.common.util.BasicEMap;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.common.util.EMap;
-import org.eclipse.emf.ecore.EAttribute;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EClassifier;
-import org.eclipse.emf.ecore.EDataType;
-import org.eclipse.emf.ecore.EEnum;
-import org.eclipse.emf.ecore.EEnumLiteral;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EReference;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-
-public class EClassContentsFromReferenceBufferBuilder {
-
- private EMap<String, Object> id2ObjectsMap;
-
- private final EList<EClass> addedEClassifiers = new BasicEList<EClass>();
-
- public EMap<String, Object> getId2ObjectsMap() {
- return this.id2ObjectsMap;
- }
-
-
- public void setId2ObjectsMap(final EMap<String, Object> id2ObjectsMap) {
- this.id2ObjectsMap = id2ObjectsMap;
- }
-
-
- public StringBuffer buildBuffer(final EClass selectedObjClass) {
-
- this.addedEClassifiers.clear();
-
- this.id2ObjectsMap = new BasicEMap<String, Object>();
-
- final StringBuffer plantumlBuffer = new StringBuffer();
-
-
- plantumlBuffer.append("@startuml");
- plantumlBuffer.append(System.getProperty("line.separator"));
-
-
- fillPlantUMLSkinParams(plantumlBuffer);
-
- if (selectedObjClass.getESuperTypes().size() > 0) {
-
- populateHeirarchy(plantumlBuffer, selectedObjClass);
-
- }
- else {
-
- /*- no references for this EClass are found */
- createClass(plantumlBuffer, selectedObjClass, "SelectedElement", 1);
-
- }
-
- populateSubClassInfo(selectedObjClass, plantumlBuffer);
-
-
- plantumlBuffer.append(System.getProperty("line.separator"));
- plantumlBuffer.append("@enduml");
-
- return plantumlBuffer;
-
- }
-
- private void populateSubClassInfo(final EClass selectedObjClass, final StringBuffer plantumlBuffer) {
- for (final EClass subClass : getSubClasses(selectedObjClass)) {
-
-
- createClass(plantumlBuffer, subClass, "SelectedElement", 1);
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- plantumlBuffer.append(selectedObjClass.getName() + " <|-- " + subClass.getName());
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- }
- }
-
-
- private void fillPlantUMLSkinParams(final StringBuffer plantumlBuffer) {
- plantumlBuffer.append(System.getProperty("line.separator"));
- plantumlBuffer.append("skinparam class {");
- plantumlBuffer.append(System.getProperty("line.separator"));
- plantumlBuffer.append("BackgroundColor PaleGreen");
- plantumlBuffer.append(System.getProperty("line.separator"));
- plantumlBuffer.append("ArrowColor SeaGreen");
- plantumlBuffer.append(System.getProperty("line.separator"));
- plantumlBuffer.append("BorderColor SpringGreen");
- plantumlBuffer.append(System.getProperty("line.separator"));
- plantumlBuffer.append("BackgroundColor<<H>> Wheat");
- plantumlBuffer.append(System.getProperty("line.separator"));
- plantumlBuffer.append("BorderColor<<H>> Tomato");
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- plantumlBuffer.append("BackgroundColor<<SelectedElement>> DarkOrange ");
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- plantumlBuffer.append("BorderColor<<SelectedElement>> Tomato");
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- plantumlBuffer.append("}");
- plantumlBuffer.append(System.getProperty("line.separator"));
-
-
- plantumlBuffer.append("skinparam stereotypeCBackgroundColor YellowGreen");
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- plantumlBuffer.append("skinparam stereotypeCBackgroundColor <<H>> DimGray");
- plantumlBuffer.append(System.getProperty("line.separator"));
-
-
- }
-
- private void populateHeirarchy(final StringBuffer plantumlBuffer, final EClass selectedObjClass) {
-
- createClass(plantumlBuffer, selectedObjClass, "H", 1);
-
- }
-
-
- private void createEEnum(final StringBuffer plantumlBuffer, final EEnum eClassifier, final int level) {
-
- plantumlBuffer.append("enum \"" + eClassifier.getName() + "\"");
- plantumlBuffer.append("{");
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- final EList<EEnumLiteral> eTypeParameters = eClassifier.getELiterals();
-
- for (final EEnumLiteral eTypeParameter : eTypeParameters) {
-
- plantumlBuffer.append(System.getProperty("line.separator"));
- plantumlBuffer.append(eTypeParameter.getName());
-
-
- }
- plantumlBuffer.append(System.getProperty("line.separator"));
- plantumlBuffer.append("}");
-
-
- }
-
- private void createEDataType(final StringBuffer plantumlBuffer, final EDataType eClassifier, final int level) {
-
- }
-
-
- private void createClass(final StringBuffer plantumlBuffer, final EClass eClass, final String stereoType,
- final int level) {
-
- if (!this.addedEClassifiers.contains(eClass)) {
-
- this.addedEClassifiers.add(eClass);
-
- /*- =================================== Start of Class Object =================================== */
-
- final String uuid = EcoreUtil.generateUUID();
-
-
- if (eClass.isAbstract() && eClass.isInterface()) {
- plantumlBuffer.append("interface \"" + eClass.getName() + "\"");
-
- }
- else if (eClass.isAbstract()) {
- plantumlBuffer.append("abstract \"" + eClass.getName() + "\"");
-
- }
- else if (eClass.isInterface()) {
-
- plantumlBuffer.append("interface \"" + eClass.getName() + "\"");
- }
- else {
- plantumlBuffer.append("class \"" + eClass.getName() + "\"");
-
- }
-
- if (stereoType != null) {
- plantumlBuffer.append("<<" + stereoType + ">>");
- }
-
- plantumlBuffer.append(" [[" + uuid + "]] ");
-
- this.id2ObjectsMap.put(uuid, eClass);
-
-
- /*- listing attributes beloning to the specific EMF element */
-
- final EList<EAttribute> eAttributes = eClass.getEAllAttributes();
- final EList<EStructuralFeature> eStructuralFeatures = eClass.getEAllStructuralFeatures();
-
- plantumlBuffer.append("{");
-
- final List<EAttribute> referredEnums = new ArrayList<EAttribute>();
-
- if (eAttributes.size() > 0) {
-
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- final List<EAttribute> processedAttributes = new ArrayList<EAttribute>();
-
- for (final EAttribute eAttribute : eAttributes) {
-
- if (!processedAttributes.contains(eAttribute)) {
-
- if (eAttribute.getEAttributeType() instanceof EEnum) {
- referredEnums.add(eAttribute);
- }
-
- processedAttributes.add(eAttribute);
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- final String lowerBound = eAttribute.getLowerBound() == -1 ? "*"
- : eAttribute.getLowerBound() + "";
-
- final String upperBound = eAttribute.getUpperBound() == -1 ? "*"
- : eAttribute.getUpperBound() + "";
-
- plantumlBuffer.append(eAttribute.getEType().getName() + " " + eAttribute.getName() + " ["
- + lowerBound + ":" + upperBound + "]");
-
- plantumlBuffer.append(System.getProperty("line.separator"));
- }
-
-
- }
- plantumlBuffer.append(System.getProperty("line.separator"));
-
-
- }
- plantumlBuffer.append(System.getProperty("line.separator"));
-
-
- /*- listing EStructuralFeatures beloning to the specific EMF element */
-
- final List<EStructuralFeature> processedFeatures = new ArrayList<EStructuralFeature>();
-
- final List<EStructuralFeature> referredEStrcuturalFeatures = new ArrayList<EStructuralFeature>();
-
- for (final EStructuralFeature eStructuralFeature : eStructuralFeatures) {
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- if (!processedFeatures.contains(eStructuralFeature) && (eStructuralFeature instanceof EReference)) {
-
- processedFeatures.add(eStructuralFeature);
-
- referredEStrcuturalFeatures.add(eStructuralFeature);
-
- final String lowerBound = eStructuralFeature.getLowerBound() == -1 ? "*"
- : eStructuralFeature.getLowerBound() + "";
-
- final String upperBound = eStructuralFeature.getUpperBound() == -1 ? "*"
- : eStructuralFeature.getUpperBound() + "";
-
- plantumlBuffer.append(eStructuralFeature.getEType().getName() + " " + eStructuralFeature.getName()
- + " [" + lowerBound + ":" + upperBound + "]");
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- }
- }
-
- plantumlBuffer.append("}");
-
- /*- =================================== End of Class Object =================================== */
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- for (final EStructuralFeature eStructuralFeature : referredEStrcuturalFeatures) {
-
- createEClassifier(plantumlBuffer, eStructuralFeature.getEType(), level + 1);
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- final String relation = ((EReference) eStructuralFeature).isContainment() ? " *-- " : "--> ";
-
-
- final String lowerBound = eStructuralFeature.getLowerBound() == -1 ? "*"
- : eStructuralFeature.getLowerBound() + "";
-
- final String upperBound = eStructuralFeature.getUpperBound() == -1 ? "*"
- : eStructuralFeature.getUpperBound() + "";
-
-
- plantumlBuffer.append(eClass.getName() + relation + eStructuralFeature.getEType().getName() + " : "
- + eStructuralFeature.getName() + " [" + lowerBound + ":" + upperBound + "]");
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- }
-
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- for (final EAttribute eAttribute : referredEnums) {
-
- createEClassifier(plantumlBuffer, eAttribute.getEType(), level + 1);
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
-
- final String lowerBound = eAttribute.getLowerBound() == -1 ? "*" : eAttribute.getLowerBound() + "";
-
- final String upperBound = eAttribute.getUpperBound() == -1 ? "*" : eAttribute.getUpperBound() + "";
-
-
- plantumlBuffer.append(eClass.getName() + " *-- " + eAttribute.getEType().getName() + " : "
- + eAttribute.getName() + " [" + lowerBound + ":" + upperBound + "]");
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- }
-
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
-
- }
-
- }
-
-
- private void createEClassifier(final StringBuffer plantumlBuffer, final EClassifier eClassifier, final int level) {
-
- if (level > 2) {
- return;
- }
- if (eClassifier instanceof EClass) {
- createClass(plantumlBuffer, (EClass) eClassifier, null, level);
- }
- else if (eClassifier instanceof EEnum) {
- createEEnum(plantumlBuffer, (EEnum) eClassifier, level);
- }
- else if (eClassifier instanceof EDataType) {
- createEDataType(plantumlBuffer, (EDataType) eClassifier, level);
- }
- }
-
- private List<EClass> getSubClasses(final EClass selectedObjClass) {
-
- final List<EClass> allSubClasses = new ArrayList<EClass>();
-
- final ResourceSet resourceSet = selectedObjClass.eResource().getResourceSet();
-
- if (resourceSet != null) {
-
- // With this approach check is made to find the Sub-Classes for the supplied EClass in all the packages
- // belonging to the resourceset
-
- final EList<Resource> resources = resourceSet.getResources();
-
- for (final Resource resource : resources) {
-
- final EList<EObject> contents = resource.getContents();
-
- if (contents.size() > 0) {
- final EObject eObject = contents.get(0);
-
- if (eObject instanceof EPackage) {
- allSubClasses.addAll(getSubClasses(selectedObjClass, (EPackage) eObject));
- }
- }
-
- }
- }
- else {
-
- final EPackage ePackage = selectedObjClass.getEPackage();
- return getSubClasses(selectedObjClass, ePackage);
- }
-
- return allSubClasses;
-
- }
-
- private List<EClass> getSubClasses(final EClass selectedObjClass, final EPackage ePackage) {
- final List<EClass> allSubClasses = new ArrayList<EClass>();
-
- final EList<EClassifier> eClassifiers = ePackage.getEClassifiers();
-
- for (final EClassifier eClassifier : eClassifiers) {
-
- if (eClassifier instanceof EClass) {
-
- if (!(selectedObjClass == eClassifier) && selectedObjClass.isSuperTypeOf((EClass) eClassifier)) {
- allSubClasses.add((EClass) eClassifier);
- }
-
-
- }
- }
- return allSubClasses;
- }
-
-
-}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/builders/EClassHierarchyBufferBuilder.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/builders/EClassHierarchyBufferBuilder.java
deleted file mode 100644
index e3c905c..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/builders/EClassHierarchyBufferBuilder.java
+++ /dev/null
@@ -1,239 +0,0 @@
- /**
- ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.emfutils.content.extractor.builders;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.common.util.BasicEMap;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.common.util.EMap;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EClassifier;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-
-public class EClassHierarchyBufferBuilder {
-
- private EMap<String, Object> id2ObjectsMap;
-
- public EMap<String, Object> getId2ObjectsMap() {
- return this.id2ObjectsMap;
- }
-
-
- public void setId2ObjectsMap(final EMap<String, Object> id2ObjectsMap) {
- this.id2ObjectsMap = id2ObjectsMap;
- }
-
-
- public StringBuffer buildBuffer(final EClass selectedObjClass) {
-
- this.id2ObjectsMap = new BasicEMap<String, Object>();
-
- final StringBuffer plantumlBuffer = new StringBuffer();
-
-
- plantumlBuffer.append("@startuml");
-
- addClassInfo(selectedObjClass, plantumlBuffer);
-
- final EList<EClass> eSuperTypes = selectedObjClass.getESuperTypes();
- final List<EClass> subClasses = getSubClasses(selectedObjClass);
-
- if (eSuperTypes.size() > 0) {
-
- populateHeirarchy(plantumlBuffer, selectedObjClass, this.id2ObjectsMap);
-
- }
-
- if (subClasses.size() > 0) {
-
- /*- populating sub-classes */
- populateSubClasses(plantumlBuffer, subClasses, selectedObjClass, this.id2ObjectsMap);
- }
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- plantumlBuffer.append("@enduml");
-
- return plantumlBuffer;
-
- }
-
- private void addClassInfo(final EClass selectedObjClass, final StringBuffer plantumlBuffer) {
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- if (selectedObjClass.isAbstract() && selectedObjClass.isInterface()) {
- plantumlBuffer.append("interface \"" + selectedObjClass.getName() + "\"");
-
- }
- else if (selectedObjClass.isAbstract()) {
- plantumlBuffer.append("abstract \"" + selectedObjClass.getName() + "\"");
-
- }
- else if (selectedObjClass.isInterface()) {
-
- plantumlBuffer.append("interface \"" + selectedObjClass.getName() + "\"");
- }
- else {
- plantumlBuffer.append("class \"" + selectedObjClass.getName() + "\"");
-
- }
-
- plantumlBuffer.append(System.getProperty("line.separator"));
- }
-
-
- private void populateSubClasses(final StringBuffer plantumlBuffer, final List<EClass> subClasses,
- final EClass selectedObjClass, final EMap<String, Object> id2ObjectsMap) {
-
- for (final EClass subClass : subClasses) {
-
- final String uuid = EcoreUtil.generateUUID();
-
-
- if (subClass.isAbstract() && subClass.isInterface()) {
- plantumlBuffer.append("interface \"" + subClass.getName() + "\"" + " [[" + uuid + "]]");
-
- }
- else if (subClass.isAbstract()) {
- plantumlBuffer.append("abstract \"" + subClass.getName() + "\"" + " [[" + uuid + "]]");
-
- }
- else if (subClass.isInterface()) {
-
- plantumlBuffer.append("interface \"" + subClass.getName() + "\"" + " [[" + uuid + "]]");
- }
- else {
- plantumlBuffer.append("class \"" + subClass.getName() + "\"" + " [[" + uuid + "]]");
-
- }
-
- id2ObjectsMap.put(uuid, subClass);
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- plantumlBuffer.append(selectedObjClass.getName() + " <|-- " + subClass.getName());
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
-
- }
-
- }
-
- private List<EClass> getSubClasses(final EClass selectedObjClass) {
-
- final List<EClass> allSubClasses = new ArrayList<EClass>();
-
- final ResourceSet resourceSet = selectedObjClass.eResource().getResourceSet();
-
- if (resourceSet != null) {
-
- // With this approach check is made to find the Sub-Classes for the supplied EClass in all the packages
- // belonging to the resourceset
-
- final EList<Resource> resources = resourceSet.getResources();
-
- for (final Resource resource : resources) {
-
- final EList<EObject> contents = resource.getContents();
-
- if (contents.size() > 0) {
-// final EObject eObject = contents.get(0);
-
- for (EObject eobj : contents) {
-
- if (eobj instanceof EPackage) {
- allSubClasses.addAll(getSubClasses(selectedObjClass, (EPackage) eobj));
- }
- }
-
- }
-
- }
- }
- else {
-
- final EPackage ePackage = selectedObjClass.getEPackage();
- return getSubClasses(selectedObjClass, ePackage);
- }
-
- return allSubClasses;
-
- }
-
- private List<EClass> getSubClasses(final EClass selectedObjClass, final EPackage ePackage) {
- final List<EClass> allSubClasses = new ArrayList<EClass>();
-
- final EList<EClassifier> eClassifiers = ePackage.getEClassifiers();
-
- for (final EClassifier eClassifier : eClassifiers) {
-
- if (eClassifier instanceof EClass) {
-
- if (!(selectedObjClass == eClassifier) && selectedObjClass.isSuperTypeOf((EClass) eClassifier)) {
- allSubClasses.add((EClass) eClassifier);
- }
-
-
- }
- }
- return allSubClasses;
- }
-
-
- private void populateHeirarchy(final StringBuffer plantumlBuffer, final EClass selectedObjClass,
- final EMap<String, Object> id2ObjectsMap) {
- for (final EClass superClass : selectedObjClass.getESuperTypes()) {
-
- final String uuid = EcoreUtil.generateUUID();
-
- if (superClass.isAbstract() && superClass.isInterface()) {
- plantumlBuffer.append("interface \"" + superClass.getName() + "\"" + " [[" + uuid + "]]");
-
- }
- else if (superClass.isAbstract()) {
- plantumlBuffer.append("abstract \"" + superClass.getName() + "\"" + " [[" + uuid + "]]");
-
- }
- else if (superClass.isInterface()) {
-
- plantumlBuffer.append("interface \"" + superClass.getName() + "\"" + " [[" + uuid + "]]");
- }
- else {
- plantumlBuffer.append("class \"" + superClass.getName() + "\"" + " [[" + uuid + "]]");
-
- }
-
- id2ObjectsMap.put(uuid, superClass);
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- plantumlBuffer.append(superClass.getName() + " <|-- " + selectedObjClass.getName());
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- populateHeirarchy(plantumlBuffer, superClass, id2ObjectsMap);
- }
- }
-
-
-}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/builders/EClassHierarchyBufferBuilder2.xtend b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/builders/EClassHierarchyBufferBuilder2.xtend
deleted file mode 100644
index 5983fd5..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/builders/EClassHierarchyBufferBuilder2.xtend
+++ /dev/null
@@ -1,165 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Robert Bosch GmbH.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.app4mc.emfutils.content.extractor.builders
-
-import java.util.ArrayList
-import java.util.List
-import org.eclipse.emf.common.util.BasicEMap
-import org.eclipse.emf.common.util.EList
-import org.eclipse.emf.common.util.EMap
-import org.eclipse.emf.ecore.EClass
-import org.eclipse.emf.ecore.EClassifier
-import org.eclipse.emf.ecore.EObject
-import org.eclipse.emf.ecore.EPackage
-import org.eclipse.emf.ecore.resource.Resource
-import org.eclipse.emf.ecore.resource.ResourceSet
-import org.eclipse.emf.ecore.util.EcoreUtil
-
-class EClassHierarchyBufferBuilder2 {
-
- var EMap<String, Object> id2ObjectsMap = new BasicEMap
-
- def public setId2ObjectsMap(EMap<String, Object> id2ObjectsMap) {
- this.id2ObjectsMap = id2ObjectsMap
- }
-
- def buildBuffer(EClass selectedObjClass) '''
-
- «id2ObjectsMap = new BasicEMap»
-
- @startuml
-
- ««« Generation of EClass basic information »»
-
- «addClassInfo(selectedObjClass)»
-
- ««« Generation of Hierarchy for Super types »»
-
- «IF selectedObjClass.ESuperTypes.size > 0»
-
- «FOR superClass: selectedObjClass.ESuperTypes»
-
- ««« UUID - which will be used for elements lookup »»
- «var String uuid=EcoreUtil.generateUUID»
-
- «IF superClass.abstract && superClass.interface»
- interface «superClass.name» "[[«uuid»]]"
- «ELSEIF superClass.abstract»
- abstract «superClass.name» "[[«uuid»]]"
- «ELSEIF superClass.interface»
- interface «superClass.name» "[[«uuid»]]"
- «ELSE»
- class «superClass.name» "[[«uuid»]]"
-
- «ENDIF»
-
-
- «id2ObjectsMap.put(uuid, superClass)»
-
- «superClass.name» <|--«selectedObjClass.name»
-
-
-
- «ENDFOR»
-
-
- «ENDIF»
-
- «var List<EClass> subClasses=getSubClasses(selectedObjClass)»
-
- «IF subClasses.size>0»
-
- «ENDIF»
-
- @enduml
-
-
-
- '''
-
- /**
- * This method is used to add EClass specific information
- */
- protected def CharSequence addClassInfo(EClass selectedObjClass) '''«IF selectedObjClass.abstract && selectedObjClass.interface»
-
- interface «selectedObjClass.name»
- «ELSEIF selectedObjClass.abstract»
- abstract «selectedObjClass.name»
- «ELSEIF selectedObjClass.interface»
- interface «selectedObjClass.name»
- «ELSE»
- class «selectedObjClass.name»
- «ENDIF»'''
-
- /**
- * This method is used to get the List of sub-classes of a specific EClass
- */
- def private List<EClass> getSubClasses(EClass eClass) {
-
- var List<EClass> allSubClasses = new ArrayList
-
- var ResourceSet resourceSet = eClass.eResource().getResourceSet();
-
- if (resourceSet != null) {
-
- // With this approach check is made to find the Sub-Classes for the supplied EClass in all the packages
- // belonging to the resourceset
- var EList<Resource> resources = resourceSet.getResources();
-
- for (Resource resource : resources) {
-
- var EList<EObject> contents = resource.getContents();
-
- if (contents.size() > 0) {
-// var EObject eObject = contents.get(0);
- for (element : contents) {
- if (element instanceof EPackage) {
- allSubClasses.addAll(getSubClasses(eClass, element));
- }
-
- }
- }
-
- }
- } else {
-
- var EPackage ePackage = eClass.getEPackage();
- return getSubClasses(eClass, ePackage);
- }
-
- return allSubClasses;
-
- }
-
- /**
- * This method is used to get the List of sub-classes of a specific EClass in the scope of EPackage
- */
- def List<EClass> getSubClasses(EClass selectedObjClass, EPackage ePackage) {
-
- var List<EClass> allSubClasses = new ArrayList<EClass>();
-
- var EList<EClassifier> eClassifiers = ePackage.getEClassifiers();
-
- for (EClassifier eClassifier : eClassifiers) {
-
- if (eClassifier instanceof EClass) {
-
- if (!(selectedObjClass == eClassifier) && selectedObjClass.isSuperTypeOf(eClassifier)) {
- allSubClasses.add(eClassifier);
- }
-
- }
- }
- return allSubClasses;
- }
-
-}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/builders/EObjectRefsBufferBuilder.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/builders/EObjectRefsBufferBuilder.java
deleted file mode 100644
index 1b3a2d9..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/builders/EObjectRefsBufferBuilder.java
+++ /dev/null
@@ -1,250 +0,0 @@
- /**
- ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.emfutils.content.extractor.builders;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.regex.Pattern;
-
-import org.eclipse.emf.common.util.BasicEMap;
-import org.eclipse.emf.common.util.EMap;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.EStructuralFeature.Setting;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.jface.dialogs.IInputValidator;
-import org.eclipse.jface.dialogs.InputDialog;
-
-public class EObjectRefsBufferBuilder {
-
- private EMap<String, Object> id2ObjectsMap;
-
- public StringBuffer buildBuffer(final EObject eObject) {
-
- this.id2ObjectsMap = new BasicEMap<String, Object>();
-
- final StringBuffer plantumlBuffer = new StringBuffer();
-
-
- plantumlBuffer.append("@startuml");
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- buildBuffer(eObject, plantumlBuffer);
-
- plantumlBuffer.append(System.getProperty("line.separator"));
- plantumlBuffer.append("@enduml");
-
- return plantumlBuffer;
-
- }
-
-
- public EMap<String, Object> getId2ObjectsMap() {
- return this.id2ObjectsMap;
- }
-
-
- private void buildBuffer(final EObject selectedEObj, final StringBuffer plantumlBuffer) {
-
- final List<EObject> result = new ArrayList<EObject>();
-
- /*- getting all the elements from the selected objects EClass --> by supplying the EResource of the corresponding EClass (i.e. ecore or Xcore) */
-
- Collection<Setting> allRefSettings = null;
-
- final Resource eResource = selectedEObj.eResource();
-
- if (eResource == null) {
- allRefSettings = EcoreUtil.UsageCrossReferencer.find(selectedEObj,
- EcoreUtil.getRootContainer(selectedEObj));
- }
- else {
- allRefSettings = EcoreUtil.UsageCrossReferencer.find(selectedEObj, eResource.getResourceSet());
- }
-
- /*-
- * In case of many elements it is difficult to visualize the contents in the diagram.
- *
- * Below code provides the possibility to specify the range
- */
- if (allRefSettings.size() > 100) {
-
-
- final InputDialog inputDialog = new InputDialog(
- org.eclipse.swt.widgets.Display.getDefault().getActiveShell(), "Element selection dialog",
- "There are " + allRefSettings.size()
- + " references. specify the range for which contents should be represented graphically",
- "0-" + (allRefSettings.size() - 1), new IInputValidator() {
-
- @Override
- public String isValid(final String newText) {
- if (Pattern.matches("(\\d)+\\-(\\d)+", newText) == false) {
- return "Specify the range in the following way int-int eg. 10-20 ";
- }
- return null;
- }
- });
-
- final int status = inputDialog.open();
-
- if (status == 0) {
- final String value = inputDialog.getValue();
-
- final String[] split = value.split("-");
-
- allRefSettings = new ArrayList<Setting>(allRefSettings).subList(Integer.parseInt(split[0]),
- Integer.parseInt(split[1]) < allRefSettings.size() ? Integer.parseInt(split[1])
- : (allRefSettings.size() - 1));
-
- }
- else {
- allRefSettings = new ArrayList<Setting>(allRefSettings).subList(0, 99);
- }
-
-
- }
-
-
- /*- if refs of the EClass are found, then fill the plantUMLBuffer with the appropriate contents */
-
- if (allRefSettings.size() > 0) {
-
- for (final EStructuralFeature.Setting setting : allRefSettings) {
-
- if (!isElementContained(result, setting.getEObject())) {
- result.add(setting.getEObject());
-
- }
-
- }
-
- createClass(plantumlBuffer, this.id2ObjectsMap, selectedEObj);
-
- for (final EObject eobj : result) {
-
- createClass(plantumlBuffer, this.id2ObjectsMap, eobj);
-
- if (!isNamePresent(eobj)) {
-
- /*- As name is not present, generate the heirarchy till the level Object with Structural Feature name is present */
-
- associateContainer(eobj, plantumlBuffer, this.id2ObjectsMap);
-
-
- plantumlBuffer.append(System.getProperty("line.separator"));
- }
- }
-
- for (final EObject eobj : result) {
-
- final String name = getName(eobj).toString();
-
- plantumlBuffer.append(name + "--> " + getName(selectedEObj));
-
- plantumlBuffer.append(System.getProperty("line.separator"));
- }
- }
- else {
-
- /*- no references for this EClass are found */
-
- createClass(plantumlBuffer, this.id2ObjectsMap, selectedEObj);
-
- }
-
-
- }
-
- private void createClass(final StringBuffer plantumlBuffer, final EMap<String, Object> id2ObjectsMap,
- final EObject selectedEObj) {
- final String uuid = EcoreUtil.generateUUID();
-
- plantumlBuffer.append("class " + getName(selectedEObj) + " << (O,#B4A7E5) " + selectedEObj.eClass().getName()
- + " >>" + " [[" + uuid + "]]");
-
- id2ObjectsMap.put(uuid, selectedEObj);
-
- plantumlBuffer.append(System.getProperty("line.separator"));
- }
-
-
- private Object getName(final EObject eObject) {
- final EStructuralFeature eStructuralFeature = eObject.eClass().getEStructuralFeature("name");
-
- if (eStructuralFeature != null) {
-
- final Object originalName = eObject.eGet(eStructuralFeature);
-
- if(originalName == null || originalName.toString().length()==0) {
- return eObject.eClass().getName() + "__" + eObject.hashCode();
- }
-
- return "\"" + originalName + "\"";
- }
-
- return eObject.eClass().getName() + "__" + eObject.hashCode();
- }
-
-
- private void associateContainer(final EObject eobj, final StringBuffer plantumlBuffer,
- final EMap<String, Object> id2ObjectsMap) {
-
- final EObject eContainerObj = eobj.eContainer();
-
- if (eContainerObj == null) {
- return;
- }
-
- createClass(plantumlBuffer, id2ObjectsMap, eContainerObj);
-
-
- plantumlBuffer.append(getName(eContainerObj) + " *-- " + getName(eobj));
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- if (!isNamePresent(eContainerObj)) {
-
- associateContainer(eContainerObj, plantumlBuffer, id2ObjectsMap);
-
- }
-
- }
-
- private boolean isNamePresent(final EObject eObject) {
- final EStructuralFeature eStructuralFeature = eObject.eClass().getEStructuralFeature("name");
-
- if (eStructuralFeature == null) {
-
- return false;
- }
-
- return true;
- }
-
- private boolean isElementContained(final List<EObject> l, final EObject eRef) {
- boolean isElementFound = false;
- final Iterator<EObject> it = l.iterator();
- while (it.hasNext() && !isElementFound) {
- final EObject isContained = it.next();
- if (isContained.equals(eRef)) {
- isElementFound = true;
- }
- }
- return isElementFound;
- }
-}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/builders/ObjectContentBufferBuilder.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/builders/ObjectContentBufferBuilder.java
deleted file mode 100644
index d411573..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/builders/ObjectContentBufferBuilder.java
+++ /dev/null
@@ -1,290 +0,0 @@
- /**
- ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.emfutils.content.extractor.builders;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Pattern;
-
-import org.eclipse.emf.common.util.BasicEMap;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.common.util.EMap;
-import org.eclipse.emf.ecore.EAttribute;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EReference;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.jface.dialogs.IInputValidator;
-import org.eclipse.jface.dialogs.InputDialog;
-
-
-public class ObjectContentBufferBuilder {
-
- /* EClassContents and EObjectRefs behaviour is included in ObjectContentBufferBuilder java class */
-
- private EMap<String, Object> id2ObjectsMap;
-
- public StringBuffer buildBuffer(final EObject eObject) {
-
- this.id2ObjectsMap = new BasicEMap<String, Object>();
-
- final StringBuffer plantumlBuffer = new StringBuffer();
-
-
- plantumlBuffer.append("@startuml");
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- buildBuffer(eObject, plantumlBuffer);
-
- plantumlBuffer.append(System.getProperty("line.separator"));
- plantumlBuffer.append("@enduml");
-
- return plantumlBuffer;
-
- }
-
-
- public StringBuffer buildBufferForCollection(final EList<?> eList) {
-
- this.id2ObjectsMap = new BasicEMap<String, Object>();
-
- final StringBuffer plantumlBuffer = new StringBuffer();
-
-
- plantumlBuffer.append("@startuml");
- plantumlBuffer.append(System.getProperty("line.separator"));
-
-
- createClass(plantumlBuffer, this.id2ObjectsMap, eList, null);
-
- for (final Object object : getElementsBasedOnRange(eList)) {
- if (object instanceof EObject) {
-
- createClass(plantumlBuffer, this.id2ObjectsMap, (EObject) object);
-
- final String name = getName((EObject) object).toString();
-
- plantumlBuffer.append("Collection --> " + name);
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- }
- }
-
- plantumlBuffer.append(System.getProperty("line.separator"));
- plantumlBuffer.append("@enduml");
-
- return plantumlBuffer;
-
- }
-
-
- public EMap<String, Object> getId2ObjectsMap() {
- return this.id2ObjectsMap;
- }
-
-
- private void buildBuffer(final EObject selectedEObj, final StringBuffer plantumlBuffer) {
-
-
- final EList<EStructuralFeature> eStructuralFeatures = selectedEObj.eClass().getEAllStructuralFeatures();
-
-
- /*- if refs of the EClass are found, then fill the plantUMLBuffer with the appropriate contents */
-
- if (eStructuralFeatures.size() > 0) {
-
- createClass(plantumlBuffer, this.id2ObjectsMap, selectedEObj);
-
- final List<EStructuralFeature> processedFeatures = new ArrayList<EStructuralFeature>();
-
-
- for (final EStructuralFeature eStructuralFeature : eStructuralFeatures) {
-
- final boolean eIsSet = selectedEObj.eIsSet(eStructuralFeature);
-
- if (eIsSet && !processedFeatures.contains(eStructuralFeature)
- && (eStructuralFeature instanceof EReference)) {
-
- processedFeatures.add(eStructuralFeature);
-
- final Object eobj = selectedEObj.eGet(eStructuralFeature);
-
-
- if (eobj instanceof EObject) {
- createClass(plantumlBuffer, this.id2ObjectsMap, (EObject) eobj);
-
- final String name = getName((EObject) eobj).toString();
-
- final String relation = ((EReference) eStructuralFeature).isContainment() ? " *-- " : "--> ";
-
- plantumlBuffer.append(getName(selectedEObj) + relation + name);
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
-
- }
- else if (eobj instanceof EList) {
-
- createClass(plantumlBuffer, this.id2ObjectsMap, (EList<?>) eobj, eStructuralFeature);
-
- final String relation = ((EReference) eStructuralFeature).isContainment() ? " *-- " : "--> ";
-
- plantumlBuffer.append(getName(selectedEObj) + relation + eStructuralFeature.getName());
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
-
- }
-
- }
- }
-
-
- }
- else {
-
- /*- no references for this EClass are found */
-
- createClass(plantumlBuffer, this.id2ObjectsMap, selectedEObj);
-
- }
-
-
- }
-
-
- private void createClass(final StringBuffer plantumlBuffer, final EMap<String, Object> id2ObjectsMap,
- final EList<?> eList, final EStructuralFeature eStructuralFeature) {
-
- final String uuid = EcoreUtil.generateUUID();
-
- if (eStructuralFeature != null) {
- plantumlBuffer.append("class \"" + eStructuralFeature.getName() + "\"" + " << (*,#FF7700) EList<"
- + eStructuralFeature.getEType().getName() + "> >>" + " [[" + uuid + "]]");
-
- }
- else {
- plantumlBuffer.append("class \"" + "Collection" + "\"" + " << (*,#FF7700) Collection<" + "EList" + "> >>"
- + " [[" + uuid + "]]");
- }
-
- id2ObjectsMap.put(uuid, eList);
-
- plantumlBuffer.append(System.getProperty("line.separator"));
- }
-
-
- private void createClass(final StringBuffer plantumlBuffer, final EMap<String, Object> id2ObjectsMap,
- final EObject selectedEObj) {
- final String uuid = EcoreUtil.generateUUID();
-
- plantumlBuffer.append("class " + getName(selectedEObj) + " << (O,#B4A7E5) " + selectedEObj.eClass().getName()
- + " >>" + " [[" + uuid + "]]");
-
- final EList<EAttribute> eAllAttributes = selectedEObj.eClass().getEAllAttributes();
-
- if (eAllAttributes.size() > 0) {
-
- plantumlBuffer.append("{");
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- final List<EAttribute> processedFeatures = new ArrayList<EAttribute>();
-
- for (final EAttribute eAttribute : eAllAttributes) {
-
- if (selectedEObj.eIsSet(eAttribute) && !processedFeatures.contains(eAttribute)) {
-
- processedFeatures.add(eAttribute);
-
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- plantumlBuffer.append(eAttribute.getEType().getName() + " " + eAttribute.getName() + " = "
- + selectedEObj.eGet(eAttribute));
-
- plantumlBuffer.append(System.getProperty("line.separator"));
- }
-
-
- }
- plantumlBuffer.append(System.getProperty("line.separator"));
-
- plantumlBuffer.append("}");
- }
-
- id2ObjectsMap.put(uuid, selectedEObj);
-
- plantumlBuffer.append(System.getProperty("line.separator"));
- }
-
-
- private Object getName(final EObject eObject) {
- final EStructuralFeature eStructuralFeature = eObject.eClass().getEStructuralFeature("name");
-
- if (eStructuralFeature != null) {
-
- final Object originalName = eObject.eGet(eStructuralFeature);
-
- return "\"" + originalName + "\"";
- }
-
- return eObject.eClass().getName() + "__" + eObject.hashCode();
- }
-
- private List<?> getElementsBasedOnRange(final EList<?> eList) {
-
-
- if (eList.size() > 100) {
-
- List<?> subList = new ArrayList();
-
- final InputDialog inputDialog = new InputDialog(
- org.eclipse.swt.widgets.Display.getDefault().getActiveShell(), "Element selection dialog",
- "There are " + eList.size()
- + " references. specify the range for which contents should be represented graphically",
- "0-" + (eList.size() - 1), new IInputValidator() {
-
- @Override
- public String isValid(final String newText) {
- if (Pattern.matches("(\\d)+\\-(\\d)+", newText) == false) {
- return "Specify the range in the following way int-int eg. 10-20 ";
- }
- return null;
- }
- });
-
- final int status = inputDialog.open();
-
- if (status == 0) {
- final String value = inputDialog.getValue();
-
- final String[] split = value.split("-");
-
- subList = new ArrayList(eList).subList(Integer.parseInt(split[0]),
- Integer.parseInt(split[1]) < eList.size() ? Integer.parseInt(split[1]) : (eList.size() - 1));
-
- }
- else {
- subList = new ArrayList(eList).subList(0, 99);
- }
-
- return subList;
-
- }
- return eList;
- }
-
-}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/handlers/AbstractHandlerUtils.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/handlers/AbstractHandlerUtils.java
deleted file mode 100644
index 0ae4661..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/handlers/AbstractHandlerUtils.java
+++ /dev/null
@@ -1,430 +0,0 @@
- /**
- ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.emfutils.content.extractor.handlers;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Map;
-
-import org.eclipse.app4mc.emfutils.content.extractor.Activator;
-import org.eclipse.app4mc.emfutils.content.extractor.preferences.PreferenceConstants;
-import org.eclipse.app4mc.emfutils.content.extractor.views.DiagramView;
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.emf.common.util.EMap;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-
-import net.sourceforge.plantuml.FileFormat;
-import net.sourceforge.plantuml.FileFormatOption;
-import net.sourceforge.plantuml.SourceStringReader;
-
-public abstract class AbstractHandlerUtils extends AbstractHandler {
-
- protected void openEReferencesView(final EClass activeEClass) {
-
- if (activeEClass != null) {
- try {
-
- if (PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
- .findView("org.eclipse.emf.ecoretools.internal.views.EReferencesView") == null) {
-
- return;
- }
- final IViewPart view = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
- .showView("org.eclipse.emf.ecoretools.internal.views.EReferencesView");
-
- if (view != null) {
- final Class<?> eClassReferencesViewClass = Class
- .forName("org.eclipse.emf.ecoretools.internal.views.EReferencesView");
-
- if (eClassReferencesViewClass != null) {
- final Method setAnalyzedObjectMethod = eClassReferencesViewClass.getMethod("setAnalyzedObject",
- EObject.class);
-
- if (setAnalyzedObjectMethod != null) {
- setAnalyzedObjectMethod.setAccessible(true);
- setAnalyzedObjectMethod.invoke(view, activeEClass);
-
- }
- }
- }
-
- }
- catch (final PartInitException exception) {
- exception.printStackTrace();
- }
- catch (final ClassNotFoundException e) {
- e.printStackTrace();
- }
- catch (final NoSuchMethodException e) {
- e.printStackTrace();
- }
- catch (final SecurityException e) {
- e.printStackTrace();
- }
- catch (final IllegalAccessException e) {
- e.printStackTrace();
- }
- catch (final IllegalArgumentException e) {
- e.printStackTrace();
- }
- catch (final InvocationTargetException e) {
- e.printStackTrace();
- }
- }
- }
-
- protected void openHierarchyView(final EClass activeEClass) {
-
- if (activeEClass != null) {
- try {
-
- if (PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
- .findView("org.eclipse.emf.ecoretools.internal.views.EClassHierarchyView") == null) {
- return;
- }
-
- final IViewPart view = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
- .showView("org.eclipse.emf.ecoretools.internal.views.EClassHierarchyView");
-
- if (view != null) {
- final Class<?> eClassHierarchyViewClass = Class
- .forName("org.eclipse.emf.ecoretools.internal.views.EClassHierarchyView");
-
- if (eClassHierarchyViewClass != null) {
- final Method setAnalyzedObjectMethod = eClassHierarchyViewClass.getMethod("setAnalyzedObject",
- EObject.class);
-
- if (setAnalyzedObjectMethod != null) {
- setAnalyzedObjectMethod.setAccessible(true);
- setAnalyzedObjectMethod.invoke(view, activeEClass);
- }
- }
- }
- }
- catch (final PartInitException exception) {
- exception.printStackTrace();
- }
- catch (final ClassNotFoundException e) {
- e.printStackTrace();
- }
- catch (final NoSuchMethodException e) {
- e.printStackTrace();
- }
- catch (final SecurityException e) {
- e.printStackTrace();
- }
- catch (final IllegalAccessException e) {
- e.printStackTrace();
- }
- catch (final IllegalArgumentException e) {
- e.printStackTrace();
- }
- catch (final InvocationTargetException e) {
- e.printStackTrace();
- }
- }
- }
-
-
- protected void openErrorDialog() {
- Display.getDefault().asyncExec(new Runnable() {
-
- @Override
- public void run() {
-
- final Shell shell = new Shell(Display.getDefault());
-
- MessageDialog.openError(shell, "EMF content extractor dialog", "Selected object is not a EMF object");
-
- }
- });
- }
-
- protected static void openErrorDialog(final String msg) {
- Display.getDefault().asyncExec(new Runnable() {
-
- @Override
- public void run() {
-
- final Shell shell = new Shell(Display.getDefault());
-
- MessageDialog.openError(shell, "EMF content extractor dialog", msg);
-
- }
- });
- }
-
-
- /**
- * This method returns the value for a supplied key from the Preference Store
- *
- * @param key
- * @return
- */
- protected static String getValueFromPreferenceStore(final String key) {
-
- final IPreferenceStore store = Activator.getDefault().getPreferenceStore();
-
- return store.getString(key);
- }
-
- public static void generateSVGAndDisplayDiagram(final StringBuffer plantumlBuffer, final String fileNamePrefix,
- final EMap<String, Object> id2ObjectsMap, final Map<String, String> properties) throws IOException {
-
- final String dot_exe_location = getValueFromPreferenceStore(PreferenceConstants.P_DOT_PATH);
-
- if (dot_exe_location == null) {
-
- openErrorDialog("DOT file exe path is not set in the Preferences");
-
- return;
- }
- else if (!new File(dot_exe_location).exists()) {
- openErrorDialog(
- "DOT file exe is not existing in the specified path. Update the valid path in Preferences -> AMALTHEA-Grpahical-Representation node");
-
- return;
- }
-
- System.setProperty("GRAPHVIZ_DOT", dot_exe_location);
-
- final SourceStringReader reader = new SourceStringReader(plantumlBuffer.toString());
-
- final String genFileLocation = getValueFromPreferenceStore(PreferenceConstants.P_FOLDER_PATH)
- + "\\amalthea_element_" + fileNamePrefix;
-
- try (final FileOutputStream fileOutputStream = new FileOutputStream(
-
- new File(genFileLocation + ".svg"));) {
-
- reader.generateImage(fileOutputStream, new FileFormatOption(FileFormat.SVG));
-
- fileOutputStream.close();
- }
-
-
- Display.getDefault().asyncExec(new Runnable() {
-
- @Override
- public void run() {
-
- try (final FileOutputStream fileOutputStream = new FileOutputStream(
-
- new File(genFileLocation + ".plantuml"));
-
- final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fileOutputStream));) {
-
- bw.write(plantumlBuffer.toString());
-
- }
- catch (final FileNotFoundException e) {
- e.printStackTrace();
- }
- catch (final IOException e) {
- e.printStackTrace();
- }
- }
-
-
- });
-
-
- Display.getDefault().asyncExec(new Runnable() {
-
- @Override
- public void run() {
- final IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
-
- final String diagramViewID = "org.eclipse.app4mc.emfutils.content.extractor.views.DiagramView";
-
- IViewPart diagramView = activePage.findView(diagramViewID);
-
- final IViewReference findViewReference = activePage.findViewReference(diagramViewID);
-
-
- if (diagramView == null) {
- try {
- diagramView = activePage.showView(diagramViewID);
-
- // updateBooleanProps(properties, diagramView);
-
-
- ((DiagramView) diagramView).getIdObjectsMap().putAll(id2ObjectsMap);
- ((DiagramView) diagramView).getBrowser()
- .setUrl(("file:\\" + getValueFromPreferenceStore(PreferenceConstants.P_FOLDER_PATH)
- + "\\amalthea_element_" + fileNamePrefix + ".svg"));
- }
- catch (final PartInitException e) {
- e.printStackTrace();
- }
-
- }
- else {
-
- // updateBooleanProps(properties, diagramView);
-
- ((DiagramView) diagramView).getIdObjectsMap().putAll(id2ObjectsMap);
-
- ((DiagramView) diagramView).getBrowser()
- .setUrl(("file:/" + getValueFromPreferenceStore(PreferenceConstants.P_FOLDER_PATH)
- + "\\amalthea_element_" + fileNamePrefix + ".svg"));
- }
- }
-
- /*-private void updateBooleanProps(final Map<String, String> properties, final IViewPart diagramView) {
- if (properties.get(ExecutionCategory.isClassHierarchyGeneration.toString()) != null
- && properties.get(ExecutionCategory.isClassHierarchyGeneration.toString()).equals("true")) {
-
- ((DiagramView) diagramView).setDisplayingClassHierarchy(true);
-
- ((DiagramView) diagramView).setDisplayingClassHierarchy_And_corresponding_Relation_Contents(false);
-
- ((DiagramView) diagramView).setDisplayingClassReference_Hierarchy_subclass_info_generation(false);
- ((DiagramView) diagramView).setClassContents_UML_Generation(false);
- }
- else if (properties.get(ExecutionCategory.isClassHierarchy_Contents_Generation.toString()) != null
- && properties.get(ExecutionCategory.isClassHierarchy_Contents_Generation.toString())
- .equals("true")) {
-
- ((DiagramView) diagramView).setDisplayingClassHierarchy(false);
-
- ((DiagramView) diagramView).setDisplayingClassHierarchy_And_corresponding_Relation_Contents(true);
-
- ((DiagramView) diagramView).setDisplayingClassReference_Hierarchy_subclass_info_generation(false);
- ((DiagramView) diagramView).setClassContents_UML_Generation(false);
- }
- else if (properties
- .get(ExecutionCategory.isClassReference_Hierarchy_subclass_info_generation.toString()) != null
- && properties
- .get(ExecutionCategory.isClassReference_Hierarchy_subclass_info_generation.toString())
- .equals("true")) {
-
- ((DiagramView) diagramView).setDisplayingClassHierarchy(false);
-
- ((DiagramView) diagramView).setDisplayingClassHierarchy_And_corresponding_Relation_Contents(false);
-
- ((DiagramView) diagramView).setDisplayingClassReference_Hierarchy_subclass_info_generation(true);
- ((DiagramView) diagramView).setClassContents_UML_Generation(false);
- }
- else if (properties.get(ExecutionCategory.isClassContents_UML_Generation.toString()) != null
- && properties.get(ExecutionCategory.isClassContents_UML_Generation.toString()).equals("true")) {
-
- ((DiagramView) diagramView).setDisplayingClassHierarchy(false);
-
- ((DiagramView) diagramView).setDisplayingClassHierarchy_And_corresponding_Relation_Contents(false);
-
- ((DiagramView) diagramView).setDisplayingClassReference_Hierarchy_subclass_info_generation(false);
- ((DiagramView) diagramView).setClassContents_UML_Generation(true);
-
- }
- else {
- ((DiagramView) diagramView).setDisplayingClassHierarchy(false);
- ((DiagramView) diagramView).setClassContents_UML_Generation(false);
- ((DiagramView) diagramView).setDisplayingClassHierarchy_And_corresponding_Relation_Contents(false);
- ((DiagramView) diagramView).setDisplayingClassReference_Hierarchy_subclass_info_generation(false);
- }
- }*/
- });
-
-
- }
-
-
- public static String generateSVGFile(final StringBuffer plantumlBuffer, final String fileNamePrefix,
- final EMap<String, Object> id2ObjectsMap) throws IOException {
-
-
- final String dot_exe_location = Activator.getDefault().getPreferenceStore()
- .getString(PreferenceConstants.P_DOT_PATH);
-
- if (dot_exe_location == null) {
-
- openErrorDialog("DOT file exe path is not set in the Preferences");
- return null;
- }
- else if (!new File(dot_exe_location).exists()) {
- openErrorDialog(
- "DOT file exe is not existing in the specified path. Update the valid path in Preferences -> AMALTHEA-Grpahical-Representation node");
-
- return null;
- }
-
- System.setProperty("GRAPHVIZ_DOT", dot_exe_location);
-
- final SourceStringReader reader = new SourceStringReader(plantumlBuffer.toString());
-
-
- final String genFileLocation = Activator.getDefault().getPreferenceStore()
- .getString(PreferenceConstants.P_FOLDER_PATH) + "\\amalthea_element_" + fileNamePrefix;
-
-
- try (final FileOutputStream svgFileOutputStream = new FileOutputStream(new File(genFileLocation + ".svg"));
-
- ) {
-
- reader.generateImage(svgFileOutputStream, new FileFormatOption(FileFormat.SVG));
-
- }
-
-
- Display.getDefault().asyncExec(new Runnable() {
-
- @Override
- public void run() {
-
- try (final FileOutputStream fileOutputStream = new FileOutputStream(
-
- new File(genFileLocation + ".plantuml"));
-
- final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fileOutputStream));) {
-
- bw.write(plantumlBuffer.toString());
-
- }
- catch (final FileNotFoundException e) {
- e.printStackTrace();
- }
- catch (final IOException e) {
- e.printStackTrace();
- }
- }
-
-
- });
-
-
- return ("file:/" + Activator.getDefault().getPreferenceStore().getString(PreferenceConstants.P_FOLDER_PATH)
- + "\\amalthea_element_" + fileNamePrefix + ".svg");
-
-
- }
-
-}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/handlers/CopyContentsHandler.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/handlers/CopyContentsHandler.java
deleted file mode 100644
index 0bfefcd..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/handlers/CopyContentsHandler.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package org.eclipse.app4mc.emfutils.content.extractor.handlers;
-
-import java.awt.Toolkit;
-import java.awt.datatransfer.Clipboard;
-import java.awt.datatransfer.StringSelection;
-import java.util.Iterator;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.ENamedElement;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-public class CopyContentsHandler extends AbstractHandlerUtils{
-
- @Override
- public Object execute(ExecutionEvent event) throws ExecutionException {
- ISelection selection = null;
-
- selection = HandlerUtil.getActiveMenuSelection(event);
-
- if (selection == null) {
-
- selection = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getSelection();
-
- }
- StringBuffer sb=new StringBuffer();
-
- if(selection instanceof IStructuredSelection) {
- Iterator iterator = ((IStructuredSelection) selection).iterator();
-
- while(iterator.hasNext()) {
- Object next = iterator.next();
- System.out.println(next);
-
- if(next instanceof ENamedElement) {
- String name = ((ENamedElement) next).getName();
- sb.append(name);
- sb.append(System.getProperty("line.separator"));
- }
- }
- StringSelection selection1 = new StringSelection(sb.toString());
- Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
- clipboard.setContents(selection1, selection1);
- }
-
- return null;
- }
-
-}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/handlers/EClassAllReferencesHandler.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/handlers/EClassAllReferencesHandler.java
deleted file mode 100644
index ae3448b..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/handlers/EClassAllReferencesHandler.java
+++ /dev/null
@@ -1,126 +0,0 @@
- /**
- ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.emfutils.content.extractor.handlers;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.app4mc.emfutils.content.extractor.builders.EClassAllReferencesBufferBuilder;
-import org.eclipse.app4mc.emfutils.content.extractor.utils.ExecutionCategory;
-import org.eclipse.app4mc.emfutils.content.extractor.utils.ExecutionUtil;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.emf.common.util.BasicEMap;
-import org.eclipse.emf.common.util.EMap;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-
-public class EClassAllReferencesHandler extends AbstractHandlerUtils {
-
- private final EMap<String, Object> id2ObjectsMap;
-
- /**
- * The constructor.
- */
- public EClassAllReferencesHandler() {
-
- this.id2ObjectsMap = new BasicEMap<String, Object>();
- }
-
- /**
- * the command has been executed, so extract extract the needed information from the application context.
- */
- @Override
- public Object execute(final ExecutionEvent event) throws ExecutionException {
-
-
- StringBuffer plantumlBuffer = new StringBuffer();
-
- final EClassAllReferencesBufferBuilder builder = new EClassAllReferencesBufferBuilder();
-
-
- final String eClassName = "";
-
-
- ISelection selection = null;
-
- selection = HandlerUtil.getActiveMenuSelection(event);
-
- if (selection == null) {
-
- selection = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getSelection();
-
- }
- if (selection != null & selection instanceof IStructuredSelection) {
-
- final IStructuredSelection strucSelection = (IStructuredSelection) selection;
-
- for (final Iterator<Object> iterator = strucSelection.iterator(); iterator.hasNext();) {
-
- final Object element = iterator.next();
-
- if (element instanceof EObject) {
-
- EClass eClass = null;
-
- if (element instanceof EClass) {
- eClass = (EClass) element;
- }
- else {
- eClass = ((EObject) element).eClass();
- }
-
- plantumlBuffer = builder.buildBuffer(eClass);
-
- this.id2ObjectsMap.addAll(builder.getId2ObjectsMap());
- }
- else {
- openErrorDialog();
- return null;
- }
- }
- }
- else {
- openErrorDialog();
- return null;
- }
-
- System.out.println(plantumlBuffer.toString());
-
- try {
- final Map<String, String> propsMap = new HashMap<String, String>();
-
- // propsMap.put(ExecutionCategory.isClassReference_Hierarchy_subclass_info_generation.toString(), "true");
-
- ExecutionUtil.setExecutionCategory(ExecutionCategory.eClassAllReferences);
-
- generateSVGAndDisplayDiagram(plantumlBuffer, eClassName + "_SuperTypes_References", this.id2ObjectsMap,
- propsMap);
- }
- catch (final IOException e) {
- e.printStackTrace();
- }
-
- return null;
- }
-
-
-}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/handlers/EClassContentsAndHierarchyHandler.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/handlers/EClassContentsAndHierarchyHandler.java
deleted file mode 100644
index 514d9ca..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/handlers/EClassContentsAndHierarchyHandler.java
+++ /dev/null
@@ -1,138 +0,0 @@
- /**
- ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.emfutils.content.extractor.handlers;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.app4mc.emfutils.content.extractor.builders.EClassContentsAndHierarchyBufferBuilder;
-import org.eclipse.app4mc.emfutils.content.extractor.utils.ExecutionCategory;
-import org.eclipse.app4mc.emfutils.content.extractor.utils.ExecutionUtil;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.emf.common.util.BasicEMap;
-import org.eclipse.emf.common.util.EMap;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-
-public class EClassContentsAndHierarchyHandler extends AbstractHandlerUtils {
- /**
- * The constructor.
- */
- public EClassContentsAndHierarchyHandler() {
- }
-
- /**
- * the command has been executed, so extract extract the needed information from the application context.
- */
- @Override
- public Object execute(final ExecutionEvent event) throws ExecutionException {
-
-
- final EMap<String, Object> id2ObjectsMap = new BasicEMap<String, Object>();
-
-
- StringBuffer plantumlBuffer = new StringBuffer();
-
-
- String eClassName = "";
-
-
- ISelection selection = null;
-
- selection = HandlerUtil.getActiveMenuSelection(event);
-
- if (selection == null) {
-
- selection = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getSelection();
-
- }
- if (selection != null & selection instanceof IStructuredSelection) {
-
- final IStructuredSelection strucSelection = (IStructuredSelection) selection;
-
- for (final Iterator<Object> iterator = strucSelection.iterator(); iterator.hasNext();) {
-
- final Object element = iterator.next();
-
- if (element instanceof EObject) {
-
-
- EClass selectedObjClass = null;
-
- if (element instanceof EClass) {
- selectedObjClass = (EClass) element;
- }
- else {
- selectedObjClass = ((EObject) element).eClass();
- }
-
-
- // final EClass selectedObjClass = ((EObject) element).eClass();
-
- /* ====================Opening Heirarchy View ===================== */
-
- openHierarchyView(selectedObjClass);
-
-
- eClassName = selectedObjClass.getName();
-
-
- final EClassContentsAndHierarchyBufferBuilder builder = new EClassContentsAndHierarchyBufferBuilder();
-
- plantumlBuffer = builder.buildBuffer(selectedObjClass);
-
- id2ObjectsMap.addAll(builder.getId2ObjectsMap());
-
- }
- else {
- openErrorDialog();
- return null;
- }
- }
- }
- else {
- openErrorDialog();
- return null;
- }
-
- System.out.println(plantumlBuffer.toString());
-
- try {
- final Map<String, String> propsMap = new HashMap<String, String>();
-
- // propsMap.put(ExecutionCategory.isClassHierarchy_Contents_Generation.toString(), "true");
-
- ExecutionUtil.setExecutionCategory(ExecutionCategory.eClassContentsAndHierarchy);
-
- generateSVGAndDisplayDiagram(plantumlBuffer, eClassName + "__contents_deep_Heirarchy", id2ObjectsMap,
- propsMap);
- }
- catch (final IOException e) {
- // TODO Zmeer Auto-generated catch block
- e.printStackTrace();
- }
-
- return null;
- }
-
-
-}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/handlers/EClassContentsFromReferenceHandler.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/handlers/EClassContentsFromReferenceHandler.java
deleted file mode 100644
index 831b768..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/handlers/EClassContentsFromReferenceHandler.java
+++ /dev/null
@@ -1,158 +0,0 @@
- /**
- ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.emfutils.content.extractor.handlers;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.app4mc.emfutils.content.extractor.builders.EClassContentsFromReferenceBufferBuilder;
-import org.eclipse.app4mc.emfutils.content.extractor.utils.ExecutionCategory;
-import org.eclipse.app4mc.emfutils.content.extractor.utils.ExecutionUtil;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.emf.common.util.BasicEMap;
-import org.eclipse.emf.common.util.EMap;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EClassifier;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EReference;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-
-public class EClassContentsFromReferenceHandler extends AbstractHandlerUtils {
- /**
- * The constructor.
- */
- public EClassContentsFromReferenceHandler() {
- }
-
- /**
- * the command has been executed, so extract extract the needed information from the application context.
- */
- @Override
- public Object execute(final ExecutionEvent event) throws ExecutionException {
-
-
- final EMap<String, Object> id2ObjectsMap = new BasicEMap<String, Object>();
-
-
- StringBuffer plantumlBuffer = new StringBuffer();
-
-
- String eClassName = "";
-
-
- ISelection selection = null;
-
- selection = HandlerUtil.getActiveMenuSelection(event);
-
- if (selection == null) {
-
- selection = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getSelection();
-
- }
- if (selection != null & selection instanceof IStructuredSelection) {
-
- final IStructuredSelection strucSelection = (IStructuredSelection) selection;
-
- if (strucSelection == null) {
- return null;
- }
-
- for (final Iterator<Object> iterator = strucSelection.iterator(); iterator.hasNext();) {
-
- final Object element = iterator.next();
-
- if (element instanceof EObject) {
-
-
- EClass selectedObjClass = null;
-
- if (element instanceof EStructuralFeature && element instanceof EReference) {
-
- final EClassifier eType = ((EReference) element).getEType();
-
- if (eType instanceof EClass) {
-
- selectedObjClass = (EClass) eType;
- }
- else {
- selectedObjClass = ((EObject) element).eClass();
- }
-
- }
- else if (element instanceof EClass) {
- selectedObjClass = ((EClass) element);
- }
- else {
- selectedObjClass = ((EObject) element).eClass();
- }
-
-
- // final EClass selectedObjClass = ((EObject) element).eClass();
-
- /* ====================Opening Heirarchy View ===================== */
-
- openHierarchyView(selectedObjClass);
-
-
- eClassName = selectedObjClass.getName();
-
-
- final EClassContentsFromReferenceBufferBuilder builder = new EClassContentsFromReferenceBufferBuilder();
-
- plantumlBuffer = builder.buildBuffer(selectedObjClass);
-
- id2ObjectsMap.addAll(builder.getId2ObjectsMap());
-
- }
- else {
- openErrorDialog();
- return null;
- }
- }
- }
- else {
- openErrorDialog();
- return null;
- }
-
- System.out.println(plantumlBuffer.toString());
-
- try {
- final Map<String, String> propsMap = new HashMap<String, String>();
-
- // propsMap.put(ExecutionCategory.isClassContents_UML_Generation.toString(), "true");
-
- ExecutionUtil.setExecutionCategory(ExecutionCategory.eClassContentsFromReference);
-
- generateSVGAndDisplayDiagram(plantumlBuffer, eClassName + "__reference_type_Heirarchy", id2ObjectsMap,
- propsMap);
- }
- catch (final IOException e) {
- // TODO Zmeer Auto-generated catch block
- e.printStackTrace();
- }
-
- return null;
- }
-
-
-}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/handlers/EClassContentsHandler.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/handlers/EClassContentsHandler.java
deleted file mode 100644
index 30a26b3..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/handlers/EClassContentsHandler.java
+++ /dev/null
@@ -1,136 +0,0 @@
- /**
- ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.emfutils.content.extractor.handlers;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.app4mc.emfutils.content.extractor.builders.EClassContentsFromReferenceBufferBuilder;
-import org.eclipse.app4mc.emfutils.content.extractor.utils.ExecutionCategory;
-import org.eclipse.app4mc.emfutils.content.extractor.utils.ExecutionUtil;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.emf.common.util.BasicEMap;
-import org.eclipse.emf.common.util.EMap;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-
-public class EClassContentsHandler extends AbstractHandlerUtils {
- /**
- * The constructor.
- */
- public EClassContentsHandler() {
- }
-
- /**
- * the command has been executed, so extract extract the needed information from the application context.
- */
- @Override
- public Object execute(final ExecutionEvent event) throws ExecutionException {
-
-
- final EMap<String, Object> id2ObjectsMap = new BasicEMap<String, Object>();
-
-
- StringBuffer plantumlBuffer = new StringBuffer();
-
-
- String eClassName = "";
-
-
- ISelection selection = null;
-
- selection = HandlerUtil.getActiveMenuSelection(event);
-
- if (selection == null) {
-
- selection = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getSelection();
-
- }
- if (selection != null & selection instanceof IStructuredSelection) {
-
- final IStructuredSelection strucSelection = (IStructuredSelection) selection;
-
- for (final Iterator<Object> iterator = strucSelection.iterator(); iterator.hasNext();) {
-
- final Object element = iterator.next();
-
- if (element instanceof EObject) {
-
-
- EClass selectedObjClass = null;
-
- if (element instanceof EClass) {
- selectedObjClass = (EClass) element;
- }
- else {
- selectedObjClass = ((EObject) element).eClass();
- }
-
-
- // final EClass selectedObjClass = ((EObject) element).eClass();
-
- /* ====================Opening Heirarchy View ===================== */
-
- openHierarchyView(selectedObjClass);
-
-
- eClassName = selectedObjClass.getName();
-
-
- final EClassContentsFromReferenceBufferBuilder builder = new EClassContentsFromReferenceBufferBuilder();
-
- plantumlBuffer = builder.buildBuffer(selectedObjClass);
-
- id2ObjectsMap.addAll(builder.getId2ObjectsMap());
-
- }
- else {
- openErrorDialog();
- return null;
- }
- }
- }
- else {
- openErrorDialog();
- return null;
- }
-
- System.out.println(plantumlBuffer.toString());
-
- try {
- final Map<String, String> propsMap = new HashMap<String, String>();
-
- // propsMap.put(ExecutionCategory.isClassContents_UML_Generation.toString(), "true");
- ExecutionUtil.setExecutionCategory(ExecutionCategory.eClassContents);
-
- generateSVGAndDisplayDiagram(plantumlBuffer, eClassName + "__precise_Heirarchy", id2ObjectsMap, propsMap);
- }
- catch (final IOException e) {
- // TODO Zmeer Auto-generated catch block
- e.printStackTrace();
- }
-
- return null;
- }
-
-
-}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/handlers/EClassHierarchyHandler.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/handlers/EClassHierarchyHandler.java
deleted file mode 100644
index 784f860..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/handlers/EClassHierarchyHandler.java
+++ /dev/null
@@ -1,134 +0,0 @@
- /**
- ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.emfutils.content.extractor.handlers;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.app4mc.emfutils.content.extractor.builders.EClassHierarchyBufferBuilder;
-import org.eclipse.app4mc.emfutils.content.extractor.utils.ExecutionCategory;
-import org.eclipse.app4mc.emfutils.content.extractor.utils.ExecutionUtil;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.emf.common.util.BasicEMap;
-import org.eclipse.emf.common.util.EMap;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-
-public class EClassHierarchyHandler extends AbstractHandlerUtils {
-
- /**
- * The constructor.
- */
- public EClassHierarchyHandler() {
- }
-
- /**
- * the command has been executed, so extract extract the needed information from the application context.
- */
- @Override
- public Object execute(final ExecutionEvent event) throws ExecutionException {
-
-
- final EMap<String, Object> id2ObjectsMap = new BasicEMap<String, Object>();
-
- final EClassHierarchyBufferBuilder builder = new EClassHierarchyBufferBuilder();
-
-
- String eClassName = "";
-
- StringBuffer plantumlBuffer = new StringBuffer();
-
-
- ISelection selection = null;
-
- selection = HandlerUtil.getActiveMenuSelection(event);
-
- if (selection == null) {
-
- selection = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getSelection();
-
- }
- if (selection != null & selection instanceof IStructuredSelection) {
-
- final IStructuredSelection strucSelection = (IStructuredSelection) selection;
-
- for (final Iterator<Object> iterator = strucSelection.iterator(); iterator.hasNext();) {
-
- final Object element = iterator.next();
-
- if (element instanceof EObject) {
-
- EClass selectedObjClass = null;
-
- if (element instanceof EClass) {
- selectedObjClass = (EClass) element;
- }
- else {
- selectedObjClass = ((EObject) element).eClass();
- }
-
-
- // final EClass selectedObjClass = ((EObject) element).eClass();
-
- /* ====================Opening Heirarchy View ===================== */
-
- openHierarchyView(selectedObjClass);
-
-
- eClassName = selectedObjClass.getName();
-
-
- plantumlBuffer = builder.buildBuffer(selectedObjClass);
-
- id2ObjectsMap.addAll(builder.getId2ObjectsMap());
-
- }
- else {
- openErrorDialog();
- return null;
- }
- }
- }
- else {
- openErrorDialog();
- return null;
- }
-
-
- System.out.println(plantumlBuffer.toString());
-
- try {
- final Map<String, String> propsMap = new HashMap<String, String>();
-
- ExecutionUtil.setExecutionCategory(ExecutionCategory.eClassHierarchy);
-
- generateSVGAndDisplayDiagram(plantumlBuffer, eClassName + "__eclass_Heirarchy", id2ObjectsMap, propsMap);
- }
- catch (final IOException e) {
- e.printStackTrace();
- }
-
- return null;
- }
-
-
-}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/handlers/EObjectRefsHandler.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/handlers/EObjectRefsHandler.java
deleted file mode 100644
index 8f97a38..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/handlers/EObjectRefsHandler.java
+++ /dev/null
@@ -1,146 +0,0 @@
- /**
- ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.emfutils.content.extractor.handlers;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.app4mc.emfutils.content.extractor.builders.EObjectRefsBufferBuilder;
-import org.eclipse.app4mc.emfutils.content.extractor.utils.ExecutionCategory;
-import org.eclipse.app4mc.emfutils.content.extractor.utils.ExecutionUtil;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-
-public class EObjectRefsHandler extends AbstractHandlerUtils {
- /**
- * The constructor.
- */
- public EObjectRefsHandler() {
- }
-
- /**
- * the command has been executed, so extract extract the needed information from the application context.
- */
- @Override
- public Object execute(final ExecutionEvent event) throws ExecutionException {
-
- final EObjectRefsBufferBuilder bufferBuilder = new EObjectRefsBufferBuilder();
-
-
- StringBuffer plantumlBuffer = new StringBuffer();
-
- String eClassName = "";
-
- String elementName = "";
-
- ISelection selection = null;
-
- selection = HandlerUtil.getActiveMenuSelection(event);
-
- if (selection == null) {
-
- selection = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getSelection();
-
- }
-
- if (selection != null & selection instanceof IStructuredSelection) {
-
- final IStructuredSelection strucSelection = (IStructuredSelection) selection;
-
- for (final Iterator<Object> iterator = strucSelection.iterator(); iterator.hasNext();) {
-
- final Object element = iterator.next();
-
- if (element instanceof EObject) {
-
- EClass selectedObjClass = null;
-
- if (element instanceof EClass) {
- selectedObjClass = (EClass) element;
- }
- else {
- selectedObjClass = ((EObject) element).eClass();
- }
-
- // final EClass selectedObjClass = ((EObject) element).eClass();
-
- eClassName = selectedObjClass.getName();
-
- elementName = (String) getName((EObject) element);
-
-
- plantumlBuffer = bufferBuilder.buildBuffer((EObject) element);
-
-
- /* ====================Opening References View ===================== */
-
- openEReferencesView(selectedObjClass);
-
- /* ====================Opening Hierarchy View ===================== */
- openHierarchyView(selectedObjClass);
- }
- else {
- openErrorDialog();
- return null;
- }
- }
- }
- else {
- openErrorDialog();
- return null;
- }
-
- System.out.println(plantumlBuffer.toString());
-
- try {
-
- final Map<String, String> propsMap = new HashMap<String, String>();
-
- ExecutionUtil.setExecutionCategory(ExecutionCategory.eObjectRefs);
-
- generateSVGAndDisplayDiagram(plantumlBuffer, eClassName + "_" + elementName + "_References",
- bufferBuilder.getId2ObjectsMap(), propsMap);
- }
- catch (final IOException e) {
- e.printStackTrace();
- }
-
- return null;
- }
-
- private Object getName(final EObject eObject) {
- final EStructuralFeature eStructuralFeature = eObject.eClass().getEStructuralFeature("name");
-
- if (eStructuralFeature != null) {
-
- final Object originalName = eObject.eGet(eStructuralFeature);
-
- return originalName;
- }
-
- return eObject.eClass().getName() + "__" + eObject.hashCode();
- }
-
-
-}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/preferences/PreferenceInitializer.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/preferences/PreferenceInitializer.java
deleted file mode 100644
index d9e5047..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/preferences/PreferenceInitializer.java
+++ /dev/null
@@ -1,48 +0,0 @@
- /**
- ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.emfutils.content.extractor.preferences;
-
-import org.eclipse.app4mc.emfutils.content.extractor.Activator;
-import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
-import org.eclipse.jface.preference.IPreferenceStore;
-
-/**
- * Class used to initialize default preference values.
- */
-public class PreferenceInitializer extends AbstractPreferenceInitializer {
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences()
- */
- @Override
- public void initializeDefaultPreferences() {
-
-
- final IPreferenceStore store = Activator.getDefault().getPreferenceStore();
- store.setDefault(PreferenceConstants.P_DOT_PATH, store.getString(PreferenceConstants.P_DOT_PATH) != null
- ? store.getString(PreferenceConstants.P_DOT_PATH) : "");
- store.setDefault(PreferenceConstants.P_FOLDER_PATH, store.getString(PreferenceConstants.P_FOLDER_PATH) != null
- ? store.getString(PreferenceConstants.P_FOLDER_PATH) : "");
-
- store.setDefault(PreferenceConstants.P_DRILL_DOWN, store.getBoolean(PreferenceConstants.P_DRILL_DOWN));
-
- store.setDefault(PreferenceConstants.P_REDRAW_TREE_ON_SELECTION,
- store.contains(PreferenceConstants.P_REDRAW_TREE_ON_SELECTION)
- ? store.getBoolean(PreferenceConstants.P_REDRAW_TREE_ON_SELECTION) : false);
- }
-
-}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/views/DiagramView.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/views/DiagramView.java
deleted file mode 100644
index 0ae2235..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/views/DiagramView.java
+++ /dev/null
@@ -1,547 +0,0 @@
- /**
- ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.emfutils.content.extractor.views;
-
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Collections;
-import java.util.Stack;
-
-import org.eclipse.app4mc.emfutils.content.extractor.Activator;
-import org.eclipse.app4mc.emfutils.content.extractor.builders.EClassAllReferencesBufferBuilder;
-import org.eclipse.app4mc.emfutils.content.extractor.builders.EClassContentsAndHierarchyBufferBuilder;
-import org.eclipse.app4mc.emfutils.content.extractor.builders.EClassContentsFromReferenceBufferBuilder;
-import org.eclipse.app4mc.emfutils.content.extractor.builders.EClassHierarchyBufferBuilder;
-import org.eclipse.app4mc.emfutils.content.extractor.builders.ObjectContentBufferBuilder;
-import org.eclipse.app4mc.emfutils.content.extractor.handlers.AbstractHandlerUtils;
-import org.eclipse.app4mc.emfutils.content.extractor.preferences.PreferenceConstants;
-import org.eclipse.app4mc.emfutils.content.extractor.utils.ExecutionCategory;
-import org.eclipse.app4mc.emfutils.content.extractor.utils.ExecutionUtil;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.emf.common.ui.URIEditorInput;
-import org.eclipse.emf.common.util.BasicEMap;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.common.util.EMap;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.sphinx.emf.editors.forms.BasicTransactionalFormEditor;
-import org.eclipse.sphinx.emf.ui.util.EcoreUIUtil;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.browser.Browser;
-import org.eclipse.swt.browser.LocationEvent;
-import org.eclipse.swt.browser.LocationListener;
-import org.eclipse.swt.browser.ProgressEvent;
-import org.eclipse.swt.browser.ProgressListener;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.TraverseEvent;
-import org.eclipse.swt.events.TraverseListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IViewSite;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.ide.IDE;
-import org.eclipse.ui.part.FileEditorInput;
-import org.eclipse.ui.part.MultiPageEditorPart;
-import org.eclipse.ui.part.ViewPart;
-
-
-public class DiagramView extends ViewPart {
-
- /**
- * The ID of the view as specified by the extension.
- */
- public static final String ID = "org.eclipse.app4mc.emfutils.content.extractor.views.DiagramView";
-
- /** counter for the generated files (which are associated to the collections ) **/
- private int i = 0;
-
- private Browser browser;
-
-
- final EMap<String, Object> idObjectsMap;
-
-
- /**
- * The constructor.
- */
- public DiagramView() {
-
- this.idObjectsMap = new BasicEMap<String, Object>();
- }
-
- @Override
- public void init(final IViewSite site) throws PartInitException {
- super.init(site);
- addActions();
- }
-
-
-
- /**
- * This is a callback that will allow us to create the viewer and initialize it.
- */
- @Override
- public void createPartControl(final Composite parent) {
- this.browser = new Browser(parent, SWT.None);
-
- this.browser.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
- CustomBrowserListener listener = new CustomBrowserListener();
- this.browser.addKeyListener(listener );
-
- this.browser.addLocationListener(listener);
-
-
-
- }
-
- class CustomBrowserListener implements LocationListener, KeyListener {
-
- String lastSource = "";
-
- public Stack<String> urls=new Stack<>();;
-
- boolean isBackButtonPressed=false;
-
- @Override
- public void changing(final LocationEvent event) {
-
- if(isBackButtonPressed) {
- isBackButtonPressed=false;
- return;
- }
-
- final String location = event.location;
-//TODO: found this
- if (!location.endsWith(".svg")) {
- final int lastIndexOf = location.lastIndexOf("/");
-
- String id = "";
- if (lastIndexOf != -1) {
- id = location.substring(lastIndexOf + 1, location.length());
- }
- final Object source = event.getSource();
-
- if (source instanceof Browser) {
-
- try {
-// ((Browser) source).setUrl(this.lastSource);
- }
- catch (final Exception e) {
- // skipping exception logging, as here goal is to still retain the same image
- }
- }
-
- final Object eObject = DiagramView.this.idObjectsMap.get(id);
-
- if (eObject != null) {
-
- if (eObject instanceof EObject) {
- if (Activator.getDefault().getPreferenceStore()
- .getBoolean(PreferenceConstants.P_DRILL_DOWN)) {
-
- /*- ======================================== Regeneration of SVG Buffer for populating content specific to the selection =====================*/
-
- StringBuffer buildBuffer = new StringBuffer();
-
-
- if (ExecutionUtil.isExecuting(ExecutionCategory.eClassHierarchy)
- && (eObject instanceof EClass)) {
-
- final EClassHierarchyBufferBuilder bufferBuilder = new EClassHierarchyBufferBuilder();
-
- buildBuffer = bufferBuilder.buildBuffer((EClass) eObject);
-
- getIdObjectsMap().addAll(bufferBuilder.getId2ObjectsMap());
- }
- else if (ExecutionUtil.isExecuting(ExecutionCategory.eClassContentsAndHierarchy)
- && (eObject instanceof EClass)) {
-
- final EClassContentsAndHierarchyBufferBuilder bufferBuilder = new EClassContentsAndHierarchyBufferBuilder();
-
- buildBuffer = bufferBuilder.buildBuffer((EClass) eObject);
-
- getIdObjectsMap().addAll(bufferBuilder.getId2ObjectsMap());
- }
- else if (ExecutionUtil.isExecuting(ExecutionCategory.eClassAllReferences)
- && (eObject instanceof EClass)) {
-
-
- final EClassAllReferencesBufferBuilder bufferBuilder = new EClassAllReferencesBufferBuilder();
-
- buildBuffer = bufferBuilder.buildBuffer((EClass) eObject);
-
- getIdObjectsMap().addAll(bufferBuilder.getId2ObjectsMap());
-
-
- }
- else if (ExecutionUtil.isExecuting(ExecutionCategory.eClassContentsFromReference)
- && (eObject instanceof EClass)) {
-
-
- final EClassContentsFromReferenceBufferBuilder bufferBuilder = new EClassContentsFromReferenceBufferBuilder();
-
- buildBuffer = bufferBuilder.buildBuffer((EClass) eObject);
-
- getIdObjectsMap().addAll(bufferBuilder.getId2ObjectsMap());
-
-
- }
-
- else {
-
- /*- EClassContents and EObjectRefs behaviour is included in ObjectContentBufferBuilder java class */
- final ObjectContentBufferBuilder bufferBuilder = new ObjectContentBufferBuilder();
-
- buildBuffer = bufferBuilder.buildBuffer((EObject) eObject);
-
- getIdObjectsMap().addAll(bufferBuilder.getId2ObjectsMap());
- }
-
-
- System.out.println(buildBuffer);
-
- try {
-
-
- final String svgFile = AbstractHandlerUtils.generateSVGFile(buildBuffer,
- ((EObject) eObject).eClass().getName() + DiagramView.this.i++,
- new BasicEMap<String, Object>());
- ((Browser) source).setUrl(svgFile);
- }
- catch (final IOException e) {
- e.printStackTrace();
- }
-
-
- }
- else {
-
-
- if (ExecutionUtil.isExecuting(ExecutionCategory.eClassHierarchy)
- && (eObject instanceof EClass)) {
- // do nothing
- }
-
-
- else if (ExecutionUtil.isExecuting(ExecutionCategory.eClassContentsAndHierarchy)
- && (eObject instanceof EClass)) {
- // do nothing
- }
- else if (ExecutionUtil.isExecuting(ExecutionCategory.eClassAllReferences)
- && (eObject instanceof EClass)) {
- // do nothing
- }
- else {
- selectElement((EObject) eObject);
-
- }
-
-// ((Browser)source).stop();
-
- event.doit=false;
- }
-
- }
- else if (eObject instanceof EList<?>) {
-
- if (Activator.getDefault().getPreferenceStore()
- .getBoolean(PreferenceConstants.P_DRILL_DOWN)) {
-
- /*- ======================================== Regeneration of SVG Buffer for populating content specific to the selection =====================*/
-
- final ObjectContentBufferBuilder bufferBuilder = new ObjectContentBufferBuilder();
-
- final StringBuffer buildBuffer = bufferBuilder
- .buildBufferForCollection((EList<?>) eObject);
- System.out.println(buildBuffer);
-
- try {
-
- getIdObjectsMap().addAll(bufferBuilder.getId2ObjectsMap());
-
- final String svgFile = AbstractHandlerUtils.generateSVGFile(buildBuffer,
- "Collection" + DiagramView.this.i++, bufferBuilder.getId2ObjectsMap());
- ((Browser) source).setUrl(svgFile);
- }
- catch (final IOException e) {
- e.printStackTrace();
- }
-
-
- }
- else {
- MessageDialog.openError(Display.getDefault().getActiveShell(), "Element Selection",
- "Selection of list is not possible for AMALTHEA model");
-
- try {
- ((Browser) source).setUrl(this.lastSource);
-
- }
- catch (final Exception e) {
- throw e;
- }
- }
-
- }
-
-
- }
-
-
- }
-
-
- }
-
- @Override
- public void changed(final LocationEvent event) {
- this.lastSource = event.location;
- urls.push(this.lastSource);
- }
-
- /**
- * This method is used to select specified AMALTHEA element in the Sphinx editor
- *
- * @param element
- */
- private void selectElement(final EObject element) {
-
- final URIEditorInput input = EcoreUIUtil.createURIEditorInput(element.eResource());
- if (null != input) {
-
- final IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow() != null
- ? PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
- : PlatformUI.getWorkbench().getWorkbenchWindows()[0].getActivePage();
-
- Display.getDefault().asyncExec(new java.lang.Runnable() {
-
- @Override
- public void run() {
- final IEditorReference[] editorReferences = page.getEditorReferences();
-
- for (final IEditorReference iEditorReference : editorReferences) {
-
-
- if (iEditorReference.getId().equals("org.eclipse.app4mc.amalthea.sphinx.ui.editor")
- || iEditorReference.getId().equals("org.itea2.amalthea.sphinx.ui.editor")
- || iEditorReference.getId().equals("com.inchron.realtime.root.presentation.RootEditorID")) {
- try {
- final FileEditorInput editorInput = (FileEditorInput) iEditorReference
- .getEditorInput();
-
- final IFile fileFromEditor = editorInput.getFile();
-
- final Resource eResource = element.eResource();
-
- final URI uri = eResource.getURI();
-
- final IFile fileFromResource = ResourcesPlugin.getWorkspace().getRoot()
- .getFile(new Path(uri.toPlatformString(true)));
-
-
- if ((fileFromEditor != null && fileFromResource != null)
- && fileFromEditor.toString().equals(fileFromResource.toString())) {
-
- final IEditorPart activeEditor = iEditorReference.getEditor(false);
-
- if (activeEditor instanceof MultiPageEditorPart) {
-
- IDE.openEditor(page, editorInput, iEditorReference.getId());
-
- if (canCollapseTreeElements()) {
-
- Method method = activeEditor.getClass().getMethod("getViewer");
-
-
- final Viewer viewer = (Viewer) method.invoke(activeEditor);
-
- if (viewer instanceof TreeViewer) {
- ((TreeViewer) viewer).collapseAll();
-
- }
- }
-
- if(activeEditor instanceof BasicTransactionalFormEditor) {
- ((BasicTransactionalFormEditor) activeEditor)
- .setSelectionToViewer(Collections.singleton(element));
-
- }else {
-
- Method method = activeEditor.getClass().getMethod("getViewer");
-
-
- final Viewer viewer = (Viewer) method.invoke(activeEditor);
-
- if (viewer instanceof TreeViewer) {
- ((TreeViewer) viewer).setSelection(new StructuredSelection(element), true);
-
- }
- }
- }
-
- }
- }
- catch (final PartInitException | NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
- e.printStackTrace();
- }
- }
- }
-
- }
-
- private boolean canCollapseTreeElements() {
- return Activator.getDefault().getPreferenceStore()
- .getBoolean(PreferenceConstants.P_REDRAW_TREE_ON_SELECTION);
- }
- });
-
- }
-
- }
-
- @Override
- public void keyPressed(KeyEvent e) {
-
- if(e.character=='\b') {
- isBackButtonPressed=true;
- Object source = e.getSource();
- if (source instanceof Browser) {
-
- try {
- if(urls.isEmpty()==false) {
- String pop = urls.pop();
-
- if(urls.isEmpty()==false) {
- pop = urls.pop();
- ((Browser) source).setUrl(pop);
- }
- }
- }
- catch (final Exception exception) {
- // skipping exception logging, as here goal is to still retain the same image
- }
- }
-
- }
- }
-
- @Override
- public void keyReleased(KeyEvent e) {
-
-
- }
- };
-
- private void addActions() {
- final String P_DRILL_DOWN = Activator.getDefault().getPreferenceStore()
- .getString(PreferenceConstants.P_DRILL_DOWN);
-
- boolean state = false;
- if (P_DRILL_DOWN == null) {
- state = true;
- }
- else if (P_DRILL_DOWN.equals("false")) {
- state = true;
- }
- else if (P_DRILL_DOWN.equals("true")) {
- state = false;
- }
-
-
- final IActionBars actionBars = getViewSite().getActionBars();
-
- final IToolBarManager toolBar = actionBars.getToolBarManager();
- final Action action = new Action("Select in Editor", IAction.AS_CHECK_BOX) {
- @Override
- public void setText(final String text) {
- super.setText(text);
- }
-
- @Override
- public void run() {
-
- if (isChecked() == false) {
-
- try {
-
- Activator.getDefault().getPreferenceStore().setValue(PreferenceConstants.P_DRILL_DOWN, true);
- }
- catch (final Exception e) {
-
- throw e;
- }
- }
- else if (isChecked() == true) {
-
- try {
- Activator.getDefault().getPreferenceStore().setValue(PreferenceConstants.P_DRILL_DOWN, false);
-
- }
- catch (final Exception e) {
- throw e;
- }
- }
-
- }
-
-
- };
-
- action.setChecked(state);
-
- toolBar.add(action);
-
- }
-
- /**
- * Passing the focus request to the viewer's control.
- */
- @Override
- public void setFocus() {
- getViewSite().getActionBars().updateActionBars();
-
-
- }
-
- public Browser getBrowser() {
- return this.browser;
- }
-
- public EMap<String, Object> getIdObjectsMap() {
- return this.idObjectsMap;
- }
-
-}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.project b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.project
deleted file mode 100644
index 48e979a..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.app4mc.emfutils.metamodelviewer</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/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/META-INF/MANIFEST.MF b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/META-INF/MANIFEST.MF
deleted file mode 100644
index 81e2803..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,18 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: EMF Metamodel Viewer
-Bundle-SymbolicName: org.eclipse.app4mc.emfutils.metamodelviewer;singleton:=true
-Bundle-Version: 0.8.3
-Bundle-Vendor: Eclipse APP4MC
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.ui,
- org.eclipse.sphinx.emf
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Bundle-Activator: org.eclipse.app4mc.emfutils.metamodelviewer.base.Activator
-Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.app4mc.emfutils.metamodelviewer.base,
- org.eclipse.app4mc.emfutils.metamodelviewer.dialogs,
- org.eclipse.app4mc.emfutils.metamodelviewer.preferences,
- org.eclipse.app4mc.emfutils.metamodelviewer.utils,
- org.eclipse.app4mc.emfutils.metamodelviewer.views,
- org.eclipse.app4mc.emfutils.metamodelviewer.views.providers
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/plugin.xml b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/plugin.xml
deleted file mode 100644
index 4fb9b05..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/plugin.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<plugin>
-
- <extension
- point="org.eclipse.ui.views">
- <category
- name="Meta Model Explorer"
- id="org.eclipse.app4mc.emfutils.metamodelviewer.explorer.view.category">
- </category>
- <view
- allowMultiple="true"
- category="org.eclipse.app4mc.emfutils.metamodelviewer.explorer.view.category"
- class="org.eclipse.app4mc.emfutils.metamodelviewer.views.MetaModelExplorerView"
- icon="icons/sample.gif"
- id="org.eclipse.app4mc.emfutils.metamodelviewer.views.MetaModel-ExplorerView"
- name="Meta Model Explorer">
- </view>
- </extension>
- <extension
- point="org.eclipse.core.runtime.preferences">
- <initializer
- class="org.eclipse.app4mc.emfutils.metamodelviewer.preferences.PreferenceInitializer">
- </initializer>
- </extension>
- <extension
- point="org.eclipse.ui.preferencePages">
- <page
- class="org.eclipse.app4mc.emfutils.metamodelviewer.preferences.MetaModelViewerPreferencePage"
- id="org.eclipse.app4mc.emfutils.metamodelviewer.page1"
- name="Meta Model Viewer">
- </page>
- </extension>
-
-</plugin>
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/pom.xml b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/pom.xml
deleted file mode 100644
index 0f68604..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/pom.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <relativePath>../../build/org.eclipse.app4mc.emfutils.extractor.build</relativePath>
- <groupId>org.eclipse.app4mc.emfutils.content.extractor</groupId>
- <artifactId>org.eclipse.app4mc.emfutils.extractor.build</artifactId>
- <version>0.8.3</version>
- </parent>
-
- <artifactId>org.eclipse.app4mc.emfutils.metamodelviewer</artifactId>
- <packaging>eclipse-plugin</packaging>
-
- <build>
- <sourceDirectory>src</sourceDirectory>
- <resources>
- <resource>
- <directory>xtend-gen</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>src</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <version>2.4.1</version>
- <configuration>
- <filesets>
- <fileset>
- <directory>xtend-gen</directory>
- <includes>
- <include>**</include>
- </includes>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>1.7</version>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>xtend-gen</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.eclipse.xtend</groupId>
- <artifactId>xtend-maven-plugin</artifactId>
- <version>2.14.0</version>
- <dependencies>
- <dependency>
- <groupId>org.eclipse.jdt</groupId>
- <artifactId>org.eclipse.jdt.core</artifactId>
- <version>3.13.102</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jdt</groupId>
- <artifactId>org.eclipse.jdt.compiler.apt</artifactId>
- <version>1.3.110</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jdt</groupId>
- <artifactId>org.eclipse.jdt.compiler.tool</artifactId>
- <version>1.2.101</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.emf</groupId>
- <artifactId>org.eclipse.emf.codegen</artifactId>
- <version>2.11.0</version>
- </dependency>
- </dependencies>
-
- <executions>
- <execution>
- <goals>
- <goal>compile</goal>
- <goal>xtend-install-debug-info</goal>
- <goal>testCompile</goal>
- <goal>xtend-test-install-debug-info</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <outputDirectory>xtend-gen</outputDirectory>
- </configuration>
- </plugin>
- </plugins>
- </build>
-</project>
\ No newline at end of file
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/base/Activator.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/base/Activator.java
deleted file mode 100644
index 774871b..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/base/Activator.java
+++ /dev/null
@@ -1,69 +0,0 @@
- /**
- ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.emfutils.metamodelviewer.base;
-
-
-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.eclipse.app4mc.emfutils.metamodelviewer"; //$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)
- */
- @Override
- public void start(final BundleContext context) throws Exception {
- super.start(context);
- plugin = this;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
- */
- @Override
- public void stop(final 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/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/views/MetaModelExplorerView.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/views/MetaModelExplorerView.java
deleted file mode 100644
index 98ef9dc..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/views/MetaModelExplorerView.java
+++ /dev/null
@@ -1,475 +0,0 @@
- /**
- ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.emfutils.metamodelviewer.views;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.app4mc.emfutils.metamodelviewer.base.Activator;
-import org.eclipse.app4mc.emfutils.metamodelviewer.dialogs.SelectedElementContentDialog;
-import org.eclipse.app4mc.emfutils.metamodelviewer.preferences.MetaModelViewerPreferenceConstants;
-import org.eclipse.app4mc.emfutils.metamodelviewer.utils.ElementSearchPatternFilter;
-import org.eclipse.app4mc.emfutils.metamodelviewer.utils.PluginUtils;
-import org.eclipse.app4mc.emfutils.metamodelviewer.utils.RegisterECOREfilesAction;
-import org.eclipse.app4mc.emfutils.metamodelviewer.views.providers.ViewContentProvider;
-import org.eclipse.app4mc.emfutils.metamodelviewer.views.providers.ViewLabelProvider;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EPackage.Registry;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.ComboViewer;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.TreeSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.sphinx.emf.metamodel.IMetaModelDescriptor;
-import org.eclipse.sphinx.emf.metamodel.MetaModelDescriptorRegistry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.FileDialog;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.dialogs.FilteredTree;
-import org.eclipse.ui.part.ViewPart;
-
-
-public class MetaModelExplorerView extends ViewPart {
- /**
- * The ID of the view as specified by the extension.
- */
- public static final String ID = "org.eclipse.app4mc.emfutils.metamodelviewer.views.MetaModel-ExplorerView";
- private static int id_Counter = 1;
- private TreeViewer viewer;
- private Action filterClassesAction;
- private Action registerEcoreFilesAction;
- private Action filterAttributesAction;
- private Action cloneViewAction;
- private boolean filterForEClassifiersBoolean = true;
- private boolean filterForAttributesBoolean;
- private ElementSearchPatternFilter patternFilter;
- private ComboViewer combo_ecore;
-
- /**
- * The constructor.
- */
- public MetaModelExplorerView() {
- }
-
- /**
- * This is a callback that will allow us to create the viewer and initialize it.
- */
- @Override
- public void createPartControl(final Composite parent) {
- parent.setLayout(new GridLayout(2, false));
-
- final Label label = new Label(parent, 0);
-
- label.setText("SPHINX Registry");
-
- label.setLayoutData(new GridData());
-
- final Combo combo = new Combo(parent,
- SWT.H_SCROLL | SWT.V_SCROLL | SWT.READ_ONLY);
-
- final Label label_ecore = new Label(parent, 0);
-
- label_ecore.setText("ECORE Registry");
-
- label_ecore.setLayoutData(new GridData());
-
- combo_ecore = new ComboViewer(parent,
- SWT.H_SCROLL | SWT.V_SCROLL | SWT.READ_ONLY);
-
- final Registry ePackageRegistry = EPackage.Registry.INSTANCE;
-
- final Set<String> keySet = ePackageRegistry.keySet();
- // for (final String string : new TreeSet<String>(keySet)) {
- //
- // combo_ecore.add(string);
- // }
- combo_ecore.setContentProvider(ArrayContentProvider.getInstance());
- combo_ecore.setLabelProvider(new LabelProvider() {
- @Override
- public String getText(Object element) {
- return super.getText(element);
- }
- });
-
- ArrayList<String> arrayList = new ArrayList<String>(keySet);
-
- Collections.sort(arrayList);
-
- combo_ecore.setInput(arrayList.toArray());
-
- combo_ecore.getCombo().addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(final SelectionEvent e) {
- combo.deselectAll();
-
- final String text = combo_ecore.getCombo().getText();
-
- final EPackage ePackage = ePackageRegistry.getEPackage(text);
-
- getViewer().setInput(ePackage);
- }
- });
-
- final List<IMetaModelDescriptor> descriptors = MetaModelDescriptorRegistry.INSTANCE.getDescriptors(MetaModelDescriptorRegistry.ANY_MM);
-
- for (final IMetaModelDescriptor iMetaModelDescriptor : descriptors) {
- final String identifier = iMetaModelDescriptor.getIdentifier();
- combo.add(identifier);
- }
-
- combo.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(final SelectionEvent e) {
- combo_ecore.getCombo().deselectAll();
-
- final String text = combo.getText();
-
- final IMetaModelDescriptor descriptor = MetaModelDescriptorRegistry.INSTANCE.getDescriptor(text);
-
- getViewer().setInput(descriptor);
- }
- });
-
- this.patternFilter = new ElementSearchPatternFilter(this.filterForEClassifiersBoolean,
- this.filterForAttributesBoolean);
-
- final FilteredTree filteredTree = new FilteredTree(parent,
- SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER,
- this.patternFilter, true);
-
- filteredTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true,
- 2, 0));
-
- this.viewer = filteredTree.getViewer();
-
- final GridData gridLayoutData = new GridData();
- gridLayoutData.horizontalSpan = 2;
- gridLayoutData.grabExcessHorizontalSpace = true;
- gridLayoutData.grabExcessVerticalSpace = true;
- gridLayoutData.horizontalAlignment = GridData.FILL;
- gridLayoutData.verticalAlignment = GridData.FILL;
-
- this.viewer.getTree()
- .setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true,
- 2, 0));
-
- this.viewer.setContentProvider(new ViewContentProvider());
-
- this.viewer.setInput(getViewSite());
-
- this.viewer.setLabelProvider(new ViewLabelProvider());
-
- getSite().setSelectionProvider(this.viewer);
-
- makeActions();
-
- hookContextMenu();
-
- hookDoubleClickAction();
-
- contributeToActionBars();
- }
-
- public TreeViewer getViewer() {
- return this.viewer;
- }
-
- private void hookContextMenu() {
- final MenuManager menuMgr = new MenuManager("#PopupMenu") {
- @Override
- public IContributionItem[] getItems() {
- IContributionItem[] menuItems = super.getItems();
-
- final List<IContributionItem> filteredContributionItems = new LinkedList<IContributionItem>();
-
- for (final IContributionItem contributionItem : menuItems) {
- if ((contributionItem != null) &&
- ((contributionItem.getId() != null) &&
- (!(contributionItem.getId()
- .startsWith("org.eclipse.emf.ecore.editor.CreateDynamicInstance"))))) {
- filteredContributionItems.add(contributionItem);
- }
- }
-
- menuItems = new IContributionItem[filteredContributionItems.size()];
-
- return filteredContributionItems.toArray(menuItems);
- }
- };
-
- menuMgr.setRemoveAllWhenShown(true);
- menuMgr.addMenuListener(new IMenuListener() {
- @Override
- public void menuAboutToShow(final IMenuManager manager) {
- MetaModelExplorerView.this.fillContextMenu(manager);
- }
- });
-
- final Menu menu = menuMgr.createContextMenu(this.viewer.getControl());
- this.viewer.getControl().setMenu(menu);
- getSite().registerContextMenu(menuMgr, this.viewer);
- }
-
- private void contributeToActionBars() {
- final IActionBars bars = getViewSite().getActionBars();
- fillLocalPullDown(bars.getMenuManager());
- fillLocalToolBar(bars.getToolBarManager());
- }
-
- private void fillLocalPullDown(final IMenuManager manager) {
- manager.add(this.filterClassesAction);
- manager.add(new Separator());
- manager.add(this.filterAttributesAction);
- manager.add(new Separator());
- manager.add(this.cloneViewAction);
- }
-
- void fillContextMenu(final IMenuManager manager) {
- // manager.add(this.filterClassesAction);
- // manager.add(this.filterAttributesAction);
- // manager.add(new Separator());
- // this.drillDownAdapter.addNavigationActions(manager);
- // Other plug-ins can contribute there actions here
- // manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
- }
-
- private void fillLocalToolBar(final IToolBarManager manager) {
- manager.add(this.filterClassesAction);
- manager.add(this.filterAttributesAction);
- manager.add(new Separator());
-
- manager.add(this.registerEcoreFilesAction);
- }
-
- private void makeActions() {
- this.filterClassesAction = new Action("Filter for EClassifers",
- IAction.AS_CHECK_BOX) {
- @Override
- public void run() {
- if (isChecked()) {
- setFilterForEClassifiersBoolean(true);
- } else {
- setFilterForEClassifiersBoolean(false);
- }
- }
- };
-
- this.filterClassesAction.setEnabled(true);
-
- this.filterClassesAction.setToolTipText("Filter for EClassifiers");
- this.filterClassesAction.setImageDescriptor(PluginUtils.getImageDescriptor(
- "icons/class_obj.png"));
-
- this.filterAttributesAction = new Action("Filter for Attributes",
- IAction.AS_CHECK_BOX) {
- @Override
- public void run() {
- if (isChecked()) {
- setFilterForAttributesBoolean(true);
- } else {
- setFilterForAttributesBoolean(false);
- }
- }
- };
- this.filterAttributesAction.setToolTipText("Filter for Attributes");
- this.filterAttributesAction.setImageDescriptor(PluginUtils.getImageDescriptor(
- "icons/prop_ps.gif"));
-
- this.cloneViewAction = new Action("Clone View", IAction.AS_CHECK_BOX) {
- @Override
- public void run() {
- try {
- getViewSite().getPage()
- .showView(ID, id_Counter++ + "",
- IWorkbenchPage.VIEW_VISIBLE);
- } catch (PartInitException e) {
- e.printStackTrace();
- }
- }
- };
- this.cloneViewAction.setToolTipText("Clone View");
- this.cloneViewAction.setImageDescriptor(PluginUtils.getImageDescriptor(
- "icons/prop_ps.gif"));
-
-
- this.registerEcoreFilesAction = new Action("Register ECORE files") {
- @Override
- public void run() {
- //TODO: add implementation for CSV report generation
- Object input = viewer.getInput();
-
- FileDialog dialog = new FileDialog(Display.getDefault()
- .getActiveShell(),
- SWT.OPEN | SWT.MULTI);
-
- dialog.setFilterExtensions(new String[] { "*.ecore" });
-
- dialog.open();
-
- if ((dialog.getFileName() == null) ||
- (dialog.getFileNames() == null)) {
- return;
- }
-
- List<String> files = new ArrayList<String>();
-
- for (String fileName : dialog.getFileNames()) {
- String filePath = dialog.getFilterPath() +
- File.separator + fileName;
-
- files.add(filePath);
- }
-
- try {
- RegisterECOREfilesAction.loadECOREs(files,
- combo_ecore);
- } catch (Exception e) {
- Display.getDefault().asyncExec(new Runnable() {
- @Override
- public void run() {
- MessageDialog.openError(Display.getDefault()
- .getActiveShell(),
- "Error", e.getMessage());
- }
- });
- }
- }
- };
- this.registerEcoreFilesAction.setToolTipText(
- "Register ECORE files");
- this.registerEcoreFilesAction.setImageDescriptor(PluginUtils.getImageDescriptor(
- "icons/register_ecores.png"));
- }
-
- private void hookDoubleClickAction() {
- this.viewer.addDoubleClickListener(new IDoubleClickListener() {
- @Override
- public void doubleClick(final DoubleClickEvent event) {
- final ISelection selection = event.getSelection();
-
- if (selection instanceof TreeSelection) {
- final Object firstElement = ((TreeSelection) selection).getFirstElement();
-
- if (firstElement instanceof EObject) {
- Shell parentShell = null;
-
- String displayDialogStyle = (Activator.getDefault()
- .getPreferenceStore()
- .getString(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY));
-
- if ((displayDialogStyle != null) &&
- displayDialogStyle.equals(
- MetaModelViewerPreferenceConstants.V_ON_TOP)) {
- parentShell = new Shell(SWT.ON_TOP);
- } else {
- parentShell = new Shell();
- }
-
- // final String name = ((firstElement instanceof EClass) ? ((EClass) firstElement).getName() :
- // "");
- //
- // parentShell.setText("Details of : " + ((EClass) firstElement).eClass().getName() + " " +
- // name);
- //
- //
- // final TaskBar systemTaskBar = parentShell.getDisplay().getSystemTaskBar();
- // final TaskItem taskItem = systemTaskBar.getItem(parentShell);
- //
- // taskItem.setData(parentShell);
- // taskItem.setOverlayText(name);
- // taskItem.setText(name);
- new SelectedElementContentDialog(parentShell,
- getSite(), (EObject) firstElement).open();
- }
- }
- }
- });
- }
-
- /**
- * Passing the focus request to the viewer's control.
- */
- @Override
- public void setFocus() {
- this.viewer.getControl().setFocus();
- }
-
- public Action getFilterClassesAction() {
- return this.filterClassesAction;
- }
-
- public Action getFilterAttributesAction() {
- return this.filterAttributesAction;
- }
-
- public boolean isFilterForEClassifiersBoolean() {
- return this.filterForEClassifiersBoolean;
- }
-
- public boolean isFilterForAttributesBoolean() {
- return this.filterForAttributesBoolean;
- }
-
- public void setFilterClassesAction(final Action filterClassesAction) {
- this.filterClassesAction = filterClassesAction;
- }
-
- public void setFilterAttributesAction(final Action filterAttributesAction) {
- this.filterAttributesAction = filterAttributesAction;
- }
-
- public void setFilterForEClassifiersBoolean(
- final boolean filterForEClassifiersBoolean) {
- this.filterForEClassifiersBoolean = filterForEClassifiersBoolean;
-
- this.patternFilter.setFilterForEClassifiersBoolean(filterForEClassifiersBoolean);
- }
-
- public void setFilterForAttributesBoolean(
- final boolean filterForAttributesBoolean) {
- this.filterForAttributesBoolean = filterForAttributesBoolean;
-
- this.patternFilter.setFilterForAttributesBoolean(filterForAttributesBoolean);
- }
-}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/.classpath b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/.classpath
deleted file mode 100644
index eca7bdb..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?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.8"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/.gitignore b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/.gitignore
deleted file mode 100644
index 84a4913..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/target
-/bin
\ No newline at end of file
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/.project b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/.project
deleted file mode 100644
index 02349ae..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.app4mc.emfutils.resourceset.mapper</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/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/.settings/org.eclipse.jdt.core.prefs b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 0c68a61..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,7 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/META-INF/MANIFEST.MF b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/META-INF/MANIFEST.MF
deleted file mode 100644
index 8cd619d..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,12 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: EMF Resourceset Mapper
-Bundle-SymbolicName: org.eclipse.app4mc.emfutils.resourceset.mapper;singleton:=true
-Bundle-Version: 0.8.3
-Bundle-Activator: org.eclipse.app4mc.emfutils.resourceset.mapper.Activator
-Bundle-Vendor: Eclipse APP4MC
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.ui,
- org.eclipse.sphinx.emf
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Bundle-ActivationPolicy: lazy
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/about.html b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/about.html
deleted file mode 100644
index 164f781..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!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 30, 2017</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 2.0 ("EPL"). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</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/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/epl-2.0.html b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/epl-2.0.html
deleted file mode 100644
index 637a181..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/epl-2.0.html
+++ /dev/null
@@ -1,300 +0,0 @@
-<!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" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Eclipse Public License - Version 2.0</title>
- <style type="text/css">
- body {
- margin: 1.5em 3em;
- }
- h1{
- font-size:1.5em;
- }
- h2{
- font-size:1em;
- margin-bottom:0.5em;
- margin-top:1em;
- }
- p {
- margin-top: 0.5em;
- margin-bottom: 0.5em;
- }
- ul, ol{
- list-style-type:none;
- }
- </style>
- </head>
- <body>
- <h1>Eclipse Public License - v 2.0</h1>
- <p>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.
- </p>
- <h2 id="definitions">1. DEFINITIONS</h2>
- <p>“Contribution” means:</p>
- <ul>
- <li>a) in the case of the initial Contributor, the initial content
- Distributed under this Agreement, and
- </li>
- <li>
- b) in the case of each subsequent Contributor:
- <ul>
- <li>i) changes to the Program, and</li>
- <li>ii) additions to the Program;</li>
- </ul>
- 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 changes or additions to the Program that
- are not Modified Works.
- </li>
- </ul>
- <p>“Contributor” means any person or entity that Distributes the Program.</p>
- <p>“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.
- </p>
- <p>“Program” means the Contributions Distributed in accordance with this
- Agreement.
- </p>
- <p>“Recipient” means anyone who receives the Program under this Agreement
- or any Secondary License (as applicable), including Contributors.
- </p>
- <p>“Derivative Works” shall mean any work, whether in Source Code or other
- form, that is based on (or derived from) the Program and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship.
- </p>
- <p>“Modified Works” shall mean any work in Source Code or other form that
- results from an addition to, deletion from, or modification of the
- contents of the Program, including, for purposes of clarity any new file
- in Source Code form that contains any contents of the Program. Modified
- Works shall not include works that contain only declarations, interfaces,
- types, classes, structures, or files of the Program solely in each case
- in order to link to, bind by name, or subclass the Program or Modified
- Works thereof.
- </p>
- <p>“Distribute” means the acts of a) distributing or b) making available
- in any manner that enables the transfer of a copy.
- </p>
- <p>“Source Code” means the form of a Program preferred for making
- modifications, including but not limited to software source code,
- documentation source, and configuration files.
- </p>
- <p>“Secondary License” means either the GNU General Public License,
- Version 2.0, or any later versions of that license, including any
- exceptions or additional permissions as identified by the initial
- Contributor.
- </p>
- <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
- <ul>
- <li>a) Subject to the terms of this Agreement, each Contributor hereby
- grants Recipient a non-exclusive, worldwide, royalty-free copyright
- license to reproduce, prepare Derivative Works of, publicly display,
- publicly perform, Distribute and sublicense the Contribution of such
- Contributor, if any, and such Derivative Works.
- </li>
- <li>b) Subject to the terms of this Agreement, each Contributor hereby
- grants Recipient a non-exclusive, worldwide, 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 or other 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.
- </li>
- <li>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.
- </li>
- <li>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.
- </li>
- <li>e) Notwithstanding the terms of any Secondary License, no Contributor
- makes additional grants to any Recipient (other than those set forth
- in this Agreement) as a result of such Recipient's receipt of the
- Program under the terms of a Secondary License (if permitted under
- the terms of Section 3).
- </li>
- </ul>
- <h2 id="requirements">3. REQUIREMENTS</h2>
- <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
- <ul>
- <li>a) the Program must also be made available as Source Code, in
- accordance with section 3.2, and the Contributor must accompany
- the Program with a statement that the Source Code for the Program
- is available under this Agreement, and informs Recipients how to
- obtain it in a reasonable manner on or through a medium customarily
- used for software exchange; and
- </li>
- <li>
- b) the Contributor may Distribute the Program under a license
- different than this Agreement, provided that such license:
- <ul>
- <li>i) effectively disclaims on behalf of all other 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;
- </li>
- <li>ii) effectively excludes on behalf of all other Contributors all
- liability for damages, including direct, indirect, special, incidental
- and consequential damages, such as lost profits;
- </li>
- <li>iii) does not attempt to limit or alter the recipients' rights in the
- Source Code under section 3.2; and
- </li>
- <li>iv) requires any subsequent distribution of the Program by any party
- to be under a license that satisfies the requirements of this section 3.
- </li>
- </ul>
- </li>
- </ul>
- <p>3.2 When the Program is Distributed as Source Code:</p>
- <ul>
- <li>a) it must be made available under this Agreement, or if the Program (i)
- is combined with other material in a separate file or files made available
- under a Secondary License, and (ii) the initial Contributor attached to
- the Source Code the notice described in Exhibit A of this Agreement,
- then the Program may be made available under the terms of such
- Secondary Licenses, and
- </li>
- <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
- </ul>
- <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
- attribution notices, disclaimers of warranty, or limitations of liability
- (‘notices’) contained within the Program from any copy of the Program which
- they Distribute, provided that Contributors may add their own appropriate
- notices.
- </p>
- <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
- <p>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.
- </p>
- <p>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.
- </p>
- <h2 id="warranty">5. NO WARRANTY</h2>
- <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
- BY APPLICABLE LAW, 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.
- </p>
- <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
- <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
- BY APPLICABLE LAW, 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.
- </p>
- <h2 id="general">7. GENERAL</h2>
- <p>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.
- </p>
- <p>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.
- </p>
- <p>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.
- </p>
- <p>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.
- </p>
- <p>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. Nothing in this Agreement is intended
- to be enforceable by any entity that is not a Contributor or Recipient.
- No third-party beneficiary rights are created under this Agreement.
- </p>
- <h2 id="exhibit-a">Exhibit A – Form of Secondary Licenses Notice</h2>
- <p>“This Source Code may also be made available under the following
- Secondary Licenses when the conditions for such availability set forth
- in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
- version(s), and exceptions or additional permissions here}.”
- </p>
- <blockquote>
- <p>Simply including a copy of this Agreement, including this Exhibit A
- is not sufficient to license the Source Code under Secondary Licenses.
- </p>
- <p>If it is not possible or desirable to put the notice in a particular file,
- then You may include the notice in a location (such as a LICENSE file in a
- relevant directory) where a recipient would be likely to look for
- such a notice.
- </p>
- <p>You may add additional accurate notices of copyright ownership.</p>
- </blockquote>
- </body>
-</html>
\ No newline at end of file
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/plugin.xml b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/plugin.xml
deleted file mode 100644
index 6d62458..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/plugin.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<plugin>
- <extension
- point="org.eclipse.ui.startup">
- <startup class="org.eclipse.app4mc.emfutils.resourceset.mapper.ResourceSetMapper"/>
- </extension>
-
-</plugin>
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/pom.xml b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/pom.xml
deleted file mode 100644
index 1b5fdb8..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/pom.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <relativePath>../../build/org.eclipse.app4mc.emfutils.extractor.build</relativePath>
- <groupId>org.eclipse.app4mc.emfutils.content.extractor</groupId>
- <artifactId>org.eclipse.app4mc.emfutils.extractor.build</artifactId>
- <version>0.8.3</version>
- </parent>
-
- <artifactId>org.eclipse.app4mc.emfutils.resourceset.mapper</artifactId>
- <packaging>eclipse-plugin</packaging>
-
- <build>
- <sourceDirectory>src</sourceDirectory>
- <resources>
- <resource>
- <directory>xtend-gen</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>src</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <version>2.4.1</version>
- <configuration>
- <filesets>
- <fileset>
- <directory>xtend-gen</directory>
- <includes>
- <include>**</include>
- </includes>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>1.7</version>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>xtend-gen</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.eclipse.xtend</groupId>
- <artifactId>xtend-maven-plugin</artifactId>
- <version>2.14.0</version>
- <dependencies>
- <dependency>
- <groupId>org.eclipse.jdt</groupId>
- <artifactId>org.eclipse.jdt.core</artifactId>
- <version>3.13.102</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jdt</groupId>
- <artifactId>org.eclipse.jdt.compiler.apt</artifactId>
- <version>1.3.110</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jdt</groupId>
- <artifactId>org.eclipse.jdt.compiler.tool</artifactId>
- <version>1.2.101</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.emf</groupId>
- <artifactId>org.eclipse.emf.codegen</artifactId>
- <version>2.11.0</version>
- </dependency>
- </dependencies>
-
- <executions>
- <execution>
- <goals>
- <goal>compile</goal>
- <goal>xtend-install-debug-info</goal>
- <goal>testCompile</goal>
- <goal>xtend-test-install-debug-info</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <outputDirectory>xtend-gen</outputDirectory>
- </configuration>
- </plugin>
- </plugins>
- </build>
-</project>
\ No newline at end of file
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/src/org/eclipse/app4mc/emfutils/resourceset/mapper/Activator.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/src/org/eclipse/app4mc/emfutils/resourceset/mapper/Activator.java
deleted file mode 100644
index 517ccd9..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/src/org/eclipse/app4mc/emfutils/resourceset/mapper/Activator.java
+++ /dev/null
@@ -1,48 +0,0 @@
- /**
- ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.emfutils.resourceset.mapper;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
- private static BundleContext context;
-
- static BundleContext getContext() {
- return context;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
- */
- @Override
- public void start(final BundleContext bundleContext) throws Exception {
- Activator.context = bundleContext;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
- */
- @Override
- public void stop(final BundleContext bundleContext) throws Exception {
- Activator.context = null;
- }
-
-}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/src/org/eclipse/app4mc/emfutils/resourceset/mapper/ResourceSetMapper.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/src/org/eclipse/app4mc/emfutils/resourceset/mapper/ResourceSetMapper.java
deleted file mode 100644
index 70f2d22..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/src/org/eclipse/app4mc/emfutils/resourceset/mapper/ResourceSetMapper.java
+++ /dev/null
@@ -1,53 +0,0 @@
- /**
- ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.emfutils.resourceset.mapper;
-
-import java.util.List;
-
-import org.eclipse.emf.ecore.EPackage;
-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.sphinx.emf.metamodel.IMetaModelDescriptor;
-import org.eclipse.sphinx.emf.metamodel.MetaModelDescriptorRegistry;
-import org.eclipse.ui.IStartup;
-
-public class ResourceSetMapper implements IStartup {
-
- @Override
- public void earlyStartup() {
-
- List<IMetaModelDescriptor> descriptors = MetaModelDescriptorRegistry.INSTANCE
- .getDescriptors(MetaModelDescriptorRegistry.ANY_MM);
-
- for (IMetaModelDescriptor iMetaModelDescriptor : descriptors) {
-
- ResourceSet resourceSet=new ResourceSetImpl();
-
- for (EPackage ePackage : iMetaModelDescriptor.getEPackages()) {
-
- Resource eResource = ePackage.eResource();
-
- if(eResource.getResourceSet()==null){
-
- ((ResourceSetImpl)resourceSet).getResources().add(eResource);
-
- }
- }
- }
-
- }
-
-}
diff --git a/eclipse-tools/emf-graphical-viewer/pom.xml b/eclipse-tools/emf-graphical-viewer/pom.xml
new file mode 100644
index 0000000..1335b56
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/pom.xml
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.eclipse.app4mc.emf.viewers</groupId>
+ <artifactId>parent</artifactId>
+ <version>0.9.8-SNAPSHOT</version>
+
+ <packaging>pom</packaging>
+
+ <name>Eclipse APP4MC EMF Viewers</name>
+
+ <properties>
+ <tycho.version>1.6.0</tycho.version>
+
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+ </properties>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <id>cbi</id>
+ <url>https://repo.eclipse.org/content/repositories/cbi-releases/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+
+ <modules>
+ <module>plugins</module>
+ <module>features</module>
+ <module>releng</module>
+ </modules>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-maven-plugin</artifactId>
+ <version>${tycho.version}</version>
+ <extensions>true</extensions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-compiler-plugin</artifactId>
+ <version>${tycho.version}</version>
+ <configuration>
+ <verbose>true</verbose>
+ <source>1.8</source>
+ <target>1.8</target>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>target-platform-configuration</artifactId>
+ <version>${tycho.version}</version>
+ <configuration>
+ <environments>
+ <environment>
+ <os>linux</os>
+ <ws>gtk</ws>
+ <arch>x86_64</arch>
+ </environment>
+ <environment>
+ <os>win32</os>
+ <ws>win32</ws>
+ <arch>x86_64</arch>
+ </environment>
+ <environment>
+ <os>macosx</os>
+ <ws>cocoa</ws>
+ <arch>x86_64</arch>
+ </environment>
+ </environments>
+
+ <target>
+ <artifact>
+ <groupId>org.eclipse.app4mc.emf.viewers</groupId>
+ <artifactId>org.eclipse.app4mc.emf.viewers.target</artifactId>
+ <version>0.9.8-SNAPSHOT</version>
+ </artifact>
+ </target>
+ <targetDefinitionIncludeSource>honor</targetDefinitionIncludeSource>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-surefire-plugin</artifactId>
+ <version>${tycho.version}</version>
+ <configuration>
+ <!-- argLine>${tycho.testArgLine}</argLine> -->
+ <forkMode>never</forkMode>
+ <includes>
+ <include>**/*Test.*</include>
+ </includes>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-source-plugin</artifactId>
+ <version>${tycho.version}</version>
+
+ <executions>
+ <execution>
+ <id>plugin-source</id>
+ <goals>
+ <goal>plugin-source</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>sign</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.cbi.maven.plugins</groupId>
+ <artifactId>eclipse-jarsigner-plugin</artifactId>
+ <version>1.1.3</version>
+ <executions>
+ <execution>
+ <id>sign</id>
+ <phase>package</phase>
+ <goals>
+ <goal>sign</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
diff --git a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/.gitignore b/eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.p2repo/.gitignore
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/.gitignore
rename to eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.p2repo/.gitignore
diff --git a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/.project b/eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.p2repo/.project
similarity index 86%
rename from eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/.project
rename to eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.p2repo/.project
index 75a48a0..5c2e67b 100644
--- a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/.project
+++ b/eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.p2repo/.project
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>org.eclipse.app4mc.emfutils.p2repo</name>
+ <name>org.eclipse.app4mc.emf.viewers.p2repo</name>
<comment></comment>
<projects>
</projects>
diff --git a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/about.html b/eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.p2repo/about.html
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/about.html
rename to eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.p2repo/about.html
diff --git a/eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.p2repo/category.xml b/eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.p2repo/category.xml
new file mode 100644
index 0000000..ad129e6
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.p2repo/category.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<site>
+ <feature id="org.eclipse.app4mc.emf.viewers.graphical">
+ <category name="APP4MC EMF Viewers"/>
+ </feature>
+ <feature id="org.eclipse.app4mc.emf.metamodelviewers">
+ <category name="APP4MC EMF Viewers"/>
+ </feature>
+ <category-def name="APP4MC EMF Viewers" label="org.eclipse.app4mc.emf.viewers"/>
+</site>
diff --git a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/epl-2.0.html b/eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.p2repo/epl-2.0.html
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/epl-2.0.html
rename to eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.p2repo/epl-2.0.html
diff --git a/eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.p2repo/pom.xml b/eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.p2repo/pom.xml
new file mode 100644
index 0000000..4140389
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.p2repo/pom.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>org.eclipse.app4mc.emf.viewers.p2repo</artifactId>
+
+ <packaging>eclipse-repository</packaging>
+
+ <parent>
+ <groupId>org.eclipse.app4mc.emf.viewers</groupId>
+ <artifactId>parent</artifactId>
+ <version>0.9.8-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+</project>
\ No newline at end of file
diff --git a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/siteTemplate/index.html b/eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.p2repo/siteTemplate/index.html
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/siteTemplate/index.html
rename to eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.p2repo/siteTemplate/index.html
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.build/.project b/eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.target/.project
similarity index 76%
copy from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.build/.project
copy to eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.target/.project
index e5155e4..bbe8c68 100644
--- a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.build/.project
+++ b/eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.target/.project
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>org.eclipse.app4mc.transformation.build</name>
+ <name>org.eclipse.app4mc.emf.viewers.target</name>
<comment></comment>
<projects>
</projects>
diff --git a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/about.html b/eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.target/about.html
similarity index 100%
copy from eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/about.html
copy to eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.target/about.html
diff --git a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/epl-2.0.html b/eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.target/epl-2.0.html
similarity index 100%
copy from eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/epl-2.0.html
copy to eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.target/epl-2.0.html
diff --git a/eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.target/org.eclipse.app4mc.emf.viewers.target.target b/eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.target/org.eclipse.app4mc.emf.viewers.target.target
new file mode 100644
index 0000000..4324aa8
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.target/org.eclipse.app4mc.emf.viewers.target.target
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde?>
+<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
+<target name="EMF Graphical Viewer Target" sequenceNumber="1584966333">
+ <locations>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.sdk.ide" version="4.8.0.I20180611-0500"/>
+ <unit id="org.eclipse.emf.ecore.xcore.lib.feature.group" version="1.3.0.v20180125-1130"/>
+ <unit id="org.eclipse.emf.sdk.feature.group" version="2.14.0.v20180529-1157"/>
+ <unit id="org.eclipse.emf.transaction.feature.group" version="1.12.0.201805140824"/>
+ <unit id="org.eclipse.emf.validation.feature.group" version="1.12.0.201805030717"/>
+ <unit id="org.eclipse.emf.workspace.feature.group" version="1.12.0.201805140824"/>
+ <unit id="org.eclipse.xtext.runtime.feature.group" version="2.14.0.v20180523-0937"/>
+ <unit id="org.eclipse.xtext.sdk.feature.group" version="2.14.0.v20180523-0937"/>
+ <unit id="org.eclipse.xtext.xbase.feature.group" version="2.14.0.v20180523-0937"/>
+ <unit id="org.eclipse.xtext.xbase.lib.feature.group" version="2.14.0.v20180522-1631"/>
+ <unit id="org.eclipse.xtend.sdk.feature.group" version="2.14.0.v20180523-0937"/>
+ <unit id="org.eclipse.xpand.sdk.feature.group" version="2.2.0.v201605260315"/>
+ <unit id="org.apache.commons.cli" version="1.2.0.v201404270220"/>
+ <unit id="org.apache.commons.lang" version="2.6.0.v201404270220"/>
+ <unit id="org.apache.log4j" version="1.2.15.v201012070815"/>
+ <unit id="org.apache.xerces" version="2.9.0.v201101211617"/>
+ <unit id="org.apache.xalan" version="2.7.1.v201005080400"/>
+ <unit id="org.apache.xml.resolver" version="1.2.0.v201005080400"/>
+ <unit id="org.apache.xml.serializer" version="2.7.1.v201005080400"/>
+ <unit id="javax.xml" version="1.3.4.v201005080400"/>
+ <unit id="org.jdom" version="1.1.1.v201101151400"/>
+ <unit id="com.google.guava" version="21.0.0.v20170206-1425"/>
+ <unit id="org.slf4j.api" version="1.7.2.v20121108-1250"/>
+ <repository location="http://download.eclipse.org/releases/photon"/>
+ </location>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.sphinx.sdk.feature.group" version="0.11.2.201802230805"/>
+ <repository location="http://download.eclipse.org/sphinx/updates/0.11.x"/>
+ </location>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="net.sourceforge.plantuml.lib.feature.feature.group" version="1.2019.11"/>
+ <unit id="net.sourceforge.plantuml.feature.feature.group" version="1.1.24"/>
+ <unit id="net.sourceforge.plantuml.ecore.feature.feature.group" version="1.1.24"/>
+ <repository location="http://hallvard.github.io/plantuml"/>
+ </location>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.license.feature.group" version="2.0.2.v20181016-2210"/>
+ <repository location="http://download.eclipse.org/cbi/updates/license"/>
+ </location>
+ </locations>
+</target>
diff --git a/eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.target/org.eclipse.app4mc.emf.viewers.target.tpd b/eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.target/org.eclipse.app4mc.emf.viewers.target.tpd
new file mode 100644
index 0000000..2c4327d
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/releng/org.eclipse.app4mc.emf.viewers.target/org.eclipse.app4mc.emf.viewers.target.tpd
@@ -0,0 +1,43 @@
+target "EMF Graphical Viewer Target"
+
+with source allEnvironments
+
+location "http://download.eclipse.org/releases/photon" {
+ org.eclipse.sdk.ide
+ org.eclipse.emf.ecore.xcore.lib.feature.group
+ org.eclipse.emf.sdk.feature.group
+ org.eclipse.emf.transaction.feature.group
+ org.eclipse.emf.validation.feature.group
+ org.eclipse.emf.workspace.feature.group
+ org.eclipse.xtext.runtime.feature.group
+ org.eclipse.xtext.sdk.feature.group
+ org.eclipse.xtext.xbase.feature.group
+ org.eclipse.xtext.xbase.lib.feature.group
+ org.eclipse.xtend.sdk.feature.group
+ org.eclipse.xpand.sdk.feature.group
+ org.apache.commons.cli
+ org.apache.commons.lang
+ org.apache.log4j
+ org.apache.xerces
+ org.apache.xalan
+ org.apache.xml.resolver
+ org.apache.xml.serializer
+ javax.xml
+ org.jdom
+ com.google.guava
+ org.slf4j.api
+}
+
+location "http://download.eclipse.org/sphinx/updates/0.11.x" {
+ org.eclipse.sphinx.sdk.feature.group
+}
+
+location "http://hallvard.github.io/plantuml" {
+ net.sourceforge.plantuml.lib.feature.feature.group [1.2019.11,1.2019.11]
+ net.sourceforge.plantuml.feature.feature.group [1.1.24,1.1.24]
+ net.sourceforge.plantuml.ecore.feature.feature.group [1.1.24,1.1.24]
+}
+
+location "http://download.eclipse.org/cbi/updates/license" {
+ org.eclipse.license.feature.group
+}
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/.gitignore b/eclipse-tools/model-transformation/.gitignore
new file mode 100644
index 0000000..d3c31f7
--- /dev/null
+++ b/eclipse-tools/model-transformation/.gitignore
@@ -0,0 +1,8 @@
+.metadata/
+
+# Eclipse target directories
+bin/
+target/
+
+xtend-gen/
+output/*
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/.mvn/extensions.xml b/eclipse-tools/model-transformation/.mvn/extensions.xml
new file mode 100644
index 0000000..710a9ec
--- /dev/null
+++ b/eclipse-tools/model-transformation/.mvn/extensions.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<extensions>
+ <extension>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-pomless</artifactId>
+ <version>1.6.0</version>
+ </extension>
+</extensions>
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/build/.gitignore b/eclipse-tools/model-transformation/build/.gitignore
deleted file mode 100644
index 3197db3..0000000
--- a/eclipse-tools/model-transformation/build/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/bin/
-/xtend-gen/
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/build/dev_utils/dev.target b/eclipse-tools/model-transformation/build/dev_utils/dev.target
deleted file mode 100644
index ff629a0..0000000
--- a/eclipse-tools/model-transformation/build/dev_utils/dev.target
+++ /dev/null
@@ -1,194 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.8"?><target name="Oxygen-Platform" sequenceNumber="3">
-<locations>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="org.eclipse.wst.jsdt.nashorn.extension" version="0.0.0"/>
-<repository location="http://download.eclipse.org/releases/oxygen/201706021000"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="org.eclipse.xtend.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.xtext.docs.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.xtext.examples.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.xtext.redist.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.xtext.runtime.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.xtext.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.xtext.ui.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.xtext.xbase.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.xtext.xbase.lib.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.xtext.xtext.ui.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/modeling/tmf/xtext/updates/releases/2.13.0"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="com.google.inject" version="0.0.0"/>
-<unit id="com.sun.xml.bind" version="0.0.0"/>
-<unit id="java_cup.runtime" version="0.0.0"/>
-<unit id="javax.activation" version="0.0.0"/>
-<unit id="javax.annotation" version="0.0.0"/>
-<unit id="javax.el" version="0.0.0"/>
-<unit id="javax.servlet" version="0.0.0"/>
-<unit id="javax.ws.rs" version="0.0.0"/>
-<unit id="javax.xml" version="0.0.0"/>
-<unit id="javax.xml.bind" version="0.0.0"/>
-<unit id="javax.xml.stream" version="0.0.0"/>
-<unit id="org.antlr.runtime" version="0.0.0"/>
-<unit id="org.apache.batik.css" version="0.0.0"/>
-<unit id="org.apache.batik.util" version="0.0.0"/>
-<unit id="org.apache.batik.util.gui" version="0.0.0"/>
-<unit id="org.apache.bcel" version="0.0.0"/>
-<unit id="org.apache.commons.codec" version="0.0.0"/>
-<unit id="org.apache.commons.io" version="0.0.0"/>
-<unit id="org.apache.commons.lang" version="0.0.0"/>
-<unit id="org.apache.commons.logging" version="0.0.0"/>
-<unit id="org.apache.commons.math" version="0.0.0"/>
-<unit id="org.apache.commons.math3" version="0.0.0"/>
-<unit id="org.apache.httpcomponents.httpclient" version="0.0.0"/>
-<unit id="org.apache.httpcomponents.httpcore" version="0.0.0"/>
-<unit id="org.apache.log4j" version="0.0.0"/>
-<unit id="org.apache.xalan" version="0.0.0"/>
-<unit id="org.apache.xerces" version="0.0.0"/>
-<unit id="org.apache.xml.resolver" version="0.0.0"/>
-<unit id="org.apache.xml.serializer" version="0.0.0"/>
-<unit id="org.easymock" version="0.0.0"/>
-<unit id="org.jdom" version="0.0.0"/>
-<unit id="org.slf4j.log4j" version="0.0.0"/>
-<unit id="org.slf4j.log4j.source" version="0.0.0"/>
-<unit id="org.swtchart" version="0.0.0"/>
-<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20180330011457/repository/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="org.eclipse.license.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/cbi/updates/license/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="org.eclipse.ease.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.ease.lang.javascript.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.ease.lang.jvm.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.ease.modules.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.ease.ui.feature.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/ease/update/release"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="org.eclipse.jst.common.fproj.enablement.jdt.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.jst.server_adapters.ext.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.jst.server_adapters.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.jst.server_core.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.jst.server_ui.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.wst.common.fproj.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.wst.common_core.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.wst.common_ui.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.wst.jsdt.chromium.debug.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.wst.jsdt.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.wst.server_adapters.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.wst.server_core.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.wst.server_ui.feature.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/webtools/downloads/drops/R3.9.5/R-3.9.5-20180409100740/repository"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="com.google.protobuf" version="0.0.0"/>
-<unit id="org.eclipse.acceleo.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.remote.core" version="0.0.0"/>
-<unit id="org.eclipse.cdt.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.draw2d.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.ecf.core.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.ecf.core.ssl.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.ecf.discovery.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.ecf.filetransfer.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.ecf.filetransfer.httpclient4.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.ecf.filetransfer.httpclient4.ssl.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.ecf.filetransfer.ssl.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.ecf.remoteservice.sdk.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.eef.ext.widgets.reference.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.eef.sdk.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.egit.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.egit.mylyn.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.egit.source.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.ecore.xcore.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.eef.edt-feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.eef.extended-feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.eef.runtime-feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.eef.sdk-feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.mwe.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.mwe2.language.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.mwe2.runtime.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.parsley.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.transaction.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.validation.doc.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.validation.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.validation.ocl.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.validation.ocl.source.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.validation.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.validation.source.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.equinox.p2.discovery.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.equinox.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.equinox.server.jetty.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.fx.code.editor.configuration" version="0.0.0"/>
-<unit id="org.eclipse.fx.ide.basic.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.fx.ide.converter.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.fx.ide.css.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.fx.ide.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.fx.ide.fxgraph.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.fx.ide.fxml.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.fx.ide.gmod.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.fx.ide.l10n.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.fx.ide.ldef.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.fx.ide.pde.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.fx.ide.rrobot.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.fx.runtime.min.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef.common.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef.dot.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef.fx.doc.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef.fx.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef.fx.jface.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef.fx.swt.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef.geometry.convert.fx.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef.geometry.doc.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef.geometry.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef.graph.doc.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef.graph.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef.layout.doc.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef.layout.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef.mvc.doc.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef.mvc.fx.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef.mvc.fx.ui.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef.zest.fx.ui.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef.zest.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gmf.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gmf.runtime.notation.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gmf.runtime.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.graphiti.export.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.graphiti.sdk.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.jdt.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.jgit.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.jgit.http.apache.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.jgit.lfs.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.jgit.pgm.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.jgit.pgm.source.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.jgit.source.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.ocl.all.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.pde.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.platform.ide" version="0.0.0"/>
-<unit id="org.eclipse.platform.sdk" version="0.0.0"/>
-<unit id="org.eclipse.remote.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.sphinx.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.uml2.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.wst.xml_ui.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.xpand.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.xsd.sdk.feature.group" version="0.0.0"/>
-<unit id="org.slf4j.api" version="0.0.0"/>
-<unit id="org.slf4j.impl.log4j12" version="0.0.0"/>
-<unit id="org.slf4j.jcl" version="0.0.0"/>
-<repository location="http://download.eclipse.org/releases/oxygen"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="org.eclipse.app4mc.amalthea.models.feature.group" version="0.9.2.201810311302"/>
-<unit id="org.eclipse.app4mc.amalthea.models.sdk.feature.group" version="0.9.2.201810311302"/>
-<unit id="org.eclipse.app4mc.amalthea.workflow.mwe.feature.group" version="0.9.2.201810311302"/>
-<unit id="org.eclipse.app4mc.amalthea.workflow.mwe.sdk.feature.group" version="0.9.2.201810311302"/>
-<unit id="org.eclipse.app4mc.amalthea.workflow.scripting.feature.group" version="0.9.2.201810311302"/>
-<unit id="org.eclipse.app4mc.amalthea.workflow.scripting.sdk.feature.group" version="0.9.2.201810311302"/>
-<repository location="http://download.eclipse.org/app4mc/updatesites/releases/0.9.2/"/>
-</location>
-</locations>
-</target>
diff --git a/eclipse-tools/model-transformation/build/dev_utils/workingSets.psf b/eclipse-tools/model-transformation/build/dev_utils/workingSets.psf
deleted file mode 100644
index 06bf9e1..0000000
--- a/eclipse-tools/model-transformation/build/dev_utils/workingSets.psf
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<psf version="2.0">
-
-<workingSets editPageId="org.eclipse.jdt.ui.JavaWorkingSetPage" id="1529914625380_12" label="build" name="build">
-<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/dev_utils" type="4"/>
-<item elementID="=org.eclipse.app4mc.transformation.examples.installer" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
-<item elementID="=org.eclipse.app4mc.transformation.examples.builder" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
-<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/org.eclipse.app4mc.transformation.p2repo" type="4"/>
-<item elementID="=org.eclipse.app4mc.inchron.transformation.installer" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
-<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/org.eclipse.app4mc.transformation.build" type="4"/>
-</workingSets>
-<workingSets editPageId="org.eclipse.jdt.ui.JavaWorkingSetPage" id="1529215332641_1" label="core" name="core">
-<item elementID="=org.eclipse.app4mc.transformation.application" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
-<item elementID="=org.eclipse.app4mc.transformation.extensions" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
-</workingSets>
-<workingSets editPageId="org.eclipse.jdt.ui.JavaWorkingSetPage" id="1529439029677_8" label="examples" name="examples">
-<item elementID="=app4mc.example.transform.app" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
-<item elementID="=app4mc.example.transform.m2m" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
-<item elementID="=app4mc.example.transform.m2t" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
-<item elementID="=app4mc.example.transform.samplemodel" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
-</workingSets>
-<workingSets editPageId="org.eclipse.jdt.ui.JavaWorkingSetPage" id="1529915202554_18" label="Examples_Builders" name="Examples_Builders">
-<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/org.eclipse.app4mc.transformation.examples.feature" type="4"/>
-<item elementID="=org.eclipse.app4mc.transformation.examples.installer" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
-<item elementID="=org.eclipse.app4mc.transformation.examples.builder" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
-<item elementID="=org.eclipse.app4mc.inchron.transformation.installer" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
-</workingSets>
-<workingSets editPageId="org.eclipse.jdt.ui.JavaWorkingSetPage" id="1529915327977_23" label="features" name="features">
-<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/org.eclipse.app4mc.transformation.examples.feature" type="4"/>
-<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/org.eclipse.app4mc.transformation.core.feature" type="4"/>
-<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/org.eclipse.app4mc.transformation.to.inchron.feature" type="4"/>
-<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/org.eclipse.app4mc.transformation.3rdparty.feature" type="4"/>
-</workingSets>
-<workingSets editPageId="org.eclipse.jdt.ui.JavaWorkingSetPage" id="1529215338148_2" label="inchron" name="inchron">
-<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/org.eclipse.app4mc.transformation.to.inchron.feature" type="4"/>
-<item elementID="=org.eclipse.app4mc.transform.to.inchron.app" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
-<item elementID="=org.eclipse.app4mc.transform.to.inchron.m2m" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
-<item elementID="=org.eclipse.app4mc.transformation.3rdparty.libs" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
-<item elementID="=org.eclipse.app4mc.inchron.transformation.installer" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
-<item elementID="=org.eclipse.app4mc.transform.to.inchron.product" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
-<item elementID="=com.inchron.realtime.root" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
-</workingSets>
-</psf>
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.build/META-INF/MANIFEST.MF b/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.build/META-INF/MANIFEST.MF
deleted file mode 100644
index 13e1490..0000000
--- a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.build/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,11 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: APP4MC EMF model transformation build
-Bundle-SymbolicName: org.eclipse.app4mc.transformation.build;singleton:=true
-Bundle-Version: 0.3.0.qualifier
-Require-Bundle: org.eclipse.ui
-Bundle-RequiredExecutionEnvironment: JavaSE-1.7,
- JavaSE-1.8
-Bundle-ActivationPolicy: lazy
-Bundle-ClassPath: .
-Bundle-Vendor: Eclipse APP4MC
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.build/pom.xml b/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.build/pom.xml
deleted file mode 100644
index e5d4265..0000000
--- a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.build/pom.xml
+++ /dev/null
@@ -1,360 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project>
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.eclipse.app4mc.transformation</groupId>
- <artifactId>org.eclipse.app4mc.transformation.build</artifactId>
- <version>0.3.0-SNAPSHOT</version>
- <packaging>pom</packaging>
- <name>Model Transformation</name>
-
- <properties>
- <tycho.version>0.22.0</tycho.version>
- <jacoco.version>0.7.4.201502262128</jacoco.version>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8
- </project.reporting.outputEncoding>
-
- <luna-repo.url>http://download.eclipse.org/releases/neon
- </luna-repo.url>
- <amalthea-repo.url>http://download.eclipse.org/app4mc/updatesites/releases/0.9.3/
- </amalthea-repo.url>
-
- <orbit-repo.url>http://download.eclipse.org/tools/orbit/downloads/drops/R20170307180635/repository/
- </orbit-repo.url>
- <sphinx-repo-url>http://download.eclipse.org/sphinx/updates/interim/
- </sphinx-repo-url>
-
- <xtext-url>http://download.eclipse.org/modeling/tmf/xtext/updates/releases/2.14.0/
- </xtext-url>
-
- <eclipse-license>http://download.eclipse.org/cbi/updates/license/</eclipse-license>
-
-
- </properties>
-
- <pluginRepositories>
- <pluginRepository>
- <id>jboss-public-repository-group</id>
- <name>JBoss Public Repository Group</name>
- <url>http://repository.jboss.org/nexus/content/groups/public/</url>
- </pluginRepository>
-
- <pluginRepository>
- <id>jboss-snapshots-repository</id>
- <name>JBoss Snapshots Repository</name>
- <url>https://repository.jboss.org/nexus/content/repositories/snapshots/</url>
- </pluginRepository>
- </pluginRepositories>
-
-
- <repositories>
-
-
-
-
- <repository>
- <id>amalthea</id>
- <url>${amalthea-repo.url}</url>
- <layout>p2</layout>
- </repository>
-
-
- <repository>
- <id>eclipse-license</id>
- <url>${eclipse-license}</url>
- <layout>p2</layout>
- </repository>
-
- <repository>
- <id>luna</id>
- <url>${luna-repo.url}</url>
- <layout>p2</layout>
- </repository>
- <repository>
- <id>orbit</id>
- <url>${orbit-repo.url}</url>
- <layout>p2</layout>
- </repository>
- <repository>
- <id>xtext</id>
- <url>${xtext-url}</url>
- <layout>p2</layout>
- </repository>
- <repository>
- <id>sphinx</id>
- <url>${sphinx-repo-url}</url>
- <layout>p2</layout>
- </repository>
-
-
-
- </repositories>
-
-
- <modules>
- <!-- example plugins -->
-
- <module>../../examples/sample-model-transformation/app4mc.example.transform.samplemodel
- </module>
- <module>../../examples/sample-model-transformation/app4mc.example.transform.m2m
- </module>
- <module>../../examples/sample-model-transformation/app4mc.example.transform.m2t
- </module>
- <module>../../examples/sample-model-transformation/app4mc.example.transform.app
- </module>
-
- <!-- Amlt2Inchron transformation plugins plugins -->
-
-<module>../../examples/amlt2inchron/com.inchron.realtime.root</module>
-
-<module>../../examples/amlt2inchron/org.eclipse.app4mc.transform.to.inchron.app</module>
-<module>../../examples/amlt2inchron/org.eclipse.app4mc.transform.to.inchron.m2m</module>
-
-<module>../../examples/amlt2inchron/org.eclipse.app4mc.transformation.3rdparty.libs</module>
-
-
- <!-- core framework plugins -->
-
- <module>../../plugins/org.eclipse.app4mc.transformation.application
- </module>
- <module>../../plugins/org.eclipse.app4mc.transformation.extensions
- </module>
-
-
- <!-- installer plugins -->
-
- <module>../org.eclipse.app4mc.transformation.examples.installer
- </module>
-
-
-
-
- <!-- features -->
-
- <module>../../features/org.eclipse.app4mc.transformation.3rdparty.feature
- </module>
-
- <module>../../features/org.eclipse.app4mc.transformation.core.feature
- </module>
-
- <module>../../features/org.eclipse.app4mc.transformation.examples.feature</module>
-
- <module>../../examples/amlt2inchron/org.eclipse.app4mc.transformation.to.inchron.feature</module>
-
- <!-- build plugins -->
-
- <module>../org.eclipse.app4mc.transformation.p2repo</module>
-
-
- </modules>
-
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.eclipse.tycho</groupId>
- <artifactId>tycho-maven-plugin</artifactId>
- <version>${tycho.version}</version>
- <extensions>true</extensions>
- <configuration>
-
- </configuration>
- </plugin>
-
- <plugin>
- <groupId>org.eclipse.tycho</groupId>
- <artifactId>tycho-compiler-plugin</artifactId>
- <version>${tycho.version}</version>
- <configuration>
- <verbose>true</verbose>
- <source>1.8</source>
- <target>1.8</target>
- </configuration>
- </plugin>
-
- <plugin>
- <groupId>org.eclipse.tycho</groupId>
- <artifactId>target-platform-configuration</artifactId>
- <version>${tycho.version}</version>
- <configuration>
- <dependency-resolution>
- <extraRequirements>
- <requirement>
- <type>eclipse-plugin</type>
- <id>org.hamcrest</id>
- <versionRange>0.0.0</versionRange>
- </requirement>
- </extraRequirements>
- </dependency-resolution>
- <environments>
- <environment>
- <os>linux</os>
- <ws>gtk</ws>
- <arch>x86</arch>
- </environment>
- <environment>
- <os>linux</os>
- <ws>gtk</ws>
- <arch>x86_64</arch>
- </environment>
- <environment>
- <os>win32</os>
- <ws>win32</ws>
- <arch>x86</arch>
- </environment>
- <environment>
- <os>win32</os>
- <ws>win32</ws>
- <arch>x86_64</arch>
- </environment>
- <environment>
- <os>macosx</os>
- <ws>cocoa</ws>
- <arch>x86_64</arch>
- </environment>
- </environments>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.eclipse.tycho</groupId>
- <artifactId>tycho-surefire-plugin</artifactId>
- <version>${tycho.version}</version>
- <configuration>
- <!-- argLine>${tycho.testArgLine}</argLine> -->
- <forkMode>never</forkMode>
- <includes>
- <include>**/*Test.*</include>
- </includes>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.jacoco</groupId>
- <artifactId>jacoco-maven-plugin</artifactId>
- <version>0.7.4.201502262128</version>
- <configuration>
- <excludes>
-
- </excludes>
- </configuration>
- <executions>
- <!-- Prepares the property pointing to the JaCoCo runtime agent which
- is passed as VM argument when Maven the Surefire plugin is executed. -->
- <execution>
- <id>pre-unit-test</id>
- <goals>
- <goal>prepare-agent</goal>
- </goals>
- <configuration>
- <!-- Sets the path to the file which contains the execution data. -->
- <destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec
- </destFile>
- </configuration>
- </execution>
- <!-- Ensures that the code coverage report for unit tests is created
- after unit tests have been run. -->
- <execution>
- <id>post-unit-test</id>
- <phase>verify</phase>
- <goals>
- <goal>report</goal>
- </goals>
- <configuration>
- <!-- Sets the path to the file which contains the execution data. -->
- <dataFile>${project.build.directory}/coverage-reports/jacoco-ut.exec
- </dataFile>
- <!-- Sets the output directory for the code coverage report. -->
- <outputDirectory>${project.reporting.outputDirectory}/jacoco-ut
- </outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
-
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <version>3.0.0</version>
- <configuration>
- <filesets>
- <fileset>
- <directory>${basedir}</directory>
- <includes>
- <include>**/xtend-gen/**</include>
- <!-- <outputDirectory>**/examples/**</outputDirectory> -->
- </includes>
- <followSymlinks>false</followSymlinks>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
-
-
-
- <plugin>
- <groupId>org.eclipse.xtend</groupId>
- <artifactId>xtend-maven-plugin</artifactId>
- <version>2.14.0</version>
- <dependencies>
- <dependency>
- <groupId>org.eclipse.platform</groupId>
- <artifactId>org.eclipse.equinox.common</artifactId>
- <version>[3.8.0,4.0.0)</version>
- </dependency>
- </dependencies>
-
- <executions>
- <execution>
- <goals>
- <goal>compile</goal>
- <goal>xtend-install-debug-info</goal>
- <goal>testCompile</goal>
- <goal>xtend-test-install-debug-info</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <outputDirectory>xtend-gen</outputDirectory>
- </configuration>
- </plugin>
-
-
-<!--
- <plugin>
- <groupId>org.jboss.tools.tycho-plugins</groupId>
- <artifactId>repository-utils</artifactId>
- <version>0.23.2</version>
-
- <executions>
- <execution>
- <id>generate-facade</id>
- <phase>package</phase>
-
- <goals>
- <goal>generate-repository-facade</goal>
- </goals>
-
- <configuration>
- <siteTemplateFolder>siteTemplate</siteTemplateFolder>
-
- <symbols>
- <update.site.name>Amalthea Model Transformation</update.site.name>
- <target.eclipse.version>Neon.3 (4.6.3)</target.eclipse.version>
- </symbols>
-
- <associateSites>
- <site>http://download.eclipse.org/releases/neon</site>
- <site>http://download.eclipse.org/app4mc/updatesites/releases/0.9.0/</site>
- <site>http://download.eclipse.org/tools/orbit/downloads/drops/R20170307180635/repository/</site>
- <site>http://download.eclipse.org/sphinx/updates/interim</site>
- <site>http://download.eclipse.org/modeling/tmf/xtext/updates/releases/2.10.0/</site>
- <site>http://eclipse.inchron.com/realtime/updatesites/release/current/</site>
- </associateSites>
- </configuration>
- </execution>
- </executions>
- </plugin>
- -->
-
- </plugins>
- </build>
-
-</project>
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/.classpath b/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/.classpath
deleted file mode 100644
index fceb480..0000000
--- a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/.classpath
+++ /dev/null
@@ -1,6 +0,0 @@
-<?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.8"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/.gitignore b/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/.gitignore
deleted file mode 100644
index 8788e6a..0000000
--- a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-bin
-target
-.DS_Store
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/.project b/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/.project
deleted file mode 100644
index b279a20..0000000
--- a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.app4mc.transformation.examples.builder</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/.settings/org.eclipse.jdt.core.prefs b/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 3a21537..0000000
--- a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,11 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/about.html b/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/about.html
deleted file mode 100644
index 164f781..0000000
--- a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!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 30, 2017</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 2.0 ("EPL"). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</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/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/epl-2.0.html b/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/epl-2.0.html
deleted file mode 100644
index 637a181..0000000
--- a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/epl-2.0.html
+++ /dev/null
@@ -1,300 +0,0 @@
-<!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" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Eclipse Public License - Version 2.0</title>
- <style type="text/css">
- body {
- margin: 1.5em 3em;
- }
- h1{
- font-size:1.5em;
- }
- h2{
- font-size:1em;
- margin-bottom:0.5em;
- margin-top:1em;
- }
- p {
- margin-top: 0.5em;
- margin-bottom: 0.5em;
- }
- ul, ol{
- list-style-type:none;
- }
- </style>
- </head>
- <body>
- <h1>Eclipse Public License - v 2.0</h1>
- <p>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.
- </p>
- <h2 id="definitions">1. DEFINITIONS</h2>
- <p>“Contribution” means:</p>
- <ul>
- <li>a) in the case of the initial Contributor, the initial content
- Distributed under this Agreement, and
- </li>
- <li>
- b) in the case of each subsequent Contributor:
- <ul>
- <li>i) changes to the Program, and</li>
- <li>ii) additions to the Program;</li>
- </ul>
- 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 changes or additions to the Program that
- are not Modified Works.
- </li>
- </ul>
- <p>“Contributor” means any person or entity that Distributes the Program.</p>
- <p>“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.
- </p>
- <p>“Program” means the Contributions Distributed in accordance with this
- Agreement.
- </p>
- <p>“Recipient” means anyone who receives the Program under this Agreement
- or any Secondary License (as applicable), including Contributors.
- </p>
- <p>“Derivative Works” shall mean any work, whether in Source Code or other
- form, that is based on (or derived from) the Program and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship.
- </p>
- <p>“Modified Works” shall mean any work in Source Code or other form that
- results from an addition to, deletion from, or modification of the
- contents of the Program, including, for purposes of clarity any new file
- in Source Code form that contains any contents of the Program. Modified
- Works shall not include works that contain only declarations, interfaces,
- types, classes, structures, or files of the Program solely in each case
- in order to link to, bind by name, or subclass the Program or Modified
- Works thereof.
- </p>
- <p>“Distribute” means the acts of a) distributing or b) making available
- in any manner that enables the transfer of a copy.
- </p>
- <p>“Source Code” means the form of a Program preferred for making
- modifications, including but not limited to software source code,
- documentation source, and configuration files.
- </p>
- <p>“Secondary License” means either the GNU General Public License,
- Version 2.0, or any later versions of that license, including any
- exceptions or additional permissions as identified by the initial
- Contributor.
- </p>
- <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
- <ul>
- <li>a) Subject to the terms of this Agreement, each Contributor hereby
- grants Recipient a non-exclusive, worldwide, royalty-free copyright
- license to reproduce, prepare Derivative Works of, publicly display,
- publicly perform, Distribute and sublicense the Contribution of such
- Contributor, if any, and such Derivative Works.
- </li>
- <li>b) Subject to the terms of this Agreement, each Contributor hereby
- grants Recipient a non-exclusive, worldwide, 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 or other 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.
- </li>
- <li>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.
- </li>
- <li>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.
- </li>
- <li>e) Notwithstanding the terms of any Secondary License, no Contributor
- makes additional grants to any Recipient (other than those set forth
- in this Agreement) as a result of such Recipient's receipt of the
- Program under the terms of a Secondary License (if permitted under
- the terms of Section 3).
- </li>
- </ul>
- <h2 id="requirements">3. REQUIREMENTS</h2>
- <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
- <ul>
- <li>a) the Program must also be made available as Source Code, in
- accordance with section 3.2, and the Contributor must accompany
- the Program with a statement that the Source Code for the Program
- is available under this Agreement, and informs Recipients how to
- obtain it in a reasonable manner on or through a medium customarily
- used for software exchange; and
- </li>
- <li>
- b) the Contributor may Distribute the Program under a license
- different than this Agreement, provided that such license:
- <ul>
- <li>i) effectively disclaims on behalf of all other 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;
- </li>
- <li>ii) effectively excludes on behalf of all other Contributors all
- liability for damages, including direct, indirect, special, incidental
- and consequential damages, such as lost profits;
- </li>
- <li>iii) does not attempt to limit or alter the recipients' rights in the
- Source Code under section 3.2; and
- </li>
- <li>iv) requires any subsequent distribution of the Program by any party
- to be under a license that satisfies the requirements of this section 3.
- </li>
- </ul>
- </li>
- </ul>
- <p>3.2 When the Program is Distributed as Source Code:</p>
- <ul>
- <li>a) it must be made available under this Agreement, or if the Program (i)
- is combined with other material in a separate file or files made available
- under a Secondary License, and (ii) the initial Contributor attached to
- the Source Code the notice described in Exhibit A of this Agreement,
- then the Program may be made available under the terms of such
- Secondary Licenses, and
- </li>
- <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
- </ul>
- <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
- attribution notices, disclaimers of warranty, or limitations of liability
- (‘notices’) contained within the Program from any copy of the Program which
- they Distribute, provided that Contributors may add their own appropriate
- notices.
- </p>
- <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
- <p>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.
- </p>
- <p>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.
- </p>
- <h2 id="warranty">5. NO WARRANTY</h2>
- <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
- BY APPLICABLE LAW, 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.
- </p>
- <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
- <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
- BY APPLICABLE LAW, 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.
- </p>
- <h2 id="general">7. GENERAL</h2>
- <p>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.
- </p>
- <p>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.
- </p>
- <p>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.
- </p>
- <p>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.
- </p>
- <p>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. Nothing in this Agreement is intended
- to be enforceable by any entity that is not a Contributor or Recipient.
- No third-party beneficiary rights are created under this Agreement.
- </p>
- <h2 id="exhibit-a">Exhibit A – Form of Secondary Licenses Notice</h2>
- <p>“This Source Code may also be made available under the following
- Secondary Licenses when the conditions for such availability set forth
- in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
- version(s), and exceptions or additional permissions here}.”
- </p>
- <blockquote>
- <p>Simply including a copy of this Agreement, including this Exhibit A
- is not sufficient to license the Source Code under Secondary Licenses.
- </p>
- <p>If it is not possible or desirable to put the notice in a particular file,
- then You may include the notice in a location (such as a LICENSE file in a
- relevant directory) where a recipient would be likely to look for
- such a notice.
- </p>
- <p>You may add additional accurate notices of copyright ownership.</p>
- </blockquote>
- </body>
-</html>
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/exampleBuilderTemplates/copyExample.ant b/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/exampleBuilderTemplates/copyExample.ant
deleted file mode 100644
index 9107bab..0000000
--- a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/exampleBuilderTemplates/copyExample.ant
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0"?>
-<project name="copyExample" default="main" basedir="../..">
-
- <property name="installer" value="#INSTALLER_PROJECT#" />
- <import file="../../../../build/${installer}/copyExampleLib.ant" optional="true" />
- <basename file="${build.project}" property="project" />
-
- <target name="main">
- <copyExample project="${project}" />
- </target>
-
-</project>
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/exampleBuilderTemplates/template.launch b/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/exampleBuilderTemplates/template.launch
deleted file mode 100644
index de8fdb9..0000000
--- a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/exampleBuilderTemplates/template.launch
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
-<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
-<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
-<booleanAttribute key="org.eclipse.ant.uiSET_INPUTHANDLER" value="false"/>
-<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:<?xml version="1.0" encoding="UTF-8"?> <resources> #REFRESH_RESOURCES#</resources>}"/>
-<booleanAttribute key="org.eclipse.debug.core.capture_output" value="false"/>
-<booleanAttribute key="org.eclipse.debug.ui.ATTR_CONSOLE_OUTPUT_ON" value="false"/>
-<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
-<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
-<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value=""/>
-<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_BUILDER_ENABLED" value="true"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_BUILD_SCOPE" value="${working_set:<?xml version="1.0" encoding="UTF-8"?> <resources> #RELEVANT_RESOURCES#</resources>}"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${project_loc:/#EXAMPLE_PROJECT#}/.externalToolBuilders/copyExample.ant"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="incremental,auto,"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="-Dbuild.project=${project_loc:/#EXAMPLE_PROJECT#}"/>
-<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
-</launchConfiguration>
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/exampleBuilderTemplates/template.project b/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/exampleBuilderTemplates/template.project
deleted file mode 100644
index 97d0290..0000000
--- a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/exampleBuilderTemplates/template.project
+++ /dev/null
@@ -1,14 +0,0 @@
- <buildCommand>
- <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
- <triggers>auto,full,incremental,</triggers>
- <arguments>
- <dictionary>
- <key>LaunchConfigHandle</key>
- <value><project>/.externalToolBuilders/#EXAMPLE_PROJECT#.launch</value>
- </dictionary>
- <dictionary>
- <key>incclean</key>
- <value>true</value>
- </dictionary>
- </arguments>
- </buildCommand>
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/src/org/eclipse/app4mc/platform/examplesbuilder/GenerateExampleBuilders.java b/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/src/org/eclipse/app4mc/platform/examplesbuilder/GenerateExampleBuilders.java
deleted file mode 100644
index 620b8de..0000000
--- a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.builder/src/org/eclipse/app4mc/platform/examplesbuilder/GenerateExampleBuilders.java
+++ /dev/null
@@ -1,225 +0,0 @@
- /**
- ********************************************************************************
- * Copyright (c) 2012 - 2018 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-
-package org.eclipse.app4mc.platform.examplesbuilder;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-public class GenerateExampleBuilders {
-
- private static String[] availableExampleFolders=new String[]{"sample-model-transformation", "amlt2inchron"};
-
- private static final String TOKEN_EXAMPLE_PROJECT = "#EXAMPLE_PROJECT#";
-
- private static final String TOKEN_INSTALLER_PROJECT = "#INSTALLER_PROJECT#";
-
- private static final String TOKEN_RELEVANT_RESOURCES = "#RELEVANT_RESOURCES#";
-
- private static final String TOKEN_REFRESH_RESOURCES = "#REFRESH_RESOURCES#";
-
- private static final String NL = System.getProperty("line.separator");
-
- public static void main(final String[] args) throws Exception {
- final File relengProject = new File(args[0]).getCanonicalFile();
- final File installerPoject = new File(args[1]).getCanonicalFile();
- final File pluginXML = new File(installerPoject, "plugin.xml");
- System.out.println("Analyzing " + pluginXML);
-
- final SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
- final XMLHandler handler = new XMLHandler(relengProject, installerPoject);
-
- try (InputStream in = new FileInputStream(pluginXML)) {
- parser.parse(in, handler);
- }
- }
-
- static void processProjectDescriptor(final File exampleProject, final File relengProject,
- final File installerProject, final String targetFolder) throws Exception {
- final String exampleProjectName = exampleProject.getName();
- final String targetPath = installerProject.getName() + "/" + targetFolder;
-
- final StringBuilder relevantResources = new StringBuilder();
- relevantResources.append(getItemPath(targetPath, 2));
-
- for (final File file : exampleProject.listFiles()) {
- final String name = file.getName();
- final int type = file.isDirectory() ? 2 : 1;
-
- if (!"bin".equals(name)) {
- final String path = exampleProjectName + "/" + name;
- relevantResources.append(getItemPath(path, type));
- }
- }
-
- final Map<String, String> substitutes = new HashMap<String, String>();
- addSubtitute(substitutes, TOKEN_EXAMPLE_PROJECT, exampleProject.getName());
- addSubtitute(substitutes, TOKEN_INSTALLER_PROJECT, installerProject.getName());
- addSubtitute(substitutes, TOKEN_RELEVANT_RESOURCES, relevantResources.toString());
- addSubtitute(substitutes, TOKEN_REFRESH_RESOURCES, getItemPath(new File(targetPath).getParent(), 2));
-
- copy(exampleProject, relengProject, substitutes, "copyExample.ant", ".externalToolBuilders/copyExample.ant");
- copy(exampleProject, relengProject, substitutes, "template.launch",
- ".externalToolBuilders/" + exampleProjectName + ".launch");
-
- updateProjectDescription(exampleProject, relengProject, substitutes);
- }
-
- private static void copy(final File targetProject, final File relengProject, final Map<String, String> substitutes,
- final String template, final String targetPath) throws IOException {
- final File source = getTemplate(relengProject, template);
- final String content = substitute(readFile(source), substitutes);
-
- final File target = new File(targetProject, targetPath);
- System.out.println(" Generating " + target.getCanonicalPath());
- target.getParentFile().mkdir();
- writeFile(target, content);
- }
-
- private static void updateProjectDescription(final File targetProject, final File relengProject,
- final Map<String, String> substitutes) throws IOException {
- final File snippetTemplate = getTemplate(relengProject, "template.project");
- final String snippet = substitute(readFile(snippetTemplate), substitutes);
-
- final File descriptionFile = new File(targetProject, ".project");
- final String description = readFile(descriptionFile);
- System.out.println(" Updating " + descriptionFile.getCanonicalPath());
-
- if (description.indexOf(snippet) != -1) {
- // Nothing to update
- return;
- }
-
- String newDescription = description;
-
- final Pattern pattern = Pattern.compile(
- "(\\s*<buildCommand>.*?</buildCommand>)*(\\s*<buildCommand>.*?<value><project>/\\.externalToolBuilders/"
- + targetProject.getName().replace(".", "\\.") + "\\.launch</value>.*?</buildCommand>)",
- Pattern.DOTALL);
- final Matcher matcher = pattern.matcher(description);
- if (matcher.find()) {
- final String remove = matcher.group(2);
- newDescription = newDescription.replace(remove, "");
- }
-
- newDescription = newDescription.replaceFirst("[ \\t]*</buildSpec>", snippet + "\t</buildSpec>");
- if (!newDescription.equals(description)) {
- writeFile(descriptionFile, newDescription);
- }
- }
-
- private static String readFile(final File file) throws IOException {
- final StringBuilder result = new StringBuilder();
-
- try (FileReader in = new FileReader(file); BufferedReader reader = new BufferedReader(in)) {
- String line;
- while ((line = reader.readLine()) != null) {
- result.append(line);
- result.append(NL);
- }
-
- return result.toString();
- }
- }
-
- private static void writeFile(final File file, final String content) throws IOException {
- try (FileWriter out = new FileWriter(file); BufferedWriter writer = new BufferedWriter(out)) {
- writer.write(content);
- writer.flush();
- }
- }
-
- private static String getItemPath(final String resource, final int type) {
- return "<item path="/" + resource.replace('\\', '/') + "" type="" + type
- + ""/> ";
- }
-
- private static File getTemplate(final File root, final String template) {
- return new File(root, "exampleBuilderTemplates/" + template);
- }
-
- private static void addSubtitute(final Map<String, String> substitutes, final String token,
- final String substitute) {
- System.out.println(" " + token + " = " + substitute);
- substitutes.put(token, substitute);
- }
-
- private static String substitute(String content, final Map<String, String> substitutes) {
- for (final Entry<String, String> entry : substitutes.entrySet()) {
- content = content.replace(entry.getKey(), entry.getValue());
- }
-
- return content;
- }
-
- private static class XMLHandler extends DefaultHandler {
- private final File relengProject;
- private final File installerPoject;
-
- public XMLHandler(final File relengProject, final File installerPoject) {
- this.relengProject = relengProject;
- this.installerPoject = installerPoject;
- }
-
- @Override
- public void startElement(final String uri, final String localName, final String qName,
- final Attributes attributes) throws SAXException {
- if ("projectDescriptor".equalsIgnoreCase(qName)) {
- try {
- final String name = attributes.getValue("name");
- final String contentURI = attributes.getValue("contentURI");
- File exampleProject = null;
-
-
- for(String examplesFolder: availableExampleFolders){
-
- File file = new File(this.installerPoject, "../../examples/"+examplesFolder+"/" + name);
- if(file.exists()){
- exampleProject=file;
- break;
- }
- }
-
- System.out.println(" Processing " + name + " --> " + contentURI);
- System.out.println(" exampleProject: " + exampleProject);
- System.out.println(" installerProject: " + this.installerPoject);
-
- processProjectDescriptor(exampleProject, this.relengProject, this.installerPoject, contentURI);
- }
- catch (final Exception ex) {
- ex.printStackTrace();
- }
- }
- }
- }
-}
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/pom.xml b/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/pom.xml
deleted file mode 100644
index f692f79..0000000
--- a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/pom.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <relativePath>../org.eclipse.app4mc.transformation.build/pom.xml</relativePath>
- <groupId>org.eclipse.app4mc.transformation</groupId>
- <artifactId>org.eclipse.app4mc.transformation.build</artifactId>
- <version>0.3.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>org.eclipse.app4mc.transformation.examples.installer</artifactId>
- <packaging>eclipse-plugin</packaging>
-
-</project>
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.p2repo/.gitignore b/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.p2repo/.gitignore
deleted file mode 100644
index ea8c4bf..0000000
--- a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.p2repo/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.p2repo/pom.xml b/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.p2repo/pom.xml
deleted file mode 100644
index 5a77155..0000000
--- a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.p2repo/pom.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <relativePath>../org.eclipse.app4mc.transformation.build/pom.xml</relativePath>
- <groupId>org.eclipse.app4mc.transformation</groupId>
- <artifactId>org.eclipse.app4mc.transformation.build</artifactId>
- <version>0.3.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>org.eclipse.app4mc.transformation.p2repo</artifactId>
- <packaging>eclipse-repository</packaging>
-
- <properties>
- <org.jboss.tools.tycho-plugins.version>0.22.0</org.jboss.tools.tycho-plugins.version>
- </properties>
-
- <pluginRepositories>
- <pluginRepository>
- <id>jboss-public-repository-group</id>
- <name>JBoss Public Repository Group</name>
- <url>http://repository.jboss.org/nexus/content/groups/public/</url>
- </pluginRepository>
-
- <pluginRepository>
- <id>jboss-snapshots-repository</id>
- <name>JBoss Snapshots Repository</name>
- <url>https://repository.jboss.org/nexus/content/repositories/snapshots/</url>
- </pluginRepository>
-
-
- </pluginRepositories>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.eclipse.tycho</groupId>
- <artifactId>tycho-p2-repository-plugin</artifactId>
- <version>${tycho.version}</version>
-
- <configuration>
- <compress/>
- </configuration>
- </plugin>
-
-
- <plugin>
- <groupId>org.jboss.tools.tycho-plugins</groupId>
- <artifactId>repository-utils</artifactId>
- <version>${org.jboss.tools.tycho-plugins.version}</version>
-
- <executions>
- <execution>
- <id>generate-facade</id>
- <phase>package</phase>
-
- <goals>
- <goal>generate-repository-facade</goal>
- </goals>
-
- <configuration>
- <siteTemplateFolder>siteTemplate</siteTemplateFolder>
-
- <!-- Symbols are used while expanding index.html template -->
- <symbols>
- <update.site.name>${project.parent.name}</update.site.name>
- <target.eclipse.version>4.6.0</target.eclipse.version>
- </symbols>
-
- <associateSites>
-
- <!-- <site>http://download.eclipse.org/app4mc/updatesites/releases/0.8.3/</site>
- <site>http://download.eclipse.org/modeling/tmf/xtext/updates/releases/2.10.0/</site>
- <site>http://download.eclipse.org/tools/orbit/downloads/drops/R20170307180635/repository/</site>
- <site>http://download.eclipse.org/modeling/emf/emf/updates/releases/2.9.2/</site>
- -->
-
- </associateSites>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.p2repo/site.xml b/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.p2repo/site.xml
deleted file mode 100644
index de17901..0000000
--- a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.p2repo/site.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site>
- <feature url="features/org.eclipse.app4mc.transformation.core.feature_0.3.0.qualifier.jar" id="org.eclipse.app4mc.transformation.core.feature" version="0.3.0.qualifier">
- <category name="APP4MC EMF model Transformation"/>
- </feature>
- <feature url="features/org.eclipse.app4mc.transformation.examples.feature_0.3.0.qualifier.jar" id="org.eclipse.app4mc.transformation.examples.feature" version="0.3.0.qualifier">
- <category name="APP4MC EMF model Transformation"/>
- </feature>
- <category-def name="APP4MC EMF model Transformation" label="org.eclipse.app4mc.transformation.p2repo"/>
-</site>
diff --git a/eclipse-tools/model-transformation/examples/amlt2inchron/org.eclipse.app4mc.transform.to.inchron.m2m/src/model/loader/AmaltheaMultiFileLoader.java b/eclipse-tools/model-transformation/examples/amlt2inchron/org.eclipse.app4mc.transform.to.inchron.m2m/src/model/loader/AmaltheaMultiFileLoader.java
index 5134524..831f48f 100644
--- a/eclipse-tools/model-transformation/examples/amlt2inchron/org.eclipse.app4mc.transform.to.inchron.m2m/src/model/loader/AmaltheaMultiFileLoader.java
+++ b/eclipse-tools/model-transformation/examples/amlt2inchron/org.eclipse.app4mc.transform.to.inchron.m2m/src/model/loader/AmaltheaMultiFileLoader.java
@@ -72,6 +72,7 @@
for (File amxmiFile : listFiles) {
+ logger.info("loading file :"+amxmiFile.getName());
String absolutePath = amxmiFile.getAbsolutePath();
final Resource res = resourceSet.createResource(URI.createURI("file:////" + absolutePath));
try {
diff --git a/eclipse-tools/model-transformation/examples/amlt2inchron/org.eclipse.app4mc.transform.to.inchron.m2m/src/templates/m2m/sw/runnableItem/TicksTransformer.xtend b/eclipse-tools/model-transformation/examples/amlt2inchron/org.eclipse.app4mc.transform.to.inchron.m2m/src/templates/m2m/sw/runnableItem/TicksTransformer.xtend
index 360c9fb..e9d4b16 100644
--- a/eclipse-tools/model-transformation/examples/amlt2inchron/org.eclipse.app4mc.transform.to.inchron.m2m/src/templates/m2m/sw/runnableItem/TicksTransformer.xtend
+++ b/eclipse-tools/model-transformation/examples/amlt2inchron/org.eclipse.app4mc.transform.to.inchron.m2m/src/templates/m2m/sw/runnableItem/TicksTransformer.xtend
@@ -29,6 +29,7 @@
import org.eclipse.app4mc.amalthea.model.util.DeploymentUtil
import org.eclipse.emf.ecore.util.EcoreUtil
import templates.AbstractAmaltheaInchronTransformer
+import org.eclipse.app4mc.amalthea.model.ProcessingUnit
@Singleton
class TicksTransformer extends AbstractAmaltheaInchronTransformer {
@@ -45,12 +46,21 @@
EcoreUtil.getRootContainer(amltTask) as Amalthea);
//get distribution (extended if provided by the model element)
- val amltCore = amltCores?.get(0)
+ var ProcessingUnit amltCore = null
+
+ if(amltCores!==null && amltCores.size>0){
+ amltCore=amltCores?.get(0)
+ }
+
var amltDistribution = amltTicks?.extended.get(amltCore?.definition)
if (amltDistribution === null) {
amltDistribution = amltTicks.^default
}
+ if(amltDistribution===null)
+ {
+ return
+ }
//transform basic elements
it.min = createTimeTicks( amltDistribution.lowerBound)
it.mean = createTimeTicks(amltDistribution.average)
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.classpath b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/.classpath
similarity index 100%
copy from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.classpath
copy to eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/.classpath
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/.gitignore b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/.gitignore
new file mode 100644
index 0000000..7e902e8
--- /dev/null
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/.gitignore
@@ -0,0 +1 @@
+output/*
\ No newline at end of file
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.project b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/.project
similarity index 92%
copy from eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.project
copy to eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/.project
index 7614bd0..f73f982 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.project
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/.project
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>net.sourceforge.plantuml</name>
+ <name>app4m.example.transform.cust.app</name>
<comment></comment>
<projects>
</projects>
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/.settings/org.eclipse.jdt.core.prefs b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/.settings/org.eclipse.jdt.core.prefs
similarity index 100%
copy from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/.settings/org.eclipse.jdt.core.prefs
copy to eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/.settings/org.eclipse.jdt.core.prefs
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/Cust_ModelTransformation.product b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/Cust_ModelTransformation.product
new file mode 100644
index 0000000..a28ec11
--- /dev/null
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/Cust_ModelTransformation.product
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="Example: Sample Model Transformation" uid="test" id="app4mc.example.transform.app.product" application="app4mc.example.transform.app.application" version="1" useFeatures="false" includeLaunchers="true">
+
+ <configIni use="default">
+ </configIni>
+
+ <launcherArgs>
+ <programArgs>--input.props "${workspace_loc:app4m.example.transform.cust.app}/input.properties"
+ </programArgs>
+ <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+ </vmArgsMac>
+ </launcherArgs>
+
+ <windowImages/>
+
+ <launcher>
+ <win useIco="false">
+ <bmp/>
+ </win>
+ </launcher>
+
+ <vm>
+ </vm>
+
+ <plugins>
+ <plugin id="app4mc.example.transform.app"/>
+ <plugin id="app4mc.example.transform.m2m"/>
+ <plugin id="app4mc.example.transform.m2t"/>
+ <plugin id="app4mc.example.transform.m2t.cust" fragment="true"/>
+ <plugin id="app4mc.example.transform.samplemodel"/>
+ <plugin id="com.google.guava"/>
+ <plugin id="com.google.inject"/>
+ <plugin id="com.ibm.icu"/>
+ <plugin id="com.inchron.realtime.root"/>
+ <plugin id="javax.annotation"/>
+ <plugin id="javax.inject"/>
+ <plugin id="javax.xml"/>
+ <plugin id="org.apache.batik.constants"/>
+ <plugin id="org.apache.batik.css"/>
+ <plugin id="org.apache.batik.i18n"/>
+ <plugin id="org.apache.batik.util"/>
+ <plugin id="org.apache.batik.util.gui"/>
+ <plugin id="org.apache.commons.cli"/>
+ <plugin id="org.apache.commons.io"/>
+ <plugin id="org.apache.commons.jxpath"/>
+ <plugin id="org.apache.commons.lang"/>
+ <plugin id="org.apache.commons.logging"/>
+ <plugin id="org.apache.commons.math3"/>
+ <plugin id="org.apache.felix.gogo.command"/>
+ <plugin id="org.apache.felix.gogo.command.source"/>
+ <plugin id="org.apache.felix.gogo.runtime"/>
+ <plugin id="org.apache.felix.gogo.runtime.source"/>
+ <plugin id="org.apache.felix.gogo.shell"/>
+ <plugin id="org.apache.felix.gogo.shell.source"/>
+ <plugin id="org.apache.felix.scr"/>
+ <plugin id="org.apache.felix.scr.source"/>
+ <plugin id="org.apache.log4j"/>
+ <plugin id="org.apache.xerces"/>
+ <plugin id="org.apache.xml.resolver"/>
+ <plugin id="org.apache.xml.serializer"/>
+ <plugin id="org.apache.xmlgraphics"/>
+ <plugin id="org.eclipse.app4mc.amalthea.converters.log4j.configuration" fragment="true"/>
+ <plugin id="org.eclipse.app4mc.amalthea.model"/>
+ <plugin id="org.eclipse.app4mc.transformation.application"/>
+ <plugin id="org.eclipse.app4mc.transformation.extensions"/>
+ <plugin id="org.eclipse.compare.core"/>
+ <plugin id="org.eclipse.core.commands"/>
+ <plugin id="org.eclipse.core.contenttype"/>
+ <plugin id="org.eclipse.core.databinding"/>
+ <plugin id="org.eclipse.core.databinding.observable"/>
+ <plugin id="org.eclipse.core.databinding.property"/>
+ <plugin id="org.eclipse.core.expressions"/>
+ <plugin id="org.eclipse.core.filesystem"/>
+ <plugin id="org.eclipse.core.filesystem.win32.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.core.jobs"/>
+ <plugin id="org.eclipse.core.resources"/>
+ <plugin id="org.eclipse.core.resources.win32.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.core.runtime"/>
+ <plugin id="org.eclipse.core.variables"/>
+ <plugin id="org.eclipse.e4.core.commands"/>
+ <plugin id="org.eclipse.e4.core.contexts"/>
+ <plugin id="org.eclipse.e4.core.di"/>
+ <plugin id="org.eclipse.e4.core.di.annotations"/>
+ <plugin id="org.eclipse.e4.core.di.extensions"/>
+ <plugin id="org.eclipse.e4.core.di.extensions.supplier"/>
+ <plugin id="org.eclipse.e4.core.services"/>
+ <plugin id="org.eclipse.e4.emf.xpath"/>
+ <plugin id="org.eclipse.e4.ui.bindings"/>
+ <plugin id="org.eclipse.e4.ui.css.core"/>
+ <plugin id="org.eclipse.e4.ui.css.swt"/>
+ <plugin id="org.eclipse.e4.ui.css.swt.theme"/>
+ <plugin id="org.eclipse.e4.ui.di"/>
+ <plugin id="org.eclipse.e4.ui.dialogs"/>
+ <plugin id="org.eclipse.e4.ui.model.workbench"/>
+ <plugin id="org.eclipse.e4.ui.services"/>
+ <plugin id="org.eclipse.e4.ui.widgets"/>
+ <plugin id="org.eclipse.e4.ui.workbench"/>
+ <plugin id="org.eclipse.e4.ui.workbench.addons.swt"/>
+ <plugin id="org.eclipse.e4.ui.workbench.renderers.swt"/>
+ <plugin id="org.eclipse.e4.ui.workbench.swt"/>
+ <plugin id="org.eclipse.e4.ui.workbench3"/>
+ <plugin id="org.eclipse.emf"/>
+ <plugin id="org.eclipse.emf.common"/>
+ <plugin id="org.eclipse.emf.common.ui"/>
+ <plugin id="org.eclipse.emf.ecore"/>
+ <plugin id="org.eclipse.emf.ecore.change"/>
+ <plugin id="org.eclipse.emf.ecore.xcore.lib"/>
+ <plugin id="org.eclipse.emf.ecore.xmi"/>
+ <plugin id="org.eclipse.emf.edit"/>
+ <plugin id="org.eclipse.emf.edit.ui"/>
+ <plugin id="org.eclipse.emf.transaction"/>
+ <plugin id="org.eclipse.emf.transaction.ui"/>
+ <plugin id="org.eclipse.emf.validation"/>
+ <plugin id="org.eclipse.emf.workspace"/>
+ <plugin id="org.eclipse.emf.workspace.ui"/>
+ <plugin id="org.eclipse.equinox.app"/>
+ <plugin id="org.eclipse.equinox.bidi"/>
+ <plugin id="org.eclipse.equinox.common"/>
+ <plugin id="org.eclipse.equinox.ds"/>
+ <plugin id="org.eclipse.equinox.event"/>
+ <plugin id="org.eclipse.equinox.p2.core"/>
+ <plugin id="org.eclipse.equinox.p2.engine"/>
+ <plugin id="org.eclipse.equinox.p2.metadata"/>
+ <plugin id="org.eclipse.equinox.p2.metadata.repository"/>
+ <plugin id="org.eclipse.equinox.p2.repository"/>
+ <plugin id="org.eclipse.equinox.preferences"/>
+ <plugin id="org.eclipse.equinox.region" fragment="true"/>
+ <plugin id="org.eclipse.equinox.registry"/>
+ <plugin id="org.eclipse.equinox.security"/>
+ <plugin id="org.eclipse.equinox.security.win32.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.equinox.supplement"/>
+ <plugin id="org.eclipse.equinox.transforms.hook" fragment="true"/>
+ <plugin id="org.eclipse.equinox.util"/>
+ <plugin id="org.eclipse.equinox.weaving.hook" fragment="true"/>
+ <plugin id="org.eclipse.fx.osgi" fragment="true"/>
+ <plugin id="org.eclipse.help"/>
+ <plugin id="org.eclipse.jface"/>
+ <plugin id="org.eclipse.jface.databinding"/>
+ <plugin id="org.eclipse.jface.text"/>
+ <plugin id="org.eclipse.osgi"/>
+ <plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/>
+ <plugin id="org.eclipse.osgi.services"/>
+ <plugin id="org.eclipse.osgi.services.source"/>
+ <plugin id="org.eclipse.osgi.util"/>
+ <plugin id="org.eclipse.sphinx.emf"/>
+ <plugin id="org.eclipse.sphinx.emf.editors"/>
+ <plugin id="org.eclipse.sphinx.emf.editors.forms"/>
+ <plugin id="org.eclipse.sphinx.emf.ui"/>
+ <plugin id="org.eclipse.sphinx.emf.workspace"/>
+ <plugin id="org.eclipse.sphinx.emf.workspace.ui"/>
+ <plugin id="org.eclipse.sphinx.platform"/>
+ <plugin id="org.eclipse.sphinx.platform.ui"/>
+ <plugin id="org.eclipse.swt"/>
+ <plugin id="org.eclipse.swt.win32.win32.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.text"/>
+ <plugin id="org.eclipse.ui"/>
+ <plugin id="org.eclipse.ui.console"/>
+ <plugin id="org.eclipse.ui.forms"/>
+ <plugin id="org.eclipse.ui.ide"/>
+ <plugin id="org.eclipse.ui.navigator"/>
+ <plugin id="org.eclipse.ui.views"/>
+ <plugin id="org.eclipse.ui.views.properties.tabbed"/>
+ <plugin id="org.eclipse.ui.win32" fragment="true"/>
+ <plugin id="org.eclipse.ui.workbench"/>
+ <plugin id="org.eclipse.ui.workbench.texteditor"/>
+ <plugin id="org.eclipse.xtend.lib"/>
+ <plugin id="org.eclipse.xtend.lib.macro"/>
+ <plugin id="org.eclipse.xtext.logging" fragment="true"/>
+ <plugin id="org.eclipse.xtext.xbase.lib"/>
+ <plugin id="org.jdom"/>
+ <plugin id="org.tukaani.xz"/>
+ <plugin id="org.w3c.css.sac"/>
+ <plugin id="org.w3c.dom.events"/>
+ <plugin id="org.w3c.dom.smil"/>
+ <plugin id="org.w3c.dom.svg"/>
+ </plugins>
+
+ <configurations>
+ <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="1" />
+ <plugin id="org.eclipse.osgi" autoStart="false" startLevel="1" />
+ <plugin id="org.eclipse.osgi.services" autoStart="false" startLevel="0" />
+ <property name="equinox.use.ds" value="false" />
+ </configurations>
+
+ <preferencesInfo>
+ <targetfile overwrite="false"/>
+ </preferencesInfo>
+
+ <cssInfo>
+ </cssInfo>
+
+</product>
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/META-INF/MANIFEST.MF b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..0074986
--- /dev/null
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: App
+Bundle-SymbolicName: app4m.example.transform.cust.app
+Bundle-Version: 1.0.0.qualifier
+Automatic-Module-Name: app4m.example.transform.cust.app
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/build.properties b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/build.properties b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/input.properties
similarity index 62%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/build.properties
rename to eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/input.properties
index 41593a1..4a3a266 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.resourceset.mapper/build.properties
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/input.properties
@@ -1,5 +1,5 @@
# *******************************************************************************
-# Copyright (c) 2017 - 2018 Robert Bosch GmbH and others.
+# Copyright (c) 2018 Robert Bosch GmbH and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
@@ -9,12 +9,8 @@
# Robert Bosch GmbH - initial API and implementation
#
# *******************************************************************************
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- plugin.xml,\
- about.html,\
- epl-2.0.html
-src.includes = about.html,\
- epl-2.0.html
+input_models_folder=./input/amalthea_models
+m2m_output_folder=./output/m2m_output_models
+m2t_output_folder=./output/m2t_output_text_files
+log_file=./output/transformation.txt
+tranformationConfigIDs=app4mc.example.transform.m2t.cust1.config1
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/input/amalthea_models/democar.amxmi b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/input/amalthea_models/democar.amxmi
new file mode 100644
index 0000000..276723b
--- /dev/null
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4m.example.transform.cust.app/input/amalthea_models/democar.amxmi
@@ -0,0 +1,799 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<am:Amalthea xmlns:am="http://app4mc.eclipse.org/amalthea/0.9.8" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmi:version="2.0">
+ <commonElements>
+ <tags name="SwcEngineController" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcActuators" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcBrakeForceArbiter" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcABSCalculation" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcSensors" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcSensorPostprocessing" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcCylNumObserver" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcBrakeForceCalculation" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcEngineSensors" tagType="SOFTWARE_COMPONENT" />
+ <tags name="SwcInjIgnActuation" tagType="SOFTWARE_COMPONENT" />
+ </commonElements>
+ <swModel>
+ <tasks name="Task_10MS" stimuli="Timer_10MS?type=PeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="10">
+ <customProperties key="priority">
+ <value xsi:type="am:StringObject" value="10" />
+ </customProperties>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="CheckPlausability?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakeActuatorMonitor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="DiagnosisArbiter?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="VehicleStateMonitor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakeForceCalculation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakeSafetyMonitor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="ABSCalculation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakeForceActuation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="CaliperPositionCalculation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakeActuator?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="StopLightActuator?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakePedalSensorDiagnosis?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakePedalSensorTranslation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakePedalSensorVoter?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="DecelerationSensorDiagnosis?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="DecelerationSensorTranslation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="VehicleSpeedSensorDiagnosis?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="DecelerationSensorVoter?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="VehicleSpeedSensorVoter?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="VehicleSpeedSensorTranslation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="WheelSpeedSensorTranslation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="WheelSpeedSensorDiagnosis?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="CylNumObserver?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="WheelSpeedSensorVoter?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="ThrottleController?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="APedVoter?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BaseFuelMass?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="ThrottleActuator?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="TotalFuelMass?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="TransientFuelMass?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="InjectionTimeActuation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="IgnitionTiming?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="IgnitionTimeActuation?type=Runnable" />
+ </items>
+ </activityGraph>
+ </tasks>
+ <tasks name="Task_20MS" stimuli="Timer_20MS?type=PeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="10">
+ <customProperties key="priority">
+ <value xsi:type="am:StringObject" value="10" />
+ </customProperties>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="BrakeForceArbiter?type=Runnable" />
+ </items>
+ </activityGraph>
+ </tasks>
+ <tasks name="Task_5MS" stimuli="Timer_5MS?type=PeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="10">
+ <customProperties key="priority">
+ <value xsi:type="am:StringObject" value="10" />
+ </customProperties>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="EcuBrakeActuator?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="EcuStopLightActuator?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="EcuBrakePedalSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="EcuDecelerationSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="EcuVehicleSpeedSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="EcuWheelSpeedSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="APedSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="ThrottleSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="MassAirFlowSensor?type=Runnable" />
+ </items>
+ </activityGraph>
+ </tasks>
+ <runnables name="ABSCalculation" tags="SwcABSCalculation?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="VotedDecelerationRate?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VotedVehicleSpeed?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VotedWheelSpeed?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ArbitratedBrakeForce?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="ABSActivation?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ABSMode?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="APedSensor" tags="SwcEngineSensors?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="APedSensor1Voltage?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="APedSensor2Voltage?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="APedPosition1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="APedPosition2?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="APedVoter" tags="SwcEngineController?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="APedPosition1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="APedPosition2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VotedAPedPosition?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="BaseFuelMass" tags="SwcEngineController?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="MassAirFlow?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BaseFuelMassPerStroke?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="MAFRate?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="BrakeActuator" tags="SwcABSCalculation?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="CaliperPosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakeForceVoltage?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="BrakeActuatorMonitor" tags="SwcBrakeForceCalculation?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="BrakeForce?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeForceFeedback?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables name="BrakeForceActuation" tags="SwcABSCalculation?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="ABSActivation?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ABSMode?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakeForce?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeForceCurrent?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="BrakeForceArbiter" tags="SwcBrakeForceArbiter?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="CalculatedBrakeForce?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeSafetyState?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="ArbitratedBrakeForce?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="BrakeForceCalculation" tags="SwcBrakeForceCalculation?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeForceFeedback?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ArbitratedDiagnosisRequest?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="MonitoredVehicleState?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeSafetyLevel?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="CalculatedBrakeForce?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeMonitorLevel?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="BrakePedalSensorDiagnosis" tags="SwcSensorPostprocessing?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables name="BrakePedalSensorTranslation" tags="SwcSensorPostprocessing?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition2?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="BrakePedalSensorVoter" tags="SwcSensorPostprocessing?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VotedBrakePedalPosition?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="BrakeSafetyMonitor" tags="SwcBrakeForceCalculation?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeForceFeedback?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ArbitratedDiagnosisRequest?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="MonitoredVehicleState?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeMonitorLevel?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakeSafetyLevel?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeSafetyState?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="CaliperPositionCalculation" tags="SwcABSCalculation?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="CaliperPosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeForceCurrent?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="CaliperPosition?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="CheckPlausability" tags="SwcBrakeForceCalculation?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="VotedBrakePedalPosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="CylNumObserver" tags="SwcCylNumObserver?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="CylinderNumber?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="TriggeredCylinderNumber?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="DecelerationSensorDiagnosis" tags="SwcSensorPostprocessing?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="DecelerationVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="DecelerationVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables name="DecelerationSensorTranslation" tags="SwcSensorPostprocessing?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="DecelerationVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="DecelerationVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="DecelerationRate1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="DecelerationRate2?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="DecelerationSensorVoter" tags="SwcSensorPostprocessing?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="DecelerationRate1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="DecelerationRate2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VotedDecelerationRate?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="DiagnosisArbiter" tags="SwcBrakeForceCalculation?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="ArbitratedDiagnosisRequest?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables name="EcuBrakeActuator" tags="SwcActuators?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="BrakeForceVoltage?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables name="EcuBrakePedalSensor" tags="SwcSensors?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:Ticks">
+ <default lowerBound="144000" upperBound="176000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="160000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage2?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="EcuDecelerationSensor" tags="SwcSensors?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:Ticks">
+ <default lowerBound="144000" upperBound="176000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="160000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="DecelerationVoltage1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="DecelerationVoltage2?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="EcuStopLightActuator" tags="SwcActuators?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="BrakeApplication?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables name="EcuVehicleSpeedSensor" tags="SwcSensors?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage2?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="EcuWheelSpeedSensor" tags="SwcSensors?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage2?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="IgnitionTimeActuation" tags="SwcInjIgnActuation?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="TriggeredCylinderNumber?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime3?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime4?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime5?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime6?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="IgnitionTime7?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime8?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="IgnitionTiming" tags="SwcEngineController?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="MAFRate?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="IgnitionTime?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="InjectionTimeActuation" tags="SwcInjIgnActuation?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="TriggeredCylinderNumber?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="TotalFuelMassPerStroke?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime3?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime4?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime5?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime6?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime7?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime8?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables name="MassAirFlowSensor" tags="SwcEngineSensors?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="MAFSensorVoltage?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="MassAirFlow?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="StopLightActuator" tags="SwcABSCalculation?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="ArbitratedBrakeForce?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakeApplication?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="ThrottleActuator" tags="SwcEngineController?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="DesiredThrottlePosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="DesiredThrottlePositionVoltage?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="ThrottleController" tags="SwcEngineController?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="VotedAPedPosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ThrottlePosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="DesiredThrottlePosition?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="ThrottleSensor" tags="SwcEngineSensors?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="ThrottleSensor1Voltage?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ThrottleSensor2Voltage?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="ThrottlePosition?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="TotalFuelMass" tags="SwcEngineController?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="TransientFuelMassPerStroke?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="TotalFuelMassPerStroke?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="TransientFuelMass" tags="SwcEngineController?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="BaseFuelMassPerStroke?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="TransientFuelMassPerStroke?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="VehicleSpeedSensorDiagnosis" tags="SwcSensorPostprocessing?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables name="VehicleSpeedSensorTranslation" tags="SwcSensorPostprocessing?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VehicleSpeed1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VehicleSpeed2?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="VehicleSpeedSensorVoter" tags="SwcSensorPostprocessing?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="VehicleSpeed1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VehicleSpeed2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VotedVehicleSpeed?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="VehicleStateMonitor" tags="SwcBrakeForceCalculation?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="MonitoredVehicleState?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="WheelSpeedSensorDiagnosis" tags="SwcSensorPostprocessing?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables name="WheelSpeedSensorTranslation" tags="SwcSensorPostprocessing?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="WheelSpeed1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="WheelSpeed2?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <runnables name="WheelSpeedSensorVoter" tags="SwcSensorPostprocessing?type=Tag" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="WheelSpeed1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="WheelSpeed2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VotedWheelSpeed?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
+ </runnables>
+ <labels name="ABSActivation" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="ABSMode" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="APedPosition1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="APedPosition2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="APedSensor1Voltage" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="APedSensor2Voltage" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="ArbitratedBrakeForce" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="ArbitratedDiagnosisRequest" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BaseFuelMassPerStroke" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="BrakeApplication" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakeForce" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakeForceCurrent" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakeForceFeedback" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakeForceVoltage" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="BrakeMonitorLevel" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakePedalPosition" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakePedalPosition1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakePedalPosition2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakePedalPositionVoltage1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="BrakePedalPositionVoltage2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="BrakeSafetyLevel" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="BrakeSafetyState" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="CalculatedBrakeForce" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="CaliperPosition" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="CylinderNumber" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="DecelerationRate1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="DecelerationRate2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="DecelerationVoltage1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="DecelerationVoltage2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="DesiredThrottlePosition" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="DesiredThrottlePositionVoltage" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime3" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime4" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime5" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime6" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime7" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="IgnitionTime8" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="InjectionTime1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="InjectionTime2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="InjectionTime3" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="InjectionTime4" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="InjectionTime5" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="InjectionTime6" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="InjectionTime7" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="InjectionTime8" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="MAFRate" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="MAFSensorVoltage" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="MassAirFlow" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="MonitoredVehicleState" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="ThrottlePosition" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="ThrottleSensor1Voltage" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="ThrottleSensor2Voltage" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="TotalFuelMassPerStroke" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="TransientFuelMassPerStroke" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="TriggeredCylinderNumber" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="VehicleSpeed1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="VehicleSpeed2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="VehicleSpeedVoltage1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="VehicleSpeedVoltage2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="VotedAPedPosition" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="VotedBrakePedalPosition" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="VotedDecelerationRate" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="VotedVehicleSpeed" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="VotedWheelSpeed" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="WheelSpeed1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="WheelSpeed2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="8" unit="bit" />
+ </labels>
+ <labels name="WheelSpeedVoltage1" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ <labels name="WheelSpeedVoltage2" constant="false" bVolatile="false" dataStability="noProtection">
+ <size value="16" unit="bit" />
+ </labels>
+ </swModel>
+ <hwModel>
+ <definitions xsi:type="am:ProcessingUnitDefinition" name="DefaultCore" puType="CPU" features="Instructions/IPC_1?type=HwFeature" />
+ <definitions xsi:type="am:MemoryDefinition" name="DefaultMemory">
+ <size value="4" unit="MB" />
+ <accessLatency xsi:type="am:DiscreteValueConstant" value="2" />
+ </definitions>
+ <featureCategories name="Instructions" featureType="performance">
+ <features name="IPC_1" value="1.0" />
+ </featureCategories>
+ <structures name="Democar" structureType="System">
+ <structures name="ECU_1" structureType="ECU">
+ <structures name="Microcontroller_1" structureType="Microcontroller">
+ <modules xsi:type="am:Memory" name="Mem_1" frequencyDomain="FrequencyDomain_1?type=FrequencyDomain" definition="DefaultMemory?type=MemoryDefinition">
+ <ports name="port" bitWidth="32" priority="0" portType="responder" />
+ </modules>
+ <modules xsi:type="am:ProcessingUnit" name="Core_1" frequencyDomain="FrequencyDomain_1?type=FrequencyDomain" definition="DefaultCore?type=ProcessingUnitDefinition">
+ <ports name="port" bitWidth="32" priority="0" portType="initiator" />
+ </modules>
+ <connections name="con1" port1="Core_1/port?type=HwPort" port2="Mem_1/port?type=HwPort" />
+ </structures>
+ </structures>
+ </structures>
+ <domains xsi:type="am:FrequencyDomain" name="FrequencyDomain_1" clockGating="false">
+ <defaultValue value="200.0" unit="MHz" />
+ </domains>
+ </hwModel>
+ <osModel>
+ <operatingSystems name="OperatingSystem">
+ <taskSchedulers name="Task_Scheduler_Core_1">
+ <schedulingAlgorithm xsi:type="am:OSEK" />
+ </taskSchedulers>
+ </operatingSystems>
+ </osModel>
+ <stimuliModel>
+ <stimuli xsi:type="am:PeriodicStimulus" name="Timer_10MS">
+ <offset value="0" unit="ms" />
+ <recurrence value="10" unit="ms" />
+ </stimuli>
+ <stimuli xsi:type="am:PeriodicStimulus" name="Timer_20MS">
+ <offset value="0" unit="ms" />
+ <recurrence value="20" unit="ms" />
+ </stimuli>
+ <stimuli xsi:type="am:PeriodicStimulus" name="Timer_5MS">
+ <offset value="0" unit="ms" />
+ <recurrence value="5" unit="ms" />
+ </stimuli>
+ </stimuliModel>
+ <constraintsModel>
+ <requirements xsi:type="am:ProcessRequirement" name="Deadline_05" severity="Critical" process="Task_5MS?type=Task">
+ <limit xsi:type="am:TimeRequirementLimit" limitType="UpperLimit" metric="ResponseTime">
+ <limitValue value="5" unit="ms" />
+ </limit>
+ </requirements>
+ <requirements xsi:type="am:ProcessRequirement" name="Deadline_10" severity="Critical" process="Task_10MS?type=Task">
+ <limit xsi:type="am:TimeRequirementLimit" limitType="UpperLimit" metric="ResponseTime">
+ <limitValue value="10" unit="ms" />
+ </limit>
+ </requirements>
+ <requirements xsi:type="am:ProcessRequirement" name="Deadline_20" severity="Critical" process="Task_20MS?type=Task">
+ <limit xsi:type="am:TimeRequirementLimit" limitType="UpperLimit" metric="ResponseTime">
+ <limitValue value="20" unit="ms" />
+ </limit>
+ </requirements>
+ </constraintsModel>
+</am:Amalthea>
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.app/.gitignore b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.app/.gitignore
index 54f516e..7e902e8 100644
--- a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.app/.gitignore
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.app/.gitignore
@@ -1,4 +1 @@
-/bin/
-/target/
-/xtend-gen/
-/output/*
\ No newline at end of file
+output/*
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.app/Example_Sample_Model_Transformation.product b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.app/Example_Sample_Model_Transformation.product
index 8ec9b85..35232d1 100644
--- a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.app/Example_Sample_Model_Transformation.product
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.app/Example_Sample_Model_Transformation.product
@@ -36,10 +36,13 @@
<plugin id="javax.annotation"/>
<plugin id="javax.inject"/>
<plugin id="javax.xml"/>
+ <plugin id="org.apache.batik.constants"/>
<plugin id="org.apache.batik.css"/>
+ <plugin id="org.apache.batik.i18n"/>
<plugin id="org.apache.batik.util"/>
<plugin id="org.apache.batik.util.gui"/>
<plugin id="org.apache.commons.cli"/>
+ <plugin id="org.apache.commons.io"/>
<plugin id="org.apache.commons.jxpath"/>
<plugin id="org.apache.commons.lang"/>
<plugin id="org.apache.commons.logging"/>
@@ -56,8 +59,9 @@
<plugin id="org.apache.xerces"/>
<plugin id="org.apache.xml.resolver"/>
<plugin id="org.apache.xml.serializer"/>
+ <plugin id="org.apache.xmlgraphics"/>
+ <plugin id="org.eclipse.app4mc.amalthea.converters.log4j.configuration" fragment="true"/>
<plugin id="org.eclipse.app4mc.amalthea.model"/>
- <plugin id="org.eclipse.app4mc.amalthea.sphinx"/>
<plugin id="org.eclipse.app4mc.transformation.application"/>
<plugin id="org.eclipse.app4mc.transformation.extensions"/>
<plugin id="org.eclipse.compare.core"/>
@@ -87,6 +91,7 @@
<plugin id="org.eclipse.e4.ui.css.swt"/>
<plugin id="org.eclipse.e4.ui.css.swt.theme"/>
<plugin id="org.eclipse.e4.ui.di"/>
+ <plugin id="org.eclipse.e4.ui.dialogs"/>
<plugin id="org.eclipse.e4.ui.model.workbench"/>
<plugin id="org.eclipse.e4.ui.services"/>
<plugin id="org.eclipse.e4.ui.widgets"/>
@@ -113,6 +118,7 @@
<plugin id="org.eclipse.equinox.bidi"/>
<plugin id="org.eclipse.equinox.common"/>
<plugin id="org.eclipse.equinox.ds"/>
+ <plugin id="org.eclipse.equinox.event"/>
<plugin id="org.eclipse.equinox.p2.core"/>
<plugin id="org.eclipse.equinox.p2.engine"/>
<plugin id="org.eclipse.equinox.p2.metadata"/>
@@ -135,6 +141,7 @@
<plugin id="org.eclipse.osgi"/>
<plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/>
<plugin id="org.eclipse.osgi.services"/>
+ <plugin id="org.eclipse.osgi.services.source"/>
<plugin id="org.eclipse.osgi.util"/>
<plugin id="org.eclipse.sphinx.emf"/>
<plugin id="org.eclipse.sphinx.emf.editors"/>
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.app/META-INF/MANIFEST.MF b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.app/META-INF/MANIFEST.MF
index 1bf8c14..493f13d 100644
--- a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.app/META-INF/MANIFEST.MF
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.app/META-INF/MANIFEST.MF
@@ -6,3 +6,4 @@
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-Vendor: Eclipse APP4MC
Require-Bundle: org.eclipse.app4mc.transformation.application
+Automatic-Module-Name: app4mc.example.transform.app
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.app/input/amalthea_models/democar.amxmi b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.app/input/amalthea_models/democar.amxmi
index 5dc5bfb..276723b 100644
--- a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.app/input/amalthea_models/democar.amxmi
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.app/input/amalthea_models/democar.amxmi
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<am:Amalthea xmlns:am="http://app4mc.eclipse.org/amalthea/0.9.2" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmi:version="2.0">
+<am:Amalthea xmlns:am="http://app4mc.eclipse.org/amalthea/0.9.8" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmi:version="2.0">
<commonElements>
<tags name="SwcEngineController" tagType="SOFTWARE_COMPONENT" />
<tags name="SwcActuators" tagType="SOFTWARE_COMPONENT" />
@@ -17,850 +17,506 @@
<customProperties key="priority">
<value xsi:type="am:StringObject" value="10" />
</customProperties>
- <callGraph>
- <graphEntries xsi:type="am:CallSequence">
- <calls xsi:type="am:TaskRunnableCall" runnable="CheckPlausability?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="BrakeActuatorMonitor?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="DiagnosisArbiter?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="VehicleStateMonitor?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="BrakeForceCalculation?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="BrakeSafetyMonitor?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="ABSCalculation?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="BrakeForceActuation?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="CaliperPositionCalculation?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="BrakeActuator?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="StopLightActuator?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="BrakePedalSensorDiagnosis?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="BrakePedalSensorTranslation?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="BrakePedalSensorVoter?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="DecelerationSensorDiagnosis?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="DecelerationSensorTranslation?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="VehicleSpeedSensorDiagnosis?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="DecelerationSensorVoter?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="VehicleSpeedSensorVoter?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="VehicleSpeedSensorTranslation?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="WheelSpeedSensorTranslation?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="WheelSpeedSensorDiagnosis?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="CylNumObserver?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="WheelSpeedSensorVoter?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="ThrottleController?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="APedVoter?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="BaseFuelMass?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="ThrottleActuator?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="TotalFuelMass?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="TransientFuelMass?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="InjectionTimeActuation?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="IgnitionTiming?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="IgnitionTimeActuation?type=Runnable" />
- </graphEntries>
- </callGraph>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="CheckPlausability?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakeActuatorMonitor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="DiagnosisArbiter?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="VehicleStateMonitor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakeForceCalculation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakeSafetyMonitor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="ABSCalculation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakeForceActuation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="CaliperPositionCalculation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakeActuator?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="StopLightActuator?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakePedalSensorDiagnosis?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakePedalSensorTranslation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BrakePedalSensorVoter?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="DecelerationSensorDiagnosis?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="DecelerationSensorTranslation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="VehicleSpeedSensorDiagnosis?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="DecelerationSensorVoter?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="VehicleSpeedSensorVoter?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="VehicleSpeedSensorTranslation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="WheelSpeedSensorTranslation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="WheelSpeedSensorDiagnosis?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="CylNumObserver?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="WheelSpeedSensorVoter?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="ThrottleController?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="APedVoter?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="BaseFuelMass?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="ThrottleActuator?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="TotalFuelMass?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="TransientFuelMass?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="InjectionTimeActuation?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="IgnitionTiming?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="IgnitionTimeActuation?type=Runnable" />
+ </items>
+ </activityGraph>
</tasks>
<tasks name="Task_20MS" stimuli="Timer_20MS?type=PeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="10">
<customProperties key="priority">
<value xsi:type="am:StringObject" value="10" />
</customProperties>
- <callGraph>
- <graphEntries xsi:type="am:CallSequence">
- <calls xsi:type="am:TaskRunnableCall" runnable="BrakeForceArbiter?type=Runnable" />
- </graphEntries>
- </callGraph>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="BrakeForceArbiter?type=Runnable" />
+ </items>
+ </activityGraph>
</tasks>
<tasks name="Task_5MS" stimuli="Timer_5MS?type=PeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="10">
<customProperties key="priority">
<value xsi:type="am:StringObject" value="10" />
</customProperties>
- <callGraph>
- <graphEntries xsi:type="am:CallSequence">
- <calls xsi:type="am:TaskRunnableCall" runnable="EcuBrakeActuator?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="EcuStopLightActuator?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="EcuBrakePedalSensor?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="EcuDecelerationSensor?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="EcuVehicleSpeedSensor?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="EcuWheelSpeedSensor?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="APedSensor?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="ThrottleSensor?type=Runnable" />
- <calls xsi:type="am:TaskRunnableCall" runnable="MassAirFlowSensor?type=Runnable" />
- </graphEntries>
- </callGraph>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CallSequence" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="EcuBrakeActuator?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="EcuStopLightActuator?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="EcuBrakePedalSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="EcuDecelerationSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="EcuVehicleSpeedSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="EcuWheelSpeedSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="APedSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="ThrottleSensor?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="MassAirFlowSensor?type=Runnable" />
+ </items>
+ </activityGraph>
</tasks>
<runnables name="ABSCalculation" tags="SwcABSCalculation?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="VotedDecelerationRate?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="VotedVehicleSpeed?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="VotedWheelSpeed?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="ArbitratedBrakeForce?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="ABSActivation?type=Label" access="write" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="ABSMode?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="VotedDecelerationRate?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VotedVehicleSpeed?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VotedWheelSpeed?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ArbitratedBrakeForce?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="ABSActivation?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ABSMode?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="APedSensor" tags="SwcEngineSensors?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="APedSensor1Voltage?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="APedSensor2Voltage?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="APedPosition1?type=Label" access="write" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="APedPosition2?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="APedSensor1Voltage?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="APedSensor2Voltage?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="APedPosition1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="APedPosition2?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="APedVoter" tags="SwcEngineController?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="APedPosition1?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="APedPosition2?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="VotedAPedPosition?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="APedPosition1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="APedPosition2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VotedAPedPosition?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="BaseFuelMass" tags="SwcEngineController?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="MassAirFlow?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="BaseFuelMassPerStroke?type=Label" access="write" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="MAFRate?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="MassAirFlow?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BaseFuelMassPerStroke?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="MAFRate?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="BrakeActuator" tags="SwcABSCalculation?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="CaliperPosition?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="BrakeForceVoltage?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="CaliperPosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakeForceVoltage?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="BrakeActuatorMonitor" tags="SwcBrakeForceCalculation?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="BrakeForce?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="BrakeForceFeedback?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="BrakeForce?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeForceFeedback?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ </activityGraph>
</runnables>
<runnables name="BrakeForceActuation" tags="SwcABSCalculation?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="ABSActivation?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="ABSMode?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="BrakeForce?type=Label" access="write" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="BrakeForceCurrent?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="ABSActivation?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ABSMode?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakeForce?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeForceCurrent?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="BrakeForceArbiter" tags="SwcBrakeForceArbiter?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="CalculatedBrakeForce?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="BrakeSafetyState?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="ArbitratedBrakeForce?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="CalculatedBrakeForce?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeSafetyState?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="ArbitratedBrakeForce?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="BrakeForceCalculation" tags="SwcBrakeForceCalculation?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="BrakePedalPosition?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="BrakeForceFeedback?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="ArbitratedDiagnosisRequest?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="MonitoredVehicleState?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="BrakeSafetyLevel?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="CalculatedBrakeForce?type=Label" access="write" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="BrakeMonitorLevel?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeForceFeedback?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ArbitratedDiagnosisRequest?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="MonitoredVehicleState?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeSafetyLevel?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="CalculatedBrakeForce?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeMonitorLevel?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="BrakePedalSensorDiagnosis" tags="SwcSensorPostprocessing?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage1?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage2?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ </activityGraph>
</runnables>
<runnables name="BrakePedalSensorTranslation" tags="SwcSensorPostprocessing?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage1?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage2?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="BrakePedalPosition1?type=Label" access="write" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="BrakePedalPosition2?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition2?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="BrakePedalSensorVoter" tags="SwcSensorPostprocessing?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="BrakePedalPosition1?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="BrakePedalPosition2?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="VotedBrakePedalPosition?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VotedBrakePedalPosition?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="BrakeSafetyMonitor" tags="SwcBrakeForceCalculation?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="BrakePedalPosition?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="BrakeForceFeedback?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="ArbitratedDiagnosisRequest?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="MonitoredVehicleState?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="BrakeMonitorLevel?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="BrakeSafetyLevel?type=Label" access="write" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="BrakeSafetyState?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeForceFeedback?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ArbitratedDiagnosisRequest?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="MonitoredVehicleState?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeMonitorLevel?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakeSafetyLevel?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeSafetyState?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="CaliperPositionCalculation" tags="SwcABSCalculation?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="CaliperPosition?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="BrakeForceCurrent?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="CaliperPosition?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="CaliperPosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakeForceCurrent?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="CaliperPosition?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="CheckPlausability" tags="SwcBrakeForceCalculation?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="VotedBrakePedalPosition?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="BrakePedalPosition?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="VotedBrakePedalPosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPosition?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="CylNumObserver" tags="SwcCylNumObserver?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="CylinderNumber?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="TriggeredCylinderNumber?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="CylinderNumber?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="TriggeredCylinderNumber?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="DecelerationSensorDiagnosis" tags="SwcSensorPostprocessing?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="DecelerationVoltage1?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="DecelerationVoltage2?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="DecelerationVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="DecelerationVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ </activityGraph>
</runnables>
<runnables name="DecelerationSensorTranslation" tags="SwcSensorPostprocessing?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="DecelerationVoltage1?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="DecelerationVoltage2?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="DecelerationRate1?type=Label" access="write" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="DecelerationRate2?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="DecelerationVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="DecelerationVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="DecelerationRate1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="DecelerationRate2?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="DecelerationSensorVoter" tags="SwcSensorPostprocessing?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="DecelerationRate1?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="DecelerationRate2?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="VotedDecelerationRate?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="DecelerationRate1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="DecelerationRate2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VotedDecelerationRate?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="DiagnosisArbiter" tags="SwcBrakeForceCalculation?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="ArbitratedDiagnosisRequest?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="ArbitratedDiagnosisRequest?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ </activityGraph>
</runnables>
<runnables name="EcuBrakeActuator" tags="SwcActuators?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="BrakeForceVoltage?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="BrakeForceVoltage?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ </activityGraph>
</runnables>
<runnables name="EcuBrakePedalSensor" tags="SwcSensors?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="144000" />
- <upperBound xsi:type="am:LongObject" value="176000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="160000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage1?type=Label" access="write" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage2?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:Ticks">
+ <default lowerBound="144000" upperBound="176000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="160000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage2?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="EcuDecelerationSensor" tags="SwcSensors?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="144000" />
- <upperBound xsi:type="am:LongObject" value="176000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="160000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="DecelerationVoltage1?type=Label" access="write" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="DecelerationVoltage2?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:Ticks">
+ <default lowerBound="144000" upperBound="176000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="160000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="DecelerationVoltage1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="DecelerationVoltage2?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="EcuStopLightActuator" tags="SwcActuators?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="BrakeApplication?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="BrakeApplication?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ </activityGraph>
</runnables>
<runnables name="EcuVehicleSpeedSensor" tags="SwcSensors?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="VehicleSpeedVoltage1?type=Label" access="write" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="VehicleSpeedVoltage2?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage2?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="EcuWheelSpeedSensor" tags="SwcSensors?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="WheelSpeedVoltage1?type=Label" access="write" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="WheelSpeedVoltage2?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage2?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="IgnitionTimeActuation" tags="SwcInjIgnActuation?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="TriggeredCylinderNumber?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="IgnitionTime?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="IgnitionTime1?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="IgnitionTime2?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="IgnitionTime3?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="IgnitionTime4?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="IgnitionTime5?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="IgnitionTime6?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="IgnitionTime7?type=Label" access="write" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="IgnitionTime8?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="TriggeredCylinderNumber?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime3?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime4?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime5?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime6?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="IgnitionTime7?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="IgnitionTime8?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="IgnitionTiming" tags="SwcEngineController?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="MAFRate?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="IgnitionTime?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="MAFRate?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="IgnitionTime?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="InjectionTimeActuation" tags="SwcInjIgnActuation?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="TriggeredCylinderNumber?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="TotalFuelMassPerStroke?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="InjectionTime1?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="InjectionTime2?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="InjectionTime3?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="InjectionTime4?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="InjectionTime5?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="InjectionTime6?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="InjectionTime7?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="InjectionTime8?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="TriggeredCylinderNumber?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="TotalFuelMassPerStroke?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime3?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime4?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime5?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime6?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime7?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="InjectionTime8?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ </activityGraph>
</runnables>
<runnables name="MassAirFlowSensor" tags="SwcEngineSensors?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="MAFSensorVoltage?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="MassAirFlow?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="MAFSensorVoltage?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="MassAirFlow?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="StopLightActuator" tags="SwcABSCalculation?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="ArbitratedBrakeForce?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="BrakeApplication?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="ArbitratedBrakeForce?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="BrakeApplication?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="ThrottleActuator" tags="SwcEngineController?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="DesiredThrottlePosition?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="DesiredThrottlePositionVoltage?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="DesiredThrottlePosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="DesiredThrottlePositionVoltage?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="ThrottleController" tags="SwcEngineController?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="VotedAPedPosition?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="ThrottlePosition?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="DesiredThrottlePosition?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="VotedAPedPosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ThrottlePosition?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="DesiredThrottlePosition?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="ThrottleSensor" tags="SwcEngineSensors?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="ThrottleSensor1Voltage?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="ThrottleSensor2Voltage?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="ThrottlePosition?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="ThrottleSensor1Voltage?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="ThrottleSensor2Voltage?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="ThrottlePosition?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="TotalFuelMass" tags="SwcEngineController?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="TransientFuelMassPerStroke?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="TotalFuelMassPerStroke?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="TransientFuelMassPerStroke?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="TotalFuelMassPerStroke?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="TransientFuelMass" tags="SwcEngineController?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="BaseFuelMassPerStroke?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="TransientFuelMassPerStroke?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="BaseFuelMassPerStroke?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="TransientFuelMassPerStroke?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="VehicleSpeedSensorDiagnosis" tags="SwcSensorPostprocessing?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="VehicleSpeedVoltage1?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="VehicleSpeedVoltage2?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ </activityGraph>
</runnables>
<runnables name="VehicleSpeedSensorTranslation" tags="SwcSensorPostprocessing?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="VehicleSpeedVoltage1?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="VehicleSpeedVoltage2?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="VehicleSpeed1?type=Label" access="write" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="VehicleSpeed2?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VehicleSpeed1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VehicleSpeed2?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="VehicleSpeedSensorVoter" tags="SwcSensorPostprocessing?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="VehicleSpeed1?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="VehicleSpeed2?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="VotedVehicleSpeed?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="VehicleSpeed1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="VehicleSpeed2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VotedVehicleSpeed?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="VehicleStateMonitor" tags="SwcBrakeForceCalculation?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="MonitoredVehicleState?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="MonitoredVehicleState?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="WheelSpeedSensorDiagnosis" tags="SwcSensorPostprocessing?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="WheelSpeedVoltage1?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="WheelSpeedVoltage2?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ </activityGraph>
</runnables>
<runnables name="WheelSpeedSensorTranslation" tags="SwcSensorPostprocessing?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="WheelSpeedVoltage1?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="WheelSpeedVoltage2?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="WheelSpeed1?type=Label" access="write" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="WheelSpeed2?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="WheelSpeed1?type=Label" access="write" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="WheelSpeed2?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<runnables name="WheelSpeedSensorVoter" tags="SwcSensorPostprocessing?type=Tag" callback="false" service="false">
- <runnableItems xsi:type="am:LabelAccess" data="WheelSpeed1?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:LabelAccess" data="WheelSpeed2?type=Label" access="read" dataStability="inherited" />
- <runnableItems xsi:type="am:ExecutionNeed">
- <default key="Instructions">
- <value xsi:type="am:NeedDeviation">
- <deviation>
- <lowerBound xsi:type="am:LongObject" value="72000" />
- <upperBound xsi:type="am:LongObject" value="88000" />
- <distribution xsi:type="am:WeibullEstimators" pRemainPromille="0.5">
- <mean xsi:type="am:LongObject" value="80000" />
- </distribution>
- </deviation>
- </value>
- </default>
- </runnableItems>
- <runnableItems xsi:type="am:LabelAccess" data="VotedWheelSpeed?type=Label" access="write" dataStability="inherited" />
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="WheelSpeed1?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:LabelAccess" data="WheelSpeed2?type=Label" access="read" dataStability="inherited" />
+ <items xsi:type="am:Ticks">
+ <default lowerBound="72000" upperBound="88000" xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" pRemainPromille="0.5" average="80000" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="VotedWheelSpeed?type=Label" access="write" dataStability="inherited" />
+ </activityGraph>
</runnables>
<labels name="ABSActivation" constant="false" bVolatile="false" dataStability="noProtection">
<size value="8" unit="bit" />
@@ -1080,7 +736,7 @@
<definitions xsi:type="am:ProcessingUnitDefinition" name="DefaultCore" puType="CPU" features="Instructions/IPC_1?type=HwFeature" />
<definitions xsi:type="am:MemoryDefinition" name="DefaultMemory">
<size value="4" unit="MB" />
- <accessLatency xsi:type="am:LatencyConstant" cycles="2" />
+ <accessLatency xsi:type="am:DiscreteValueConstant" value="2" />
</definitions>
<featureCategories name="Instructions" featureType="performance">
<features name="IPC_1" value="1.0" />
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.app/pom.xml b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.app/pom.xml
index 3c0c6aa..d994e66 100644
--- a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.app/pom.xml
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.app/pom.xml
@@ -4,19 +4,17 @@
<modelVersion>4.0.0</modelVersion>
-
<parent>
- <relativePath>../../../build/org.eclipse.app4mc.transformation.build/pom.xml</relativePath>
+ <relativePath>../../../pom.xml</relativePath>
<groupId>org.eclipse.app4mc.transformation</groupId>
- <artifactId>org.eclipse.app4mc.transformation.build</artifactId>
+ <artifactId>parent</artifactId>
<version>0.3.0-SNAPSHOT</version>
</parent>
<properties>
- <plugin-id>app4mc.example.transform.app</plugin-id>
- <examples-installer-location>../../../build/org.eclipse.app4mc.transformation.examples.installer</examples-installer-location>
- </properties>
-
+ <plugin-id>app4mc.example.transform.app</plugin-id>
+ <examples-installer-location>../../../releng/org.eclipse.app4mc.transformation.examples.installer</examples-installer-location>
+ </properties>
<artifactId>app4mc.example.transform.app</artifactId>
<packaging>jar</packaging>
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.app/src/app4mc/example/transform/app/SampleApplication.java b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.app/src/app4mc/example/transform/app/SampleApplication.java
index 0930df4..5833df0 100644
--- a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.app/src/app4mc/example/transform/app/SampleApplication.java
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.app/src/app4mc/example/transform/app/SampleApplication.java
@@ -53,6 +53,7 @@
Object inputModelsFolder = properties.get("input_models_folder");
Object m2m_outputModelsFolder = properties.get("m2m_output_folder");
+ Object m2t_output_folder = properties.get("m2t_output_folder");
Object logFile = properties.get("log_file");
if(inputModelsFolder !=null) {
@@ -71,6 +72,14 @@
properties.put("m2m_output_folder", newPath);
}
+ if(m2t_output_folder !=null) {
+ String path=m2t_output_folder.toString();
+
+ String newPath=new File(path).exists()?path:new File(propertiesFile.getParent()+File.separator+ path).getCanonicalPath();
+
+ properties.put("m2t_output_folder", newPath);
+
+ }
if(logFile !=null) {
String path=logFile.toString();
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2m/.gitignore b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2m/.gitignore
deleted file mode 100644
index b58873f..0000000
--- a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2m/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/bin/
-/target/
-/xtend-gen/*
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2m/META-INF/MANIFEST.MF b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2m/META-INF/MANIFEST.MF
index fc78761..255d19d 100644
--- a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2m/META-INF/MANIFEST.MF
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2m/META-INF/MANIFEST.MF
@@ -11,3 +11,4 @@
org.eclipse.app4mc.amalthea.model;visibility:=reexport,
org.eclipse.app4mc.transformation.extensions,
app4mc.example.transform.samplemodel
+Automatic-Module-Name: app4mc.example.transform.m2m
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2m/pom.xml b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2m/pom.xml
index ecc5f68..b166eab 100644
--- a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2m/pom.xml
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2m/pom.xml
@@ -4,20 +4,18 @@
<modelVersion>4.0.0</modelVersion>
-
<parent>
- <relativePath>../../../build/org.eclipse.app4mc.transformation.build/pom.xml</relativePath>
+ <relativePath>../../../pom.xml</relativePath>
<groupId>org.eclipse.app4mc.transformation</groupId>
- <artifactId>org.eclipse.app4mc.transformation.build</artifactId>
+ <artifactId>parent</artifactId>
<version>0.3.0-SNAPSHOT</version>
</parent>
<properties>
<plugin-id>app4mc.example.transform.m2m</plugin-id>
- <examples-installer-location>../../../build/org.eclipse.app4mc.transformation.examples.installer</examples-installer-location>
+ <examples-installer-location>../../../releng/org.eclipse.app4mc.transformation.examples.installer</examples-installer-location>
</properties>
-
<artifactId>app4mc.example.transform.m2m</artifactId>
<packaging>jar</packaging>
@@ -106,31 +104,6 @@
</plugin>
-
-
-
- <plugin>
- <groupId>org.eclipse.xtend</groupId>
- <artifactId>xtend-maven-plugin</artifactId>
- <version>2.14.0</version>
- <executions>
- <execution>
- <goals>
- <goal>compile</goal>
- <goal>xtend-install-debug-info</goal>
- <goal>testCompile</goal>
- <goal>xtend-test-install-debug-info</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <outputDirectory>xtend-gen</outputDirectory>
- </configuration>
-
- </plugin>
-
-
-
</plugins>
</build>
</project>
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2m/src/configuration/M2MTransformation.java b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2m/src/configuration/M2MTransformation.java
index 7e97ee8..d1e05ae 100644
--- a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2m/src/configuration/M2MTransformation.java
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2m/src/configuration/M2MTransformation.java
@@ -17,7 +17,6 @@
import java.util.Properties;
-import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.eclipse.app4mc.amalthea.model.AmaltheaFactory;
import org.eclipse.app4mc.transformation.extensions.executiontype.IModelToModelConfig;
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/.classpath b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t.cust/.classpath
similarity index 95%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/.classpath
rename to eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t.cust/.classpath
index 325150d..428337e 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/.classpath
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t.cust/.classpath
@@ -1,6 +1,6 @@
<?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.7"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="xtend-gen"/>
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/.project b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t.cust/.project
similarity index 92%
copy from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/.project
copy to eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t.cust/.project
index 5f0bcdd..9221ed3 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/.project
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t.cust/.project
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>org.eclipse.app4mc.emfutils.content.extractor</name>
+ <name>app4mc.example.transform.m2t.cust</name>
<comment></comment>
<projects>
</projects>
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/.settings/org.eclipse.jdt.core.prefs b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t.cust/.settings/org.eclipse.jdt.core.prefs
similarity index 100%
copy from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/.settings/org.eclipse.jdt.core.prefs
copy to eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t.cust/.settings/org.eclipse.jdt.core.prefs
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t.cust/META-INF/MANIFEST.MF b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t.cust/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..2d3d8f9
--- /dev/null
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t.cust/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Cust
+Bundle-SymbolicName: app4mc.example.transform.m2t.cust;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Fragment-Host: app4mc.example.transform.m2t;bundle-version="0.3.0"
+Automatic-Module-Name: app4mc.example.transform.m2t.cust
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t.cust/build.properties b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t.cust/build.properties
new file mode 100644
index 0000000..e3023e1
--- /dev/null
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t.cust/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ fragment.xml
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t.cust/fragment.xml b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t.cust/fragment.xml
new file mode 100644
index 0000000..e83f305
--- /dev/null
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t.cust/fragment.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<fragment>
+ <extension
+ point="org.eclipse.app4mc.transformation.configuration">
+ <config
+ enabled="true"
+ id="app4mc.example.transform.m2t.cust1.config1"
+ m2t_class="configuration.M2TTransformation"
+ module_class="custmodule.CustM2TInjectorModule">
+ </config>
+ </extension>
+
+</fragment>
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t.cust/src/custTemplates/CustTransformer.xtend b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t.cust/src/custTemplates/CustTransformer.xtend
new file mode 100644
index 0000000..650c16f
--- /dev/null
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t.cust/src/custTemplates/CustTransformer.xtend
@@ -0,0 +1,24 @@
+package custTemplates
+
+import org.eclipse.app4mc.amalthea.model.Amalthea
+import templates.M2T_Output_Transformer
+
+class CustTransformer extends M2T_Output_Transformer {
+ /**
+ * Creates output with a "template only" style (like Xpand/Xtend).
+ */
+ override String generateOutput1(Amalthea amalthea) '''
+ Customer template
+ «super.generateOutput1(amalthea)»
+ '''
+
+
+ /**
+ * Creates output with a combination of template and functions.
+ * This allows a more flexible use of utility functions and lambdas.
+ */
+ override String generateOutput2(Amalthea amalthea) '''
+ Customer template
+ «super.generateOutput2(amalthea)»
+ '''
+}
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t.cust/src/custmodule/CustM2TInjectorModule.java b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t.cust/src/custmodule/CustM2TInjectorModule.java
new file mode 100644
index 0000000..700a50f
--- /dev/null
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t.cust/src/custmodule/CustM2TInjectorModule.java
@@ -0,0 +1,32 @@
+ /**
+ ********************************************************************************
+ * Copyright (c) 2018 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
+package custmodule;
+
+import custTemplates.CustTransformer;
+import module.DefaultM2TInjectorModule;
+import templates.M2T_Output_Transformer;
+
+public class CustM2TInjectorModule extends DefaultM2TInjectorModule {
+
+
+ @Override
+ protected void initializeBaseConfiguration() {
+ super.initializeBaseConfiguration();
+ bind(M2T_Output_Transformer.class).to(CustTransformer.class);
+ }
+
+
+}
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t/.gitignore b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t/.gitignore
deleted file mode 100644
index d3fb94c..0000000
--- a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/bin/
-/target/
-/xtend-gen/
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t/META-INF/MANIFEST.MF b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t/META-INF/MANIFEST.MF
index 09344bd..d7e8c84 100644
--- a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t/META-INF/MANIFEST.MF
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t/META-INF/MANIFEST.MF
@@ -11,3 +11,4 @@
org.eclipse.app4mc.amalthea.model;visibility:=reexport,
org.eclipse.app4mc.transformation.extensions
Export-Package: module
+Automatic-Module-Name: app4mc.example.transform.m2t
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t/pom.xml b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t/pom.xml
index 46ba533..8b01bdf 100644
--- a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t/pom.xml
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t/pom.xml
@@ -4,19 +4,17 @@
<modelVersion>4.0.0</modelVersion>
-
<parent>
- <relativePath>../../../build/org.eclipse.app4mc.transformation.build/pom.xml</relativePath>
+ <relativePath>../../../pom.xml</relativePath>
<groupId>org.eclipse.app4mc.transformation</groupId>
- <artifactId>org.eclipse.app4mc.transformation.build</artifactId>
+ <artifactId>parent</artifactId>
<version>0.3.0-SNAPSHOT</version>
</parent>
<properties>
- <plugin-id>app4mc.example.transform.m2t</plugin-id>
- <examples-installer-location>../../../build/org.eclipse.app4mc.transformation.examples.installer</examples-installer-location>
- </properties>
-
+ <plugin-id>app4mc.example.transform.m2t</plugin-id>
+ <examples-installer-location>../../../releng/org.eclipse.app4mc.transformation.examples.installer</examples-installer-location>
+ </properties>
<artifactId>app4mc.example.transform.m2t</artifactId>
<packaging>jar</packaging>
@@ -105,25 +103,6 @@
</executions>
</plugin>
-
- <plugin>
-<groupId>org.eclipse.xtend</groupId>
-<artifactId>xtend-maven-plugin</artifactId>
-<version>2.14.0</version>
-<executions>
- <execution>
- <goals>
- <goal>compile</goal>
- <goal>xtend-install-debug-info</goal>
- <goal>testCompile</goal>
- <goal>xtend-test-install-debug-info</goal>
- </goals>
- </execution>
-</executions>
-<configuration>
- <outputDirectory>xtend-gen</outputDirectory>
-</configuration>
-</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t/src/configuration/M2TTransformation.java b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t/src/configuration/M2TTransformation.java
index a54b35f..6fd2684 100644
--- a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t/src/configuration/M2TTransformation.java
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t/src/configuration/M2TTransformation.java
@@ -17,7 +17,6 @@
import java.util.Properties;
-import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.eclipse.app4mc.amalthea.model.AmaltheaFactory;
import org.eclipse.app4mc.transformation.extensions.executiontype.IModelToTextConfig;
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t/src/templates/AmaltheaModel2TextTransformer.xtend b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t/src/templates/AmaltheaModel2TextTransformer.xtend
index 4fb9079..aea52ce 100644
--- a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t/src/templates/AmaltheaModel2TextTransformer.xtend
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t/src/templates/AmaltheaModel2TextTransformer.xtend
@@ -26,7 +26,7 @@
for (model : resource.contents) {
// TODO: model is a Amalthea model
// check javadoc : https://www.eclipse.org/xtend/documentation/204_activeannotations.html#active-annotations-expression
- logger.info("Processing file : " + resource.URI)
+ getLogger.info("Processing file : " + resource.URI)
var String outputFolder = getProperty("m2t_output_folder");
val textGenerator = new M2T_Output_Transformer
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t/src/templates/M2T_Output_Transformer.xtend b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t/src/templates/M2T_Output_Transformer.xtend
index 315f827..b3186c5 100644
--- a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t/src/templates/M2T_Output_Transformer.xtend
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.m2t/src/templates/M2T_Output_Transformer.xtend
@@ -12,9 +12,8 @@
package templates
import org.eclipse.app4mc.amalthea.model.Amalthea
-import org.eclipse.app4mc.amalthea.model.CallSequence
+import org.eclipse.app4mc.amalthea.model.RunnableCall
import org.eclipse.app4mc.amalthea.model.Task
-import org.eclipse.app4mc.amalthea.model.TaskRunnableCall
import org.eclipse.app4mc.amalthea.model.util.ModelUtil
import org.eclipse.app4mc.amalthea.model.util.SoftwareUtil
import org.eclipse.app4mc.transformation.extensions.base.templates.AbstractTransformer
@@ -33,14 +32,10 @@
-----------------------------------------------
Task: «task.name»
- «var graphEntries=task.callGraph.graphEntries»
+ «var graphEntries=task.activityGraph.items»
«FOR graphEntry: graphEntries»
- «IF graphEntry instanceof CallSequence»
- «FOR runnableItem: graphEntry.calls»
- «IF runnableItem instanceof TaskRunnableCall»
- Associated Runnable: «(runnableItem as TaskRunnableCall).runnable.name»
- «ENDIF»
- «ENDFOR»
+ «IF graphEntry instanceof RunnableCall»
+ Associated Runnable: «(graphEntry as RunnableCall).runnable.name»
«ENDIF»
«ENDFOR»
«ENDFOR»
@@ -68,8 +63,8 @@
'''
def runnableNamesOf(Task task) {
- SoftwareUtil.collectCalls(task, null, [e | e instanceof TaskRunnableCall])
- .map[e | (e as TaskRunnableCall).runnable.name]
+ SoftwareUtil.collectActivityGraphItems(task.activityGraph, null, [e | e instanceof RunnableCall])
+ .map[e | (e as RunnableCall).runnable.name]
.sort
}
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.samplemodel/.gitignore b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.samplemodel/.gitignore
deleted file mode 100644
index d3fb94c..0000000
--- a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.samplemodel/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/bin/
-/target/
-/xtend-gen/
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.samplemodel/META-INF/MANIFEST.MF b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.samplemodel/META-INF/MANIFEST.MF
index 338dbe4..580b7eb 100644
--- a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.samplemodel/META-INF/MANIFEST.MF
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.samplemodel/META-INF/MANIFEST.MF
@@ -13,3 +13,4 @@
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.emf.ecore;visibility:=reexport
Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: app4mc.example.transform.samplemodel
diff --git a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.samplemodel/pom.xml b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.samplemodel/pom.xml
index d7d20a7..b60274e 100644
--- a/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.samplemodel/pom.xml
+++ b/eclipse-tools/model-transformation/examples/sample-model-transformation/app4mc.example.transform.samplemodel/pom.xml
@@ -4,17 +4,16 @@
<modelVersion>4.0.0</modelVersion>
-
<parent>
- <relativePath>../../../build/org.eclipse.app4mc.transformation.build/pom.xml</relativePath>
+ <relativePath>../../../pom.xml</relativePath>
<groupId>org.eclipse.app4mc.transformation</groupId>
- <artifactId>org.eclipse.app4mc.transformation.build</artifactId>
+ <artifactId>parent</artifactId>
<version>0.3.0-SNAPSHOT</version>
</parent>
<properties>
- <plugin-id>app4mc.example.transform.samplemodel</plugin-id>
- <examples-installer-location>../../../build/org.eclipse.app4mc.transformation.examples.installer</examples-installer-location>
+ <plugin-id>app4mc.example.transform.samplemodel</plugin-id>
+ <examples-installer-location>../../../releng/org.eclipse.app4mc.transformation.examples.installer</examples-installer-location>
</properties>
diff --git a/eclipse-tools/model-transformation/features/.gitignore b/eclipse-tools/model-transformation/features/.gitignore
deleted file mode 100644
index d3fb94c..0000000
--- a/eclipse-tools/model-transformation/features/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/bin/
-/target/
-/xtend-gen/
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/features/org.eclipse.app4mc.transformation.3rdparty.feature/.gitignore b/eclipse-tools/model-transformation/features/org.eclipse.app4mc.transformation.3rdparty.feature/.gitignore
deleted file mode 100644
index d3fb94c..0000000
--- a/eclipse-tools/model-transformation/features/org.eclipse.app4mc.transformation.3rdparty.feature/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/bin/
-/target/
-/xtend-gen/
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/features/org.eclipse.app4mc.transformation.3rdparty.feature/pom.xml b/eclipse-tools/model-transformation/features/org.eclipse.app4mc.transformation.3rdparty.feature/pom.xml
deleted file mode 100644
index adf4d71..0000000
--- a/eclipse-tools/model-transformation/features/org.eclipse.app4mc.transformation.3rdparty.feature/pom.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <relativePath>../../build/org.eclipse.app4mc.transformation.build/pom.xml</relativePath>
- <groupId>org.eclipse.app4mc.transformation</groupId>
- <artifactId>org.eclipse.app4mc.transformation.build</artifactId>
- <version>0.3.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>org.eclipse.app4mc.transformation.3rdparty.feature</artifactId>
- <packaging>eclipse-feature</packaging>
-
-</project>
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/features/org.eclipse.app4mc.transformation.core.feature/.gitignore b/eclipse-tools/model-transformation/features/org.eclipse.app4mc.transformation.core.feature/.gitignore
deleted file mode 100644
index d3fb94c..0000000
--- a/eclipse-tools/model-transformation/features/org.eclipse.app4mc.transformation.core.feature/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/bin/
-/target/
-/xtend-gen/
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/features/org.eclipse.app4mc.transformation.core.feature/pom.xml b/eclipse-tools/model-transformation/features/org.eclipse.app4mc.transformation.core.feature/pom.xml
deleted file mode 100644
index a188162..0000000
--- a/eclipse-tools/model-transformation/features/org.eclipse.app4mc.transformation.core.feature/pom.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
-
-
- <parent>
- <relativePath>../../build/org.eclipse.app4mc.transformation.build/pom.xml</relativePath>
- <groupId>org.eclipse.app4mc.transformation</groupId>
- <artifactId>org.eclipse.app4mc.transformation.build</artifactId>
- <version>0.3.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>org.eclipse.app4mc.transformation.core.feature</artifactId>
- <packaging>eclipse-feature</packaging>
-
-</project>
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/features/org.eclipse.app4mc.transformation.examples.feature/.gitignore b/eclipse-tools/model-transformation/features/org.eclipse.app4mc.transformation.examples.feature/.gitignore
deleted file mode 100644
index d3fb94c..0000000
--- a/eclipse-tools/model-transformation/features/org.eclipse.app4mc.transformation.examples.feature/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/bin/
-/target/
-/xtend-gen/
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/features/org.eclipse.app4mc.transformation.examples.feature/pom.xml b/eclipse-tools/model-transformation/features/org.eclipse.app4mc.transformation.examples.feature/pom.xml
deleted file mode 100644
index 898fd52..0000000
--- a/eclipse-tools/model-transformation/features/org.eclipse.app4mc.transformation.examples.feature/pom.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <relativePath>../../build/org.eclipse.app4mc.transformation.build/pom.xml</relativePath>
- <groupId>org.eclipse.app4mc.transformation</groupId>
- <artifactId>org.eclipse.app4mc.transformation.build</artifactId>
- <version>0.3.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>org.eclipse.app4mc.transformation.examples.feature</artifactId>
- <packaging>eclipse-feature</packaging>
-
-</project>
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/.gitignore b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/.gitignore
deleted file mode 100644
index d3fb94c..0000000
--- a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/bin/
-/target/
-/xtend-gen/
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/META-INF/MANIFEST.MF b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/META-INF/MANIFEST.MF
index 3ade288..735dc74 100644
--- a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/META-INF/MANIFEST.MF
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/META-INF/MANIFEST.MF
@@ -17,3 +17,4 @@
org.eclipse.app4mc.transformation.extensions
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Export-Package: org.eclipse.app4mc.transformation.application.base
+Automatic-Module-Name: org.eclipse.app4mc.transformation.application
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/pom.xml b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/pom.xml
deleted file mode 100644
index ab3a4d9..0000000
--- a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/pom.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <relativePath>../../build/org.eclipse.app4mc.transformation.build/pom.xml</relativePath>
- <groupId>org.eclipse.app4mc.transformation</groupId>
- <artifactId>org.eclipse.app4mc.transformation.build</artifactId>
- <version>0.3.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>org.eclipse.app4mc.transformation.application</artifactId>
- <packaging>eclipse-plugin</packaging>
-
-
-
- <build>
- <plugins>
-
-
- <plugin>
- <groupId>org.eclipse.xtend</groupId>
- <artifactId>xtend-maven-plugin</artifactId>
- <version>2.14.0</version>
- <executions>
- <execution>
- <goals>
- <goal>compile</goal>
- <goal>xtend-install-debug-info</goal>
- <goal>testCompile</goal>
- <goal>xtend-test-install-debug-info</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <outputDirectory>xtend-gen</outputDirectory>
- </configuration>
-
- </plugin>
-
-
-
- </plugins>
- </build>
-
-
-</project>
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/src/org/eclipse/app4mc/transformation/application/base/Application.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/src/org/eclipse/app4mc/transformation/application/base/Application.java
index c0b8a2d..2f5267b 100644
--- a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/src/org/eclipse/app4mc/transformation/application/base/Application.java
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/src/org/eclipse/app4mc/transformation/application/base/Application.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2018-2019 Robert Bosch GmbH.
+ * Copyright (c) 2018-2020 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -53,7 +53,7 @@
System.out.println(
"ERROR !! Unable to start transformation as required parameters are not set in input properties file");
- return new Integer(-1);
+ return Integer.valueOf(-1);
}
return IApplication.EXIT_OK;
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/src/org/eclipse/app4mc/transformation/application/base/ExecuteTransformation.xtend b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/src/org/eclipse/app4mc/transformation/application/base/ExecuteTransformation.xtend
index 545ca6b..cacccc3 100644
--- a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/src/org/eclipse/app4mc/transformation/application/base/ExecuteTransformation.xtend
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/src/org/eclipse/app4mc/transformation/application/base/ExecuteTransformation.xtend
@@ -25,7 +25,6 @@
import org.eclipse.app4mc.transformation.extensions.CustomObjectsStore
import org.eclipse.app4mc.transformation.extensions.base.templates.Model2ModelRootTransformer
import org.eclipse.app4mc.transformation.extensions.base.templates.Model2TextRootTransformer
-import org.eclipse.app4mc.transformation.extensions.base.templates.AbstractTransformer
class ExecuteTransformation {
@@ -68,6 +67,8 @@
Model2ModelRootTransformer.injector=injector
+ Model2ModelRootTransformer.logger=logger
+
model2ModelTransformer.m2mTransformation(m2mConfig.inputResourceSet, m2mConfig.ouputResourceSet)
}
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/.gitignore b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/.gitignore
deleted file mode 100644
index d3fb94c..0000000
--- a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/bin/
-/target/
-/xtend-gen/
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/META-INF/MANIFEST.MF b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/META-INF/MANIFEST.MF
index 91d0593..548cb93 100644
--- a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/META-INF/MANIFEST.MF
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/META-INF/MANIFEST.MF
@@ -15,3 +15,4 @@
Export-Package: org.eclipse.app4mc.transformation.extensions,
org.eclipse.app4mc.transformation.extensions.base.templates,
org.eclipse.app4mc.transformation.extensions.executiontype
+Automatic-Module-Name: org.eclipse.app4mc.transformation.extensions
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/pom.xml b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/pom.xml
deleted file mode 100644
index 47d9ea1..0000000
--- a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/pom.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <relativePath>../../build/org.eclipse.app4mc.transformation.build/pom.xml</relativePath>
- <groupId>org.eclipse.app4mc.transformation</groupId>
- <artifactId>org.eclipse.app4mc.transformation.build</artifactId>
- <version>0.3.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>org.eclipse.app4mc.transformation.extensions</artifactId>
- <packaging>eclipse-plugin</packaging>
-
-
-
- <build>
- <plugins>
-
- <plugin>
- <groupId>org.eclipse.xtend</groupId>
- <artifactId>xtend-maven-plugin</artifactId>
- <version>2.14.0</version>
- <executions>
- <execution>
- <goals>
- <goal>compile</goal>
- <goal>xtend-install-debug-info</goal>
- <goal>testCompile</goal>
- <goal>xtend-test-install-debug-info</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <outputDirectory>xtend-gen</outputDirectory>
- </configuration>
- </plugin>
-
-
-
- </plugins>
- </build>
-</project>
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/src/org/eclipse/app4mc/transformation/extensions/base/templates/AbstractTransformer.xtend b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/src/org/eclipse/app4mc/transformation/extensions/base/templates/AbstractTransformer.xtend
index 4e3c3a1..e414204 100644
--- a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/src/org/eclipse/app4mc/transformation/extensions/base/templates/AbstractTransformer.xtend
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/src/org/eclipse/app4mc/transformation/extensions/base/templates/AbstractTransformer.xtend
@@ -27,7 +27,7 @@
static public CustomObjectsStore customObjsStore = new CustomObjectsStore
- static private Logger logger
+ static public Logger logger
static public Properties properties
diff --git a/eclipse-tools/model-transformation/pom.xml b/eclipse-tools/model-transformation/pom.xml
new file mode 100644
index 0000000..5a96e20
--- /dev/null
+++ b/eclipse-tools/model-transformation/pom.xml
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.eclipse.app4mc.transformation</groupId>
+ <artifactId>parent</artifactId>
+ <version>0.3.0-SNAPSHOT</version>
+
+ <packaging>pom</packaging>
+
+ <name>Model Transformation</name>
+
+ <properties>
+ <tycho.version>1.6.0</tycho.version>
+
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+ </properties>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <id>cbi</id>
+ <url>https://repo.eclipse.org/content/repositories/cbi-releases/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+
+ <modules>
+
+ <!-- example plugins -->
+ <module>examples/sample-model-transformation/app4mc.example.transform.samplemodel</module>
+ <module>examples/sample-model-transformation/app4mc.example.transform.m2m</module>
+ <module>examples/sample-model-transformation/app4mc.example.transform.m2t</module>
+ <module>examples/sample-model-transformation/app4mc.example.transform.app</module>
+
+ <!-- Amlt2Inchron transformation plugins -->
+ <!--
+ <module>examples/amlt2inchron/com.inchron.realtime.root</module>
+ <module>examples/amlt2inchron/org.eclipse.app4mc.transform.to.inchron.app</module>
+ <module>examples/amlt2inchron/org.eclipse.app4mc.transform.to.inchron.m2m</module>
+ <module>examples/amlt2inchron/org.eclipse.app4mc.transformation.3rdparty.libs</module>
+ -->
+
+ <!-- core -->
+ <module>plugins</module>
+ <module>features</module>
+ <module>releng</module>
+ </modules>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.xtend</groupId>
+ <artifactId>xtend-maven-plugin</artifactId>
+ <version>2.20.0</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>compile</goal>
+ <goal>xtend-install-debug-info</goal>
+ <goal>testCompile</goal>
+ <goal>xtend-test-install-debug-info</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <outputDirectory>${basedir}/xtend-gen</outputDirectory>
+ <testOutputDirectory>${basedir}/xtend-gen</testOutputDirectory>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-maven-plugin</artifactId>
+ <version>${tycho.version}</version>
+ <extensions>true</extensions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-compiler-plugin</artifactId>
+ <version>${tycho.version}</version>
+ <configuration>
+ <verbose>true</verbose>
+ <source>1.8</source>
+ <target>1.8</target>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>target-platform-configuration</artifactId>
+ <version>${tycho.version}</version>
+ <configuration>
+ <environments>
+ <environment>
+ <os>linux</os>
+ <ws>gtk</ws>
+ <arch>x86_64</arch>
+ </environment>
+ <environment>
+ <os>win32</os>
+ <ws>win32</ws>
+ <arch>x86_64</arch>
+ </environment>
+ <environment>
+ <os>macosx</os>
+ <ws>cocoa</ws>
+ <arch>x86_64</arch>
+ </environment>
+ </environments>
+
+ <target>
+ <artifact>
+ <groupId>org.eclipse.app4mc.transformation</groupId>
+ <artifactId>org.eclipse.app4mc.transformation.target</artifactId>
+ <version>0.3.0-SNAPSHOT</version>
+ </artifact>
+ </target>
+ <targetDefinitionIncludeSource>honor</targetDefinitionIncludeSource>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-surefire-plugin</artifactId>
+ <version>${tycho.version}</version>
+ <configuration>
+ <!-- argLine>${tycho.testArgLine}</argLine> -->
+ <forkMode>never</forkMode>
+ <includes>
+ <include>**/*Test.*</include>
+ </includes>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-source-plugin</artifactId>
+ <version>${tycho.version}</version>
+
+ <executions>
+ <execution>
+ <id>plugin-source</id>
+ <goals>
+ <goal>plugin-source</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-clean-plugin</artifactId>
+ <version>3.0.0</version>
+ <configuration>
+ <filesets>
+ <fileset>
+ <directory>${basedir}</directory>
+ <includes>
+ <include>**/xtend-gen/**</include>
+ </includes>
+ <followSymlinks>false</followSymlinks>
+ </fileset>
+ </filesets>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>sign</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.cbi.maven.plugins</groupId>
+ <artifactId>eclipse-jarsigner-plugin</artifactId>
+ <version>1.1.3</version>
+ <executions>
+ <execution>
+ <id>sign</id>
+ <phase>package</phase>
+ <goals>
+ <goal>sign</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
diff --git a/eclipse-tools/model-transformation/build/dev_utils/.project b/eclipse-tools/model-transformation/releng/dev_utils/.project
similarity index 100%
rename from eclipse-tools/model-transformation/build/dev_utils/.project
rename to eclipse-tools/model-transformation/releng/dev_utils/.project
diff --git a/eclipse-tools/model-transformation/releng/dev_utils/workingSets.psf b/eclipse-tools/model-transformation/releng/dev_utils/workingSets.psf
new file mode 100644
index 0000000..7d81ca4
--- /dev/null
+++ b/eclipse-tools/model-transformation/releng/dev_utils/workingSets.psf
@@ -0,0 +1,41 @@
+<psf version="2.0">
+<workingSets editPageId="org.eclipse.jdt.ui.JavaWorkingSetPage" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1529215332641_1" label="transformation.framework" name="transformation.framework">
+<item elementID="=org.eclipse.app4mc.transformation.application" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory" />
+<item elementID="=org.eclipse.app4mc.transformation.extensions" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory" />
+<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/org.eclipse.app4mc.transformation.core.feature" type="4" />
+<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/org.eclipse.app4mc.transformation.3rdparty.feature" type="4" />
+</workingSets>
+<workingSets editPageId="org.eclipse.jdt.ui.JavaWorkingSetPage" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1529215338148_2" label="inchron.transformation" name="inchron.transformation">
+<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/org.eclipse.app4mc.transformation.to.inchron.feature" type="4" />
+<item elementID="=org.eclipse.app4mc.transform.to.inchron.app" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory" />
+<item elementID="=org.eclipse.app4mc.transform.to.inchron.m2m" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory" />
+<item elementID="=org.eclipse.app4mc.transformation.3rdparty.libs" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory" />
+<item elementID="=com.inchron.realtime.root" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory" />
+<item elementID="=org.eclipse.app4mc.transform.to.inchron.product" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory" />
+</workingSets>
+<workingSets editPageId="org.eclipse.jdt.ui.JavaWorkingSetPage" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1529439029677_8" label="sample.model.transformation.example" name="sample.model.transformation.example">
+<item elementID="=app4mc.example.transform.app" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory" />
+<item elementID="=app4mc.example.transform.m2m" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory" />
+<item elementID="=app4mc.example.transform.m2t" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory" />
+<item elementID="=app4mc.example.transform.samplemodel" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory" />
+<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/org.eclipse.app4mc.transformation.examples.feature" type="4" />
+</workingSets>
+
+<workingSets editPageId="org.eclipse.jdt.ui.JavaWorkingSetPage" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1529439029677_24" label="sample.model.transformation.example.customization" name="sample.model.transformation.example.customization">
+<item elementID="=app4m.example.transform.cust.app" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory" />
+<item elementID="=app4mc.example.transform.m2t.cust" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory" />
+</workingSets>
+
+
+<workingSets editPageId="org.eclipse.jdt.ui.JavaWorkingSetPage" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1529914625380_12" label="build" name="build">
+<item elementID="=org.eclipse.app4mc.transformation.examples.installer" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory" />
+<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/org.eclipse.app4mc.transformation.p2repo" type="4" />
+<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/dev_utils" type="4" />
+<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/org.eclipse.app4mc.transformation.target" type="4" />
+</workingSets>
+<workingSets editPageId="org.eclipse.jdt.ui.JavaWorkingSetPage" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1529915202554_18" label="Examples_Builders" name="Examples_Builders">
+<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/org.eclipse.app4mc.transformation.examples.feature" type="4" />
+<item elementID="=org.eclipse.app4mc.transformation.examples.installer" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory" />
+</workingSets>
+<workingSets editPageId="org.eclipse.jdt.ui.JavaWorkingSetPage" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1529915327977_23" label="features" name="features" />
+</psf>
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/.classpath b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/.classpath
similarity index 100%
rename from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/.classpath
rename to eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/.classpath
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/.gitignore b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/.gitignore
similarity index 100%
rename from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/.gitignore
rename to eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/.gitignore
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/.project b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/.project
similarity index 100%
rename from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/.project
rename to eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/.project
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/.settings/org.eclipse.jdt.core.prefs b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/.settings/org.eclipse.jdt.core.prefs
similarity index 100%
rename from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/.settings/org.eclipse.jdt.core.prefs
rename to eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/.settings/org.eclipse.jdt.core.prefs
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/META-INF/MANIFEST.MF b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/META-INF/MANIFEST.MF
similarity index 81%
rename from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/META-INF/MANIFEST.MF
rename to eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/META-INF/MANIFEST.MF
index 8ffc518..a845380 100644
--- a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/META-INF/MANIFEST.MF
+++ b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/META-INF/MANIFEST.MF
@@ -6,3 +6,4 @@
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Require-Bundle: org.eclipse.emf.common.ui
Bundle-Vendor: Eclipse APP4MC
+Automatic-Module-Name: org.eclipse.app4mc.transformation.examples.installer
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/about.html b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/about.html
similarity index 100%
rename from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/about.html
rename to eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/about.html
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/build.properties b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/build.properties
similarity index 94%
rename from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/build.properties
rename to eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/build.properties
index 4d179bc..42bd0cb 100644
--- a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/build.properties
+++ b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/build.properties
@@ -18,9 +18,7 @@
epl-2.0.html
src.includes = examples/,\
icons/,\
- pom.xml,\
copyExampleLib.ant,\
about.html,\
- launch/,\
generateTransformationExamplesBuilders.ant,\
epl-2.0.html
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/copyExampleLib.ant b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/copyExampleLib.ant
similarity index 100%
rename from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/copyExampleLib.ant
rename to eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/copyExampleLib.ant
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/epl-2.0.html b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/epl-2.0.html
similarity index 100%
rename from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/epl-2.0.html
rename to eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/epl-2.0.html
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/generateTransformationExamplesBuilders.ant b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/generateTransformationExamplesBuilders.ant
similarity index 100%
rename from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/generateTransformationExamplesBuilders.ant
rename to eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/generateTransformationExamplesBuilders.ant
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/icons/full/ctool16/NewEMFExample.gif b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/icons/full/ctool16/NewEMFExample.gif
similarity index 100%
rename from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/icons/full/ctool16/NewEMFExample.gif
rename to eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/icons/full/ctool16/NewEMFExample.gif
Binary files differ
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/icons/full/wizban/NewEMFExample.gif b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/icons/full/wizban/NewEMFExample.gif
similarity index 100%
rename from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/icons/full/wizban/NewEMFExample.gif
rename to eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/icons/full/wizban/NewEMFExample.gif
Binary files differ
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/org.eclipse.app4mc.transformation.examples.installer generateTransformationExamplesBuilders.ant.launch b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/org.eclipse.app4mc.transformation.examples.installer generateTransformationExamplesBuilders.ant.launch
similarity index 100%
rename from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/org.eclipse.app4mc.transformation.examples.installer generateTransformationExamplesBuilders.ant.launch
rename to eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/org.eclipse.app4mc.transformation.examples.installer generateTransformationExamplesBuilders.ant.launch
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/plugin.properties b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/plugin.properties
similarity index 100%
rename from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/plugin.properties
rename to eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/plugin.properties
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/plugin.xml b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/plugin.xml
similarity index 100%
rename from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.examples.installer/plugin.xml
rename to eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.examples.installer/plugin.xml
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.p2repo/.project b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.p2repo/.project
similarity index 100%
rename from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.p2repo/.project
rename to eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.p2repo/.project
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.p2repo/about.html b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.p2repo/about.html
similarity index 100%
rename from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.p2repo/about.html
rename to eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.p2repo/about.html
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.p2repo/category.xml b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.p2repo/category.xml
similarity index 72%
rename from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.p2repo/category.xml
rename to eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.p2repo/category.xml
index de17901..3cdc72e 100644
--- a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.p2repo/category.xml
+++ b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.p2repo/category.xml
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<site>
<feature url="features/org.eclipse.app4mc.transformation.core.feature_0.3.0.qualifier.jar" id="org.eclipse.app4mc.transformation.core.feature" version="0.3.0.qualifier">
- <category name="APP4MC EMF model Transformation"/>
+ <category name="APP4MC EMF Model Transformation"/>
</feature>
<feature url="features/org.eclipse.app4mc.transformation.examples.feature_0.3.0.qualifier.jar" id="org.eclipse.app4mc.transformation.examples.feature" version="0.3.0.qualifier">
- <category name="APP4MC EMF model Transformation"/>
+ <category name="APP4MC EMF Model Transformation"/>
</feature>
- <category-def name="APP4MC EMF model Transformation" label="org.eclipse.app4mc.transformation.p2repo"/>
+ <category-def name="APP4MC EMF Model Transformation" label="org.eclipse.app4mc.transformation.p2repo"/>
</site>
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.p2repo/epl-2.0.html b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.p2repo/epl-2.0.html
similarity index 100%
rename from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.p2repo/epl-2.0.html
rename to eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.p2repo/epl-2.0.html
diff --git a/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.p2repo/pom.xml b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.p2repo/pom.xml
new file mode 100644
index 0000000..f83d361
--- /dev/null
+++ b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.p2repo/pom.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>org.eclipse.app4mc.transformation.p2repo</artifactId>
+
+ <packaging>eclipse-repository</packaging>
+
+ <parent>
+ <relativePath>../../pom.xml</relativePath>
+ <groupId>org.eclipse.app4mc.transformation</groupId>
+ <artifactId>parent</artifactId>
+ <version>0.3.0-SNAPSHOT</version>
+ </parent>
+</project>
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.p2repo/siteTemplate/index.html b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.p2repo/siteTemplate/index.html
similarity index 100%
rename from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.p2repo/siteTemplate/index.html
rename to eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.p2repo/siteTemplate/index.html
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.build/.project b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.target/.project
similarity index 76%
rename from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.build/.project
rename to eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.target/.project
index e5155e4..961dcee 100644
--- a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.build/.project
+++ b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.target/.project
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>org.eclipse.app4mc.transformation.build</name>
+ <name>org.eclipse.app4mc.transformation.target</name>
<comment></comment>
<projects>
</projects>
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.p2repo/about.html b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.target/about.html
similarity index 100%
copy from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.p2repo/about.html
copy to eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.target/about.html
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.p2repo/epl-2.0.html b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.target/epl-2.0.html
similarity index 100%
copy from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.p2repo/epl-2.0.html
copy to eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.target/epl-2.0.html
diff --git a/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.target/org.eclipse.app4mc.transformation.target.target b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.target/org.eclipse.app4mc.transformation.target.target
new file mode 100644
index 0000000..5e21542
--- /dev/null
+++ b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.target/org.eclipse.app4mc.transformation.target.target
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde?>
+<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
+<target name="Model Transformation Target" sequenceNumber="1589780902">
+ <locations>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.sdk.ide" version="4.14.0.I20191210-0610"/>
+ <unit id="org.eclipse.emf.ecore.xcore.lib.feature.group" version="1.5.0.v20190401-0856"/>
+ <unit id="org.eclipse.emf.sdk.feature.group" version="2.20.0.v20191028-0905"/>
+ <unit id="org.eclipse.emf.transaction.feature.group" version="1.12.0.201805140824"/>
+ <unit id="org.eclipse.emf.validation.feature.group" version="1.12.1.201812070911"/>
+ <unit id="org.eclipse.emf.workspace.feature.group" version="1.12.0.201805140824"/>
+ <unit id="org.eclipse.xtext.runtime.feature.group" version="2.20.0.v20191202-1256"/>
+ <unit id="org.eclipse.xtext.sdk.feature.group" version="2.20.0.v20191202-1256"/>
+ <unit id="org.eclipse.xtext.xbase.feature.group" version="2.20.0.v20191202-1256"/>
+ <unit id="org.eclipse.xtext.xbase.lib.feature.group" version="2.20.0.v20191202-0910"/>
+ <unit id="org.eclipse.xtend.sdk.feature.group" version="2.20.0.v20191202-1256"/>
+ <unit id="org.eclipse.xpand.sdk.feature.group" version="2.2.0.v201605260315"/>
+ <unit id="org.apache.commons.cli" version="1.2.0.v201404270220"/>
+ <unit id="org.apache.commons.lang" version="2.6.0.v201404270220"/>
+ <unit id="org.apache.log4j" version="1.2.15.v201012070815"/>
+ <unit id="org.apache.xerces" version="2.9.0.v201101211617"/>
+ <unit id="org.apache.xalan" version="2.7.1.v201005080400"/>
+ <unit id="org.apache.xml.resolver" version="1.2.0.v201005080400"/>
+ <unit id="org.apache.xml.serializer" version="2.7.1.v201005080400"/>
+ <unit id="javax.xml" version="1.3.4.v201005080400"/>
+ <unit id="org.jdom" version="1.1.1.v201101151400"/>
+ <unit id="com.google.guava" version="27.1.0.v20190517-1946"/>
+ <unit id="com.google.inject" version="3.0.0.v201605172100"/>
+ <repository location="http://download.eclipse.org/releases/2019-12"/>
+ </location>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.app4mc.platform.sdk.feature.group" version="0.9.8.202004301410"/>
+ <repository location="http://download.eclipse.org/app4mc/updatesites/releases/0.9.8"/>
+ </location>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.sphinx.sdk.feature.group" version="0.11.2.201802230805"/>
+ <repository location="http://download.eclipse.org/sphinx/updates/0.11.x"/>
+ </location>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.license.feature.group" version="2.0.2.v20181016-2210"/>
+ <repository location="http://download.eclipse.org/cbi/updates/license"/>
+ </location>
+ </locations>
+</target>
diff --git a/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.target/org.eclipse.app4mc.transformation.target.tpd b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.target/org.eclipse.app4mc.transformation.target.tpd
new file mode 100644
index 0000000..1b99f40
--- /dev/null
+++ b/eclipse-tools/model-transformation/releng/org.eclipse.app4mc.transformation.target/org.eclipse.app4mc.transformation.target.tpd
@@ -0,0 +1,41 @@
+target "Model Transformation Target"
+
+with source allEnvironments
+
+location "http://download.eclipse.org/releases/2019-12" {
+ org.eclipse.sdk.ide
+ org.eclipse.emf.ecore.xcore.lib.feature.group
+ org.eclipse.emf.sdk.feature.group
+ org.eclipse.emf.transaction.feature.group
+ org.eclipse.emf.validation.feature.group
+ org.eclipse.emf.workspace.feature.group
+ org.eclipse.xtext.runtime.feature.group
+ org.eclipse.xtext.sdk.feature.group
+ org.eclipse.xtext.xbase.feature.group
+ org.eclipse.xtext.xbase.lib.feature.group
+ org.eclipse.xtend.sdk.feature.group
+ org.eclipse.xpand.sdk.feature.group
+ org.apache.commons.cli
+ org.apache.commons.lang
+ org.apache.log4j
+ org.apache.xerces
+ org.apache.xalan
+ org.apache.xml.resolver
+ org.apache.xml.serializer
+ javax.xml
+ org.jdom
+ com.google.guava
+ com.google.inject
+}
+
+location "http://download.eclipse.org/app4mc/updatesites/releases/0.9.8" {
+ org.eclipse.app4mc.platform.sdk.feature.group
+}
+
+location "http://download.eclipse.org/sphinx/updates/0.11.x" {
+ org.eclipse.sphinx.sdk.feature.group
+}
+
+location "http://download.eclipse.org/cbi/updates/license" {
+ org.eclipse.license.feature.group
+}
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/.gitignore b/eclipse-tools/sca2amalthea/.gitignore
new file mode 100644
index 0000000..f1c734e
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/.gitignore
@@ -0,0 +1,5 @@
+.metadata/
+
+# Eclipse target directories
+bin/
+target/
diff --git a/eclipse-tools/sca2amalthea/.mvn/extensions.xml b/eclipse-tools/sca2amalthea/.mvn/extensions.xml
new file mode 100644
index 0000000..710a9ec
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/.mvn/extensions.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<extensions>
+ <extension>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-pomless</artifactId>
+ <version>1.6.0</version>
+ </extension>
+</extensions>
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/.gitignore b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/.gitignore
deleted file mode 100644
index 24d6437..0000000
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/.project b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/.project
deleted file mode 100644
index bbe6f6b..0000000
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/.project
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.app4mc.sca2amalthea.build</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <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>
- </natures>
-</projectDescription>
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/META-INF/MANIFEST.MF b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/META-INF/MANIFEST.MF
deleted file mode 100644
index d4b56df..0000000
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Build
-Bundle-SymbolicName: org.eclipse.app4mc.sca2amalthea.build
-Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: Eclipse.org
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/build.properties b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/build.properties
deleted file mode 100644
index 037c534..0000000
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/build.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-bin.includes = META-INF/,\
- epl-2.0.html
-src.includes = epl-2.0.html
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/pom.xml b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/pom.xml
deleted file mode 100644
index b25d2cc..0000000
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/pom.xml
+++ /dev/null
@@ -1,202 +0,0 @@
-<project>
- <modelVersion>4.0.0</modelVersion>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.build</artifactId>
- <version>1.0.0.qualifier</version>
- <packaging>pom</packaging>
- <name>SCA2AMALTHEA</name>
-
- <properties>
- <tycho.version>0.22.0</tycho.version>
- <jacoco.version>0.7.4.201502262128</jacoco.version>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <mars-repo.url>http://download.eclipse.org/releases/mars</mars-repo.url>
- <amalthea-repo.url>http://download.eclipse.org/app4mc/updatesites/releases/0.8.1/</amalthea-repo.url>
- <orbit-repo.url>http://download.eclipse.org/tools/orbit/downloads/drops/R20150124073747/repository/</orbit-repo.url>
- <ease-repo-url>http://download.eclipse.org/ease/update/release</ease-repo-url>
- <sphinx-repo-url>http://download.eclipse.org/sphinx/updates/interim</sphinx-repo-url>
- </properties>
- <repositories>
-<repository>
- <id>amalthea</id>
- <url>${amalthea-repo.url}</url>
- <layout>p2</layout>
- </repository>
- <repository>
- <id>mars</id>
- <url>${mars-repo.url}</url>
- <layout>p2</layout>
- </repository>
- <repository>
- <id>orbit</id>
- <url>${orbit-repo.url}</url>
- <layout>p2</layout>
- </repository>
- <repository>
- <id>ease</id>
- <url>${ease-repo-url}</url>
- <layout>p2</layout>
- </repository>
- <repository>
- <id>sphinx</id>
- <url>${sphinx-repo-url}</url>
- <layout>p2</layout>
- </repository>
- </repositories>
-
-
- <modules>
- <!-- Plugins -->
-<module>../../plugins/org.eclipse.app4mc.sca.amalthea.loader</module>
-<module>../../plugins/org.eclipse.app4mc.sca.amalthea.model.utils</module>
-<module>../../plugins/org.eclipse.app4mc.sca.logging</module>
-<module>../../plugins/org.eclipse.app4mc.sca.scheduling.loader</module>
-<module>../../plugins/org.eclipse.app4mc.sca.ui</module>
-<module>../../plugins/org.eclipse.app4mc.sca.util</module>
-<module>../../plugins/org.eclipse.app4mc.sca2amalthea.exporter</module>
-<module>../../plugins/org.eclipse.app4mc.sca2amalthea.ir</module>
-<module>../../plugins/org.eclipse.app4mc.sca2amalthea.ir.loader</module>
-<module>../../plugins/org.eclipse.app4mc.sca2amalthea.llvm</module>
-<module>../../plugins/org.eclipse.app4mc.sca2amalthea.scairmodelenricher</module>
-<module>../../plugins/org.eclipse.app4mc.sca2amalthea.serialization</module>
-<module>../../plugins/org.eclipse.app4mc.sca2amalthea.ui</module>
-<module>../../plugins/org.eclipse.app4mc.sca2amalthea.utils</module>
-<module>../../plugins/org.eclipse.app4mc.sca2amalthea.docu</module>
-
-
- <!-- Tests -->
-
- <!-- Features -->
- <module>../../features/org.eclipse.app4mc.sca2amalthea.feature</module>
-<module>../../features/org.eclipse.app4mc.sca2amalthea.feature.sdk</module>
-
-
- <!-- P2Repo -->
- <module>../org.eclipse.app4mc.sca2amalthea.updatesite</module>
-
- </modules>
-
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.eclipse.tycho</groupId>
- <artifactId>tycho-maven-plugin</artifactId>
- <version>${tycho.version}</version>
- <extensions>true</extensions>
- <configuration>
-
- </configuration>
- </plugin>
-
- <plugin>
- <groupId>org.eclipse.tycho</groupId>
- <artifactId>tycho-compiler-plugin</artifactId>
- <version>${tycho.version}</version>
- <configuration>
- <verbose>true</verbose>
- <source>1.8</source>
- <target>1.8</target>
- </configuration>
- </plugin>
-
- <plugin>
- <groupId>org.eclipse.tycho</groupId>
- <artifactId>target-platform-configuration</artifactId>
- <version>${tycho.version}</version>
- <configuration>
- <dependency-resolution>
- <extraRequirements>
- <requirement>
- <type>eclipse-plugin</type>
- <id>org.hamcrest</id>
- <versionRange>0.0.0</versionRange>
- </requirement>
- </extraRequirements>
- </dependency-resolution>
- <environments>
- <environment>
- <os>linux</os>
- <ws>gtk</ws>
- <arch>x86</arch>
- </environment>
- <environment>
- <os>linux</os>
- <ws>gtk</ws>
- <arch>x86_64</arch>
- </environment>
- <environment>
- <os>win32</os>
- <ws>win32</ws>
- <arch>x86</arch>
- </environment>
- <environment>
- <os>win32</os>
- <ws>win32</ws>
- <arch>x86_64</arch>
- </environment>
- <environment>
- <os>macosx</os>
- <ws>cocoa</ws>
- <arch>x86_64</arch>
- </environment>
- </environments>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.eclipse.tycho</groupId>
- <artifactId>tycho-surefire-plugin</artifactId>
- <version>${tycho.version}</version>
- <configuration>
- <!-- argLine>${tycho.testArgLine}</argLine> -->
- <forkMode>never</forkMode>
- <includes>
- <include>**/*Test.*</include>
- </includes>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.jacoco</groupId>
- <artifactId>jacoco-maven-plugin</artifactId>
- <version>0.7.4.201502262128</version>
- <configuration>
- <excludes>
-
- </excludes>
- </configuration>
- <executions>
- <!-- Prepares the property pointing to the JaCoCo runtime agent which
- is passed as VM argument when Maven the Surefire plugin is executed. -->
- <execution>
- <id>pre-unit-test</id>
- <goals>
- <goal>prepare-agent</goal>
- </goals>
- <configuration>
- <!-- Sets the path to the file which contains the execution data. -->
- <destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile>
- </configuration>
- </execution>
- <!-- Ensures that the code coverage report for unit tests is created
- after unit tests have been run. -->
- <execution>
- <id>post-unit-test</id>
- <phase>verify</phase>
- <goals>
- <goal>report</goal>
- </goals>
- <configuration>
- <!-- Sets the path to the file which contains the execution data. -->
- <dataFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</dataFile>
- <!-- Sets the output directory for the code coverage report. -->
- <outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-
-
-</project>
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/.gitignore b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/.gitignore
deleted file mode 100644
index 24d6437..0000000
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/artifacts.jar b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/artifacts.jar
deleted file mode 100644
index f5e92c9..0000000
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/artifacts.jar
+++ /dev/null
Binary files differ
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/category.xml b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/category.xml
deleted file mode 100644
index 04780f3..0000000
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/category.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site>
- <feature url="features/org.eclipse.app4mc.sca2amalthea.feature_1.0.0.qualifier.jar" id="org.eclipse.app4mc.sca2amalthea.feature" version="1.0.0.qualifier">
- <category name="SCA2AMALTHEA"/>
- </feature>
- <feature url="features/org.eclipse.app4mc.sca2amalthea.feature.sdk_1.0.0.qualifier.jar" id="org.eclipse.app4mc.sca2amalthea.feature.sdk" version="1.0.0.qualifier">
- <category name="SCA2AMALTHEA"/>
- </feature>
- <category-def name="SCA2AMALTHEA" label="SCA2AMALTHEA"/>
-</site>
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/content.jar b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/content.jar
deleted file mode 100644
index c45a41d..0000000
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/content.jar
+++ /dev/null
Binary files differ
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/features/org.eclipse.app4mc.sca2amalthea.feature.sdk_1.0.0.201708181120.jar b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/features/org.eclipse.app4mc.sca2amalthea.feature.sdk_1.0.0.201708181120.jar
deleted file mode 100644
index 2e9ed7c..0000000
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/features/org.eclipse.app4mc.sca2amalthea.feature.sdk_1.0.0.201708181120.jar
+++ /dev/null
Binary files differ
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/features/org.eclipse.app4mc.sca2amalthea.feature_1.0.0.201708181120.jar b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/features/org.eclipse.app4mc.sca2amalthea.feature_1.0.0.201708181120.jar
deleted file mode 100644
index 65d1d95..0000000
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/features/org.eclipse.app4mc.sca2amalthea.feature_1.0.0.201708181120.jar
+++ /dev/null
Binary files differ
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.exporter_1.0.0.201708181120.jar b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.exporter_1.0.0.201708181120.jar
deleted file mode 100644
index 430489c..0000000
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.exporter_1.0.0.201708181120.jar
+++ /dev/null
Binary files differ
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader_1.0.0.201708181120.jar b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader_1.0.0.201708181120.jar
deleted file mode 100644
index a20f8f4..0000000
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader_1.0.0.201708181120.jar
+++ /dev/null
Binary files differ
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.ir_0.1.0.201708181120.jar b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.ir_0.1.0.201708181120.jar
deleted file mode 100644
index 9dc3fff..0000000
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.ir_0.1.0.201708181120.jar
+++ /dev/null
Binary files differ
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.llvm_1.0.0.201708181120.jar b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.llvm_1.0.0.201708181120.jar
deleted file mode 100644
index 20b1e80..0000000
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.llvm_1.0.0.201708181120.jar
+++ /dev/null
Binary files differ
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.scairmodelenricher_1.0.0.201708181120.jar b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.scairmodelenricher_1.0.0.201708181120.jar
deleted file mode 100644
index 468843c..0000000
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.scairmodelenricher_1.0.0.201708181120.jar
+++ /dev/null
Binary files differ
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.serialization_1.0.0.201708181120.jar b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.serialization_1.0.0.201708181120.jar
deleted file mode 100644
index 9e4edd1..0000000
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.serialization_1.0.0.201708181120.jar
+++ /dev/null
Binary files differ
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.ui_1.0.0.201708181120.jar b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.ui_1.0.0.201708181120.jar
deleted file mode 100644
index 3cb4bf4..0000000
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.ui_1.0.0.201708181120.jar
+++ /dev/null
Binary files differ
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.utils_1.0.0.201708181120.jar b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.utils_1.0.0.201708181120.jar
deleted file mode 100644
index 79e2b0c..0000000
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.utils_1.0.0.201708181120.jar
+++ /dev/null
Binary files differ
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/pom.xml b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/pom.xml
deleted file mode 100644
index 56d78cd..0000000
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/pom.xml
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.build</artifactId>
- <version>1.0.0.qualifier</version>
- <relativePath>../../build/org.eclipse.app4mc.sca2amalthea.build</relativePath>
- </parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.updatesite</artifactId>
- <packaging>eclipse-repository</packaging>
-
-
-
- <properties>
- <org.jboss.tools.tycho-plugins.version>0.22.0</org.jboss.tools.tycho-plugins.version>
- </properties>
-
- <pluginRepositories>
- <pluginRepository>
- <id>jboss-public-repository-group</id>
- <name>JBoss Public Repository Group</name>
- <url>http://repository.jboss.org/nexus/content/groups/public/</url>
- </pluginRepository>
-
- <pluginRepository>
- <id>jboss-snapshots-repository</id>
- <name>JBoss Snapshots Repository</name>
- <url>https://repository.jboss.org/nexus/content/repositories/snapshots/</url>
- </pluginRepository>
- </pluginRepositories>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.eclipse.tycho</groupId>
- <artifactId>tycho-p2-repository-plugin</artifactId>
- <version>${tycho.version}</version>
-
- <configuration>
- <compress/>
- </configuration>
- </plugin>
-
-
- <plugin>
- <groupId>org.jboss.tools.tycho-plugins</groupId>
- <artifactId>repository-utils</artifactId>
- <version>${org.jboss.tools.tycho-plugins.version}</version>
-
- <executions>
- <execution>
- <id>generate-facade</id>
- <phase>package</phase>
-
- <goals>
- <goal>generate-repository-facade</goal>
- </goals>
-
- <configuration>
- <siteTemplateFolder>siteTemplate</siteTemplateFolder>
-
- <!-- Symbols are used while expanding index.html template -->
- <symbols>
- <update.site.name>${project.parent.name}</update.site.name>
- <target.eclipse.version>4.3.2</target.eclipse.version>
- </symbols>
-
- <associateSites>
- <!-- site>http://hudson.eclipse.org/hudson/job/damos-master/lastSuccessfulBuild/artifact/update-site</site>
- <site>http://download.eclipse.org/modeling/emf/emf/updates/releases</site>
- <site>http://download.eclipse.org/modeling/emf/compare/updates/releases</site>
- <site>http://download.eclipse.org/rmf/updates</site>
- <site>http://download.eclipse.org/sphinx/updates/interim</site>
- <site>http://download.eclipse.org/modeling/tmf/xtext/updates/composite/releases</site>
- <site>http://franca.github.io/franca/update_site/releases</site>
- <site>http://updates.yakindu.org/sct/kepler/releases</site>
-
- <site>http://download.eclipse.org/sphinx/updates/interim</site-->
- </associateSites>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-
-</project>
-
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/site.xml b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/site.xml
deleted file mode 100644
index a3feb82..0000000
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/site.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site>
- <feature url="features/org.eclipse.app4mc.sca2amalthea.feature_1.0.0.201708181120.jar" id="org.eclipse.app4mc.sca2amalthea.feature" version="1.0.0.201708181120">
- <category name="sca2amalthea Runtime"/>
- </feature>
- <feature url="features/org.eclipse.app4mc.sca2amalthea.feature.sdk_1.0.0.201708181120.jar" id="org.eclipse.app4mc.sca2amalthea.feature.sdk" version="1.0.0.201708181120">
- <category name="sca2amalthea sdk"/>
- </feature>
- <category-def name="sca2amalthea Runtime" label="sca2amalthea Runtime"/>
- <category-def name="sca2amalthea sdk" label="sca2amalthea sdk"/>
-</site>
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/siteTemplate/index.html b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/siteTemplate/index.html
deleted file mode 100644
index bb3363d..0000000
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/siteTemplate/index.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<html>
- <head>
- <title>${update.site.name} Update Site</title>
- </head>
-
- <body marginheight="0" marginwidth="0" leftmargin="0" topmargin="0">
-
- <h2 class="title">${update.site.name} - Use this URL in Eclipse to install ${update.site.name}</h2>
-
- <p>This is the Update Site for ${update.site.name}.
- <ol>
- <li>To install ${update.site.name} from this site, start up Eclipse ${target.eclipse.version}, then do:
- <ul><code><strong>Help > Install New Software... ></strong></code></ul>
- </li>
- <li>Copy this site's URL into Eclipse, and hit Enter.</li>
- <li>When the site loads, select the features to install, or click the <code><strong>Select All</strong></code> button.</li>
- <li>To properly resolve all dependencies, check
- <ul><code><strong>[x] Contact all update sites during install to find required software</strong></code></ul>
- <li>Click <code><strong>Next</strong></code>, agree to the license terms, and install.</li>
- </ol>
- </p>
-
- <p>${site.contents}</p>
- </body>
-</html>
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/build/readme.txt b/eclipse-tools/sca2amalthea/build/readme.txt
deleted file mode 100644
index c7b9f56..0000000
--- a/eclipse-tools/sca2amalthea/build/readme.txt
+++ /dev/null
@@ -1 +0,0 @@
-Place only build related projects here.
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/.gitignore b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/.gitignore
deleted file mode 100644
index b83d222..0000000
--- a/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/feature.xml b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/feature.xml
index 9f82127..606c646 100644
--- a/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/feature.xml
+++ b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.app4mc.sca2amalthea.feature.sdk"
label="SCA2AMALTHEA SDK"
- version="1.0.0.qualifier"
+ version="0.9.7.qualifier"
provider-name="Eclipse.org">
<description url="http://www.example.com/description">
@@ -17,133 +17,109 @@
[Enter License Description here.]
</license>
- <requires>
- <import plugin="org.eclipse.core.runtime"/>
- <import plugin="org.eclipse.emf.ecore.xmi"/>
- <import plugin="org.eclipse.core.resources"/>
- <import plugin="org.eclipse.app4mc.sca.logging"/>
- <import plugin="org.eclipse.emf.ecore"/>
- <import plugin="org.eclipse.app4mc.sca.logging" version="1.0.0" match="greaterOrEqual"/>
- <import plugin="org.eclipse.sphinx.emf"/>
- <import plugin="org.eclipse.xtext.xbase.lib"/>
- <import plugin="org.eclipse.app4mc.sca.amalthea.loader"/>
- <import plugin="org.eclipse.emf.ecore.xmi" version="2.10.2" match="greaterOrEqual"/>
- <import plugin="org.eclipse.ui"/>
- <import plugin="org.eclipse.emf.common" version="2.10.1" match="greaterOrEqual"/>
- <import plugin="org.eclipse.core.commands"/>
- <import plugin="org.eclipse.ui.workbench"/>
- <import plugin="org.eclipse.ease"/>
- <import plugin="org.eclipse.app4mc.amalthea.sphinx"/>
- <import plugin="org.eclipse.app4mc.amalthea.model"/>
- <import plugin="org.eclipse.app4mc.sca.amalthea.model.utils"/>
- <import plugin="org.eclipse.app4mc.sca.scheduling.loader"/>
- <import plugin="org.eclipse.equinox.registry"/>
- <import plugin="org.eclipse.jface"/>
- <import plugin="org.eclipse.app4mc.sca.util"/>
- <import plugin="org.eclipse.app4mc.sca.ui"/>
- <import plugin="org.eclipse.app4mc.sca2amalthea.utils" version="1.0.0" match="greaterOrEqual"/>
- <import plugin="org.eclipse.app4mc.sca.util" version="1.0.0" match="greaterOrEqual"/>
- </requires>
+ <includes
+ id="org.eclipse.app4mc.sca2amalthea.feature"
+ version="0.0.0"/>
<plugin
- id="org.eclipse.app4mc.sca2amalthea.exporter"
+ id="org.eclipse.app4mc.sca2amalthea.exporter.source"
download-size="0"
install-size="0"
version="0.0.0"/>
<plugin
- id="org.eclipse.app4mc.sca2amalthea.ir"
+ id="org.eclipse.app4mc.sca2amalthea.ir.source"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
- id="org.eclipse.app4mc.sca2amalthea.ir.loader"
+ id="org.eclipse.app4mc.sca2amalthea.ir.loader.source"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
- id="org.eclipse.app4mc.sca2amalthea.llvm"
+ id="org.eclipse.app4mc.sca2amalthea.llvm.source"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
- id="org.eclipse.app4mc.sca2amalthea.scairmodelenricher"
+ id="org.eclipse.app4mc.sca2amalthea.scairmodelenricher.source"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
- id="org.eclipse.app4mc.sca2amalthea.serialization"
+ id="org.eclipse.app4mc.sca2amalthea.serialization.source"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
- id="org.eclipse.app4mc.sca2amalthea.utils"
+ id="org.eclipse.app4mc.sca2amalthea.utils.source"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
- id="org.eclipse.app4mc.sca2amalthea.ui"
+ id="org.eclipse.app4mc.sca2amalthea.ui.source"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
- id="org.eclipse.app4mc.sca.amalthea.loader"
+ id="org.eclipse.app4mc.sca.amalthea.loader.source"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
- id="org.eclipse.app4mc.sca.amalthea.model.utils"
+ id="org.eclipse.app4mc.sca.amalthea.model.utils.source"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
- id="org.eclipse.app4mc.sca.logging"
+ id="org.eclipse.app4mc.sca.logging.source"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
- id="org.eclipse.app4mc.sca.scheduling.loader"
+ id="org.eclipse.app4mc.sca.scheduling.loader.source"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
- id="org.eclipse.app4mc.sca.ui"
+ id="org.eclipse.app4mc.sca.ui.source"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
- id="org.eclipse.app4mc.sca.util"
+ id="org.eclipse.app4mc.sca.util.source"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
- id="org.eclipse.app4mc.sca2amalthea.docu"
+ id="org.eclipse.app4mc.sca2amalthea.docu.source"
download-size="0"
install-size="0"
version="0.0.0"/>
diff --git a/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/pom.xml b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/pom.xml
deleted file mode 100644
index a7c65f0..0000000
--- a/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/pom.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.build</artifactId>
- <version>1.0.0.qualifier</version>
- <relativePath>../../build/org.eclipse.app4mc.sca2amalthea.build</relativePath>
- </parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.feature.sdk</artifactId>
- <packaging>eclipse-feature</packaging>
-</project>
diff --git a/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/.gitignore b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/.gitignore
deleted file mode 100644
index b83d222..0000000
--- a/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/feature.xml b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/feature.xml
index 3cb5967..ad652ef 100644
--- a/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/feature.xml
+++ b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.app4mc.sca2amalthea.feature"
label="SCA2AMALTHEA Runtime"
- version="1.0.0.qualifier"
+ version="0.9.8.qualifier"
provider-name="Eclipse.org">
<description url="http://www.example.com/description">
@@ -23,7 +23,6 @@
<import plugin="org.eclipse.core.resources"/>
<import plugin="org.eclipse.app4mc.sca.logging"/>
<import plugin="org.eclipse.emf.ecore"/>
- <import plugin="org.eclipse.app4mc.sca.logging" version="1.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.sphinx.emf"/>
<import plugin="org.eclipse.xtext.xbase.lib"/>
<import plugin="org.eclipse.app4mc.sca.amalthea.loader"/>
@@ -32,8 +31,6 @@
<import plugin="org.eclipse.emf.common" version="2.10.1" match="greaterOrEqual"/>
<import plugin="org.eclipse.core.commands"/>
<import plugin="org.eclipse.ui.workbench"/>
- <import plugin="org.eclipse.ease"/>
- <import plugin="org.eclipse.app4mc.amalthea.sphinx"/>
<import plugin="org.eclipse.app4mc.amalthea.model"/>
<import plugin="org.eclipse.app4mc.sca.amalthea.model.utils"/>
<import plugin="org.eclipse.app4mc.sca.scheduling.loader"/>
@@ -41,8 +38,7 @@
<import plugin="org.eclipse.jface"/>
<import plugin="org.eclipse.app4mc.sca.util"/>
<import plugin="org.eclipse.app4mc.sca.ui"/>
- <import plugin="org.eclipse.app4mc.sca2amalthea.utils" version="1.0.0" match="greaterOrEqual"/>
- <import plugin="org.eclipse.app4mc.sca.util" version="1.0.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.app4mc.sca2amalthea.utils"/>
</requires>
<plugin
diff --git a/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/pom.xml b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/pom.xml
deleted file mode 100644
index afcce51..0000000
--- a/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/pom.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.build</artifactId>
- <version>1.0.0.qualifier</version>
- <relativePath>../../build/org.eclipse.app4mc.sca2amalthea.build</relativePath>
- </parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.feature</artifactId>
- <packaging>eclipse-feature</packaging>
-</project>
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/.gitignore
deleted file mode 100644
index 24d6437..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/META-INF/MANIFEST.MF b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/META-INF/MANIFEST.MF
index e86fa6c..7987681 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/META-INF/MANIFEST.MF
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/META-INF/MANIFEST.MF
@@ -2,14 +2,14 @@
Bundle-ManifestVersion: 2
Bundle-Name: Amalthea Loader
Bundle-SymbolicName: org.eclipse.app4mc.sca.amalthea.loader
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 0.9.8.qualifier
Bundle-Vendor: Eclipse.org
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.sphinx.emf,
- org.eclipse.app4mc.amalthea.sphinx,
org.eclipse.app4mc.amalthea.model,
org.eclipse.app4mc.sca.logging
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.app4mc.sca.amalthea.loader,
org.eclipse.app4mc.sca.amalthea.serializer
+Automatic-Module-Name: org.eclipse.app4mc.sca.amalthea.loader
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/bin/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/bin/.gitignore
deleted file mode 100644
index cf1db2e..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/bin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/org/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/pom.xml b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/pom.xml
deleted file mode 100644
index 0de10d5..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/pom.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.build</artifactId>
- <version>1.0.0.qualifier</version>
- <relativePath>../../build/org.eclipse.app4mc.sca2amalthea.build</relativePath>
- </parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca.amalthea.loader</artifactId>
- <packaging>eclipse-plugin</packaging>
-
- <build>
- <sourceDirectory>src</sourceDirectory>
- <resources>
- <resource>
- <directory>xtend-gen</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>src</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <version>2.4.1</version>
- <configuration>
- <filesets>
- <fileset>
- <directory>xtend-gen</directory>
- <includes>
- <include>**</include>
- </includes>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>1.7</version>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>xtend-gen</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.eclipse.xtend</groupId>
- <artifactId>xtend-maven-plugin</artifactId>
- <version>2.7.3</version>
- <executions>
- <execution>
- <goals>
- <goal>compile</goal>
- </goals>
- <configuration>
- <outputDirectory>xtend-gen</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/src/org/eclipse/app4mc/sca/amalthea/loader/AMALTHEAResourceLoader.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/src/org/eclipse/app4mc/sca/amalthea/loader/AMALTHEAResourceLoader.java
index 40a49b7..740d69b 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/src/org/eclipse/app4mc/sca/amalthea/loader/AMALTHEAResourceLoader.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/src/org/eclipse/app4mc/sca/amalthea/loader/AMALTHEAResourceLoader.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/src/org/eclipse/app4mc/sca/amalthea/serializer/AMALTHEAResourceSerializer.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/src/org/eclipse/app4mc/sca/amalthea/serializer/AMALTHEAResourceSerializer.java
index d746bfb..2136418 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/src/org/eclipse/app4mc/sca/amalthea/serializer/AMALTHEAResourceSerializer.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/src/org/eclipse/app4mc/sca/amalthea/serializer/AMALTHEAResourceSerializer.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/.gitignore
deleted file mode 100644
index 24d6437..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/META-INF/MANIFEST.MF b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/META-INF/MANIFEST.MF
index fba8065..c199925 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/META-INF/MANIFEST.MF
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/META-INF/MANIFEST.MF
@@ -2,14 +2,14 @@
Bundle-ManifestVersion: 2
Bundle-Name: SCA2AMALTHEA Model Exporter Util
Bundle-SymbolicName: org.eclipse.app4mc.sca.amalthea.model.utils
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 0.9.8.qualifier
Bundle-Vendor: Eclipse.org
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.app4mc.sca.amalthea.loader,
org.eclipse.app4mc.sca.logging,
- org.eclipse.xtext.xbase,
org.eclipse.app4mc.amalthea.model
Export-Package: org.eclipse.app4mc.sca.amalthea.model.utils.helper,
org.eclipse.app4mc.sca.amalthea.model.utils.manipulator
+Automatic-Module-Name: org.eclipse.app4mc.sca.amalthea.model.utils
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/bin/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/bin/.gitignore
deleted file mode 100644
index cf1db2e..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/bin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/org/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/pom.xml b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/pom.xml
deleted file mode 100644
index 123d869..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/pom.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.build</artifactId>
- <version>1.0.0.qualifier</version>
- <relativePath>../../build/org.eclipse.app4mc.sca2amalthea.build</relativePath>
- </parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca.amalthea.model.utils</artifactId>
- <packaging>eclipse-plugin</packaging>
-
-
- <build>
- <sourceDirectory>src</sourceDirectory>
- <resources>
- <resource>
- <directory>xtend-gen</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>src</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <version>2.4.1</version>
- <configuration>
- <filesets>
- <fileset>
- <directory>xtend-gen</directory>
- <includes>
- <include>**</include>
- </includes>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>1.7</version>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>xtend-gen</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.eclipse.xtend</groupId>
- <artifactId>xtend-maven-plugin</artifactId>
- <version>2.7.3</version>
- <executions>
- <execution>
- <goals>
- <goal>compile</goal>
- </goals>
- <configuration>
- <outputDirectory>xtend-gen</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
-
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/Activator.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/Activator.java
index 7dcbb54..fcf2d32 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/Activator.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/Activator.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/helper/CustomPropertiesUtil.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/helper/CustomPropertiesUtil.java
index 5f93639..f2f77a5 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/helper/CustomPropertiesUtil.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/helper/CustomPropertiesUtil.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/helper/ModelAccess.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/helper/ModelAccess.java
index 179dfaa..e220376 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/helper/ModelAccess.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/helper/ModelAccess.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -17,15 +17,14 @@
import java.util.HashSet;
import java.util.Set;
+import org.eclipse.app4mc.amalthea.model.ActivityGraphItem;
import org.eclipse.app4mc.amalthea.model.Amalthea;
-import org.eclipse.app4mc.amalthea.model.CallSequence;
-import org.eclipse.app4mc.amalthea.model.CallSequenceItem;
-import org.eclipse.app4mc.amalthea.model.GraphEntryBase;
+import org.eclipse.app4mc.amalthea.model.Group;
import org.eclipse.app4mc.amalthea.model.ISR;
import org.eclipse.app4mc.amalthea.model.Process;
import org.eclipse.app4mc.amalthea.model.Runnable;
+import org.eclipse.app4mc.amalthea.model.RunnableCall;
import org.eclipse.app4mc.amalthea.model.Task;
-import org.eclipse.app4mc.amalthea.model.TaskRunnableCall;
import org.eclipse.emf.common.util.EList;
/**
@@ -57,14 +56,15 @@
*/
public static Set<Runnable> getRunnablesFromTask(final Process process) {
Set<Runnable> calledRunnables = new HashSet<>();
- for (GraphEntryBase entry : process.getCallGraph().getGraphEntries()) {
- if (!(entry instanceof CallSequence)) {
+ for (ActivityGraphItem activityGraphItem : process.getActivityGraph().getItems()) {
+ if (!(activityGraphItem instanceof Group)) {
continue;
}
- for (CallSequenceItem item : ((CallSequence) entry).getCalls()) {
- if (item instanceof TaskRunnableCall) {
- calledRunnables.add(((TaskRunnableCall) item).getRunnable());
- }
+ for (ActivityGraphItem groupItem : ((Group) activityGraphItem).getItems()) {
+ if(groupItem instanceof RunnableCall) {
+ RunnableCall rc=(RunnableCall)groupItem;
+ calledRunnables.add(rc.getRunnable());
+ }
}
}
return calledRunnables;
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/manipulator/FunctionPointerRunnableConverter.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/manipulator/FunctionPointerRunnableConverter.java
index 12e31ee..5deca24 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/manipulator/FunctionPointerRunnableConverter.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/manipulator/FunctionPointerRunnableConverter.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -17,13 +17,13 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import org.eclipse.app4mc.amalthea.model.ActivityGraphItem;
import org.eclipse.app4mc.amalthea.model.Amalthea;
import org.eclipse.app4mc.amalthea.model.AmaltheaFactory;
import org.eclipse.app4mc.amalthea.model.LabelAccess;
import org.eclipse.app4mc.amalthea.model.LabelAccessEnum;
import org.eclipse.app4mc.amalthea.model.Runnable;
import org.eclipse.app4mc.amalthea.model.RunnableCall;
-import org.eclipse.app4mc.amalthea.model.RunnableItem;
import org.eclipse.app4mc.amalthea.model.StringObject;
import org.eclipse.app4mc.sca.amalthea.model.utils.Activator;
import org.eclipse.app4mc.sca.amalthea.model.utils.helper.CustomPropertiesUtil;
@@ -51,11 +51,10 @@
EList<Runnable> runnables = amaltheaModel.getSwModel().getRunnables();
try {
for (Runnable runnable : runnables) {
- System.out.println(runnable.getName());
for (int i = 0; i < runnable.getRunnableItems().size(); i++) {
- RunnableItem item = runnable.getRunnableItems().get(i);
- if ((item != null) && (item instanceof LabelAccess)) {
- LabelAccess labelAccess = (LabelAccess) item;
+ ActivityGraphItem activityGraphItem = runnable.getRunnableItems().get(i);
+ if ((activityGraphItem != null) && (activityGraphItem instanceof LabelAccess)) {
+ LabelAccess labelAccess = (LabelAccess) activityGraphItem;
if (labelAccess.getData() != null) {
Matcher matcher = pattern.matcher(labelAccess.getData().getName());
if ((labelAccess.getAccess() == LabelAccessEnum.READ) && matcher.matches()) {
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/manipulator/IModelManipulator.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/manipulator/IModelManipulator.java
index 5596ee2..3523c5f 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/manipulator/IModelManipulator.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/manipulator/IModelManipulator.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/manipulator/StructMemberRemover.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/manipulator/StructMemberRemover.java
index 1718a0b..444939e 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/manipulator/StructMemberRemover.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/manipulator/StructMemberRemover.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -14,12 +14,12 @@
*/
package org.eclipse.app4mc.sca.amalthea.model.utils.manipulator;
+import org.eclipse.app4mc.amalthea.model.ActivityGraphItem;
import org.eclipse.app4mc.amalthea.model.Amalthea;
import org.eclipse.app4mc.amalthea.model.Component;
import org.eclipse.app4mc.amalthea.model.Label;
import org.eclipse.app4mc.amalthea.model.LabelAccess;
import org.eclipse.app4mc.amalthea.model.Runnable;
-import org.eclipse.app4mc.amalthea.model.RunnableItem;
import org.eclipse.app4mc.sca.amalthea.loader.AMALTHEAResourceLoader;
import org.eclipse.app4mc.sca.amalthea.model.utils.Activator;
import org.eclipse.app4mc.sca.logging.util.SCALogConstants;
@@ -34,8 +34,8 @@
*/
public class StructMemberRemover implements IModelManipulator {
- private final String FUNCTION_STATIC_VARIABLES_MARKER = "PLAT4MC_FS";
- private final String FILE_STATIC_VARIABLES_MARKER = "PLAT4MC_CS";
+ private final String FUNCTION_STATIC_VARIABLES_MARKER = "APP4MC_FS";
+ private final String FILE_STATIC_VARIABLES_MARKER = "APP4MC_CS";
private Amalthea amaltheaModel;
private String inFile;
@@ -130,11 +130,11 @@
EList<Runnable> runnables = amaltheaModel.getSwModel().getRunnables();
try {
for (Runnable runnable : runnables) {
- EList<RunnableItem> runnableItemList = runnable.getRunnableItems();
- if ((runnableItemList != null) && !runnableItemList.isEmpty()) {
- for (RunnableItem runnableItem : runnableItemList) {
- if (runnableItem instanceof LabelAccess) {
- LabelAccess labelAccess = (LabelAccess) runnableItem;
+ EList<ActivityGraphItem> activityGraphItemList = runnable.getRunnableItems();
+ if ((activityGraphItemList != null) && !activityGraphItemList.isEmpty()) {
+ for (ActivityGraphItem activityGraphItem : activityGraphItemList) {
+ if (activityGraphItem instanceof LabelAccess) {
+ LabelAccess labelAccess = (LabelAccess) activityGraphItem;
String labelName = labelAccess.getData().getName();
if (containsStructMember(labelName)) {
String mainLabelName = removeMemberInformation(labelName);
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/.gitignore
deleted file mode 100644
index 24d6437..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/META-INF/MANIFEST.MF b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/META-INF/MANIFEST.MF
index ee27ff6..7099e4e 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/META-INF/MANIFEST.MF
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Logging
Bundle-SymbolicName: org.eclipse.app4mc.sca.logging;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 0.9.8.qualifier
Bundle-Vendor: Eclipse.org
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Require-Bundle: org.eclipse.emf.ecore,
@@ -22,3 +22,4 @@
org.eclipse.app4mc.sca.logging.notification,
org.eclipse.app4mc.sca.logging.util
Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.app4mc.sca.logging
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/bin/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/bin/.gitignore
deleted file mode 100644
index cf1db2e..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/bin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/org/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/build.properties b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/build.properties
index 8a183d6..51ac232 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/build.properties
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/build.properties
@@ -8,5 +8,4 @@
build.properties
src.includes = epl-2.0.html,\
logger.properties,\
- build.properties,\
cmdlogger.properties
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/pom.xml b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/pom.xml
deleted file mode 100644
index 9aefc73..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/pom.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.build</artifactId>
- <version>1.0.0.qualifier</version>
- <relativePath>../../build/org.eclipse.app4mc.sca2amalthea.build</relativePath>
- </parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca.logging</artifactId>
- <packaging>eclipse-plugin</packaging>
-
-
- <build>
- <sourceDirectory>src</sourceDirectory>
- <resources>
- <resource>
- <directory>xtend-gen</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>src</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <version>2.4.1</version>
- <configuration>
- <filesets>
- <fileset>
- <directory>xtend-gen</directory>
- <includes>
- <include>**</include>
- </includes>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>1.7</version>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>xtend-gen</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.eclipse.xtend</groupId>
- <artifactId>xtend-maven-plugin</artifactId>
- <version>2.7.3</version>
- <executions>
- <execution>
- <goals>
- <goal>compile</goal>
- </goals>
- <configuration>
- <outputDirectory>xtend-gen</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/console/loggers/CommandLineLogger.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/console/loggers/CommandLineLogger.java
index e2b47f8..8773d1d 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/console/loggers/CommandLineLogger.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/console/loggers/CommandLineLogger.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/exception/App4mcLoggerException.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/exception/App4mcLoggerException.java
index 5899b11..7d03fb6 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/exception/App4mcLoggerException.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/exception/App4mcLoggerException.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/CollectiveLogger.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/CollectiveLogger.java
index c750578..8971572 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/CollectiveLogger.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/CollectiveLogger.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/IConfiguration.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/IConfiguration.java
index 2b78704..3853d82 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/IConfiguration.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/IConfiguration.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/IConsoleLogger.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/IConsoleLogger.java
index 6fb2bd8..01bbaa4 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/IConsoleLogger.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/IConsoleLogger.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/IExternalLogger.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/IExternalLogger.java
index 8b99f4d..42e38c1 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/IExternalLogger.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/IExternalLogger.java
@@ -9,7 +9,7 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/ILogger.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/ILogger.java
index 688d8fa..6a21195 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/ILogger.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/ILogger.java
@@ -5,7 +5,7 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/ITextLogger.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/ITextLogger.java
index e738d43..675f54e 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/ITextLogger.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/ITextLogger.java
@@ -5,7 +5,7 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/loggers/TextFileLogger.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/loggers/TextFileLogger.java
index ec629c2..1af6625 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/loggers/TextFileLogger.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/loggers/TextFileLogger.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/manager/LogFactory.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/manager/LogFactory.java
index 4ba6437..11230c5 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/manager/LogFactory.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/manager/LogFactory.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/manager/Logmanager.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/manager/Logmanager.java
index 6f8d0cd..934bc0b 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/manager/Logmanager.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/manager/Logmanager.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/notification/ILogNotificationListener.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/notification/ILogNotificationListener.java
index 708b832..7c6dbbd 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/notification/ILogNotificationListener.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/notification/ILogNotificationListener.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/notification/LogNotificationEvent.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/notification/LogNotificationEvent.java
index 68cdefd..496eebe 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/notification/LogNotificationEvent.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/notification/LogNotificationEvent.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/util/App4mcLogUtil.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/util/App4mcLogUtil.java
index a512310..8d0b45a 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/util/App4mcLogUtil.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/util/App4mcLogUtil.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/util/LogInformation.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/util/LogInformation.java
index 6ff171f..442c4d2 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/util/LogInformation.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/util/LogInformation.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/util/LogUtil.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/util/LogUtil.java
index 97e2316..857beca 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/util/LogUtil.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/util/LogUtil.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/util/SCALogConstants.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/util/SCALogConstants.java
index 2cb8db9..5eb5026 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/util/SCALogConstants.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/util/SCALogConstants.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/.gitignore
deleted file mode 100644
index 24d6437..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/META-INF/MANIFEST.MF b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/META-INF/MANIFEST.MF
index 30e129b..b7b392f 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/META-INF/MANIFEST.MF
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Loader
Bundle-SymbolicName: org.eclipse.app4mc.sca.scheduling.loader;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 0.9.8.qualifier
Bundle-Vendor: Eclipse.org
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.app4mc.amalthea.model,
@@ -13,6 +13,7 @@
org.eclipse.jface,
org.eclipse.ui.workbench,
org.eclipse.ui,
- org.eclipse.app4mc.sca.ui;bundle-version="1.0.0"
+ org.eclipse.app4mc.sca.ui
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Export-Package: org.eclipse.app4mc.sca.scheduling.loader.model
+Automatic-Module-Name: org.eclipse.app4mc.sca.scheduling.loader
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/bin/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/bin/.gitignore
deleted file mode 100644
index cf1db2e..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/bin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/org/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/build.properties b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/build.properties
index 1e1031e..694bc38 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/build.properties
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/build.properties
@@ -2,6 +2,5 @@
output.. = bin/
bin.includes = META-INF/,\
.,\
- plugin.xml,\
epl-2.0.html
src.includes = epl-2.0.html
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/plugin.xml b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/plugin.xml
deleted file mode 100644
index b60f62a..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/plugin.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<plugin>
-
-</plugin>
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/pom.xml b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/pom.xml
deleted file mode 100644
index 5249939..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/pom.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.build</artifactId>
- <version>1.0.0.qualifier</version>
- <relativePath>../../build/org.eclipse.app4mc.sca2amalthea.build</relativePath>
- </parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca.scheduling.loader</artifactId>
- <packaging>eclipse-plugin</packaging>
-
-
- <build>
- <sourceDirectory>src</sourceDirectory>
- <resources>
- <resource>
- <directory>xtend-gen</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>src</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <version>2.4.1</version>
- <configuration>
- <filesets>
- <fileset>
- <directory>xtend-gen</directory>
- <includes>
- <include>**</include>
- </includes>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>1.7</version>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>xtend-gen</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.eclipse.xtend</groupId>
- <artifactId>xtend-maven-plugin</artifactId>
- <version>2.7.3</version>
- <executions>
- <execution>
- <goals>
- <goal>compile</goal>
- </goals>
- <configuration>
- <outputDirectory>xtend-gen</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/src/org/eclipse/app4mc/sca/scheduling/loader/activator/Activator.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/src/org/eclipse/app4mc/sca/scheduling/loader/activator/Activator.java
index 1231e25..c18a50b 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/src/org/eclipse/app4mc/sca/scheduling/loader/activator/Activator.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/src/org/eclipse/app4mc/sca/scheduling/loader/activator/Activator.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/src/org/eclipse/app4mc/sca/scheduling/loader/model/OSConfModel.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/src/org/eclipse/app4mc/sca/scheduling/loader/model/OSConfModel.java
index face6bd..d7d5398 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/src/org/eclipse/app4mc/sca/scheduling/loader/model/OSConfModel.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/src/org/eclipse/app4mc/sca/scheduling/loader/model/OSConfModel.java
@@ -1,7 +1,7 @@
package org.eclipse.app4mc.sca.scheduling.loader.model;
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/src/org/eclipse/app4mc/sca/scheduling/loader/model/OSTask.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/src/org/eclipse/app4mc/sca/scheduling/loader/model/OSTask.java
index 49c8c28..a21b6dd 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/src/org/eclipse/app4mc/sca/scheduling/loader/model/OSTask.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/src/org/eclipse/app4mc/sca/scheduling/loader/model/OSTask.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/src/org/eclipse/app4mc/sca/scheduling/loader/model/SchedulingInformationLoader.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/src/org/eclipse/app4mc/sca/scheduling/loader/model/SchedulingInformationLoader.java
index e30cb8e..052749d 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/src/org/eclipse/app4mc/sca/scheduling/loader/model/SchedulingInformationLoader.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/src/org/eclipse/app4mc/sca/scheduling/loader/model/SchedulingInformationLoader.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -29,7 +29,6 @@
* @param absolutefilePath
* @return
*/
- @SuppressWarnings("javadoc")
public OSConfModel getTasksInformation(final String absolutefilePath) {
this.osConfModel=new OSConfModel();
try {
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/src/org/eclipse/app4mc/sca/scheduling/loader/model/TaskType.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/src/org/eclipse/app4mc/sca/scheduling/loader/model/TaskType.java
index 18591cd..19a94f7 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/src/org/eclipse/app4mc/sca/scheduling/loader/model/TaskType.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.scheduling.loader/src/org/eclipse/app4mc/sca/scheduling/loader/model/TaskType.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/.gitignore
deleted file mode 100644
index 24d6437..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/META-INF/MANIFEST.MF b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/META-INF/MANIFEST.MF
index 584ba42..63ecce9 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/META-INF/MANIFEST.MF
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/META-INF/MANIFEST.MF
@@ -1,8 +1,8 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: Ui
+Bundle-Name: SCA2AMALTHEA Ui
Bundle-SymbolicName: org.eclipse.app4mc.sca.ui;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 0.9.8.qualifier
Bundle-Activator: org.eclipse.app4mc.sca.ui.Activator
Bundle-Vendor: Eclipse.org
Require-Bundle: org.eclipse.ui,
@@ -16,6 +16,9 @@
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.app4mc.sca.ui,
- org.eclipse.app4mc.sca.ui.preferences,
- org.eclipse.app4mc.sca.ui.preferences.interfaces,
- org.eclipse.app4mc.sca.ui.util
+ org.eclipse.app4mc.sca.ui.messagedialog,
+ org.eclipse.app4mc.sca.ui.util,
+ org.eclipse.app4mc.sca.ui.widget.builder,
+ org.eclipse.app4mc.sca.ui.widgets,
+ org.eclipse.app4mc.sca.ui.wizard
+Automatic-Module-Name: org.eclipse.app4mc.sca.ui
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/plugin.xml b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/plugin.xml
index 85a0fef..e93f171 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/plugin.xml
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/plugin.xml
@@ -1,8 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
- <extension-point id="exportOptions" name="PreferenceExporter" schema="schema/exportOptions.exsd"/>
-<extension point="org.eclipse.ui.menus">
+ <extension point="org.eclipse.ui.menus">
<menuContribution
locationURI="popup:org.eclipse.ui.popup.any?after=additions">
<menu
@@ -14,31 +13,13 @@
<iterate>
<or>
<adapt
- type="org.eclipse.core.resources.IResource">
- </adapt>
- <adapt
- type="org.eclipse.app4mc.amalthea.model.BaseObject">
+ type="org.eclipse.core.resources.IProject">
</adapt>
</or>
</iterate>
</and>
</visibleWhen>
</menu>
- </menuContribution>
-</extension>
-
-<extension point="org.eclipse.ui.preferencePages">
- <page id="SCA Tools"
- name="SCA Tools"
- class="org.eclipse.app4mc.sca.ui.preferences.SCAPreferencePage">
- </page>
-</extension>
-<extension
- point="org.eclipse.app4mc.sca.ui.exportOptions">
- <exporter
- name="Platform"
- preferences="org.eclipse.app4mc.sca.ui.preferences.SCAExportPreferenceList"
- tool="SCATools">
- </exporter>
-</extension> >
+ </menuContribution>
+</extension>>
</plugin>
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/pom.xml b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/pom.xml
deleted file mode 100644
index 09d238f..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/pom.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.build</artifactId>
- <version>1.0.0.qualifier</version>
- <relativePath>../../build/org.eclipse.app4mc.sca2amalthea.build</relativePath>
- </parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca.ui</artifactId>
- <packaging>eclipse-plugin</packaging>
-
-
- <build>
- <sourceDirectory>src</sourceDirectory>
- <resources>
- <resource>
- <directory>xtend-gen</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>src</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <version>2.4.1</version>
- <configuration>
- <filesets>
- <fileset>
- <directory>xtend-gen</directory>
- <includes>
- <include>**</include>
- </includes>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>1.7</version>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>xtend-gen</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.eclipse.xtend</groupId>
- <artifactId>xtend-maven-plugin</artifactId>
- <version>2.7.3</version>
- <executions>
- <execution>
- <goals>
- <goal>compile</goal>
- </goals>
- <configuration>
- <outputDirectory>xtend-gen</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/Activator.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/Activator.java
index 2398d66..32e5d42 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/Activator.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/Activator.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/messagedialog/App4mcMessgeDialog.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/messagedialog/App4mcMessgeDialog.java
new file mode 100644
index 0000000..ec6afce
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/messagedialog/App4mcMessgeDialog.java
@@ -0,0 +1,76 @@
+
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca.ui.messagedialog;
+
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * This is a message dialog class to be used to show the pop-ups(information,error,warning) as and when required.
+ */
+public class App4mcMessgeDialog {
+
+
+ private final Image shellImg;
+ private final int kind;
+ private final Shell shell;
+ private final String title;
+ private final String msg;
+
+ /**
+ * @param kind the kind of dialog to open Eg ERROR,INFORMATION,QUESTION, WARNING,CONFIRM,orQUESTION_WITH_CANCEL.
+ * @param shell the parent shell of the dialog
+ * @param title the dialog's title
+ * @param shellImg the image to be shown on the left top corner of the pop-up
+ * @param msg the message to be shown in the pop up.
+ */
+ public App4mcMessgeDialog(final int kind, final Shell shell, final String title, final Image shellImg,
+ final String msg) {
+ this.kind = kind;
+ this.shell = shell;
+ this.title = title;
+ this.shellImg = shellImg;
+ this.msg = msg;
+
+ }
+
+ private String[] getApp4mcButtonLabels() {
+ String[] app4mcDialogButtonLabels;
+
+ if ((this.kind == MessageDialog.ERROR) || (this.kind == MessageDialog.INFORMATION) ||
+ (this.kind == MessageDialog.WARNING)) {
+ app4mcDialogButtonLabels = new String[] { IDialogConstants.OK_LABEL };
+ }
+ else if (this.kind == MessageDialog.CONFIRM) {
+ app4mcDialogButtonLabels = new String[] { IDialogConstants.OK_LABEL, IDialogConstants.CANCEL_LABEL };
+ }
+ else if (this.kind == MessageDialog.QUESTION) {
+ app4mcDialogButtonLabels = new String[] { IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL };
+ }
+ else if (this.kind == MessageDialog.QUESTION_WITH_CANCEL) {
+ app4mcDialogButtonLabels =
+ new String[] { IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL, IDialogConstants.CANCEL_LABEL };
+ }
+ else {
+ throw new IllegalArgumentException("Illegal value for kind in MessageDialog.open()");
+ }
+ return app4mcDialogButtonLabels;
+ }
+
+ /**
+ * Opens the message dialog.
+ *
+ * @return int indicating if the message dialog was opened successfully.
+ */
+ public int open() {
+ MessageDialog d =
+ new MessageDialog(this.shell, this.title, this.shellImg, this.msg, this.kind, 0, getApp4mcButtonLabels());
+ return d.open();
+ }
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/preferences/AbstractSCAToolsPreferencePage.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/preferences/AbstractSCAToolsPreferencePage.java
deleted file mode 100644
index f3ea630..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/preferences/AbstractSCAToolsPreferencePage.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/**
- ********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.sca.ui.preferences;
-
-import java.io.File;
-import java.io.IOException;
-
-import org.eclipse.app4mc.sca.logging.manager.Logmanager;
-import org.eclipse.app4mc.sca.ui.Activator;
-import org.eclipse.app4mc.sca.ui.util.SCAToolsUIUtil;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.FileDialog;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-
-/**
- * Abstract preference page for the multicore preference page implementations.The page would contain the default
- * implementation of all the common features agreed upon in the multicore architecture group meeting
- */
-public abstract class AbstractSCAToolsPreferencePage extends FieldEditorPreferencePage
- implements IWorkbenchPreferencePage {
-
- /**
- * Button to export the preferences to the options file
- */
- protected Button exportPref;
- /**
- * Label for status image
- */
- protected Label statusImage;
- /**
- * Label for status info
- */
- protected Label infoLabel;
-
- /**
- * Default constructor to support preference pages implemented using SWT controls.
- */
-
- public AbstractSCAToolsPreferencePage() {
-
- }
-
- /**
- * Parameterized constructor to support preference pages implemented using field editors.
- *
- * @param style layouting style GRID or FLAT
- */
- public AbstractSCAToolsPreferencePage(final int style) {
- super(style);
- }
-
- @Override
- protected void contributeButtons(final Composite parent) {
- GridLayout layout = (GridLayout) parent.getLayout();
- layout.numColumns = layout.numColumns + 3;
-
- this.statusImage = new Label(parent, SWT.NONE);
- this.statusImage.setImage(parent.getShell().getDisplay().getSystemImage(SWT.ICON_INFORMATION));
- this.statusImage.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- this.statusImage.setVisible(false);
-
- this.infoLabel = new Label(parent, SWT.None);
- this.infoLabel.setText("Options file exported successfully!!!");
- this.infoLabel.setVisible(false);
-
- int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
- this.exportPref = new Button(parent, SWT.PUSH);
- this.exportPref.setText("Export Preferences");
- Dialog.applyDialogFont(this.exportPref);
- Point minButtonSize = this.exportPref.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
- GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
- data.widthHint = Math.max(widthHint, minButtonSize.x);
- this.exportPref.setLayoutData(data);
- this.exportPref.addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(final SelectionEvent e) {
- savePreferences(parent);
- }
- });
- super.contributeButtons(parent);
- }
-
- /**
- * Exports all the preferences to options file
- */
- private void savePreferences(final Composite parent) {
- showStatus(false);
- setErrorMessage(null);
- FileDialog fileDialog = new FileDialog(parent.getShell(), SWT.SAVE | SWT.SHEET);
- fileDialog.setText("Export");
- fileDialog.setFilterPath(System.getProperty("user.home"));
- fileDialog.setFileName("Preference.opt");
- fileDialog.setFilterExtensions(new String[] { ".opt" });
- String path = fileDialog.open();
- if (path != null) {
- File optionsFile = new File(path);
- try {
- boolean status = optionsFile.createNewFile();
- if (!status) {
- setErrorMessage("File with same name exists in the selected folder!");
- }
- else {
- SCAToolsUIUtil.exportProperties(optionsFile, getPreferenceStore(), getToolId());
- showStatus(true);
- }
- }
- catch (IOException e) {
- Logmanager.getInstance().logException(this.getClass(), e, Activator.PLUGIN_ID);
- }
- }
- }
-
- /**
- * Enable/disable the status labels
- *
- * @param status {@link Boolean}
- */
- private void showStatus(final boolean status) {
- this.infoLabel.setVisible(status);
- this.statusImage.setVisible(status);
- }
-
- /**
- * Just returning
- */
- @Override
- public void createFieldEditors() {
- return;
- }
-
- /**
- * Returns the tool id for which the page has been contributed
- *
- * @return Sting
- */
- public abstract String getToolId();
-
-}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/preferences/SCAExportPreferenceList.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/preferences/SCAExportPreferenceList.java
deleted file mode 100644
index 20ebfe4..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/preferences/SCAExportPreferenceList.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- ********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.sca.ui.preferences;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.app4mc.sca.ui.preferences.interfaces.IExportPreferences;
-import org.eclipse.app4mc.sca.ui.util.SCAToolsPreferenceConstants;
-import org.eclipse.jface.preference.IPreferenceStore;
-
-/**
- * The list of preferences that are exported for the tool SCA as options file
- */
-public class SCAExportPreferenceList implements IExportPreferences {
-
- /**
- * Private constructor
- */
- public SCAExportPreferenceList() {
- // Nothing now
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public List<String> keysToExport() {
- String[] prefToSave = { // NOSONAR not significant
- SCAToolsPreferenceConstants.TEXT_LOGFILENAME,
- SCAToolsPreferenceConstants.DEBUG_MODE };
- return Arrays.asList(prefToSave);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public IPreferenceStore getPreferenceStore() {
- return org.eclipse.app4mc.sca.util.Activator.getDefault().getPreferenceStore();
- }
-
-}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/preferences/SCAPreferencePage.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/preferences/SCAPreferencePage.java
deleted file mode 100644
index 5facdbc..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/preferences/SCAPreferencePage.java
+++ /dev/null
@@ -1,484 +0,0 @@
-/**
- ********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.sca.ui.preferences;
-
-
-import java.io.File;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-
-import org.eclipse.app4mc.sca.logging.manager.LogFactory.LoggerType;
-import org.eclipse.app4mc.sca.logging.manager.Logmanager;
-import org.eclipse.app4mc.sca.ui.util.SCAToolsPreferenceConstants;
-import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.jface.preference.PreferenceDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.DirectoryDialog;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IWorkbench;
-
-
-/**
- * This class implements SCA Tools Preference page UI using SWT controls. User can configure the logger type using
- * this preference page.The logger types available are 1)Eclipse Console 2)Error log 3)Problems log 4)Log file
- */
-public class SCAPreferencePage extends AbstractSCAToolsPreferencePage {
-
- private Group loggerType;
- private StringBuilder scaLoggerType;
- private Label logFileDirectoryLabel;
- private Text logFileDirectoryText;
- private Button browse;
- private Label logFileNameLabel;
- private Text logFileNameText;
- private Composite composite;
- private Composite compositeForCheckBox;
- private Button[] checkBoxButtons;
- private Button debugModeButton;
- private Map<String, String> selectedCheckBox;
- private HashSet<String> selectedButtons;
- /**
- * Error message
- */
- private String errorMessage = "Log File name should end with .log";
-
- /**
- * Initializes this preference page for the given workbench.This method is called automatically as the preference page
- * is being created and initialized
- *
- * @param workbench the workbench
- */
- @Override
- public void init(final IWorkbench workbench) {
- setPreferenceStore(org.eclipse.app4mc.sca.util.Activator.getDefault().getPreferenceStore());
- setDescription(SCAToolsPreferenceConstants.PREFERENCE_PAGE_DESCRIPTION);
-
- }
-
- /**
- * This method will be called everytime the SCA Tools preference page is loaded. All the UI controls are created
- * inside this method. Listeners are added to the UI controls. The UI controls are also initialized with approrpriate
- * values.
- *
- * @param parent The composite on which the UI controls are created
- * @return parent after all the UI controls are created
- */
- @Override
- protected Control createContents(final Composite parent) {
- initializeMap();
- new Label(parent, SWT.NONE).setLayoutData(new GridData(SWT.NONE, SWT.NONE, true, false, 5, -1));
-
- this.selectedButtons = new HashSet<String>();
- // creating the main composite on which the other controls are laid
- Composite mainComposite = new Composite(parent, SWT.NULL);
- GridLayout mainCompositeLayout = new GridLayout();
- mainCompositeLayout.numColumns = 1;
- mainCompositeLayout.marginHeight = 0;
- mainCompositeLayout.marginWidth = 0;
- mainComposite.setLayout(mainCompositeLayout);
- // creating the group for check box buttons and the text boxes
- this.loggerType = new Group(mainComposite, SWT.SHADOW_OUT);
- this.loggerType.setText("Logger Types");
-
- GridLayout layout = new GridLayout(5, false);
- this.loggerType.setLayout(layout);
-
- GridDataFactory.defaultsFor(this.loggerType).grab(true, false).span(2, 1).applyTo(this.loggerType);
- GridDataFactory.defaultsFor(mainComposite).grab(true, true).span(2, 1).applyTo(mainComposite);
-
- new Label(this.loggerType, SWT.NONE).setLayoutData(new GridData(SWT.NONE, SWT.NONE, true, false, 5, -1));
-
- // creating the composite inside the group for the check box buttons alone
-
- this.checkBoxButtons = new Button[4];
- this.compositeForCheckBox = new Composite(this.loggerType, SWT.NONE);
- GridLayout gridLayoutForCheckBox = new GridLayout(5, false);
- this.compositeForCheckBox.setLayout(gridLayoutForCheckBox);
- this.compositeForCheckBox.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- GridData gridDataForCheckBox = (GridData) this.compositeForCheckBox.getLayoutData();
- gridDataForCheckBox.grabExcessHorizontalSpace = true;
- gridLayoutForCheckBox.horizontalSpacing = 8;
-
- for (int i = 0; i < this.checkBoxButtons.length; i++) {
- this.checkBoxButtons[i] = new Button(this.compositeForCheckBox, SWT.CHECK);
- this.checkBoxButtons[i].setLayoutData(new GridData(SWT.HORIZONTAL));
- }
- this.checkBoxButtons[0].setText(SCAToolsPreferenceConstants.ECLIPSE_CONSOLE);
- this.checkBoxButtons[1].setText(SCAToolsPreferenceConstants.ERROR_LOG);
- this.checkBoxButtons[2].setText(SCAToolsPreferenceConstants.PROBLEMS_LOG);
- this.checkBoxButtons[3].setText(SCAToolsPreferenceConstants.LOG_FILE);
-
- new Label(this.loggerType, SWT.NONE).setLayoutData(new GridData(SWT.NONE, SWT.NONE, true, false, 5, -1));
-
- // creating another composite inside the group for the text boxes
-
- this.composite = new Composite(this.loggerType, SWT.NONE);
- GridLayout gridLayout = new GridLayout(3, false);
- this.composite.setLayout(gridLayout);
- this.composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- GridData gridData = (GridData) this.composite.getLayoutData();
- gridData.grabExcessHorizontalSpace = true;
- gridLayout.horizontalSpacing = 8;
- gridLayout.verticalSpacing = 15;
-
- this.logFileNameLabel = new Label(this.composite, SWT.SINGLE | SWT.LEFT);
- this.logFileNameText = new Text(this.composite, SWT.SINGLE | SWT.BORDER);
- this.logFileNameLabel.setText("Log File name");
-
- this.logFileNameLabel.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false, 1, -1));
- this.logFileNameText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, -1));
-
- this.logFileDirectoryLabel = new Label(this.composite, SWT.SINGLE);
- this.logFileDirectoryText = new Text(this.composite, SWT.SINGLE | SWT.BORDER);
- this.browse = new Button(this.composite, SWT.PUSH);
-
- this.logFileDirectoryLabel.setText("Log File Directory");
- this.browse.setText("Browse");
-
- this.logFileDirectoryLabel.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false, 1, -1));
- this.logFileDirectoryText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, -1));
- this.browse.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false, 1, -1));
-
- Group modeGroup = new Group(mainComposite, SWT.SHADOW_OUT);
- modeGroup.setText("Debug Mode");
-
- layout = new GridLayout(5, false);
- modeGroup.setLayout(layout);
- modeGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- this.debugModeButton = new Button(modeGroup, SWT.CHECK);
- this.debugModeButton.setText(SCAToolsPreferenceConstants.DEBUG_MODE_LABEL);
- // initializing the controls
- initializeValues();
- // adding listeners to the controls
- addListeners();
- return parent;
- }
-
- /**
- * This method will be called when the user presses Ok button. Preferences are stored in the preference store.
- *
- * @return true after saving the preferences to the preference store
- */
- @Override
- public boolean performOk() {
- super.performOk();
- savePreferences();
- return true;
- }
-
-
- /**
- * This method checks if the log file name ends with .log extension when the user clicks on the "Log File" check box
- * button and sets the approriate error message. It also disables the Ok and Apply button whenever there is an error message set.
- */
- private void validate() {
- this.errorMessage = null;
- if (this.selectedButtons.isEmpty()) {
- this.errorMessage = "At least one logging mechanisms should be selected";
- }
- if (this.selectedButtons.contains(SCAToolsPreferenceConstants.LOG_FILE)) {
- validatelogFile();
- }
-
- if (this.selectedButtons.contains(SCAToolsPreferenceConstants.LOG_FILE) &&
- !(new File(this.logFileDirectoryText.getText())).exists()) {
- this.errorMessage = "Log File directory does not exist";
- }
- setErrorMessage(this.errorMessage);
- disableOrEnableOkAndApplyButton();
- }
-
-
- /**
- * This methods adds the appropriate listeners to the UI controls of this preference page and it also reacts to the
- * corrosponding events.
- */
- private void addListeners() {
- addKeyListenerToTextBox(this.logFileNameText);
- addKeyListenerToTextBox(this.logFileDirectoryText);
- this.browse.addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(final SelectionEvent event) {
- DirectoryDialog directoryDialog = new DirectoryDialog(SCAPreferencePage.this.loggerType.getShell());
- directoryDialog.setMessage("Select a directory");
- String path = directoryDialog.open();
- if (path != null) {
- SCAPreferencePage.this.logFileDirectoryText.setText(path);
- }
- }
- });
-
- SelectionAdapter selectionListener = new SelectionAdapter() {
-
- @Override
- public void widgetSelected(final SelectionEvent event) {
- Button b = ((Button) event.widget);
- if (b.getSelection()) {
- SCAPreferencePage.this.selectedButtons.add(b.getText());
- }
- else {
- if (SCAPreferencePage.this.selectedButtons.contains(b.getText())) {
- SCAPreferencePage.this.selectedButtons.remove(b.getText());
- }
- }
- enableOrDisableText(SCAPreferencePage.this.selectedButtons);
- validate();
- }
- };
-
- for (Button b : this.checkBoxButtons) {
- b.addSelectionListener(selectionListener);
- }
- }
-
- /**
- * This method sets the default values to the UI controls of this preference page. The default log file name is
- * "sca.log" ,the default log file directory is user home directory and the default check box button selected is
- * "Error log"
- */
- private void setDefaultsControls() {
- this.selectedButtons.clear();
- for (Button rButton : this.checkBoxButtons) {
- if (SCAToolsPreferenceConstants.ERROR_LOG.equals(rButton.getText())) {
- rButton.setSelection(true);
- this.selectedButtons.add(rButton.getText());
- }
- else {
- rButton.setSelection(false);
- }
- }
-
- this.logFileNameLabel.setEnabled(false);
- this.logFileNameText.setEnabled(false);
- this.logFileDirectoryLabel.setEnabled(false);
- this.logFileDirectoryText.setEnabled(false);
- this.browse.setEnabled(false);
-
- }
-
- /**
- * Sets the controls with the default values form the preference.ini file
- */
- private void setValuesToDefault() {
- this.logFileNameText.setText(getPreferenceStore().getDefaultString(SCAToolsPreferenceConstants.TEXT_LOGFILENAME));
- this.logFileDirectoryText
- .setText(getPreferenceStore().getDefaultString(SCAToolsPreferenceConstants.TEXT_LOGFILEDIRECTORY));
- }
-
- /**
- * This method will be called when the user clicks on "Restore defaults" button.It basically sets the default values
- * of the UI controls.
- */
- @Override
- protected void performDefaults() {
- setDefaultsControls();
- setValuesToDefault();
- validate();
- }
-
-
- /**
- * This method gets the values of the check box buttons selected, the log file name and the log file directory and
- * save them in the preference store
- */
- private void savePreferences() {
- this.scaLoggerType = new StringBuilder();
- for (Map.Entry<String, String> entry : this.selectedCheckBox.entrySet()) {
- String key = entry.getKey();
- String value = entry.getValue();
- if (this.selectedButtons.contains(value)) {
- this.scaLoggerType = this.scaLoggerType.append(key + ";");
- }
- }
- this.scaLoggerType =
- new StringBuilder(this.scaLoggerType.substring(0, this.scaLoggerType.length() - 1));
- getPreferenceStore().setValue(SCAToolsPreferenceConstants.SCA_LOGGER, this.scaLoggerType.toString());
- getPreferenceStore().setValue(SCAToolsPreferenceConstants.TEXT_LOGFILENAME, this.logFileNameText.getText());
- getPreferenceStore().setValue(SCAToolsPreferenceConstants.TEXT_LOGFILEDIRECTORY,
- this.logFileDirectoryText.getText());
-
- getPreferenceStore().setValue(SCAToolsPreferenceConstants.DEBUG_MODE, this.debugModeButton.getSelection());
- Logmanager.getInstance().setDebugMode(this.debugModeButton.getSelection());
- }
-
-
- /**
- * This method enables or disables the text controls depending on the check boxes that are selected the text controls
- * are enabled when user clicks on "Log file" check box button.
- *
- * @param selected Set of check boxes that are selected
- */
- private void enableOrDisableText(final HashSet<String> selected) {
- this.logFileDirectoryText.setEnabled(false);
- this.logFileDirectoryLabel.setEnabled(false);
- this.logFileNameText.setEnabled(false);
- this.logFileNameLabel.setEnabled(false);
- this.browse.setEnabled(false);
-
-
- if (selected.contains(SCAToolsPreferenceConstants.LOG_FILE)) {
- this.logFileDirectoryText.setEnabled(true);
- this.logFileDirectoryLabel.setEnabled(true);
- this.logFileNameText.setEnabled(true);
- this.logFileNameLabel.setEnabled(true);
- this.browse.setEnabled(true);
- }
-
- }
-
-
- /**
- * The method initializes the UI controls. It checks if there are any values stored in preference store, if yes the UI
- * controls are set to those present in preference store else they are set to the defalt values
- */
- private void initializeValues() {
- this.logFileNameText.setText(getPreferenceStore().getString(SCAToolsPreferenceConstants.TEXT_LOGFILENAME));
- this.logFileDirectoryText.setText(getPreferenceStore().getString(SCAToolsPreferenceConstants.TEXT_LOGFILEDIRECTORY));
-
- String selectedLoggers = getPreferenceStore().getString(SCAToolsPreferenceConstants.SCA_LOGGER);
- if (selectedLoggers.isEmpty()) {
- setDefaultsControls();
- }
- else {
- String[] buttons = (selectedLoggers.split(";"));
- for (String s : buttons) {
- this.selectedButtons.add(this.selectedCheckBox.get(s));
- }
- }
- initializeDebugMode(getPreferenceStore().getString(SCAToolsPreferenceConstants.DEBUG_MODE));
- for (Button b : this.checkBoxButtons) {
- if (this.selectedButtons.contains(b.getText())) {
- b.setSelection(true);
- }
- else {
- b.setSelection(false);
- }
- }
- enableOrDisableText(this.selectedButtons);
- validate();
- }
-
- /**
- * Initializes the debug check box based on the give value
- *
- * @param value String
- */
- private void initializeDebugMode(final String value) {
- if ("true".equals(value)) {
- this.debugModeButton.setSelection(true);
- Logmanager.getInstance().setDebugMode(true);
- }
- else {
- this.debugModeButton.setSelection(false);
- Logmanager.getInstance().setDebugMode(false);
- }
- }
-
- /**
- * This method disables the Ok and Apply button whenever there is an error message set.
- */
- private void disableOrEnableOkAndApplyButton() {
- Button okButton = null;
- PreferenceDialog iPreferencePageContainer = (PreferenceDialog) getContainer();
-
- Composite buttons = (Composite) iPreferencePageContainer.buttonBar;
- Control[] allbuttons = buttons.getChildren();
- Composite compositeForButtons = (Composite) allbuttons[1];
- for (Control b : compositeForButtons.getChildren()) {
- if (b instanceof Button) {
- Button presentButton = (Button) b;
- if ("OK".equals(presentButton.getText())) {
- okButton = presentButton;
- }
- }
-
- }
-
- Button applyButton = getApplyButton();
- if ((okButton != null) && (applyButton != null)) {
- if (getErrorMessage() != null) {
- okButton.setEnabled(false);
- applyButton.setEnabled(false);
- }
- else {
- okButton.setEnabled(true);
- applyButton.setEnabled(true);
- }
- }
- }
-
-
- /**
- * This method will be called whenever the "Log File" check box button is selected. This method validates the Log File
- * Name and Log File Directory text boxes and sets the error message whenever applicable.
- */
- private void validatelogFile() {
- if (this.logFileNameText.getText().endsWith(".log") && (new File(this.logFileDirectoryText.getText())).exists()) {
- setErrorMessage(null);
- }
- else {
- if (!this.logFileNameText.getText().endsWith(".log")) {
- this.errorMessage = "Log File name should end with .log";
- setErrorMessage(this.errorMessage);
- }
- }
- }
-
-
- private void addKeyListenerToTextBox(final Text t) {
- t.addKeyListener(new KeyListener() {
-
-
- @Override
- public void keyReleased(final KeyEvent e) {
- validate();
- }
-
- @Override
- public void keyPressed(final KeyEvent e) {
- validate();
- }
- });
- }
-
- private void initializeMap() {
- this.selectedCheckBox = new HashMap<String, String>();
- this.selectedCheckBox.put(LoggerType.ECLIPSE_CONSOLE.toString(), SCAToolsPreferenceConstants.ECLIPSE_CONSOLE);
- this.selectedCheckBox.put(LoggerType.ERROR_LOG.toString(), SCAToolsPreferenceConstants.ERROR_LOG);
- this.selectedCheckBox.put(LoggerType.PROBLEMS_LOG.toString(), SCAToolsPreferenceConstants.PROBLEMS_LOG);
- this.selectedCheckBox.put(LoggerType.TEXT_FILE.toString(), SCAToolsPreferenceConstants.LOG_FILE);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String getToolId() {
- return SCAToolsPreferenceConstants.SCA_TOOL_ID;
- }
-}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/preferences/interfaces/IExportPreferences.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/preferences/interfaces/IExportPreferences.java
deleted file mode 100644
index 05f3374..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/preferences/interfaces/IExportPreferences.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- ********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.sca.ui.preferences.interfaces;
-
-import java.util.List;
-
-import org.eclipse.jface.preference.IPreferenceStore;
-
-/**
- * The contribution class of the extension point org.eclipse.app4mc.ui.exportOptions need to implement the below
- * interface. The extension point expect the keys that are to be exported as part of the options file and the preference
- * store from which the value of the keys are to be fetched.
- */
-public interface IExportPreferences {
-
- /**
- * Mentions all the preferences to be exported to the options file
- *
- * @return List of preferences to be exported
- */
- public List<String> keysToExport();
-
- /**
- * Specifies the preference store from which the preferences are to be exported
- *
- * @return {@link IPreferenceStore}
- */
- public IPreferenceStore getPreferenceStore();
-}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/AmaltheaWizardPreferenceConstants.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/AmaltheaWizardPreferenceConstants.java
new file mode 100644
index 0000000..f69f429
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/AmaltheaWizardPreferenceConstants.java
@@ -0,0 +1,63 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca.ui.util;
+
+
+/**
+ * Constants class for Amalthea wizard preferences
+ */
+public class AmaltheaWizardPreferenceConstants {
+
+ /**
+ * Project path in the file system
+ */
+ public static final String PROJECT_PATH = "projectPath";
+
+ /**
+ * Preference key for build_cmds.log file
+ */
+ public static final String BUILD_CMDS_LOG_FILE = "buildCmdsLogFile";
+
+ /**
+ * Preference key for OS lock function file
+ */
+ public static final String OS_LOCK_FILE = "lockInfo";
+ /**
+ * Preference key for Task/Scheduling file
+ */
+ public static final String TASK_SCHEDULING_FILE = "taskInfo";
+
+ /**
+ * Preference key for Path to output directory
+ */
+ public static final String OUTPUT_DIRECTORY = "outputPath";
+
+ /**
+ * Preference key for Generate struct members option.
+ */
+ public static final String ENABLE_STRUCT_MEMBER_KEY = "enableStructMember";
+
+ /**
+ * Preference key for Path to llvm executable option
+ */
+ public static final String AST_PATH_KEY = "astPath";
+ /**
+ * Preference key for header directories list option.
+ */
+ public static final String HDIR_LIST_KEY = "hdirList";
+
+ /**
+ * Preference key for build command log option.
+ */
+ public static final String BLOG_KEY = "blog";
+
+ /**
+ *
+ */
+ private AmaltheaWizardPreferenceConstants() {
+ // default constructor
+ }
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/ButtonInfo.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/ButtonInfo.java
new file mode 100644
index 0000000..9b67f66
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/ButtonInfo.java
@@ -0,0 +1,64 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca.ui.util;
+
+
+/**
+ * Class for storing swt button information.
+ */
+public class ButtonInfo {
+
+ private final String buttonName;
+ private final String buttonId;
+ private final ButtonType buttonType;
+
+ /**
+ * @param name
+ * @param id
+ */
+ public ButtonInfo(final String name, final String id, final ButtonType buttonType) {
+ this.buttonName = name;
+ this.buttonId = id;
+ this.buttonType = buttonType;
+ }
+
+
+ /**
+ * @return the buttonName
+ */
+ public String getButtonName() {
+ return this.buttonName;
+ }
+
+
+ /**
+ * @return the buttonId
+ */
+ public String getButtonId() {
+ return this.buttonId;
+ }
+
+
+ /**
+ * @return the buttonType
+ */
+ public ButtonType getButtonType() {
+ return this.buttonType;
+ }
+
+ @Override
+ public boolean equals(final Object buttonInfo) {
+ if (buttonInfo instanceof ButtonInfo) {
+ return this.buttonName.equals(((ButtonInfo) buttonInfo).getButtonName());
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ return this.buttonName.hashCode();
+ }
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/ButtonType.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/ButtonType.java
new file mode 100644
index 0000000..656a8e1
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/ButtonType.java
@@ -0,0 +1,27 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca.ui.util;
+
+
+/**
+ * Enum representing button type.
+ */
+public enum ButtonType {
+
+ /**
+ * For Browsing a file.
+ */
+ BROWSE_FILE,
+ /**
+ * For Browsing a Directory.
+ */
+ BROWSE_FOLDER,
+ /**
+ * For Removing items.
+ */
+ REMOVE
+
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/IAmaltheaGenerator.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/IAmaltheaGenerator.java
new file mode 100644
index 0000000..950e406
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/IAmaltheaGenerator.java
@@ -0,0 +1,28 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca.ui.util;
+
+import java.util.Properties;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+
+/**
+ * This is the generator interface class for Amalthea generation
+ */
+@FunctionalInterface
+public interface IAmaltheaGenerator {
+
+ /**
+ * Funcitonality for amalthea generation based on the provided input @Properties
+ *
+ * @param monitor IProgressMonitor
+ * @param properties Properties
+ * @return IStatus
+ */
+ public IStatus execute(final IProgressMonitor monitor, final Properties properties);
+
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/IOptionsProvider.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/IOptionsProvider.java
new file mode 100644
index 0000000..fd58810
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/IOptionsProvider.java
@@ -0,0 +1,22 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca.ui.util;
+
+import java.util.Properties;
+
+/**
+ * This is an interface to handle input/output Properties/Options.
+ */
+public interface IOptionsProvider {
+
+ /**
+ * @return - Contains all properties (UI and Tool properties)
+ */
+ public Properties getOptions();
+
+
+}
+
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/LabelListButtonCreator.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/LabelListButtonCreator.java
new file mode 100644
index 0000000..58b1c2d
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/LabelListButtonCreator.java
@@ -0,0 +1,214 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca.ui.util;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * Utility to create label, list and the buttons.
+ */
+public class LabelListButtonCreator {
+
+ /**
+ * {@link Label}
+ */
+ private Label label;
+ /**
+ * {@link Text}
+ */
+ private List listBox;
+
+ private final java.util.List<Button> buttons = new ArrayList<>();
+
+ private final Map<String, ButtonInfo> buttonInfoMap = new HashMap<>();
+ /**
+ * the project base path
+ */
+ private String basePath;
+
+
+ /**
+ * @param parent the root composite on which the label ,list and buttons are created.
+ * @param labelName the name of the label.
+ * @param listBoxId the list instance.
+ * @param buttonInfoList list of buttoninfo instances
+ */
+ public LabelListButtonCreator(final Composite parent, final String labelName, final String listBoxId,
+ final java.util.Set<ButtonInfo> buttonInfoList) {
+ createComponent(parent, labelName, listBoxId, buttonInfoList);
+ }
+
+ /**
+ * @param parent Composite into which this LabelTextButton composite is to be placed
+ * @param labelName label's text
+ * @param listBoxId - list Field Id
+ * @param buttonInfoList list of buttoninfo instances
+ */
+ public void createComponent(final Composite parent, final String labelName, final String listBoxId,
+ final java.util.Set<ButtonInfo> buttonInfoList) {
+ // Create Label
+ this.label = new Label(parent, SWT.LEFT);
+ this.label.setText(labelName);
+ this.label.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
+ // Create List Field
+ this.listBox = new List(parent, SWT.BORDER);
+ this.listBox.setData("name", listBoxId);
+ this.listBox.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+
+
+ Composite buttonComposite = new Composite(parent, SWT.NONE);
+ buttonComposite.setLayout(new GridLayout(1, false));
+ buttonComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, -1));
+
+ // Create buttons
+ for (ButtonInfo buttonInfo : buttonInfoList) {
+ Button button = new Button(buttonComposite, SWT.PUSH);
+ button.setData("name", buttonInfo.getButtonId());
+ button.setText(buttonInfo.getButtonName());
+ button.setLayoutData(new GridData(SWT.FILL, SWT.NONE, false, false));
+ this.buttons.add(button);
+ this.buttonInfoMap.put(buttonInfo.getButtonName(), buttonInfo);
+ }
+
+
+ GridData listData = (GridData) this.listBox.getLayoutData();
+ listData.heightHint = this.listBox.computeTrim(0, 0, 0, this.listBox.getItemHeight() * 4).height;
+
+ }
+
+ /**
+ * Adds listeners to the buttons of the list boxes.
+ */
+ public void addListeners() {
+ for (Button b : this.buttons) {
+ ButtonInfo buttonInfo = this.buttonInfoMap.get(b.getText());
+ if (buttonInfo.getButtonType().equals(ButtonType.BROWSE_FILE)) {
+ b.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ FileDialog dialog = new FileDialog(Display.getCurrent().getActiveShell());
+ String filePath = dialog.open();
+ if (filePath != null) {
+ LabelListButtonCreator.this.listBox.add(filePath);
+ }
+ }
+ });
+ }
+ else if (buttonInfo.getButtonType().equals(ButtonType.BROWSE_FOLDER)) {
+ b.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ DirectoryDialog dialog = new DirectoryDialog(Display.getCurrent().getActiveShell());
+ String directoryPath = dialog.open();
+ if (directoryPath != null) {
+ LabelListButtonCreator.this.listBox.add(directoryPath);
+ }
+ }
+ });
+ }
+ else if (buttonInfo.getButtonType().equals(ButtonType.REMOVE)) {
+ this.listBox.remove(this.listBox.getSelectionIndices());
+ }
+ }
+ }
+
+
+ /**
+ * @param pathname
+ */
+ public void setFilePath(final String pathname) {
+ Display.getDefault().syncExec(() -> {
+
+ if ((this.basePath != null) && !this.basePath.isEmpty()) {
+ try {
+ String path = new File(this.basePath).getCanonicalPath();
+ if (pathname.indexOf(path + File.separatorChar) != -1) {
+ this.listBox.add(pathname.substring(this.basePath.length() - 1));
+ }
+ else if (pathname.equalsIgnoreCase(path)) {
+ this.listBox.add("");
+ }
+ else {
+ this.listBox.add(pathname);
+ }
+ }
+ catch (IOException e) {
+ this.listBox.add(pathname);
+ }
+ }
+ else {
+ this.listBox.add(pathname);
+ }
+ });
+
+ }
+
+ /**
+ * @return the labelName
+ */
+ public Label getLabel() {
+ return this.label;
+ }
+
+ /**
+ * @return
+ */
+ public java.util.List<Button> getButtonList() {
+ return this.buttons;
+ }
+
+ /**
+ * @return
+ */
+ public Map<String, ButtonInfo> getButtonInfoMap() {
+ return this.buttonInfoMap;
+ }
+
+ /**
+ * @return
+ */
+ public List getListBox() {
+ return this.listBox;
+ }
+
+ /**
+ * @param projectLocation the project base path to set
+ */
+ public void setProjectPath(final String projectLocation) {
+ if (projectLocation.substring(projectLocation.length() - 1).equals(File.separator)) {
+ this.basePath = projectLocation;
+ }
+ this.basePath = projectLocation + File.separator;
+ }
+
+ /**
+ * @return the project base path
+ */
+ public String getProjectPath() {
+ return this.basePath;
+ }
+
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/LabelTextButtonCreator.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/LabelTextButtonCreator.java
new file mode 100644
index 0000000..5925fc3
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/LabelTextButtonCreator.java
@@ -0,0 +1,344 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca.ui.util;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+
+/**
+ * This class creates the often used combination of label, text and button
+ */
+public class LabelTextButtonCreator {
+
+ /**
+ * {@link Label}
+ */
+ private Label label;
+ /**
+ * {@link Text}
+ */
+ private Text textField;
+ /**
+ * {@link Button}
+ */
+ private Button button;
+ /**
+ * the project base path
+ */
+ private String basePath;
+ /**
+ * the absolute path to the given file
+ */
+ private String absolutePath = "";
+ private String optionalButtonTitle;
+ private Button optionalButton;
+ private int optionalButtonStyle;
+ private final LinkedHashMap<String, String> textHistory;
+
+ /**
+ * Constructor used for LabelTextButton composite.
+ *
+ * @param parent -Parent Composite
+ * @param labelName - Label Name
+ * @param textFieldId - Text Field Id
+ * @param buttonName - Button Name
+ * @param buttonId - Button Id
+ */
+ public LabelTextButtonCreator(final Composite parent, final String labelName, final String textFieldId,
+ final String buttonName, final String buttonId) {
+ createComponent(parent, labelName, textFieldId, buttonName, buttonId);
+ this.textHistory = new LinkedHashMap<>();
+ }
+
+
+ /**
+ * Constructor used for LabelTextButton composite with optional button
+ *
+ * @param parent {@link Composite}
+ * @param labelName Label Name
+ * @param textFieldId Text Field id
+ * @param buttonName Button name
+ * @param buttonId Button id
+ * @param optButtonStyle Optional button Style
+ * @param optButtonTitle Optional Button title
+ */
+ public LabelTextButtonCreator(final Composite parent, final String labelName, final String textFieldId,
+ final String buttonName, final String buttonId, final int optButtonStyle, final String optButtonTitle) {
+ this.optionalButtonStyle = optButtonStyle;
+ this.optionalButtonTitle = optButtonTitle;
+ createComponent(parent, labelName, textFieldId, buttonName, buttonId);
+ this.textHistory = new LinkedHashMap<>();
+ }
+
+
+ /**
+ * @return children items.
+ */
+ public Control[] getChildren() {
+ List<Control> children = new ArrayList<>();
+ Control[] mandatoryControls = new Control[] { this.label, this.textField, this.button };
+ children.addAll(Arrays.asList(mandatoryControls));
+ // Check if Optional Button has been provided
+ if (hasOptionalButton()) {
+ children.add(this.optionalButton);
+ }
+ return children.toArray(new Control[children.size()]);
+ }
+
+ /**
+ * @param parent Composite into which this LabelTextButton composite is to be placed
+ * @param labelName label's text
+ * @param textFieldId - Text Field Id
+ * @param buttonName button's text
+ * @param buttonId - Button Id
+ */
+ public void createComponent(final Composite parent, final String labelName, final String textFieldId,
+ final String buttonName, final String buttonId) {
+ // Create Label
+ this.label = new Label(parent, SWT.LEFT);
+ this.label.setText(labelName);
+ this.label.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
+ // Create Text Field
+ this.textField = new Text(parent, SWT.BORDER);
+ this.textField.setData("name", textFieldId);
+ this.textField.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ this.textField.addVerifyListener(e -> {
+ // text field content before change
+ String currentText = ((Text) e.widget).getText();
+ // text field content after change
+ String changedText = currentText.substring(0, e.start) + e.text + currentText.substring(e.end);
+ validateTextEntry(changedText);
+ });
+
+
+ // Create button
+ this.button = new Button(parent, SWT.PUSH);
+ this.button.setData("name", buttonId);
+ this.button.setText(buttonName);
+ this.button.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, -1));
+
+ // Create Optional Button if needed
+ if (hasOptionalButton()) {
+ // depending on page it can be check box or push button
+ this.optionalButton = new Button(parent, this.optionalButtonStyle);
+ this.optionalButton.setText(this.optionalButtonTitle);
+ this.optionalButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 3, 1));
+ }
+ }
+
+
+ /**
+ * @return true if this LabelTextButtonCreator component has the optional Label + Button, false otherwise
+ */
+ private boolean hasOptionalButton() {
+ return !((this.optionalButtonTitle == null) || this.optionalButtonTitle.isEmpty());
+ }
+
+
+ /**
+ * Enable / Disable the control
+ *
+ * @param enabled Indicates if the control should be enabled or disabled
+ */
+
+ public void setEnabled(final boolean enabled) {
+ if (this.label != null) {
+ this.label.setEnabled(enabled);
+ }
+ if (this.textField != null) {
+ this.textField.setEnabled(enabled);
+ }
+ if (this.button != null) {
+ this.button.setEnabled(enabled);
+ }
+ }
+
+ /**
+ * method to retain the relative path to project level
+ *
+ * @param pathname : set path from UI
+ */
+ public void setFilePath(final String pathname) {
+
+ Display.getDefault().syncExec(() -> {
+
+ if ((this.basePath != null) && !this.basePath.isEmpty()) {
+ try {
+ String path = new File(this.basePath).getCanonicalPath();
+ if (pathname.indexOf(path + File.separatorChar) != -1) {
+ this.textField.setText(pathname.substring(this.basePath.length() - 1));
+ }
+ else if (pathname.equalsIgnoreCase(path)) {
+ this.textField.setText("");
+ }
+ else {
+ this.textField.setText(pathname);
+ }
+ }
+ catch (IOException e) {
+ this.textField.setText(pathname);
+ }
+ }
+ else {
+ this.textField.setText(pathname);
+ }
+ });
+ }
+
+
+ /**
+ * Validates the provided path inside this LabelTextButtonCreator's text field and triggers respective notifications
+ * to be displayed in this LabelTextButtonCreator's notification component.
+ *
+ * @param filePath to be validated
+ */
+ public void validateTextEntry(final String filePath) {
+ if (filePath != null) {
+ String tempFilePath = filePath.trim();
+ if (!tempFilePath.isEmpty() &&
+ (new File(tempFilePath).exists() || new File(this.basePath + tempFilePath).exists())) {
+ setAbsolutePath(tempFilePath);
+ }
+ else if (tempFilePath.isEmpty()) {
+ this.absolutePath = "";
+ }
+ }
+ }
+
+
+ /**
+ * @param filePath
+ */
+ private void setAbsolutePath(final String filePath) {
+ if (new File(filePath).exists()) {
+ this.absolutePath = filePath;
+ }
+ else {
+ if (new File(filePath).isAbsolute()) {
+ this.absolutePath = filePath;
+ }
+ else if (new File(this.basePath + filePath).exists()) {
+ this.absolutePath = new File(this.basePath + filePath).getAbsolutePath();
+ }
+ else {
+ this.absolutePath = this.basePath + filePath;
+ }
+ }
+ this.textHistory.put(this.label.getText(), this.absolutePath);
+ }
+
+
+ /**
+ * @return the labelName
+ */
+ public Label getLabel() {
+ return this.label;
+ }
+
+
+ /**
+ * @return the textFieldName
+ */
+
+ public Text getTextField() {
+ return this.textField;
+ }
+
+
+ /**
+ * @return the buttonName
+ */
+
+ public Button getButton() {
+ return this.button;
+ }
+
+ /**
+ * @return the Optional Button
+ */
+ public Button getOptionalButton() {
+ return this.optionalButton;
+ }
+
+ /**
+ * @param projectLocation the project base path to set
+ */
+ public void setProjectPath(final String projectLocation) {
+ if (projectLocation.substring(projectLocation.length() - 1).equals(File.separator)) {
+ this.basePath = projectLocation;
+ }
+ this.basePath = projectLocation + File.separator;
+ }
+
+ /**
+ * @return the project base path
+ */
+ public String getProjectPath() {
+ return this.basePath;
+ }
+
+
+ /**
+ * @return the absolutePath of the file/directory given in text field
+ */
+
+ public String getAbsoluteFilePath() {
+ return this.absolutePath;
+ }
+
+
+ /**
+ * @return the text history
+ */
+ public Map<String, String> getTextHistory() {
+ return this.textHistory;
+ }
+
+
+ /**
+ * @return the location for the Dialog to open in when pressing "Browse" button
+ */
+ public String provideDialogLocation() {
+ String location = getProjectPath();
+ String textEntry = getTextField().getText();
+
+ File file = new File(textEntry);
+ // dialog per default shall open either in location provided in text field or in project base path
+ if (!textEntry.isEmpty()) {
+ // try to set location to provided path of text field
+ if (file.exists()) {
+ // as is (full path)
+ if (file.isDirectory()) {
+ location = file.getPath();
+ }
+ else {
+ location = file.getParent();
+ }
+ }
+ else if (new File(getProjectPath() + textEntry).exists()) {
+ // base path + text field entry (full path = base path + relative path)
+ location = new File(getProjectPath() + textEntry).getParent();
+ }
+ }
+ return location;
+ }
+
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/NoScrollFormLayout.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/NoScrollFormLayout.java
new file mode 100644
index 0000000..06a2969
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/NoScrollFormLayout.java
@@ -0,0 +1,46 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca.ui.util;
+
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Layout;
+
+/**
+ * This layout is intended to be assigned to the body composite of a FormPage with a ScrolledForm. It ensures that the
+ * body composite will never exceed the size of the form window thereby inhibiting the form from creating scrollbars.
+ */
+public class NoScrollFormLayout extends Layout {
+
+ /**
+ * Always return 1,1. Indicating to the parent Form that this composite will shrink to the desired size.
+ */
+ @Override
+ protected Point computeSize(final Composite composite, final int wHint, final int hHint, final boolean flushCache) {
+ // Compute sie for Point
+ return new Point(1, 1);
+ }
+
+ /**
+ * All child composites will be made the size of the form.
+ */
+ @Override
+ protected void layout(final Composite composite, final boolean flushCache) {
+ // |Get the children from the composite
+ Control[] children = composite.getChildren();
+ // Get client area for each child element and set bounds
+ for (Control element : children) {
+ // Get client area
+ Rectangle bounds = composite.getClientArea();
+ if (bounds != null) {
+ // Set bounds
+ element.setBounds(bounds);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/SCAToolsPreferenceConstants.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/SCAToolsPreferenceConstants.java
deleted file mode 100644
index 8283766..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/SCAToolsPreferenceConstants.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- ********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.sca.ui.util;
-
-
-/**
- * Constants class to contain all the constants used in ui features
- */
-public final class SCAToolsPreferenceConstants {
-
- /**
- * Private Constructor
- */
- private SCAToolsPreferenceConstants() {
- // Private constructor
- }
-
- /**
- * SCA Tool id
- */
- public static final String SCA_TOOL_ID = "SCATOOLs";
-
- /**
- * default directory of the log file
- */
- public static final String DEFAULT_DIRECTORY = System.getProperty("user.home");
-
- /**
- * preference name of the log file
- */
- public static final String TEXT_LOGFILENAME = "LOG_FILE_NAME";
-
- /**
- * preference name of the log file directory
- */
- public static final String TEXT_LOGFILEDIRECTORY = "LOG_FILE_DIRECTORY";
-
- /**
- * preference name of the radio buttons
- */
- public static final String SCA_LOGGER = "SCA_LOGGER";
-
- /**
- * preference page description
- */
- public static final String PREFERENCE_PAGE_DESCRIPTION = "General settings for multicore tools";
-
- /**
- * Log File radio button.
- */
- public static final String LOG_FILE = "Log File";
-
-
- /**
- * Error Log radio button.
- */
- public static final String ERROR_LOG = "Error Log";
-
- /**
- * Eclipse Console radio button.
- */
- public static final String ECLIPSE_CONSOLE = "Eclipse Console";
-
- /**
- * Problems Log radio button.
- */
- public static final String PROBLEMS_LOG = "Problems Log";
-
- /**
- * Debug mode check box label
- */
- public static final String DEBUG_MODE_LABEL = "Enable/Disable debug mode";
- /**
- * Debug mode key
- */
- public static final String DEBUG_MODE = "DEBUG_MODE";
-
- /**
- * OPT export failed message
- */
- public static final String OPT_EXPORT_FAILED = "";
- /**
- * OPT export success message
- */
- public static final String OPT_EXPORT_SUCCESS = "Preferences appended to the given file successfully";
- /**
- * Message to be displayed when the file name or the tool id is empty
- */
- public static final String EMPTY_FILE_OR_TOOL_ID = "Tool ID and Input file path cannot be empty or null";
- /**
- * Message to be displayed when the extension of the file provided is invalid
- */
- public static final String INVALID_EXT =
- "The input file should have .opt extension. Create an opt file and try again";
- /**
- * Message to be displayed when the file provided is invalid
- */
- public static final String INVALID_FILE = "No file exists in the path provided. Create an opt file and try again";
- /**
- * Message to be displayed when the tood id provided is invalid
- */
- public static final String INVALID_TOOLID = "Invalid tool id. Please check and retry";
- /**
- * Options file extension
- */
- public static final String OPTIONS_FILE_EXT = ".opt";
-
-
-}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/SCAToolsUIUtil.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/SCAToolsUIUtil.java
index d0a25b9..90e4eec 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/SCAToolsUIUtil.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/SCAToolsUIUtil.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -15,28 +15,16 @@
package org.eclipse.app4mc.sca.ui.util;
import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
+import java.util.Arrays;
-import org.eclipse.app4mc.sca.logging.exception.App4mcLoggerException;
-import org.eclipse.app4mc.sca.logging.manager.Logmanager;
-import org.eclipse.app4mc.sca.logging.util.SCALogConstants;
-import org.eclipse.app4mc.sca.ui.Activator;
-import org.eclipse.app4mc.sca.ui.preferences.interfaces.IExportPreferences;
-import org.eclipse.app4mc.sca.util.parsers.OptionsFileParser;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.InvalidRegistryObjectException;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ProjectScope;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.PlatformUI;
/**
* Utilities for all the SCA ui operations
@@ -44,231 +32,112 @@
public final class SCAToolsUIUtil {
/**
- * Map that contains all the keys that are to be exported for a given tool
- */
- private static HashMap<String, List<String>> exportKeyList = null;
-
- private static HashMap<String, IPreferenceStore> preferenceStoreMap = new HashMap<String, IPreferenceStore>();
-
- /**
- * Extension point id of {@code productNameAndVersionDefinition} extension point
- */
- private static final String EXT_POINT_ID = "org.eclipse.app4mc.ui.exportOptions";
-
- /**
* Private constructor
*/
private SCAToolsUIUtil() {
// Private constructor
}
- /**
- * Loads the contributed keys that are to be exported as options file
- */
- private static void loadExportKeyContributions() {
- try {
- if ((exportKeyList == null)) {
- synchronized (SCAToolsUIUtil.class) {
- exportKeyList = new HashMap<String, List<String>>();
- }
- }
- IExtension[] extensions = Platform.getExtensionRegistry().getExtensionPoint(EXT_POINT_ID).getExtensions();
- for (IExtension extension : extensions) {
- IConfigurationElement[] configElements = extension.getConfigurationElements();
- for (IConfigurationElement configElement : configElements) {
- String preferenceClass = configElement.getAttribute("preferences");
- String toolId = configElement.getAttribute("tool");
- exportKeyList.put(toolId, fetchKeysFromClass(preferenceClass, extension, exportKeyList.get(toolId), toolId));
- }
- }
- }
- catch (InvalidRegistryObjectException e) {
- Logmanager.getInstance().logException(SCAToolsUIUtil.class, e, SCALogConstants.PLUGIN_ID);
- }
- }
/**
- * Fetches the keys to be exported from the contributed class and returns the list
+ * method to get the absolute path to project level
*
- * @param preferenceClass
- * @param extension The extension from which
- * @param keyList The key list. null in case its empty
- * @return Returns the keyList to be added to the tool
+ * @param projectPath - project path
+ * @param absoluteOrRelativePath : relative path of the file
+ * @return absolute path of the file
*/
- @SuppressWarnings("unchecked")
- private static List<String> fetchKeysFromClass(final String preferenceClass, final IExtension extension,
- final List<String> keyList, final String toolId) {
- if (preferenceClass != null) {
- Class<IExportPreferences> preference;
- try {
- preference = (Class<IExportPreferences>) Platform.getBundle(extension.getContributor().getName())
- .loadClass(preferenceClass);
- IExportPreferences preferenceInstance = preference.newInstance();
- preferenceStoreMap.put(toolId, preferenceInstance.getPreferenceStore());
- if (keyList == null) {
- ArrayList<String> newList = new ArrayList<String>();
- newList.addAll(preferenceInstance.keysToExport());
- return newList;
- }
- keyList.addAll(preferenceInstance.keysToExport());
- }
- catch (ClassNotFoundException | InvalidRegistryObjectException | InstantiationException
- | IllegalAccessException e) {
- Logmanager.getInstance().logException(SCAToolsUIUtil.class, e, SCALogConstants.PLUGIN_ID);
- }
- }
- return keyList;
- }
-
- /**
- * Uses the properties API to export the preferences to the options file
- *
- * @param opFile The options file to which the properties are to be exported
- * @param store the given preference store
- * @param toolId The tool for which the preferences are to be exported to the options file
- */
- public static void exportProperties(final File opFile, final IPreferenceStore store, final String toolId) {
- List<String> keysToExport = getKeysToExport(toolId);
- IPreferenceStore prefStore = store;
- if (prefStore == null) {
- prefStore = preferenceStoreMap.get(toolId);
- }
+ public static String getProjectAbsoluteFilePath(final String projectPath, final String absoluteOrRelativePath) {
try {
- updateAndSaveProperties(opFile, keysToExport, prefStore);
+ if ((projectPath != null) && (absoluteOrRelativePath != null)) {
+ // get canonical path
+ String path = new File(projectPath).getCanonicalPath();
+ if (new File(absoluteOrRelativePath).isAbsolute()) {
+ return absoluteOrRelativePath;
+ }
+ File projectAbsPath = new File(path + File.separator + absoluteOrRelativePath);
+ if (projectAbsPath.exists()) {
+ return projectAbsPath.getAbsolutePath();
+ }
+ }
+ return absoluteOrRelativePath;
}
catch (IOException e) {
- Logmanager.getInstance().logException(SCAToolsUIUtil.class, e, Activator.PLUGIN_ID);
- }
- }
-
- /**
- * Saves the given properties to the given file
- *
- * @param prop the properties to be saved
- * @param opFile The file to which the properties are to be saved
- * @throws IOException exception in case if something goes wrong
- */
- private static void saveProperties(final Properties properties, final File opFile) throws IOException {
- FileOutputStream fr = new FileOutputStream(opFile);
- properties.store(fr, "Properties");
- fr.close();
- }
-
- /**
- * Retreives the keys for the given tool id
- *
- * @param toolId String
- * @return {@link String}
- */
- public static List<String> getKeysToExport(final String toolId) {
- if ((exportKeyList == null)) {
- loadExportKeyContributions();
- }
- return exportKeyList.get(toolId);
- }
-
-
- /**
- * Appends the given preferences to the provided input file
- *
- * @param inputOptFilePath THe input options file to which the preferences are exported
- * @param toolId The tool for which the preferences are to be exported
- * @throws IOException Exception in case something goes wrong
- * @throws App4mcLoggerException if the validation fails
- */
- public static void exportPropertiesToInputFile(final String inputOptFilePath, final String toolId)
- throws IOException, App4mcLoggerException {
-
- File inputFile = new File(inputOptFilePath);
- validate(toolId, inputOptFilePath, inputFile);
- List<String> keysToExport = getKeysToExport(toolId);
- if (!exportKeyList.containsKey(toolId)) {
- throw new App4mcLoggerException(SCAToolsPreferenceConstants.INVALID_TOOLID);
- }
- IPreferenceStore iPreferenceStore = preferenceStoreMap.get(toolId);
- removePreferencesPresentInOptionsFile(keysToExport, inputOptFilePath);
- try {
- updateAndSaveProperties(inputFile, keysToExport, iPreferenceStore);
- Logmanager.getInstance().log(SCAToolsPreferenceConstants.OPT_EXPORT_SUCCESS);
- }
- catch (IOException e) {
- Logmanager.getInstance().logException(SCAToolsUIUtil.class, e, Activator.PLUGIN_ID);
- }
- }
-
- /**
- * @param inputFile
- * @param keysToExport
- * @param iPreferenceStore
- * @throws IOException
- * @throws App4mcLoggerException
- */
- private static void updateAndSaveProperties(final File inputFile, final List<String> keysToExport,
- final IPreferenceStore iPreferenceStore) throws IOException, App4mcLoggerException {
- Properties properties = new Properties();
- InputStream in = new FileInputStream(inputFile);
- properties.load(in);
- for (String key : keysToExport) {
- String prefValue = iPreferenceStore.getString(key);
- properties.setProperty(key, prefValue);
- }
- saveProperties(properties, inputFile);
- }
-
- /**
- * Removes the keys that are already part of the options file from the keys that are to be exported. This makes sure
- * that only the keys that are not there in the options file are written on to the file
- *
- * @param keysToExport {@link List}
- */
- private static void removePreferencesPresentInOptionsFile(final List<String> keysToExport, final String optFilePath) {
- Map<?, ?> properties = loadOptionsFile(optFilePath);
- Set<?> keySet = properties.keySet();
- for (Object key : keySet) {
- keysToExport.remove(key);
- }
- }
-
- /**
- * Loads the given input options file to the properties map
- *
- * @param optFilePath the given options file
- * @return Returns the properties that contains all the key and values
- */
- private static Map<?, ?> loadOptionsFile(final String optFilePath) {
- OptionsFileParser parser = new OptionsFileParser();
- return parser.load(optFilePath, null);
- }
-
- /**
- * Validates the parameters
- */
- private static void validate(final String toolId, final String inputFilePath, final File inputFile)
- throws App4mcLoggerException {
- if ((toolId == null) || toolId.isEmpty() || (inputFilePath == null) || inputFilePath.isEmpty()) {
- throw new App4mcLoggerException(SCAToolsPreferenceConstants.EMPTY_FILE_OR_TOOL_ID);
- }
- if (!inputFile.exists()) {
- throw new App4mcLoggerException(SCAToolsPreferenceConstants.INVALID_FILE);
- }
- else if (!inputFilePath.endsWith(SCAToolsPreferenceConstants.OPTIONS_FILE_EXT)) {
- throw new App4mcLoggerException(SCAToolsPreferenceConstants.INVALID_EXT);
+ return absoluteOrRelativePath;
}
}
/**
- * @return the exportKeyList
+ * @param projectPath - Project path
+ * @param path - Absoulte/Relative path
+ * @param isFile - true if it is file else false(for directory)
+ * @param fileExtension - File extension
+ * @return true if valid else false
*/
- public static Map<String, List<String>> getExportKeyList() {
- return exportKeyList;
+ public static boolean validatePath(final String projectPath, final String path, final boolean isFile,
+ final String... fileExtension) {
+ if ((projectPath != null) && !projectPath.isEmpty()) {
+ File file = new File(getProjectAbsoluteFilePath(projectPath, path.trim()));
+ String extension = file.getAbsolutePath().substring(file.getAbsolutePath().lastIndexOf('.') + 1);
+ if (isFile && (fileExtension != null)) {
+ return (file.canRead() && file.isFile() &&
+ Arrays.asList(fileExtension).stream().anyMatch(e -> e.equalsIgnoreCase(extension) || e.equals("*.*")));
+ }
+ return (file.canRead() && file.isDirectory());
+ }
+ return false;
}
-
/**
- * @return the preferenceStoreMap
+ * @param path - path
+ * @return true if it is a drive else false
*/
- public static Map<String, IPreferenceStore> getPreferenceStoreMap() {
- return preferenceStoreMap;
+ public static boolean isDrive(final String path) {
+ String regex = "[a-zA-Z]:|[a-zA-Z]:\\\\";
+ return path.matches(regex);
}
+
+ /**
+ * @param resource project whose preferences have to loaded.
+ * @param pluginId plugin id
+ * @return IEclipsePreferences
+ */
+ public static IEclipsePreferences loadProjectScopePrefs(final IProject resource, final String pluginId) {
+ ProjectScope projectScope = new ProjectScope(resource);
+ return projectScope.getNode(pluginId);
+ }
+
+ /**
+ * @return IProject
+ */
+ public static IProject getCurrentProjectResource() {
+ Object currentProjectResource = getSelectionObject();
+ if (currentProjectResource != null) {
+ return ((IResource) currentProjectResource).getProject();
+ }
+ return null;
+ }
+
+ /**
+ * @return selected element
+ */
+ public static Object getSelectionObject() {
+ ISelection selection = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().getSelection();
+ if (selection instanceof IStructuredSelection) {
+ return ((IStructuredSelection) selection).getFirstElement();
+ }
+ return null;
+ }
+
+ /**
+ * @return the project folder path of the selected ifile.
+ */
+ public static String getCurrentSelectionProjectPath() {
+ IProject currentSelectionProject = getCurrentProjectResource();
+ if (currentSelectionProject != null) {
+ return currentSelectionProject.getLocation().toOSString();
+ }
+ return null;
+ }
+
}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/WizardConstants.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/WizardConstants.java
new file mode 100644
index 0000000..8e28bd0
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/util/WizardConstants.java
@@ -0,0 +1,123 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca.ui.util;
+
+/**
+ * This is constants class for common Wizard dialog for Elf2Amalthea/SCA2Amalthea
+ */
+public class WizardConstants {
+
+ /**
+ * Export Options button name
+ */
+ public static final String EXPORT_OPTIONS = "Export Options";
+ /**
+ * Default file name used during the export options button
+ */
+ public static final String DEFAULT_EX_OPT_FILE_NAME = "OptionsExport.opt";
+
+ /**
+ * Browse button name
+ */
+ public static final String BROWSE = "Browse";
+ /**
+ * Output
+ */
+ public static final String OUTPUT = "Output";
+
+ /**
+ * SW Data (Labels/Runnables)
+ */
+ public static final String SW_DATA = "SW Data (Labels/Runnables)";
+
+ /**
+ * Scheduling/OS Data
+ */
+ public static final String SCHEDULING_OS_DATA = "Scheduling/OS Data";
+ /**
+ * OS lock function file (optional)
+ */
+ public static final String OS_LOCK_FUNC_FILE = "OS lock function file (optional)";
+ /**
+ * Task/Scheduling file (optional)
+ */
+ public static final String TASK_SCHED_FILE = "Task/Scheduling file (optional)";
+
+ /**
+ * Path to output directory (optional)
+ */
+ public static final String OUTPUT_DIRECTORY_PATH = "Output directory (optional)";
+ /**
+ * Amalthea Generation
+ */
+ public static final String AMALTHEA_GENERATION = "Amalthea Generation";
+ /**
+ * Group Name used in sca2amalthea widget
+ */
+ public static final String GROUP_SCA2AMALTHEA = "SCA2AMALTHEA";
+ /**
+ * Generate struct member check box text.
+ */
+ public static final String GENERATE_STRUCT_MEMBER = "Generate Structure members";
+ /**
+ * LLVM Executable path label text
+ */
+ public static final String LLVM_PATH_TEXT = "LLVM Executable directory (optional)";
+ /**
+ * Header directories label text.
+ */
+ public static final String HEADER_DIRECTORIES = "Header directories (optional)";
+ /**
+ * New Button text.
+ */
+ public static final String NEW_BUTTON = "New";
+ /**
+ * Remove Button text.
+ */
+ public static final String REMOVE_BUTTON = "Remove";
+ /**
+ * Build cmd file label text.
+ */
+ public static final String BUILD_CMD_FILE = "Build command log file (optional)";
+
+ /**
+ * Error message to be shown when the path of the llvm executable is not existing.
+ */
+ public static final String LLVM_PATH_ERROR_MESSAGE = "Path to the llvm does not exist";
+
+ /**
+ * Error message to be shown when the path of the llvm executable is not existing.
+ */
+ public static final String LLVM_PATH_DIR_MESSAGE = "Path to the llvm should be a directory";
+
+ /**
+ * Error message to be shown when the path of the llvm executable is empty.
+ */
+ public static final String LLVM_PATH_EMPTY_ERROR_MESSAGE = "Path to the llvm is mandatory";
+ /**
+ * Error message to be shown when the path of the build cmd file does not exit.
+ */
+ public static final String BUILD_CMD_FILE_ERROR_MESSAGE = "Path of the build command log file does not exist";
+ /**
+ * Error message to be shown when the path of the build cmd file does not end with .log.
+ */
+ public static final String BUILD_CMD_FILE_EXTENSION_ERROR_MESSAGE =
+ "Path of the build command log file shoud end with .log extension";
+
+ /**
+ * Error message to be shown when the header directory paths do not exist.
+ */
+ public static final String HEADER_LIST_ERROR_MESSAGE = "At least one of the header directory paths does not exist";
+
+
+ /**
+ * Private Constructor
+ */
+ private WizardConstants() {
+ // Private Constructor
+ }
+
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/widget/builder/OutputDetailsWidgetBuilder.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/widget/builder/OutputDetailsWidgetBuilder.java
new file mode 100644
index 0000000..938894b
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/widget/builder/OutputDetailsWidgetBuilder.java
@@ -0,0 +1,47 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca.ui.widget.builder;
+
+import java.util.Properties;
+
+import org.eclipse.app4mc.sca.ui.util.AmaltheaWizardPreferenceConstants;
+import org.eclipse.app4mc.sca.ui.widgets.OutputDetailsWidget;
+import org.eclipse.app4mc.sca.ui.widgets.Widget;
+import org.eclipse.swt.widgets.Composite;
+
+
+/**
+ * This class provides the UI elements/Widgets for Output directory path for the Amalthea generation
+ */
+public class OutputDetailsWidgetBuilder implements WidgetBuilder {
+
+ private final Properties properties;
+
+ /**
+ * @param properties Properties
+ */
+ public OutputDetailsWidgetBuilder(final Properties properties) {
+ this.properties = properties;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Widget buildWidget(final Composite parent) {
+ return new OutputDetailsWidget(parent, this.properties);
+ }
+
+ /**
+ * @param enable - Enable/Disable output directory path
+ * @return OutputDetailsWidgetBuilder
+ */
+ public OutputDetailsWidgetBuilder setOutputDirectoryPathEnabled(final boolean enable) {
+ this.properties.setProperty(AmaltheaWizardPreferenceConstants.OUTPUT_DIRECTORY, Boolean.toString(enable));
+ return this;
+ }
+
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/widget/builder/SchedulingOsDataWidgetBuilder.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/widget/builder/SchedulingOsDataWidgetBuilder.java
new file mode 100644
index 0000000..010bdaf
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/widget/builder/SchedulingOsDataWidgetBuilder.java
@@ -0,0 +1,59 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca.ui.widget.builder;
+
+import java.util.Properties;
+
+import org.eclipse.app4mc.sca.ui.util.WizardConstants;
+import org.eclipse.app4mc.sca.ui.widgets.SchedulingOsDataWidget;
+import org.eclipse.app4mc.sca.ui.widgets.Widget;
+import org.eclipse.swt.widgets.Composite;
+
+
+/**
+ * This is the WidgetBuilder class for @SchedulingOsDataWidget. This creates the UI elements and provides options to set
+ * default values for UI components.
+ */
+public class SchedulingOsDataWidgetBuilder implements WidgetBuilder {
+
+ private final Properties properties;
+
+ /**
+ * @param properties Properties
+ */
+ public SchedulingOsDataWidgetBuilder(final Properties properties) {
+ this.properties = properties;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Widget buildWidget(final Composite parent) {
+ return new SchedulingOsDataWidget(parent, this.properties);
+ }
+
+
+ /**
+ * @param generate - Enable/Disable OS lock function file Text field
+ * @return SchedulingOsDataWidgetBuilder
+ */
+ public SchedulingOsDataWidgetBuilder setOsLockFunctionFileEnabled(final boolean generate) {
+ this.properties.setProperty(WizardConstants.OS_LOCK_FUNC_FILE, Boolean.toString(generate));
+ return this;
+ }
+
+
+ /**
+ * @param generate - Enable/Disable Task/Scheduling file Text field
+ * @return SchedulingOsDataWidgetBuilder
+ */
+ public SchedulingOsDataWidgetBuilder setTaskSchedulingFileEnabled(final boolean generate) {
+ this.properties.setProperty(WizardConstants.TASK_SCHED_FILE, Boolean.toString(generate));
+ return this;
+ }
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/widget/builder/SwModelWidgetBuilder.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/widget/builder/SwModelWidgetBuilder.java
new file mode 100644
index 0000000..d3f056f
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/widget/builder/SwModelWidgetBuilder.java
@@ -0,0 +1,39 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca.ui.widget.builder;
+
+import java.util.Properties;
+
+import org.eclipse.app4mc.sca.ui.widgets.SwModelWidget;
+import org.eclipse.app4mc.sca.ui.widgets.Widget;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * This is the WidgetBuilder class for @SWModelWidget. This creates the UI elements and provides options to set default
+ * values for UI components.
+ */
+public class SwModelWidgetBuilder implements WidgetBuilder {
+
+ private final Properties properties;
+ private final WidgetBuilder subWidget;
+
+
+ /**
+ * @param subWidget WidgetBuilder
+ * @param properties Properties
+ */
+ public SwModelWidgetBuilder(final WidgetBuilder subWidget, final Properties properties) {
+ this.subWidget = subWidget;
+ this.properties = properties;
+ }
+
+
+ @Override
+ public Widget buildWidget(final Composite parent) {
+ return new SwModelWidget(parent, this.subWidget, this.properties);
+ }
+
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/widget/builder/WidgetBuilder.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/widget/builder/WidgetBuilder.java
new file mode 100644
index 0000000..9820cff
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/widget/builder/WidgetBuilder.java
@@ -0,0 +1,24 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca.ui.widget.builder;
+
+import org.eclipse.app4mc.sca.ui.widgets.Widget;
+import org.eclipse.swt.widgets.Composite;
+
+
+/**
+ * This is an interface for building the Widgets to create UI components
+ */
+@FunctionalInterface
+public interface WidgetBuilder {
+
+ /**
+ * @param parent - Parent Composite
+ * @return - Widget
+ */
+ public Widget buildWidget(final Composite parent);
+
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/widgets/OutputDetailsWidget.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/widgets/OutputDetailsWidget.java
new file mode 100644
index 0000000..a8cc415
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/widgets/OutputDetailsWidget.java
@@ -0,0 +1,131 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca.ui.widgets;
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.Properties;
+
+import org.eclipse.app4mc.sca.ui.Activator;
+import org.eclipse.app4mc.sca.ui.util.AmaltheaWizardPreferenceConstants;
+import org.eclipse.app4mc.sca.ui.util.LabelTextButtonCreator;
+import org.eclipse.app4mc.sca.ui.util.SCAToolsUIUtil;
+import org.eclipse.app4mc.sca.ui.util.WizardConstants;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Group;
+
+
+/**
+ * This is the class for Output folder location in common wizard
+ */
+public class OutputDetailsWidget extends Widget {
+
+
+ private final Properties properties;
+ private LabelTextButtonCreator outputDirectory;
+
+ /**
+ * @param parent Composite
+ * @param properties Properties
+ */
+ public OutputDetailsWidget(final Composite parent, final Properties properties) {
+ this.properties = properties;
+ createComponent(parent);
+ }
+
+
+ /**
+ * @param parent
+ */
+ private void createComponent(final Composite parent) {
+ Composite compositeForGroup = new Composite(parent, SWT.NONE);
+ compositeForGroup.setLayout(new GridLayout());
+ GridDataFactory.defaultsFor(compositeForGroup).grab(true, false).span(1, 1).applyTo(compositeForGroup);
+
+ Group group = new Group(compositeForGroup, SWT.NONE);
+ group.setLayout(new GridLayout());
+ group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ group.setText(WizardConstants.OUTPUT);
+
+ Composite composite = new Composite(group, SWT.NONE);
+ composite.setLayout(new GridLayout(3, false));
+ GridDataFactory.defaultsFor(composite).grab(true, false).span(3, 1).applyTo(composite);
+
+
+ this.outputDirectory = new LabelTextButtonCreator(composite, WizardConstants.OUTPUT_DIRECTORY_PATH, "outputTextField",
+ WizardConstants.BROWSE, "outputBrowseButton");
+ this.outputDirectory.setProjectPath(this.properties.getProperty(AmaltheaWizardPreferenceConstants.PROJECT_PATH));
+ this.outputDirectory.getButton().addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ DirectoryDialog directoryDialog = new DirectoryDialog(Display.getCurrent().getActiveShell());
+ directoryDialog.setFilterPath(OutputDetailsWidget.this.outputDirectory.provideDialogLocation());
+ String outputPath = directoryDialog.open();
+ if (outputPath != null) {
+ OutputDetailsWidget.this.outputDirectory.setFilePath(outputPath);
+ }
+ }
+ });
+
+ this.outputDirectory.getTextField().addModifyListener(event -> {
+ this.properties.setProperty(AmaltheaWizardPreferenceConstants.OUTPUT_DIRECTORY,
+ this.outputDirectory.getAbsoluteFilePath());
+ setChanged();
+ notifyObservers();
+
+ });
+
+ initializeOptions();
+ }
+
+
+ /**
+ *
+ */
+ private void initializeOptions() {
+ this.outputDirectory.setFilePath(this.properties.getProperty(AmaltheaWizardPreferenceConstants.OUTPUT_DIRECTORY, ""));
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Properties getOptions() {
+ return this.properties;
+ }
+
+
+ /**
+ * @return - validate and return Status
+ */
+ @Override
+ public IStatus validate() {
+ String projectPath = this.properties.getProperty(AmaltheaWizardPreferenceConstants.PROJECT_PATH);
+ String outputText = this.outputDirectory.getTextField().getText();
+ File absoluteFile = new File(SCAToolsUIUtil.getProjectAbsoluteFilePath(projectPath, outputText)).getAbsoluteFile();
+ if (!outputText.isEmpty() && !SCAToolsUIUtil.validatePath(projectPath, outputText, false, "")) {
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Invalid output directory path");
+ }
+ if (!Files.isWritable(Paths.get(absoluteFile.getAbsolutePath())) || SCAToolsUIUtil.isDrive(outputText)) {
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Output Path cannot be a drive.");
+ }
+ return Status.OK_STATUS;
+ }
+
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/widgets/SchedulingOsDataWidget.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/widgets/SchedulingOsDataWidget.java
new file mode 100644
index 0000000..22d552e
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/widgets/SchedulingOsDataWidget.java
@@ -0,0 +1,156 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca.ui.widgets;
+
+import java.util.Properties;
+
+import org.eclipse.app4mc.sca.ui.Activator;
+import org.eclipse.app4mc.sca.ui.util.AmaltheaWizardPreferenceConstants;
+import org.eclipse.app4mc.sca.ui.util.LabelTextButtonCreator;
+import org.eclipse.app4mc.sca.ui.util.SCAToolsUIUtil;
+import org.eclipse.app4mc.sca.ui.util.WizardConstants;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Group;
+
+
+/**
+ * This class provides the UI elements for Scheduling/OS Data model in Amalthea generation wizard
+ */
+public class SchedulingOsDataWidget extends Widget {
+
+ private static final String CSV = "*.csv";
+ private LabelTextButtonCreator osLockFuncFile;
+ private LabelTextButtonCreator taskSchedFile;
+ private final Properties properties;
+
+ /**
+ * @param parent - Composite
+ * @param options - Properties
+ */
+ public SchedulingOsDataWidget(final Composite parent, final Properties options) {
+ this.properties = options;
+ createComponent(parent);
+ }
+
+
+ /**
+ *
+ */
+ private void createComponent(final Composite parent) {
+ Composite compositeForGroup = new Composite(parent, SWT.NONE);
+ compositeForGroup.setLayout(new GridLayout());
+ GridDataFactory.defaultsFor(compositeForGroup).grab(true, false).span(1, 1).applyTo(compositeForGroup);
+
+ Group group = new Group(compositeForGroup, SWT.NONE);
+ group.setLayout(new GridLayout());
+ group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ group.setText(WizardConstants.SCHEDULING_OS_DATA);
+
+ Composite composite = new Composite(group, SWT.NONE);
+ composite.setLayout(new GridLayout(3, false));
+ GridDataFactory.defaultsFor(composite).grab(true, false).span(3, 1).applyTo(composite);
+
+ this.osLockFuncFile = new LabelTextButtonCreator(composite, WizardConstants.OS_LOCK_FUNC_FILE, "osLockTextField",
+ WizardConstants.BROWSE, "osLockBrowseButton");
+ this.osLockFuncFile.setProjectPath(this.properties.getProperty(AmaltheaWizardPreferenceConstants.PROJECT_PATH));
+ this.osLockFuncFile.getButton().addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ FileDialog fileDialog = new FileDialog(Display.getCurrent().getActiveShell());
+ fileDialog.setFilterExtensions(new String[] { CSV });
+ fileDialog.setFilterPath(SchedulingOsDataWidget.this.osLockFuncFile.provideDialogLocation());
+ String outsetPropertyPath = fileDialog.open();
+ if (outsetPropertyPath != null) {
+ SchedulingOsDataWidget.this.osLockFuncFile.setFilePath(outsetPropertyPath);
+ }
+ }
+ });
+
+ String[] extensions = new String[] { CSV };
+ this.taskSchedFile = new LabelTextButtonCreator(composite, WizardConstants.TASK_SCHED_FILE, "taskSchedTextField",
+ WizardConstants.BROWSE, "taskSchedBrowseButton");
+ this.taskSchedFile.setProjectPath(this.properties.getProperty(AmaltheaWizardPreferenceConstants.PROJECT_PATH));
+ this.taskSchedFile.getButton().addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ FileDialog fileDialog = new FileDialog(Display.getCurrent().getActiveShell());
+ fileDialog.setFilterExtensions(extensions);
+ fileDialog.setFilterPath(SchedulingOsDataWidget.this.taskSchedFile.provideDialogLocation());
+ String outsetPropertyPath = fileDialog.open();
+ if (outsetPropertyPath != null) {
+ SchedulingOsDataWidget.this.taskSchedFile.setFilePath(outsetPropertyPath);
+ }
+ }
+ });
+
+
+ this.taskSchedFile.getTextField().addModifyListener(e -> {
+ this.properties.setProperty(AmaltheaWizardPreferenceConstants.TASK_SCHEDULING_FILE,
+ this.taskSchedFile.getAbsoluteFilePath());
+ setChanged();
+ notifyObservers();
+
+ });
+
+ this.osLockFuncFile.getTextField().addModifyListener(event -> {
+ this.properties.setProperty(AmaltheaWizardPreferenceConstants.OS_LOCK_FILE, this.osLockFuncFile.getAbsoluteFilePath());
+ setChanged();
+ notifyObservers();
+ });
+
+ initializeOptions();
+ }
+
+
+ /**
+ *
+ */
+ private void initializeOptions() {
+ this.osLockFuncFile.setFilePath(this.properties.getProperty(AmaltheaWizardPreferenceConstants.OS_LOCK_FILE, ""));
+ this.taskSchedFile.setFilePath(this.properties.getProperty(AmaltheaWizardPreferenceConstants.TASK_SCHEDULING_FILE, ""));
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Properties getOptions() {
+ return this.properties;
+ }
+
+
+ /**
+ * @return - validate and return Status
+ */
+ @Override
+ public IStatus validate() {
+ String projectPath = this.properties.getProperty(AmaltheaWizardPreferenceConstants.PROJECT_PATH);
+ String osLockFilePath = this.osLockFuncFile.getTextField().getText();
+ if (!osLockFilePath.isEmpty() && !SCAToolsUIUtil.validatePath(projectPath, osLockFilePath, true, "csv")) {
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Invalid OS lock function file");
+ }
+ String taskSchedFilePath = this.taskSchedFile.getTextField().getText();
+ if (!taskSchedFilePath.isEmpty() && !SCAToolsUIUtil.validatePath(projectPath, taskSchedFilePath, true, "csv")) {
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Invalid Task/Scheduling file");
+ }
+
+ return Status.OK_STATUS;
+ }
+
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/widgets/SwModelWidget.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/widgets/SwModelWidget.java
new file mode 100644
index 0000000..f2491a2
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/widgets/SwModelWidget.java
@@ -0,0 +1,106 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca.ui.widgets;
+
+import java.util.Observer;
+import java.util.Properties;
+
+import org.eclipse.app4mc.sca.ui.util.WizardConstants;
+import org.eclipse.app4mc.sca.ui.widget.builder.WidgetBuilder;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+
+
+/**
+ * This class provides the UI elements for SW Model in Amalthea generation wizard
+ */
+public class SwModelWidget extends Widget {
+
+ private final Properties properties;
+ private Widget optionalSubWidget;
+
+ /**
+ * @param parent - Composite
+ * @param subWidget - componenet specific widget
+ * @param options - Properties
+ */
+ public SwModelWidget(final Composite parent, final WidgetBuilder subWidget, final Properties options) {
+ this.properties = options;
+ createComponent(parent, subWidget);
+ }
+
+
+ /**
+ *
+ */
+ private void createComponent(final Composite parent, final WidgetBuilder subWidget) {
+
+ Composite compositeForGroup = new Composite(parent, SWT.NULL);
+ compositeForGroup.setLayout(new GridLayout());
+ GridDataFactory.defaultsFor(compositeForGroup).grab(true, false).span(1, 1).applyTo(compositeForGroup);
+
+ Group group = new Group(compositeForGroup, SWT.NONE);
+ GridLayout grpLayout = new GridLayout(1, false);
+ group.setLayout(grpLayout);
+ group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ group.setText(WizardConstants.SW_DATA);
+
+ // Create optional subWidget
+ if (subWidget != null) {
+ this.optionalSubWidget = subWidget.buildWidget(group);
+ }
+
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Properties getOptions() {
+ if (this.optionalSubWidget != null) {
+ Properties options = this.optionalSubWidget.getOptions();
+ this.properties.putAll(options);
+ }
+ return this.properties;
+ }
+
+
+ /**
+ * @return - validate and return Status
+ */
+ @Override
+ public IStatus validate() {
+ if (this.optionalSubWidget != null) {
+ IStatus validate = this.optionalSubWidget.validate();
+ if (!validate.isOK()) {
+ return validate;
+ }
+ }
+
+ return Status.OK_STATUS;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public synchronized void addObserver(final Observer o) {
+ super.addObserver(o);
+ if (this.optionalSubWidget != null) {
+ this.optionalSubWidget.addObserver(o);
+ }
+ }
+
+
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/widgets/Widget.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/widgets/Widget.java
new file mode 100644
index 0000000..5464cbd
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/widgets/Widget.java
@@ -0,0 +1,24 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca.ui.widgets;
+
+import java.util.Observable;
+
+import org.eclipse.app4mc.sca.ui.util.IOptionsProvider;
+import org.eclipse.core.runtime.IStatus;
+
+
+/**
+ * This is an interface to create UI components in Amalthea generation wizard
+ */
+public abstract class Widget extends Observable implements IOptionsProvider {
+
+ /**
+ * @return {@link IStatus}
+ */
+ public abstract IStatus validate();
+
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/wizard/GenerateAmaltheaWizard.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/wizard/GenerateAmaltheaWizard.java
new file mode 100644
index 0000000..5924bd2
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/wizard/GenerateAmaltheaWizard.java
@@ -0,0 +1,136 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca.ui.wizard;
+
+import java.util.List;
+import java.util.Observable;
+import java.util.Observer;
+import java.util.Properties;
+
+import org.eclipse.app4mc.sca.ui.util.AmaltheaWizardPreferenceConstants;
+import org.eclipse.app4mc.sca.ui.util.IAmaltheaGenerator;
+import org.eclipse.app4mc.sca.ui.util.IOptionsProvider;
+import org.eclipse.app4mc.sca.ui.util.WizardConstants;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.swt.widgets.Display;
+
+
+/**
+ * This is a common wizard class to Generate Amalthea
+ */
+public class GenerateAmaltheaWizard extends Wizard implements IOptionsProvider, Observer {
+
+ private final List<GenerateAmaltheaWizardPage> wizardPages;
+ private final IAmaltheaGenerator amaltheaExecutor;
+ private final Properties properties;
+
+ /**
+ * @param asList - List<GenerateAmaltheaWizardPage>
+ * @param properties Properties
+ * @param amaltheaExecutor IAmaltheaExecutor - for amalthea generation
+ */
+ public GenerateAmaltheaWizard(final List<GenerateAmaltheaWizardPage> asList, final Properties properties,
+ final IAmaltheaGenerator amaltheaExecutor) {
+ setNeedsProgressMonitor(true);
+ this.wizardPages = asList;
+ this.properties = properties;
+ this.amaltheaExecutor = amaltheaExecutor;
+ setWindowTitle("Generate Amalthea");
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void addPages() {
+ for (GenerateAmaltheaWizardPage amaltheaWizardPage : this.wizardPages) {
+ addPage(amaltheaWizardPage);
+ }
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean performFinish() {
+ Job job = new Job("Amalthea Generation") {
+
+ @Override
+ protected IStatus run(final IProgressMonitor monitor) {
+ IStatus status = GenerateAmaltheaWizard.this.amaltheaExecutor.execute(monitor, getOptions());
+ String outputDirProperty =
+ GenerateAmaltheaWizard.this.properties.getProperty(AmaltheaWizardPreferenceConstants.OUTPUT_DIRECTORY, "");
+ String ouputDirPath =
+ ((outputDirProperty != null) && !outputDirProperty.isEmpty()) ? " in " + outputDirProperty + "." : ".";
+ openResultDialog(status, ouputDirPath);
+ return status;
+ }
+ };
+ job.schedule();
+ return true;
+ }
+
+
+ private void openResultDialog(final IStatus status, final String ouputDirPath) {
+ Display.getDefault().asyncExec(() -> {
+
+ if (status.getSeverity() == IStatus.WARNING) {
+ MessageDialog.openInformation(Display.getDefault().getActiveShell(), WizardConstants.AMALTHEA_GENERATION,
+ "Amalthea model successfully generated" + ouputDirPath +
+ "\n\nWarnings have been found - Please check log files for more details.");
+ }
+ else if (status.getSeverity() == IStatus.OK) {
+ MessageDialog.openInformation(Display.getDefault().getActiveShell(), WizardConstants.AMALTHEA_GENERATION,
+ "Amalthea model successfully generated" + ouputDirPath);
+ }
+ else {
+ MessageDialog.openError(Display.getDefault().getActiveShell(), WizardConstants.AMALTHEA_GENERATION,
+ "Amlathea model generation failed. Please check the logs for more details.");
+ }
+ });
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Properties getOptions() {
+ for (GenerateAmaltheaWizardPage amaltheaWizardPage : this.wizardPages) {
+ this.properties.putAll(amaltheaWizardPage.getOptions());
+ }
+ return this.properties;
+ }
+
+
+ @Override
+ public boolean canFinish() {
+ for (GenerateAmaltheaWizardPage amaltheaWizardPage : this.wizardPages) {
+ if (!amaltheaWizardPage.isPageComplete()) {
+ return false;
+ }
+ }
+ return getContainer().getCurrentPage().getNextPage() == null;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void update(final Observable o, final Object arg) {
+ for (GenerateAmaltheaWizardPage amaltheaWizardPage : this.wizardPages) {
+ amaltheaWizardPage.setPageComplete(amaltheaWizardPage.isPageComplete());
+ }
+ }
+
+
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/wizard/GenerateAmaltheaWizardPage.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/wizard/GenerateAmaltheaWizardPage.java
new file mode 100644
index 0000000..a560b3d
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/src/org/eclipse/app4mc/sca/ui/wizard/GenerateAmaltheaWizardPage.java
@@ -0,0 +1,117 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca.ui.wizard;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Observable;
+import java.util.Observer;
+import java.util.Properties;
+
+import org.eclipse.app4mc.sca.ui.util.IOptionsProvider;
+import org.eclipse.app4mc.sca.ui.util.NoScrollFormLayout;
+import org.eclipse.app4mc.sca.ui.widget.builder.WidgetBuilder;
+import org.eclipse.app4mc.sca.ui.widgets.Widget;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * This is a common WizardPage class for Amalthea generation
+ */
+public class GenerateAmaltheaWizardPage extends WizardPage implements IOptionsProvider, Observer {
+
+ final List<WidgetBuilder> builders;
+ final List<Widget> widgets;
+ final Properties props = new Properties();
+
+ /**
+ * @param title - Page Title
+ * @param widgetBuilders - List of @WidgetBuilder for this page
+ */
+ public GenerateAmaltheaWizardPage(final String title, final List<WidgetBuilder> widgetBuilders) {
+ super("AMALTHEA Generation", title, null);
+ this.builders = widgetBuilders;
+ this.widgets = new ArrayList<>();
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void createControl(final Composite parent) {
+ Composite rootComposite = new Composite(parent, SWT.NONE);
+ rootComposite.setLayout(new NoScrollFormLayout());
+
+ ScrolledComposite scrolledComposite =
+ new ScrolledComposite(rootComposite, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
+ scrolledComposite
+ .setLayoutData(GridDataFactory.fillDefaults().grab(true, true).hint(SWT.DEFAULT, SWT.DEFAULT).create());
+ scrolledComposite.setExpandHorizontal(true);
+ scrolledComposite.setExpandVertical(true);
+ Composite mainComposite = new Composite(scrolledComposite, SWT.FILL);
+ mainComposite.setLayout(new GridLayout());
+
+ this.builders.stream().forEach(builder -> {
+ Widget widget = builder.buildWidget(mainComposite);
+ this.widgets.add(widget);
+ widget.addObserver(this);
+ });
+
+ scrolledComposite.setContent(mainComposite);
+ setControl(rootComposite);
+ setPageComplete(false);
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Properties getOptions() {
+ Display.getDefault().syncExec(() -> this.widgets.stream().forEach(w -> this.props.putAll(w.getOptions())));
+ return this.props;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean isPageComplete() {
+ for (Widget wid : this.widgets) {
+ IStatus validate = wid.validate();
+ if (validate.getSeverity() == IStatus.ERROR) {
+ setErrorMessage(validate.getMessage());
+ return false;
+ }
+ else if ((validate.getSeverity() == IStatus.WARNING) || (validate.getSeverity() == IStatus.INFO)) {
+ setErrorMessage(null);
+ setMessage(validate.getMessage(), validate.getSeverity());
+ return true;
+ }
+ }
+ setErrorMessage(null);
+ setMessage(null);
+ return true;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void update(final Observable o, final Object arg) {
+ setPageComplete(isPageComplete());
+ }
+
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/.gitignore
deleted file mode 100644
index 24d6437..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/META-INF/MANIFEST.MF b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/META-INF/MANIFEST.MF
index 95d04ca..f5a8e39 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/META-INF/MANIFEST.MF
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/META-INF/MANIFEST.MF
@@ -2,18 +2,19 @@
Bundle-ManifestVersion: 2
Bundle-Name: Util
Bundle-SymbolicName: org.eclipse.app4mc.sca.util;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 0.9.8.qualifier
Bundle-Activator: org.eclipse.app4mc.sca.util.Activator
Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.app4mc.sca.logging;bundle-version="1.0.0",
+ org.eclipse.app4mc.sca.logging,
org.eclipse.ui.workbench,
org.eclipse.jface,
org.eclipse.core.resources,
- org.eclipse.app4mc.amalthea.model
+ org.eclipse.app4mc.amalthea.model,
+ org.eclipse.equinox.preferences
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.app4mc.sca.util,
org.eclipse.app4mc.sca.util.parsers,
- org.eclipse.app4mc.sca.util.preferences,
org.eclipse.app4mc.sca.util.util,
org.eclipse.app4mc.sca.util.workspaces
+Automatic-Module-Name: org.eclipse.app4mc.sca.util
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/bin/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/bin/.gitignore
deleted file mode 100644
index cf1db2e..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/bin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/org/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/pom.xml b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/pom.xml
deleted file mode 100644
index 38656f6..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/pom.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.build</artifactId>
- <version>1.0.0.qualifier</version>
- <relativePath>../../build/org.eclipse.app4mc.sca2amalthea.build</relativePath>
- </parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca.util</artifactId>
- <packaging>eclipse-plugin</packaging>
-
-
- <build>
- <sourceDirectory>src</sourceDirectory>
- <resources>
- <resource>
- <directory>xtend-gen</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>src</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <version>2.4.1</version>
- <configuration>
- <filesets>
- <fileset>
- <directory>xtend-gen</directory>
- <includes>
- <include>**</include>
- </includes>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>1.7</version>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>xtend-gen</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.eclipse.xtend</groupId>
- <artifactId>xtend-maven-plugin</artifactId>
- <version>2.7.3</version>
- <executions>
- <execution>
- <goals>
- <goal>compile</goal>
- </goals>
- <configuration>
- <outputDirectory>xtend-gen</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/Activator.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/Activator.java
index 49b592c..006fb66 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/Activator.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/Activator.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/App4mcToolConstants.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/App4mcToolConstants.java
index 964200c..e184da7 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/App4mcToolConstants.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/App4mcToolConstants.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/parsers/OptionsFileParser.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/parsers/OptionsFileParser.java
index ce140f6..789cbca 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/parsers/OptionsFileParser.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/parsers/OptionsFileParser.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/preferences/DefaultSCAToolsPreferences.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/preferences/DefaultSCAToolsPreferences.java
index f8e1937..47b0f7b 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/preferences/DefaultSCAToolsPreferences.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/preferences/DefaultSCAToolsPreferences.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/util/SCAToolsDirectoryType.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/util/SCAToolsDirectoryType.java
index 8334183..479d675 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/util/SCAToolsDirectoryType.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/util/SCAToolsDirectoryType.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/util/SCAUtils.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/util/SCAUtils.java
index ab82f30..3a863bf 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/util/SCAUtils.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/util/SCAUtils.java
@@ -1,21 +1,15 @@
/**
- ********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
*/
package org.eclipse.app4mc.sca.util.util;
import java.io.File;
+/**
+ * Utilty class
+ */
public class SCAUtils {
@@ -36,11 +30,10 @@
final String componentDirectoryName) {
File scaDir;
if ((componentDirectoryName != null) && !componentDirectoryName.isEmpty()) {
- scaDir = new File(projectPath + File.separator + dirType + File.separator +
- componentDirectoryName);
+ scaDir = new File(projectPath + File.separator + dirType + File.separator + componentDirectoryName);
}
else {
- scaDir = new File(projectPath + File.separator + dirType + File.separator );
+ scaDir = new File(projectPath + File.separator + dirType + File.separator);
}
if (scaDir.exists()) {
return scaDir.getAbsolutePath();
@@ -49,4 +42,5 @@
return scaDir.getAbsolutePath();
}
+
}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/workspaces/WorkspaceOperations.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/workspaces/WorkspaceOperations.java
index e3fd355..19d4d5a 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/workspaces/WorkspaceOperations.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.util/src/org/eclipse/app4mc/sca/util/workspaces/WorkspaceOperations.java
@@ -1,7 +1,7 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/.gitignore
deleted file mode 100644
index 24d6437..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/TraverseASTMain.cpp b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/TraverseASTMain.cpp
index 0ebaa5e..ae03551 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/TraverseASTMain.cpp
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/TraverseASTMain.cpp
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/algorithms/TraverseASTClassAction.cpp b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/algorithms/TraverseASTClassAction.cpp
index f0955dc..c640d51 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/algorithms/TraverseASTClassAction.cpp
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/algorithms/TraverseASTClassAction.cpp
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -1946,7 +1946,7 @@
std::string file = fileName.substr(found + 1);
found = file.find_last_of(".");
file = file.replace(found, 1, "_");
- variableName = variableName.append(".").append(file).append(".PLAT4MC_CS");
+ variableName = variableName.append(".").append(file).append(".APP4MC_CS");
return variableName;
}
@@ -1981,7 +1981,7 @@
else {
functionName = currentAnalyzedFunction->getFunctionEntry()->getFunctionName();
}
- variableName = variableName.append(".").append(file).append(".").append(functionName).append(".").append(std::to_string(count)).append(".PLAT4MC_FS");
+ variableName = variableName.append(".").append(file).append(".").append(functionName).append(".").append(std::to_string(count)).append(".APP4MC_FS");
return variableName;
}
@@ -1990,7 +1990,7 @@
std::string file = fileName.substr(found + 1);
found = file.find_last_of(".");
file = file.replace(found, 1, "_");
- string name = functionName.append(".").append(file).append(".PLAT4MC_CS");
+ string name = functionName.append(".").append(file).append(".APP4MC_CS");
return name;
}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/algorithms/TraverseASTClassAction.h b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/algorithms/TraverseASTClassAction.h
index 002f196..0f9781a 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/algorithms/TraverseASTClassAction.h
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/algorithms/TraverseASTClassAction.h
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/algorithms/TraverseASTWorker.cpp b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/algorithms/TraverseASTWorker.cpp
index b3e9f33..f034199 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/algorithms/TraverseASTWorker.cpp
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/algorithms/TraverseASTWorker.cpp
@@ -1,7 +1,7 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/algorithms/TraverseASTWorker.h b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/algorithms/TraverseASTWorker.h
index aedc995..3e65287 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/algorithms/TraverseASTWorker.h
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/algorithms/TraverseASTWorker.h
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/BasicBlock.cpp b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/BasicBlock.cpp
index 382e7f9..2c16af5 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/BasicBlock.cpp
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/BasicBlock.cpp
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/BasicBlock.h b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/BasicBlock.h
index ade3e7f..0c39a55 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/BasicBlock.h
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/BasicBlock.h
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/CallEntry.cpp b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/CallEntry.cpp
index bb86f81..3df86ea 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/CallEntry.cpp
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/CallEntry.cpp
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/CallEntry.h b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/CallEntry.h
index 7f40ae5..4228f3c 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/CallEntry.h
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/CallEntry.h
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/ClientDataForThread.cpp b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/ClientDataForThread.cpp
index 2b8bb3e..df74dc1 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/ClientDataForThread.cpp
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/ClientDataForThread.cpp
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/ClientDataForThread.h b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/ClientDataForThread.h
index 682f1d9..8324bbb 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/ClientDataForThread.h
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/ClientDataForThread.h
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/FunctionAndCallees.cpp b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/FunctionAndCallees.cpp
index e71e40d..339da7c 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/FunctionAndCallees.cpp
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/FunctionAndCallees.cpp
@@ -1,7 +1,7 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/FunctionAndCallees.h b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/FunctionAndCallees.h
index 1b1c2fa..fc1434d 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/FunctionAndCallees.h
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/FunctionAndCallees.h
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/FunctionEntry.cpp b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/FunctionEntry.cpp
index 4bf6478..b9eb363 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/FunctionEntry.cpp
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/FunctionEntry.cpp
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/FunctionEntry.h b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/FunctionEntry.h
index 400852f..40ca5e6 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/FunctionEntry.h
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/FunctionEntry.h
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/FunctionParameter.cpp b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/FunctionParameter.cpp
index 616c969..17e8696 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/FunctionParameter.cpp
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/FunctionParameter.cpp
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/FunctionParameter.h b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/FunctionParameter.h
index 1fc4363..d07c659 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/FunctionParameter.h
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/FunctionParameter.h
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/GlobalVariable.cpp b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/GlobalVariable.cpp
index 2dd09f8..189ab5c 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/GlobalVariable.cpp
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/GlobalVariable.cpp
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/GlobalVariable.h b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/GlobalVariable.h
index 7f9fdda..1b1514c 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/GlobalVariable.h
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/GlobalVariable.h
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/GlobalVariableAccess.cpp b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/GlobalVariableAccess.cpp
index dcbfb7c..b93e155 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/GlobalVariableAccess.cpp
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/GlobalVariableAccess.cpp
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/GlobalVariableAccess.h b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/GlobalVariableAccess.h
index 29c5ba9..510d9c6 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/GlobalVariableAccess.h
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/GlobalVariableAccess.h
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/TraverseASTDataStructure.cpp b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/TraverseASTDataStructure.cpp
index af6078b..0477c05 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/TraverseASTDataStructure.cpp
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/TraverseASTDataStructure.cpp
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/TraverseASTDataStructure.h b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/TraverseASTDataStructure.h
index a57549e..242179e 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/TraverseASTDataStructure.h
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/TraverseASTDataStructure.h
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/TraversingData.cpp b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/TraversingData.cpp
index 9e00caf..07df6af 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/TraversingData.cpp
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/TraversingData.cpp
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/TraversingData.h b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/TraversingData.h
index f6e9fb7..7a17772 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/TraversingData.h
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/data_structure/TraversingData.h
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/helpers/Helpers.cpp b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/helpers/Helpers.cpp
index de868e4..f941048 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/helpers/Helpers.cpp
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/helpers/Helpers.cpp
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -425,8 +425,8 @@
bool isVariableStatic(std::string variableName){
- std::size_t pos = variableName.find("PLAT4MC_CS");
- std::size_t pos1 = variableName.find("PLAT4MC_FS");
+ std::size_t pos = variableName.find("APP4MC_CS");
+ std::size_t pos1 = variableName.find("APP4MC_FS");
if (pos != std::string::npos || pos1 != std::string::npos){
return true;
}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/helpers/Helpers.h b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/helpers/Helpers.h
index 78cbd8c..f2373dc 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/helpers/Helpers.h
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/helpers/Helpers.h
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/helpers/TraverseASTMainHelpers.cpp b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/helpers/TraverseASTMainHelpers.cpp
index ccaec34..97837d6 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/helpers/TraverseASTMainHelpers.cpp
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/helpers/TraverseASTMainHelpers.cpp
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/helpers/TraverseASTMainHelpers.h b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/helpers/TraverseASTMainHelpers.h
index f1fdee4..d5643fa 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/helpers/TraverseASTMainHelpers.h
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/helpers/TraverseASTMainHelpers.h
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/output/Output.cpp b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/output/Output.cpp
index 47c90c2..cc8b072 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/output/Output.cpp
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/output/Output.cpp
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/output/Output.h b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/output/Output.h
index b1f862f..ac41fa6 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/output/Output.h
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.c_sources/sca/output/Output.h
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.docu/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.docu/.gitignore
deleted file mode 100644
index 24d6437..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.docu/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.docu/META-INF/MANIFEST.MF b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.docu/META-INF/MANIFEST.MF
index af8e8ca..1c04525 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.docu/META-INF/MANIFEST.MF
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.docu/META-INF/MANIFEST.MF
@@ -2,5 +2,5 @@
Bundle-ManifestVersion: 2
Bundle-Name: SCA2AMALTHEA Documentation
Bundle-SymbolicName: org.eclipse.app4mc.sca2amalthea.docu;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 0.9.8.qualifier
Bundle-Vendor: Eclipse.org
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.docu/pom.xml b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.docu/pom.xml
deleted file mode 100644
index 1c5bb91..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.docu/pom.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.build</artifactId>
- <version>1.0.0.qualifier</version>
- <relativePath>../../build/org.eclipse.app4mc.sca2amalthea.build</relativePath>
- </parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.docu</artifactId>
- <packaging>eclipse-plugin</packaging>
-
-
-</project>
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/.gitignore
deleted file mode 100644
index 24d6437..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/META-INF/MANIFEST.MF b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/META-INF/MANIFEST.MF
index 66701c1..94e5bf2 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/META-INF/MANIFEST.MF
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Exporter
Bundle-SymbolicName: org.eclipse.app4mc.sca2amalthea.exporter
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 0.9.8.qualifier
Bundle-Activator: org.eclipse.app4mc.sca2amalthea.exporter.Activator
Bundle-Vendor: Eclipse.org
Require-Bundle: org.eclipse.core.runtime,
@@ -10,14 +10,14 @@
org.eclipse.core.resources,
org.eclipse.app4mc.sca2amalthea.ir,
org.eclipse.app4mc.sca2amalthea.serialization,
- org.eclipse.app4mc.amalthea.sphinx,
org.eclipse.app4mc.amalthea.model,
org.eclipse.app4mc.sca.logging,
- org.eclipse.app4mc.sca.amalthea.model.utils;bundle-version="1.0.0",
+ org.eclipse.app4mc.sca.amalthea.model.utils,
org.eclipse.app4mc.sca.scheduling.loader
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.app4mc.sca2amalthea.exporter,
org.eclipse.app4mc.sca2amalthea.exporter.locks,
org.eclipse.app4mc.sca2amalthea.exporter.util
+Automatic-Module-Name: org.eclipse.app4mc.sca2amalthea.exporter
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/bin/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/bin/.gitignore
deleted file mode 100644
index cf1db2e..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/bin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/org/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/pom.xml b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/pom.xml
deleted file mode 100644
index 611bda1..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/pom.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.build</artifactId>
- <version>1.0.0.qualifier</version>
- <relativePath>../../build/org.eclipse.app4mc.sca2amalthea.build</relativePath>
- </parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.exporter</artifactId>
- <packaging>eclipse-plugin</packaging>
-
-
- <build>
- <sourceDirectory>src</sourceDirectory>
- <resources>
- <resource>
- <directory>xtend-gen</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>src</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <version>2.4.1</version>
- <configuration>
- <filesets>
- <fileset>
- <directory>xtend-gen</directory>
- <includes>
- <include>**</include>
- </includes>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>1.7</version>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>xtend-gen</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.eclipse.xtend</groupId>
- <artifactId>xtend-maven-plugin</artifactId>
- <version>2.7.3</version>
- <executions>
- <execution>
- <goals>
- <goal>compile</goal>
- </goals>
- <configuration>
- <outputDirectory>xtend-gen</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/Activator.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/Activator.java
index 52876c4..d988df5 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/Activator.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/Activator.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/ComponentModelTransformer.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/ComponentModelTransformer.java
index 8c5c93a..b022905 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/ComponentModelTransformer.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/ComponentModelTransformer.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -93,7 +93,7 @@
public void addTaskToComponent(final Function task, final Process process) {
String fc = task.getContainer().getName();
if ((fc != null) && (this.dataStore.getComponentMap().get(fc) != null)) {
- this.dataStore.getComponentMap().get(fc).getTasks().add(process);
+ this.dataStore.getComponentMap().get(fc).getProcesses().add(process);
}
}
}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/OsModelTransformer.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/OsModelTransformer.java
index d6eda47..7228182 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/OsModelTransformer.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/OsModelTransformer.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/SCAToAmaltheaExporter.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/SCAToAmaltheaExporter.java
index 9face87..6f5ed85 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/SCAToAmaltheaExporter.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/SCAToAmaltheaExporter.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/SwModelTransformer.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/SwModelTransformer.java
index 8634b9b..1b41ab3 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/SwModelTransformer.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/SwModelTransformer.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -16,24 +16,25 @@
import java.util.ArrayList;
import java.util.HashSet;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
+import org.eclipse.app4mc.amalthea.model.ActivityGraph;
import org.eclipse.app4mc.amalthea.model.Amalthea;
import org.eclipse.app4mc.amalthea.model.AmaltheaFactory;
-import org.eclipse.app4mc.amalthea.model.CallGraph;
-import org.eclipse.app4mc.amalthea.model.CallSequence;
+import org.eclipse.app4mc.amalthea.model.Group;
import org.eclipse.app4mc.amalthea.model.ISR;
import org.eclipse.app4mc.amalthea.model.LabelAccessEnum;
import org.eclipse.app4mc.amalthea.model.Runnable;
+import org.eclipse.app4mc.amalthea.model.RunnableCall;
import org.eclipse.app4mc.amalthea.model.SWModel;
import org.eclipse.app4mc.amalthea.model.Semaphore;
import org.eclipse.app4mc.amalthea.model.SemaphoreAccess;
import org.eclipse.app4mc.amalthea.model.SemaphoreAccessEnum;
import org.eclipse.app4mc.amalthea.model.StringObject;
import org.eclipse.app4mc.amalthea.model.Task;
-import org.eclipse.app4mc.amalthea.model.TaskRunnableCall;
import org.eclipse.app4mc.sca.logging.manager.LogFactory.Severity;
import org.eclipse.app4mc.sca.logging.util.LogUtil;
import org.eclipse.app4mc.sca2amalthea.exporter.locks.LockFunction.LockType;
@@ -51,7 +52,7 @@
import org.eclipse.emf.common.util.EList;
/**
- * This class transforms all SwModel related part and submodels to the AMALTHEA model
+ * This class transforms all SwModel related part and sub-models to the AMALTHEA model
*/
public class SwModelTransformer {
@@ -112,6 +113,7 @@
LogUtil.logException(LLVMLogUtil.LOG_MSG_ID, e.getClass(), e, Activator.PLUGIN_ID);
}
}
+
}
@@ -174,7 +176,7 @@
*/
private Set<Function> getAllfunctions(final SCAResource resource) {
EList<Container> containers = ((Project) resource.getContents().get(0)).getContainers();
- Set<Function> allFunctions = new HashSet<Function>();
+ Set<Function> allFunctions = new LinkedHashSet<Function>();
for (Container c : containers) {
allFunctions.addAll(c.getFunctions());
}
@@ -187,11 +189,11 @@
private void transformISRInternals(final Function function) {
String name = function.getName();
ISR isr = this.data.getIsrMap().get(name);
- CallGraph callGraph = AmaltheaFactory.eINSTANCE.createCallGraph();
- CallSequence callSequence = AmaltheaFactory.eINSTANCE.createCallSequence();
-
- transformStatements(function, callGraph, callSequence);
- isr.setCallGraph(callGraph);
+ ActivityGraph activityGraph = AmaltheaFactory.eINSTANCE.createActivityGraph();
+ Group group = AmaltheaFactory.eINSTANCE.createGroup();
+ group.setOrdered(true);
+ transformStatements(function, activityGraph, group);
+ isr.setActivityGraph(activityGraph);
}
/**
@@ -200,22 +202,22 @@
* @param callGraph
* @param callSequence
*/
- private void transformStatements(final Function function, final CallGraph callGraph,
- final CallSequence callSequence) {
+ private void transformStatements(final Function function, final ActivityGraph activityGraph,
+ final Group group) {
EList<StmtCall> stmtseq = function.getStmtseq();
for (StmtCall stmtCall : stmtseq) {
if (stmtCall instanceof FunctionCall) {
FunctionCall fc = (FunctionCall) stmtCall;
Runnable runnable = this.data.getRunnableMap().get(fc.getCalls().getName());
if (runnable != null) {
- TaskRunnableCall taskRunnableCall = AmaltheaFactory.eINSTANCE.createTaskRunnableCall();
- taskRunnableCall.setRunnable(runnable);
- callSequence.getCalls().add(taskRunnableCall);
- CustomPropertiesAdder.addSourceLineInformation(taskRunnableCall, fc.getSrcline(), fc.getSrccol());
+ RunnableCall runnableCall=AmaltheaFactory.eINSTANCE.createRunnableCall();
+ runnableCall.setRunnable(runnable);
+ group.getItems().add(runnableCall);
+ CustomPropertiesAdder.addSourceLineInformation(runnableCall, fc.getSrcline(), fc.getSrccol());
}
}
}
- callGraph.getGraphEntries().add(callSequence);
+ activityGraph.getItems().add(group);
}
/**
@@ -225,10 +227,11 @@
String name = function.getName();
Task task = this.data.getTaskMap().get(name);
- CallGraph callGraph = AmaltheaFactory.eINSTANCE.createCallGraph();
- CallSequence callSequence = AmaltheaFactory.eINSTANCE.createCallSequence();
- transformStatements(function, callGraph, callSequence);
- task.setCallGraph(callGraph);
+ ActivityGraph activityGraph = AmaltheaFactory.eINSTANCE.createActivityGraph();
+ Group group = AmaltheaFactory.eINSTANCE.createGroup();
+ group.setOrdered(true);
+ transformStatements(function, activityGraph, group);
+ task.setActivityGraph(activityGraph);
}
/**
@@ -433,5 +436,5 @@
this.componentTransformer.addTaskToComponent(function, isr);
isrs.add(isr);
}
-
+
}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/SwModelTypeDefTransformer.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/SwModelTypeDefTransformer.java
index a613ec6..cbc5463 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/SwModelTypeDefTransformer.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/SwModelTypeDefTransformer.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/TransformerDataStore.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/TransformerDataStore.java
index 980f7bf..af6c9b5 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/TransformerDataStore.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/TransformerDataStore.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/locks/LockDefinition.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/locks/LockDefinition.java
index 5421393..6303252 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/locks/LockDefinition.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/locks/LockDefinition.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/locks/LockFunction.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/locks/LockFunction.java
index 5ebf5fe..1b99b65 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/locks/LockFunction.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/locks/LockFunction.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/util/CustomPropertiesAdder.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/util/CustomPropertiesAdder.java
index 23f96a5..535a9f2 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/util/CustomPropertiesAdder.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/util/CustomPropertiesAdder.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/util/LLVMLogUtil.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/util/LLVMLogUtil.java
index ad57033..059e937 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/util/LLVMLogUtil.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.exporter/src/org/eclipse/app4mc/sca2amalthea/exporter/util/LLVMLogUtil.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/.gitignore
deleted file mode 100644
index 24d6437..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/META-INF/MANIFEST.MF b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/META-INF/MANIFEST.MF
index 7c65213..42a007a 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/META-INF/MANIFEST.MF
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/META-INF/MANIFEST.MF
@@ -2,16 +2,17 @@
Bundle-ManifestVersion: 2
Bundle-Name: Loader-Serializer
Bundle-SymbolicName: org.eclipse.app4mc.sca2amalthea.ir.loader
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 0.9.8.qualifier
Bundle-Vendor: Eclipse.org
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.app4mc.sca2amalthea.serialization,
org.eclipse.emf.ecore.xmi,
org.eclipse.app4mc.sca2amalthea.ir,
org.eclipse.core.resources,
- org.eclipse.app4mc.sca.logging;bundle-version="1.0.0"
+ org.eclipse.app4mc.sca.logging
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.app4mc.sca2amalthea.ir.loader,
org.eclipse.app4mc.sca2amalthea.ir.serializer
Bundle-Activator: org.eclipse.app4mc.sca2amalthea.ir.loader.Activator
+Automatic-Module-Name: org.eclipse.app4mc.sca2amalthea.ir.loader
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/bin/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/bin/.gitignore
deleted file mode 100644
index cf1db2e..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/bin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/org/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/pom.xml b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/pom.xml
deleted file mode 100644
index 546076a..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/pom.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.build</artifactId>
- <version>1.0.0.qualifier</version>
- <relativePath>../../build/org.eclipse.app4mc.sca2amalthea.build</relativePath>
- </parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.ir.loader</artifactId>
- <packaging>eclipse-plugin</packaging>
-
-
- <build>
- <sourceDirectory>src</sourceDirectory>
- <resources>
- <resource>
- <directory>xtend-gen</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>src</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <version>2.4.1</version>
- <configuration>
- <filesets>
- <fileset>
- <directory>xtend-gen</directory>
- <includes>
- <include>**</include>
- </includes>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>1.7</version>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>xtend-gen</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.eclipse.xtend</groupId>
- <artifactId>xtend-maven-plugin</artifactId>
- <version>2.7.3</version>
- <executions>
- <execution>
- <goals>
- <goal>compile</goal>
- </goals>
- <configuration>
- <outputDirectory>xtend-gen</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/src/org/eclipse/app4mc/sca2amalthea/ir/loader/Activator.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/src/org/eclipse/app4mc/sca2amalthea/ir/loader/Activator.java
index f00bf22..e9647cb 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/src/org/eclipse/app4mc/sca2amalthea/ir/loader/Activator.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/src/org/eclipse/app4mc/sca2amalthea/ir/loader/Activator.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/src/org/eclipse/app4mc/sca2amalthea/ir/loader/SCAIRLoader.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/src/org/eclipse/app4mc/sca2amalthea/ir/loader/SCAIRLoader.java
index 030897e..566a9ea 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/src/org/eclipse/app4mc/sca2amalthea/ir/loader/SCAIRLoader.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/src/org/eclipse/app4mc/sca2amalthea/ir/loader/SCAIRLoader.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/src/org/eclipse/app4mc/sca2amalthea/ir/loader/utils/LoaderSerializationUtils.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/src/org/eclipse/app4mc/sca2amalthea/ir/loader/utils/LoaderSerializationUtils.java
index 7f09078..ca5f99f 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/src/org/eclipse/app4mc/sca2amalthea/ir/loader/utils/LoaderSerializationUtils.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/src/org/eclipse/app4mc/sca2amalthea/ir/loader/utils/LoaderSerializationUtils.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/src/org/eclipse/app4mc/sca2amalthea/ir/serializer/SCAIRSerializer.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/src/org/eclipse/app4mc/sca2amalthea/ir/serializer/SCAIRSerializer.java
index d4136ed..325638d 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/src/org/eclipse/app4mc/sca2amalthea/ir/serializer/SCAIRSerializer.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader/src/org/eclipse/app4mc/sca2amalthea/ir/serializer/SCAIRSerializer.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/.classpath b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/.classpath
index ed2bc12..81065bd 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/.classpath
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/.classpath
@@ -1,7 +1,11 @@
<?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.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
+ <attributes>
+ <attribute name="module" value="true"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/.gitignore
deleted file mode 100644
index 24d6437..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/META-INF/MANIFEST.MF b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/META-INF/MANIFEST.MF
index 8e76380..c087d3a 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/META-INF/MANIFEST.MF
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.app4mc.sca2amalthea.ir;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 0.9.8.qualifier
Bundle-ClassPath: .
Bundle-Vendor: Eclipse.org
Bundle-Localization: plugin
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Export-Package: org.eclipse.app4mc.sca2amalthea.ir.scair,
org.eclipse.app4mc.sca2amalthea.ir.scair.impl,
org.eclipse.app4mc.sca2amalthea.ir.scair.util
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.emf.ecore;visibility:=reexport
Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.app4mc.sca2amalthea.ir
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/bin/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/bin/.gitignore
deleted file mode 100644
index cf1db2e..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/bin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/org/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/pom.xml b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/pom.xml
deleted file mode 100644
index d2776c7..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/pom.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.build</artifactId>
- <version>1.0.0.qualifier</version>
- <relativePath>../../build/org.eclipse.app4mc.sca2amalthea.build</relativePath>
- </parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.ir</artifactId>
- <packaging>eclipse-plugin</packaging>
-
-
- <build>
- <sourceDirectory>src</sourceDirectory>
- <resources>
- <resource>
- <directory>xtend-gen</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>src</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <version>2.4.1</version>
- <configuration>
- <filesets>
- <fileset>
- <directory>xtend-gen</directory>
- <includes>
- <include>**</include>
- </includes>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>1.7</version>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>xtend-gen</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.eclipse.xtend</groupId>
- <artifactId>xtend-maven-plugin</artifactId>
- <version>2.7.3</version>
- <executions>
- <execution>
- <goals>
- <goal>compile</goal>
- </goals>
- <configuration>
- <outputDirectory>xtend-gen</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/AccessTypeEnum.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/AccessTypeEnum.java
index de92dc6..7316c52 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/AccessTypeEnum.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/AccessTypeEnum.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/CallGraph.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/CallGraph.java
index 3f74539..fe6e5df 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/CallGraph.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/CallGraph.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/Container.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/Container.java
index f92cd2b..e04c246 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/Container.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/Container.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/EFunctionTypeEnum.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/EFunctionTypeEnum.java
index 25c72ec..fc0565d 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/EFunctionTypeEnum.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/EFunctionTypeEnum.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/ETypeCategory.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/ETypeCategory.java
index 65b47d7..6c77b86 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/ETypeCategory.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/ETypeCategory.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/Function.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/Function.java
index 8f283ef..6f2f3f3 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/Function.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/Function.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/FunctionCall.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/FunctionCall.java
index 80b3d14..b26f6b7 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/FunctionCall.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/FunctionCall.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/IIdentifiable.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/IIdentifiable.java
index 2f192b0..f326dc8 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/IIdentifiable.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/IIdentifiable.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/IdentifiableElement.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/IdentifiableElement.java
index ca3804b..f49804e 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/IdentifiableElement.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/IdentifiableElement.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/Label.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/Label.java
index 96e505b..bfed500 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/Label.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/Label.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/LabelAccess.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/LabelAccess.java
index b1d0ab6..d810d6d 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/LabelAccess.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/LabelAccess.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/Project.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/Project.java
index 28f7bc2..1601478 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/Project.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/Project.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/StmtCall.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/StmtCall.java
index 6f8f6f5..ea66940 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/StmtCall.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/StmtCall.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/TypeDef.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/TypeDef.java
index e417ade..7c23f65 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/TypeDef.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/TypeDef.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/TypeDefMember.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/TypeDefMember.java
index f9ec5b0..cebc0f9 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/TypeDefMember.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/TypeDefMember.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/CallGraphImpl.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/CallGraphImpl.java
index eee030f..eca05d9 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/CallGraphImpl.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/CallGraphImpl.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/ContainerImpl.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/ContainerImpl.java
index 89f6629..c1f64ef 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/ContainerImpl.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/ContainerImpl.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/FunctionCallImpl.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/FunctionCallImpl.java
index 89eb9c1..109eac9 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/FunctionCallImpl.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/FunctionCallImpl.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/FunctionImpl.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/FunctionImpl.java
index c2a9615..4d0a5f7 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/FunctionImpl.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/FunctionImpl.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/IdentifiableElementImpl.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/IdentifiableElementImpl.java
index 04bc9ea..83a2e5e 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/IdentifiableElementImpl.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/IdentifiableElementImpl.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/LabelAccessImpl.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/LabelAccessImpl.java
index 678b184..2a9fedd 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/LabelAccessImpl.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/LabelAccessImpl.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/LabelImpl.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/LabelImpl.java
index cec363e..c97c79d 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/LabelImpl.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/LabelImpl.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/ProjectImpl.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/ProjectImpl.java
index 3d52210..e13e4c7 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/ProjectImpl.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/ProjectImpl.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/StmtCallImpl.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/StmtCallImpl.java
index 5b23d2a..66f4463 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/StmtCallImpl.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/StmtCallImpl.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/TypeDefImpl.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/TypeDefImpl.java
index 3dfc83b..b0790c1 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/TypeDefImpl.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/TypeDefImpl.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/TypeDefMemberImpl.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/TypeDefMemberImpl.java
index 880de34..76ebcb3 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/TypeDefMemberImpl.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/TypeDefMemberImpl.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/scairFactoryImpl.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/scairFactoryImpl.java
index bb589fb..15419ff 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/scairFactoryImpl.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/scairFactoryImpl.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/scairPackageImpl.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/scairPackageImpl.java
index 0bf5038..8c1db12 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/scairPackageImpl.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/impl/scairPackageImpl.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/scairFactory.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/scairFactory.java
index ab1e777..827f835 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/scairFactory.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/scairFactory.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/scairPackage.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/scairPackage.java
index 39aa994..563ca7e 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/scairPackage.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/scairPackage.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/util/scairAdapterFactory.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/util/scairAdapterFactory.java
index 6a9aad1..6e7e6b0 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/util/scairAdapterFactory.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/util/scairAdapterFactory.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/util/scairSwitch.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/util/scairSwitch.java
index 6cf8de8..0a23053 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/util/scairSwitch.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ir/src/org/eclipse/app4mc/sca2amalthea/ir/scair/util/scairSwitch.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/.gitignore
deleted file mode 100644
index 24d6437..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/META-INF/MANIFEST.MF b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/META-INF/MANIFEST.MF
index ae41a64..b52d017 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/META-INF/MANIFEST.MF
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: LLVM
Bundle-SymbolicName: org.eclipse.app4mc.sca2amalthea.llvm
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 0.9.8.qualifier
Bundle-Vendor: Eclipse.org
Eclipse-BundleShape: dir
Require-Bundle: org.eclipse.emf.ecore.xmi,
@@ -10,7 +10,6 @@
org.eclipse.app4mc.sca2amalthea.serialization,
org.eclipse.app4mc.sca2amalthea.ir,
org.eclipse.app4mc.amalthea.model,
- org.eclipse.app4mc.amalthea.sphinx,
org.eclipse.sphinx.emf,
org.eclipse.xtext.xbase.lib,
org.eclipse.app4mc.sca.amalthea.loader,
@@ -22,11 +21,13 @@
org.eclipse.core.resources,
org.eclipse.jface,
org.eclipse.core.resources,
- org.eclipse.app4mc.sca.logging;bundle-version="1.0.0",
- org.eclipse.app4mc.sca.util;bundle-version="1.0.0",
- org.eclipse.app4mc.sca.scheduling.loader
+ org.eclipse.app4mc.sca.logging,
+ org.eclipse.app4mc.sca.util,
+ org.eclipse.app4mc.sca.scheduling.loader,
+ org.eclipse.app4mc.sca2amalthea.llvm
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Export-Package: org.eclipse.app4mc.sca2amalthea.llvm.headless,
org.eclipse.app4mc.sca2amalthea.llvm.srcfiles.support,
org.eclipse.app4mc.sca2amalthea.llvm.starter
Bundle-Activator: org.eclipse.app4mc.sca2amalthea.llvm.Activator
+Automatic-Module-Name: org.eclipse.app4mc.sca2amalthea.llvm
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/bin/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/bin/.gitignore
deleted file mode 100644
index cf1db2e..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/bin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/org/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/pom.xml b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/pom.xml
deleted file mode 100644
index c7d5df8..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/pom.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.build</artifactId>
- <version>1.0.0.qualifier</version>
- <relativePath>../../build/org.eclipse.app4mc.sca2amalthea.build</relativePath>
- </parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.llvm</artifactId>
- <packaging>eclipse-plugin</packaging>
-
-
- <build>
- <sourceDirectory>src</sourceDirectory>
- <resources>
- <resource>
- <directory>xtend-gen</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>src</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <version>2.4.1</version>
- <configuration>
- <filesets>
- <fileset>
- <directory>xtend-gen</directory>
- <includes>
- <include>**</include>
- </includes>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>1.7</version>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>xtend-gen</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.eclipse.xtend</groupId>
- <artifactId>xtend-maven-plugin</artifactId>
- <version>2.7.3</version>
- <executions>
- <execution>
- <goals>
- <goal>compile</goal>
- </goals>
- <configuration>
- <outputDirectory>xtend-gen</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/Activator.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/Activator.java
index d4eea45..532b505 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/Activator.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/Activator.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/CmdLineArgumentParser.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/CmdLineArgumentParser.java
index f965648..a3ae3a0 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/CmdLineArgumentParser.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/CmdLineArgumentParser.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/GenerateAmaltheaModelFromLLVM.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/GenerateAmaltheaModelFromLLVM.java
index a0869d7..656fcf4 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/GenerateAmaltheaModelFromLLVM.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/GenerateAmaltheaModelFromLLVM.java
@@ -1,25 +1,19 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
- *
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
+ *
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
+ * which is available at https://www.eclipse.org/legal/epl-2.0
+ *
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
package org.eclipse.app4mc.sca2amalthea.llvm.headless;
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
import org.eclipse.app4mc.amalthea.model.Amalthea;
import org.eclipse.app4mc.sca.amalthea.serializer.AMALTHEAResourceSerializer;
import org.eclipse.app4mc.sca.logging.manager.LogFactory.Severity;
@@ -44,254 +38,270 @@
import org.eclipse.app4mc.sca2amalthea.scairmodelenricher.SCAIRModelEnrichmentUtils;
import org.eclipse.app4mc.sca2amalthea.serialization.SCAResource;
import org.eclipse.app4mc.sca2amalthea.utils.UtilityForProcessHandling;
-import org.eclipse.app4mc.sca2amalthea.utils.constants.SCA2AmaltheaConstants;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+
import org.eclipse.emf.common.util.URI;
+import java.io.File;
+import java.io.IOException;
+
+import java.util.List;
+import java.util.Locale;
/**
*/
public class GenerateAmaltheaModelFromLLVM {
+ private final SCA2AMALTHEAStarterProperties sca2amProperties;
- private final SCA2AMALTHEAStarterProperties sca2amProperties;
-
- /**
- * Generates amalthea model from the given properties. The given properties are used to populate the ast model and
- * from the ast model the intermediate representation. The intermdediate representation is inturn used to generate the
- * amalthea model
- *
- * @param llvmProperties {@link LLVMStarterProperties}
- */
- public GenerateAmaltheaModelFromLLVM(final SCA2AMALTHEAStarterProperties llvmProperties) {
- super();
- this.sca2amProperties = llvmProperties;
- }
-
- /**
- * @param llvmProperties LLVM properties
- * @param fcbcInFo given FC BC infos
- */
- public GenerateAmaltheaModelFromLLVM(final SCA2AMALTHEAStarterProperties llvmProperties,
- final Map<String, Map.Entry<String, String>> fcbcInFo) {
- this(llvmProperties);
- }
-
-
- /**
- * @param projectDir The project dir PVER
- * @param outDir The output directory where the amalthea model representation is being generation
- * @param astParser The ast parser location
- * @param taskInfoFile Task info file
- * @param hDirList H files directory
- * @param buildLogFile Build log file
- * @param lockinfoFile Lock Information
- * @param isStructMemberEnabled boolean giving the information if the struct members should be present in the model or
- * not
- * @param componentModelFcBc boolean value which tells whether the component model is fc/bc based or c/h file based.
- */
- public GenerateAmaltheaModelFromLLVM(final String projectDir, final String outDir, final String astParser,
- final String taskInfoFile, final String hDirList, final String buildLogFile, final String lockinfoFile,final boolean isStructMemberEnabled) {
- this.sca2amProperties = new SCA2AMALTHEAStarterProperties(astParser, outDir, taskInfoFile, 8, projectDir, hDirList,
- buildLogFile, lockinfoFile, isStructMemberEnabled);
- }
-
- /**
- * @throws IOException IOException
- * @throws InterruptedException InterruptedException
- * @return int status of the amalthea model generation
- */
- public int run() throws IOException, InterruptedException {
- int returnCode = 0;
- long startTime = 0;
- try {
- validateConsolidatedLLVMOptions();
- }
- catch (IllegalArgumentException e) {
- Logmanager.getInstance().logException(getClass(), e, Activator.PLUGIN_ID);
- LogUtil.log(LLVMLogUtil.LOG_MSG_ID, Severity.ERROR,
- "Aborting the amalthea generation, see exception log: " + e.getMessage(), this.getClass(),
- Activator.PLUGIN_ID);
- returnCode = 1;
- return returnCode;
+ /**
+ * Generates amalthea model from the given properties. The given properties are used to populate the ast model and
+ * from the ast model the intermediate representation. The intermdediate representation is inturn used to generate the
+ * amalthea model
+ *
+ * @param llvmProperties {@link LLVMStarterProperties}
+ */
+ public GenerateAmaltheaModelFromLLVM(
+ final SCA2AMALTHEAStarterProperties llvmProperties) {
+ super();
+ this.sca2amProperties = llvmProperties;
}
- try {
- if (returnCode == 0) {
- applyFallBackStrategy();
- parseBlogAndHDirListOptions();
+ /**
+ * @throws IOException IOException
+ * @throws InterruptedException InterruptedException
+ * @return int status of the amalthea model generation
+ */
+ public IStatus run() throws IOException, InterruptedException {
+ IStatus status = Status.OK_STATUS;
+ long startTime = 0;
+ try {
+ validateConsolidatedLLVMOptions();
+ } catch (IllegalArgumentException e) {
+ Logmanager.getInstance()
+ .logException(getClass(), e, Activator.PLUGIN_ID);
+ LogUtil.log(LLVMLogUtil.LOG_MSG_ID, Severity.ERROR,
+ "Aborting the amalthea generation, see exception log: " +
+ e.getMessage(), this.getClass(), Activator.PLUGIN_ID);
+ status = Status.CANCEL_STATUS;
+ }
+ try {
+ if (status == Status.OK_STATUS) {
+ applyFallBackStrategy();
+ parseBlogAndHDirListOptions();
- startTime = System.currentTimeMillis();
- LogUtil.log(LLVMLogUtil.LOG_MSG_ID, Severity.INFO,
- "Starting sca2amalthea export... [start time " + startTime + "]", this.getClass(), Activator.PLUGIN_ID);
+ startTime = System.currentTimeMillis();
+ LogUtil.log(LLVMLogUtil.LOG_MSG_ID, Severity.INFO,
+ "Starting sca2amalthea export... [start time " + startTime +
+ "]", this.getClass(), Activator.PLUGIN_ID);
- GenerateTraverseAstOutput llvmStarter =
- new GenerateTraverseAstOutput(this.sca2amProperties.getLlvmStarterProperties());
+ GenerateTraverseAstOutput llvmStarter = new GenerateTraverseAstOutput(this.sca2amProperties.getLlvmStarterProperties());
- llvmStarter.runTraverseAst();
- }
- }
- catch (Exception possibleException) {
- LogUtil.logException(LLVMLogUtil.LOG_MSG_ID, possibleException.getClass(), possibleException,
- Activator.PLUGIN_ID);
- possibleException.printStackTrace();
- returnCode = 1;
+ llvmStarter.runTraverseAst();
+ }
+ } catch (Exception possibleException) {
+ LogUtil.logException(LLVMLogUtil.LOG_MSG_ID,
+ possibleException.getClass(), possibleException,
+ Activator.PLUGIN_ID);
+ possibleException.printStackTrace();
+ status = Status.CANCEL_STATUS;
+ }
+
+ if ((status == Status.OK_STATUS) &&
+ (UtilityForProcessHandling.getCurrentRunningProcess().exitValue() == 0)) {
+ LogUtil.log(LLVMLogUtil.LOG_MSG_ID, Severity.INFO,
+ "Transforming the intermediate representation to amalthea model",
+ this.getClass(), Activator.PLUGIN_ID);
+
+ try {
+ convertXMLToAmaltheaModel();
+ } catch (Exception possibleException) {
+ LogUtil.logException(LLVMLogUtil.LOG_MSG_ID,
+ possibleException.getClass(), possibleException,
+ Activator.PLUGIN_ID);
+ status = Status.CANCEL_STATUS;
+ }
+
+ long duration = (System.currentTimeMillis() - startTime) / 1000; // in seconds
+ LogUtil.log(LLVMLogUtil.LOG_MSG_ID, Severity.INFO,
+ "Export of AMALTHEA model completed. [duration=" + duration +
+ " seconds]", this.getClass(), Activator.PLUGIN_ID);
+
+ WorkspaceOperations.refreshWorkspace(this.sca2amProperties.getProjectPath(),
+ "_bin/sca2amalthea");
+ WorkspaceOperations.refreshWorkspace(this.sca2amProperties.getProjectPath(),
+ "_log/sca2amalthea");
+ WorkspaceOperations.refreshWorkspace(this.sca2amProperties.getProjectPath(),
+ "_gen/sca2amalthea");
+ } else {
+ status = Status.CANCEL_STATUS;
+ LogUtil.log(LLVMLogUtil.LOG_MSG_ID, Severity.INFO,
+ "AMALTHEA model generation aborted.", this.getClass(),
+ Activator.PLUGIN_ID);
+ }
+
+ return status;
}
- if ((returnCode == 0) && (UtilityForProcessHandling.getCurrentRunningProcess().exitValue() == 0)) {
- LogUtil.log(LLVMLogUtil.LOG_MSG_ID, Severity.INFO,
- "Transforming the intermediate representation to amalthea model", this.getClass(), Activator.PLUGIN_ID);
- try {
- convertXMLToAmaltheaModel();
- }
- catch (Exception possibleException) {
- LogUtil.logException(LLVMLogUtil.LOG_MSG_ID, possibleException.getClass(), possibleException,
- Activator.PLUGIN_ID);
- returnCode = 1;
- }
- long duration = (System.currentTimeMillis() - startTime) / 1000; // in seconds
- LogUtil.log(LLVMLogUtil.LOG_MSG_ID, Severity.INFO,
- "Export of AMALTHEA model completed. [duration=" + duration + " seconds]", this.getClass(),
- Activator.PLUGIN_ID);
+ /**
+ * @throws IllegalArgumentException if a given path of the properties does not exist
+ */
+ private void validateConsolidatedLLVMOptions()
+ throws IllegalArgumentException {
+ if (!new File(this.sca2amProperties.getProjectPath()).exists()) {
+ throw new IllegalArgumentException(
+ "The project path provided is not valid: " +
+ this.sca2amProperties.getProjectPath());
+ }
- WorkspaceOperations.refreshWorkspace(this.sca2amProperties.getcProjectPath(), "_bin/sca2amalthea");
- WorkspaceOperations.refreshWorkspace(this.sca2amProperties.getcProjectPath(), "_log/sca2amalthea");
- WorkspaceOperations.refreshWorkspace(this.sca2amProperties.getcProjectPath(), "_gen/sca2amalthea");
- }
- else {
- returnCode = 1;
- LogUtil.log(LLVMLogUtil.LOG_MSG_ID, Severity.INFO, "AMALTHEA model generation aborted.", this.getClass(),
- Activator.PLUGIN_ID);
- }
- return returnCode;
- }
+ if ((this.sca2amProperties.getTraverseAstFile() != null) &&
+ !this.sca2amProperties.getTraverseAstFile().isEmpty() &&
+ !new File(this.sca2amProperties.getTraverseAstFile()).exists()) {
+ throw new IllegalArgumentException(
+ "The traverse ast path provided is not valid: " +
+ this.sca2amProperties.getTraverseAstFile());
+ }
- /**
- * @throws IllegalArgumentException if a given path of the properties does not exist
- */
- private void validateConsolidatedLLVMOptions() throws IllegalArgumentException {
- if (!new File(this.sca2amProperties.getcProjectPath()).exists()) {
- throw new IllegalArgumentException(
- "The project path provided is not valid: " + this.sca2amProperties.getcProjectPath());
+ if ((this.sca2amProperties.getOutPutPath() != null) &&
+ !this.sca2amProperties.getOutPutPath().isEmpty()) {
+ checkFilePathExists(this.sca2amProperties.getOutPutPath(),
+ "output path");
+ }
+
+ checkFilePathExists(this.sca2amProperties.getTaskListFile(),
+ "tasklist file path");
+ checkFilePathExists(this.sca2amProperties.getBuildLogFile(),
+ "build log file path");
+
+ if ((this.sca2amProperties.gethDirFilePath() != null) &&
+ !this.sca2amProperties.gethDirFilePath().isEmpty()) {
+ String[] paths = this.sca2amProperties.gethDirFilePath().split(";");
+
+ for (String s : paths) {
+ checkFilePathExists(s, "h dir path");
+ }
+ }
+
+ checkFilePathExists(this.sca2amProperties.getLockinfoFile(),
+ "lock info file path");
}
- if ((this.sca2amProperties.getTraverseAstFile() != null) && !this.sca2amProperties.getTraverseAstFile().isEmpty() &&
- !new File(this.sca2amProperties.getTraverseAstFile()).exists()) {
- throw new IllegalArgumentException(
- "The traverse ast path provided is not valid: " + this.sca2amProperties.getTraverseAstFile());
+ /**
+ * @param filePath to be checked
+ * @param filePathName description
+ */
+ private void checkFilePathExists(final String filePath,
+ final String filePathName) {
+ if ((filePath != null) && !filePath.isEmpty() &&
+ !new File(filePath).exists()) {
+ throw new IllegalArgumentException("The " + filePathName +
+ " provided is not valid: " + filePath);
+ }
}
- if ((this.sca2amProperties.getOutPutPath() != null) && !this.sca2amProperties.getOutPutPath().isEmpty() &&
- !this.sca2amProperties.getOutPutPath()
- .equals(SCA2AmaltheaConstants.getPreferenceStore().getDefaultString(SCA2AmaltheaConstants.OUTPUT_PATH))) {
- checkFilePathExists(this.sca2amProperties.getOutPutPath(), "output path");
+ private void convertXMLToAmaltheaModel() {
+ OSConfModel osConfModel = null;
+ URI createURI = URI.createFileURI(this.sca2amProperties.getLlvmStarterProperties()
+ .getGenDirectory() +
+ "/XMLCalltree.xml");
+ SCAResource resource = new SCAIRLoader().load(createURI);
+
+ if ((this.sca2amProperties.getTaskListFile() != null) &&
+ !this.sca2amProperties.getTaskListFile().isEmpty()) {
+ SchedulingInformationLoader schedInfoLoader = new SchedulingInformationLoader();
+ osConfModel = schedInfoLoader.getTasksInformation(this.sca2amProperties.getTaskListFile());
+
+ if (osConfModel != null) {
+ SCAIRModelEnrichmentUtils.markTasksIsrsRunnablesInModel(resource,
+ osConfModel.getTaskISRInfoAsMap());
+ }
+ }
+
+ LockDefinition lockDefinition = null;
+
+ if ((this.sca2amProperties.getLockinfoFile() != null) &&
+ !this.sca2amProperties.getLockinfoFile().isEmpty()) {
+ lockDefinition = new LockDefinition(this.sca2amProperties.getLockinfoFile());
+ lockDefinition.readLockDefinitionFromFile();
+ }
+
+ Amalthea amaltheaModel = new SCAToAmaltheaExporter().amaltheaTransformation(resource,
+ lockDefinition, osConfModel);
+
+ ManipulateAmalthea.markIniTasksInAmaltheaModel(amaltheaModel,
+ osConfModel);
+
+ ManipulateAmalthea manipulatorCaller = new ManipulateAmalthea();
+ manipulatorCaller.manipulates(this.sca2amProperties, amaltheaModel);
+
+ AMALTHEAResourceSerializer amResSerializer = new AMALTHEAResourceSerializer();
+ amResSerializer.saveAmaltheaModel(this.sca2amProperties.getBinDirectory() +
+ "/amaltheaModelFromLLVM", amaltheaModel);
}
- checkFilePathExists(this.sca2amProperties.getTaskListFile(), "tasklist file path");
- checkFilePathExists(this.sca2amProperties.getBuildLogFile(), "build log file path");
-
- if ((this.sca2amProperties.gethDirFilePath() != null) && !this.sca2amProperties.gethDirFilePath().isEmpty()) {
- String[] paths = this.sca2amProperties.gethDirFilePath().split(";");
- for (String s : paths) {
- checkFilePathExists(s, "h dir path");
- }
+ /**
+ * Method that provides the fall back strategy if the user has not provided the necessary parameters
+ */
+ private void applyFallBackStrategy() {
+ if ((this.sca2amProperties.getOutPutPath() == null) ||
+ this.sca2amProperties.getOutPutPath().isEmpty()) {
+ this.sca2amProperties.setBinDirectory(SCAUtils.getSCARootDirectory(
+ this.sca2amProperties.getProjectPath(),
+ SCAToolsDirectoryType.SCA_BIN,
+ App4mcToolConstants.SCA2AMALTHEA_TOOL_ID.toLowerCase(
+ Locale.getDefault())));
+ this.sca2amProperties.getLlvmStarterProperties()
+ .setGenDirectory(SCAUtils.getSCARootDirectory(
+ this.sca2amProperties.getProjectPath(),
+ SCAToolsDirectoryType.SCA_GEN,
+ App4mcToolConstants.SCA2AMALTHEA_TOOL_ID.toLowerCase(
+ Locale.getDefault())));
+ this.sca2amProperties.getLlvmStarterProperties()
+ .setLogDirecotry(SCAUtils.getSCARootDirectory(
+ this.sca2amProperties.getProjectPath(),
+ SCAToolsDirectoryType.SCA_LOG,
+ App4mcToolConstants.SCA2AMALTHEA_TOOL_ID.toLowerCase(
+ Locale.getDefault())));
+ } else {
+ this.sca2amProperties.setBinDirectory(this.sca2amProperties.getOutPutPath());
+ this.sca2amProperties.getLlvmStarterProperties()
+ .setGenDirectory(this.sca2amProperties.getOutPutPath());
+ this.sca2amProperties.getLlvmStarterProperties()
+ .setLogDirecotry(this.sca2amProperties.getOutPutPath());
+ }
}
- checkFilePathExists(this.sca2amProperties.getLockinfoFile(), "lock info file path");
- }
+ /**
+ * This method checks if the user has provided the build_cmd.log file and the header directories. If so it reads them
+ * and generates the clist and hlist.
+ */
+ private void parseBlogAndHDirListOptions() {
+ List<String> hdList;
+ List<String> cList;
- /**
- * @param filePath to be checked
- * @param filePathName description
- */
- private void checkFilePathExists(final String filePath, final String filePathName) {
- if ((filePath != null) && !filePath.isEmpty() && !new File(filePath).exists()) {
- throw new IllegalArgumentException("The " + filePathName + " provided is not valid: " + filePath);
+ if ((this.sca2amProperties.getBuildLogFile() != null) &&
+ !this.sca2amProperties.getBuildLogFile().isEmpty()) {
+ BuildCommandLogFileParser cListProvider = new BuildCommandLogFileParser(this.sca2amProperties.getBuildLogFile(),
+ this.sca2amProperties.getProjectPath());
+ cList = cListProvider.generateSourceFileList();
+ hdList = cListProvider.generateHashDefineList();
+
+ this.sca2amProperties.setcFilesList(cList);
+ this.sca2amProperties.setHashDefineList(hdList);
+ }
+
+ List<String> hList;
+
+ if ((this.sca2amProperties.gethDirFilePath() != null) &&
+ !this.sca2amProperties.gethDirFilePath().isEmpty()) {
+ String hFilePathList = this.sca2amProperties.gethDirFilePath();
+ // create h file list
+ hList = new PathsToListConverter(hFilePathList, ".h").generateSourceFileList();
+ this.sca2amProperties.sethFilesList(hList);
+ }
}
- }
-
- private void convertXMLToAmaltheaModel() {
- OSConfModel osConfModel = null;
- URI createURI =
- URI.createFileURI(this.sca2amProperties.getLlvmStarterProperties().getGenDirectory() + "/XMLCalltree.xml");
- SCAResource resource = new SCAIRLoader().load(createURI);
- if ((this.sca2amProperties.getTaskListFile() != null) && !this.sca2amProperties.getTaskListFile().isEmpty()) {
- SchedulingInformationLoader schedInfoLoader = new SchedulingInformationLoader();
- osConfModel = schedInfoLoader.getTasksInformation(this.sca2amProperties.getTaskListFile());
- if (osConfModel != null) {
- SCAIRModelEnrichmentUtils.markTasksIsrsRunnablesInModel(resource, osConfModel.getTaskISRInfoAsMap());
- }
- }
-
- LockDefinition lockDefinition=null;
- if ((this.sca2amProperties.getLockinfoFile() != null) && !this.sca2amProperties.getLockinfoFile().isEmpty()) {
- lockDefinition = new LockDefinition(this.sca2amProperties.getLockinfoFile());
- lockDefinition.readLockDefinitionFromFile();
- }
-
- Amalthea amaltheaModel = new SCAToAmaltheaExporter().amaltheaTransformation(resource, lockDefinition, osConfModel);
-
- ManipulateAmalthea.markIniTasksInAmaltheaModel(amaltheaModel, osConfModel);
-
- ManipulateAmalthea manipulatorCaller = new ManipulateAmalthea();
- manipulatorCaller.manipulates(this.sca2amProperties, amaltheaModel);
-
- AMALTHEAResourceSerializer amResSerializer = new AMALTHEAResourceSerializer();
- amResSerializer.saveAmaltheaModel(this.sca2amProperties.getBinDirectory() + "/amaltheaModelFromLLVM",
- amaltheaModel);
- }
-
- /**
- * Method that provides the fall back strategy if the user has not provided the necessary parameters
- */
- private void applyFallBackStrategy() {
- if ((this.sca2amProperties.getOutPutPath() == null) || this.sca2amProperties.getOutPutPath().isEmpty() ||
- this.sca2amProperties.getOutPutPath()
- .equals(SCA2AmaltheaConstants.getPreferenceStore().getDefaultString(SCA2AmaltheaConstants.OUTPUT_PATH))) {
- this.sca2amProperties.setBinDirectory(SCAUtils.getSCARootDirectory(
- this.sca2amProperties.getcProjectPath(), SCAToolsDirectoryType.SCA_BIN,
- App4mcToolConstants.SCA2AMALTHEA_TOOL_ID.toLowerCase(Locale.getDefault())));
- this.sca2amProperties.getLlvmStarterProperties()
- .setGenDirectory(SCAUtils.getSCARootDirectory(this.sca2amProperties.getcProjectPath(),
- SCAToolsDirectoryType.SCA_GEN,
- App4mcToolConstants.SCA2AMALTHEA_TOOL_ID.toLowerCase(Locale.getDefault())));
- this.sca2amProperties.getLlvmStarterProperties()
- .setLogDirecotry(SCAUtils.getSCARootDirectory(this.sca2amProperties.getcProjectPath(),
- SCAToolsDirectoryType.SCA_LOG,
- App4mcToolConstants.SCA2AMALTHEA_TOOL_ID.toLowerCase(Locale.getDefault())));
- }
- else {
- this.sca2amProperties.setBinDirectory(this.sca2amProperties.getOutPutPath());
- this.sca2amProperties.getLlvmStarterProperties().setGenDirectory(this.sca2amProperties.getOutPutPath());
- this.sca2amProperties.getLlvmStarterProperties().setLogDirecotry(this.sca2amProperties.getOutPutPath());
- }
- }
-
- /**
- * This method checks if the user has provided the build_cmd.log file and the header directories. If so it reads them
- * and generates the clist and hlist and if not it uses the MDF to get the clist and hlist.
- */
- private void parseBlogAndHDirListOptions() {
- List<String> hdList;
- List<String> cList;
-
- if ((this.sca2amProperties.getBuildLogFile() != null) && !this.sca2amProperties.getBuildLogFile().isEmpty()) {
- BuildCommandLogFileParser cListProvider = new BuildCommandLogFileParser(this.sca2amProperties.getBuildLogFile(),
- this.sca2amProperties.getcProjectPath());
- cList = cListProvider.generateSourceFileList();
- hdList = cListProvider.generateHashDefineList();
-
- this.sca2amProperties.setcFilesList(cList);
- this.sca2amProperties.setHashDefineList(hdList);
- }
- List<String> hList;
- if ((this.sca2amProperties.gethDirFilePath() != null) && !this.sca2amProperties.gethDirFilePath().isEmpty()) {
- String hFilePathList = this.sca2amProperties.gethDirFilePath();
- // create h file list
- hList = new PathsToListConverter(hFilePathList, ".h").generateSourceFileList();
- this.sca2amProperties.sethFilesList(hList);
- }
- }
-
}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/SCA2AMALTHEACmdLauncher.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/SCA2AMALTHEACmdLauncher.java
index a6412f2..1a31fa1 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/SCA2AMALTHEACmdLauncher.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/SCA2AMALTHEACmdLauncher.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/SCA2AMALTHEAStarterProperties.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/SCA2AMALTHEAStarterProperties.java
index a3da8fe..0234839 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/SCA2AMALTHEAStarterProperties.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/headless/SCA2AMALTHEAStarterProperties.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -14,56 +14,64 @@
*/
package org.eclipse.app4mc.sca2amalthea.llvm.headless;
+import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.app4mc.sca2amalthea.llvm.starter.LLVMStarterProperties;
+import com.google.common.base.Joiner;
+
/**
- * These class contains only the data of all aoptions needed for running the SCA2AMALTHEA tool
+ * These class contains only the data of all options needed for running the SCA2AMALTHEA tool
*/
public class SCA2AMALTHEAStarterProperties {
+ private String projectPath;
private String outPutPath;
private String binDirectory;
-
- private final String taskListFile;
- private final String cProjectPath;
- private final String hDirFilePath;
-
- private final String buildLogFile;
+ private String taskListFile;
+ private String hDirFilePath;
+ private String buildLogFile;
private String lockinfoFile;
- private final boolean isStructMemberEnabled;
+ private boolean isStructMemberEnabled;
- private final LLVMStarterProperties llvmStarterProperties;
+ private LLVMStarterProperties llvmStarterProperties = new LLVMStarterProperties();
/**
*
*/
public static final String LOCK_DEFINITION_FILE = "default_bsw_lock_functions.csv";
+
+ public SCA2AMALTHEAStarterProperties() {
+ // no -arg constructor
+ }
+
/**
* @param traverseAstPath {@link String}
* @param outPutPath {@link String}
* @param taskListFile {@link String}
* @param numberOfThreads {@link Integer}
- * @param cProjectPath {@link String}
+ * @param projectPath {@link String}
* @param hDirFilePath {@link String}
* @param buildLogFile {@link String}
* @param lockinfoFile {@link String}
* @param isStructMemberEnabled {@link Boolean}
*/
+
+
public SCA2AMALTHEAStarterProperties(final String traverseAstPath, final String outPutPath, final String taskListFile,
- final int numberOfThreads, final String cProjectPath, final String hDirFilePath, final String buildLogFile,
+ final int numberOfThreads, final String projectPath, final String hDirFilePath, final String buildLogFile,
final String lockinfoFile, final boolean isStructMemberEnabled) {
- this.llvmStarterProperties = new LLVMStarterProperties(traverseAstPath, outPutPath, numberOfThreads, cProjectPath,
+ this.llvmStarterProperties = new LLVMStarterProperties(traverseAstPath, outPutPath, numberOfThreads, projectPath,
null, null, new ArrayList<String>(), new ArrayList<String>(), new ArrayList<String>());
this.taskListFile = taskListFile;
this.outPutPath = outPutPath;
- this.cProjectPath = cProjectPath;
+ this.projectPath = projectPath;
this.hDirFilePath = hDirFilePath;
this.buildLogFile = buildLogFile;
this.lockinfoFile = lockinfoFile;
@@ -78,17 +86,39 @@
}
-
-
+ /**
+ * @param projectPath the cProjectPath to set
+ */
+ public void setProjectPath(final String projectPath) {
+ this.projectPath = projectPath;
+ this.llvmStarterProperties.setProjectPath(projectPath);
+ }
/**
* @param outPutPath the outPutPath to set
*/
public void setOutPutPath(final String outPutPath) {
- this.outPutPath = outPutPath;
+ if ((outPutPath == null) || outPutPath.isEmpty() || new File(outPutPath).isAbsolute()) {
+ this.outPutPath = outPutPath;
+ }
+ else {
+ this.outPutPath = this.projectPath + outPutPath;
+ }
this.llvmStarterProperties.setOutPutPath(outPutPath);
}
+ /**
+ * @param buildLogFile the build command log file path
+ */
+ public void setBuildLogFile(final String buildLogFile) {
+ if ((buildLogFile == null) || buildLogFile.isEmpty() || new File(buildLogFile).isAbsolute()) {
+ this.buildLogFile = buildLogFile;
+ }
+ else {
+ this.buildLogFile = this.projectPath + buildLogFile;
+ }
+ }
+
/**
* @param cFilesList the cFilesList to set
@@ -105,6 +135,43 @@
this.llvmStarterProperties.sethFilesList(hFilesList);
}
+ /**
+ * @param hDirFilePath the header directories.
+ */
+ public void setHDirFilePath(final String hDirFilePath) {
+ List<String> hdirList = new ArrayList<>();
+ if ((hDirFilePath != null) && !hDirFilePath.isEmpty()) {
+ for (String s : hDirFilePath.split(File.pathSeparator)) {
+ if (new File(s).isAbsolute()) {
+ hdirList.add(s);
+ }
+ else {
+ hdirList.add(this.projectPath + s);
+ }
+ }
+ }
+ this.hDirFilePath = Joiner.on(File.pathSeparator).join(hdirList);
+ }
+
+ /**
+ * @param taskListFile the taskListFile to set
+ */
+ public void setTaskListFile(final String taskListFile) {
+ if ((taskListFile == null) || taskListFile.isEmpty() || new File(taskListFile).isAbsolute()) {
+ this.taskListFile = taskListFile;
+ }
+ else {
+ this.taskListFile = this.projectPath + taskListFile;
+ }
+ }
+
+ /**
+ * @param isStructMemberEnabled enable structure members option.
+ */
+ public void setIsStructMemberEnabled(final boolean isStructMemberEnabled) {
+ this.isStructMemberEnabled = isStructMemberEnabled;
+ }
+
/**
* @return the list of C files contained in the project or variant
@@ -138,8 +205,8 @@
/**
* @return the cProjectPath
*/
- public String getcProjectPath() {
- return this.cProjectPath;
+ public String getProjectPath() {
+ return this.projectPath;
}
/**
@@ -183,7 +250,12 @@
* @param lockinfoFile the lockinfoFile to set
*/
public void setLockinfoFile(final String lockinfoFile) {
- this.lockinfoFile = lockinfoFile;
+ if ((lockinfoFile == null) || lockinfoFile.isEmpty() || new File(lockinfoFile).isAbsolute()) {
+ this.lockinfoFile = lockinfoFile;
+ }
+ else {
+ this.lockinfoFile = this.projectPath + lockinfoFile;
+ }
}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/srcfiles/support/BuildCommandLogFileParser.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/srcfiles/support/BuildCommandLogFileParser.java
index d2a97b9..4264c45 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/srcfiles/support/BuildCommandLogFileParser.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/srcfiles/support/BuildCommandLogFileParser.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/srcfiles/support/ISourceFileListProvider.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/srcfiles/support/ISourceFileListProvider.java
index 91a81ac..5ac4075 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/srcfiles/support/ISourceFileListProvider.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/srcfiles/support/ISourceFileListProvider.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/srcfiles/support/PathsToListConverter.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/srcfiles/support/PathsToListConverter.java
index 5f787f8..be0de69 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/srcfiles/support/PathsToListConverter.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/srcfiles/support/PathsToListConverter.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/starter/GenerateTraverseAstOutput.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/starter/GenerateTraverseAstOutput.java
index 6639f07..769528a 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/starter/GenerateTraverseAstOutput.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/starter/GenerateTraverseAstOutput.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -74,8 +74,8 @@
cmdList.add("-n=" + properties.getNumberOfThreads());
}
- if (properties.getcProjectPath() != null) {
- cmdList.add("-pdir=" + properties.getcProjectPath());
+ if (properties.getProjectPath() != null) {
+ cmdList.add("-pdir=" + properties.getProjectPath());
}
if (properties.gethFilesPath() != null) {
cmdList.add("-hdir=" + properties.gethFilesPath());
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/starter/LLVMStarterProperties.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/starter/LLVMStarterProperties.java
index dfc9751..2762fbd 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/starter/LLVMStarterProperties.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/starter/LLVMStarterProperties.java
@@ -1,13 +1,13 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
- *
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
+ *
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
+ * which is available at https://www.eclipse.org/legal/epl-2.0
+ *
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
@@ -22,188 +22,202 @@
* This class contains only the options needed for running the llvm part C-Code executable
*/
public class LLVMStarterProperties {
+ /**
+ *
+ */
+ public static final String TRAVERSE_AST_FILE = "sca.exe";
- private String traverseAstFile;
- private String outPutPath;
- private String genDirectory;
- private String logDirectory;
- private final int numberOfThreads;
- private final String cProjectPath;
- private final String cFilesPath;
- private final String hFilesPath;
- private List<String> cFilesList;
- private List<String> hFilesList;
- private List<String> hashDefineList;
+ /**
+ *
+ */
+ public static final String LIB_CLANG_DLL = "libclang.dll";
+ private String projectPath;
+ private String traverseAstFile;
+ private String outPutPath;
+ private String genDirectory;
+ private String logDirectory;
+ private int numberOfThreads;
+ private String cFilesPath;
+ private String hFilesPath;
+ private List<String> cFilesList;
+ private List<String> hFilesList;
+ private List<String> hashDefineList;
- /**
- *
- */
- public static final String TRAVERSE_AST_FILE = "sca.exe";
- /**
- *
- */
- public static final String LIB_CLANG_DLL = "libclang.dll";
-
- /**
- * @param traverseAstPath {@link String}
- * @param outPutPath {@link String}
- * @param numberOfThreads {@link Integer}
- * @param cProjectPath {@link String}
- * @param cFilePath {@link String}
- * @param hFilePath {@link String}
- * @param cFilesList {@link List}
- * @param hFilesList {@link List}
- * @param hashDefineList {@link List}
- */
- public LLVMStarterProperties(final String traverseAstPath, final String outPutPath, final int numberOfThreads,
- final String cProjectPath, final String cFilePath, final String hFilePath, final List<String> cFilesList,
- final List<String> hFilesList, final List<String> hashDefineList) {
-
- this.traverseAstFile = traverseAstPath;
- if ((this.traverseAstFile != null) && !this.traverseAstFile.isEmpty()) {
- this.traverseAstFile = traverseAstPath + "/" + LLVMStarterProperties.TRAVERSE_AST_FILE;
+ /**
+ * No arg constructor
+ */
+ public LLVMStarterProperties() {
+ // no arg constructor
}
- this.outPutPath = outPutPath;
- this.numberOfThreads = numberOfThreads;
- this.cProjectPath = cProjectPath;
- this.cFilesPath = cFilePath;
- this.hFilesPath = hFilePath;
- this.cFilesList = new ArrayList<String>(cFilesList);
- this.hFilesList = new ArrayList<String>(hFilesList);
- this.hashDefineList = new ArrayList<String>(hashDefineList);
- }
+ /**
+ * @param traverseAstPath {@link String}
+ * @param outPutPath {@link String}
+ * @param numberOfThreads {@link Integer}
+ * @param projectPath {@link String}
+ * @param cFilePath {@link String}
+ * @param hFilePath {@link String}
+ * @param cFilesList {@link List}
+ * @param hFilesList {@link List}
+ * @param hashDefineList {@link List}
+ */
+ public LLVMStarterProperties(final String traverseAstPath,
+ final String outPutPath, final int numberOfThreads,
+ final String projectPath, final String cFilePath,
+ final String hFilePath, final List<String> cFilesList,
+ final List<String> hFilesList, final List<String> hashDefineList) {
+ this.traverseAstFile = traverseAstPath;
- /**
- * @param traverseAstFile the traverseAstFile to set
- */
- public void setTraverseAstFile(final String traverseAstFile) {
- this.traverseAstFile = traverseAstFile;
- }
+ if ((this.traverseAstFile != null) && !this.traverseAstFile.isEmpty()) {
+ this.traverseAstFile = traverseAstPath + "/" +
+ LLVMStarterProperties.TRAVERSE_AST_FILE;
+ }
+ this.outPutPath = outPutPath;
+ this.numberOfThreads = numberOfThreads;
+ this.projectPath = projectPath;
+ this.cFilesPath = cFilePath;
+ this.hFilesPath = hFilePath;
+ this.cFilesList = new ArrayList<String>(cFilesList);
+ this.hFilesList = new ArrayList<String>(hFilesList);
+ this.hashDefineList = new ArrayList<String>(hashDefineList);
+ }
- /**
- * @param outPutPath the outPutPath to set
- */
- public void setOutPutPath(final String outPutPath) {
- this.outPutPath = outPutPath;
- }
+ /**
+ * @param traverseAstFile the traverseAstFile to set
+ */
+ public void setTraverseAstFile(final String traverseAstFile) {
+ this.traverseAstFile = traverseAstFile;
+ if ((this.traverseAstFile != null) && !this.traverseAstFile.isEmpty()) {
+ this.traverseAstFile = this.traverseAstFile + "/" +
+ LLVMStarterProperties.TRAVERSE_AST_FILE;
+ }
+ }
- /**
- * @param cFilesList the cFilesList to set
- */
- public void setcFilesList(final List<String> cFilesList) {
- this.cFilesList = new ArrayList<String>(cFilesList);
- }
+ /**
+ * @param outPutPath the outPutPath to set
+ */
+ public void setOutPutPath(final String outPutPath) {
+ this.outPutPath = outPutPath;
+ }
+ /**
+ * @param cFilesList the cFilesList to set
+ */
+ public void setcFilesList(final List<String> cFilesList) {
+ this.cFilesList = new ArrayList<String>(cFilesList);
+ }
- /**
- * @param hFilesList the hFilesList to set
- */
- public void sethFilesList(final List<String> hFilesList) {
- this.hFilesList = new ArrayList<String>(hFilesList);
- }
+ /**
+ * @param hFilesList the hFilesList to set
+ */
+ public void sethFilesList(final List<String> hFilesList) {
+ this.hFilesList = new ArrayList<String>(hFilesList);
+ }
+ /**
+ * @param hashDefineList the hashDefineList to set
+ */
+ public void setHashDefineList(final List<String> hashDefineList) {
+ this.hashDefineList = new ArrayList<String>(hashDefineList);
+ }
- /**
- * @param hashDefineList the hashDefineList to set
- */
- public void setHashDefineList(final List<String> hashDefineList) {
- this.hashDefineList = new ArrayList<String>(hashDefineList);
- }
+ /**
+ * @param projectPath the projectPath to set
+ */
+ public void setProjectPath(final String projectPath) {
+ this.projectPath = projectPath;
+ }
- /**
- * @return the cProjectPath
- */
- public String getcProjectPath() {
- return this.cProjectPath;
- }
+ /**
+ * @return LLVMStarterProperties
+ */
+ public String getProjectPath() {
+ return this.projectPath;
+ }
- /**
- * @return the cFilesPath
- */
- public String getcFilesPath() {
- return this.cFilesPath;
- }
+ /**
+ * @return the cFilesPath
+ */
+ public String getcFilesPath() {
+ return this.cFilesPath;
+ }
- /**
- * @return the traverseAstFile
- */
- public String getTraverseAstFile() {
- return this.traverseAstFile;
- }
+ /**
+ * @return the traverseAstFile
+ */
+ public String getTraverseAstFile() {
+ return this.traverseAstFile;
+ }
- /**
- * @return the outPutPath
- */
- public String getOutPutPath() {
- return this.outPutPath;
- }
+ /**
+ * @return the outPutPath
+ */
+ public String getOutPutPath() {
+ return this.outPutPath;
+ }
- /**
- * @return the numberOfThreads
- */
- public int getNumberOfThreads() {
- return this.numberOfThreads;
- }
+ /**
+ * @return the numberOfThreads
+ */
+ public int getNumberOfThreads() {
+ return this.numberOfThreads;
+ }
- /**
- * @return the hFilesPath
- */
- public String gethFilesPath() {
- return this.hFilesPath;
- }
+ /**
+ * @return the hFilesPath
+ */
+ public String gethFilesPath() {
+ return this.hFilesPath;
+ }
- /**
- * @return the cFilesList
- */
- public List<String> getcFilesList() {
- return this.cFilesList;
- }
+ /**
+ * @return the cFilesList
+ */
+ public List<String> getcFilesList() {
+ return this.cFilesList;
+ }
- /**
- * @return the hFilesList
- */
- public List<String> gethFilesList() {
- return this.hFilesList;
- }
+ /**
+ * @return the hFilesList
+ */
+ public List<String> gethFilesList() {
+ return this.hFilesList;
+ }
- /**
- * @return the hashDefineList
- */
- public List<String> getHashDefineList() {
- return this.hashDefineList;
- }
+ /**
+ * @return the hashDefineList
+ */
+ public List<String> getHashDefineList() {
+ return this.hashDefineList;
+ }
- /**
- * @return the genDirectory
- */
- public String getGenDirectory() {
- return this.genDirectory;
- }
+ /**
+ * @return the genDirectory
+ */
+ public String getGenDirectory() {
+ return this.genDirectory;
+ }
+ /**
+ * @param genDirectory the genDirectory to set
+ */
+ public void setGenDirectory(final String genDirectory) {
+ this.genDirectory = genDirectory;
+ }
- /**
- * @param genDirectory the genDirectory to set
- */
- public void setGenDirectory(final String genDirectory) {
- this.genDirectory = genDirectory;
- }
+ /**
+ * @return the logDirecotry
+ */
+ public String getLogDirecotry() {
+ return this.logDirectory;
+ }
-
- /**
- * @return the logDirecotry
- */
- public String getLogDirecotry() {
- return this.logDirectory;
- }
-
-
- /**
- * @param logDirecotry the logDirecotry to set
- */
- public void setLogDirecotry(final String logDirecotry) {
- this.logDirectory = logDirecotry;
- }
+ /**
+ * @param logDirecotry the logDirecotry to set
+ */
+ public void setLogDirecotry(final String logDirecotry) {
+ this.logDirectory = logDirecotry;
+ }
}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/starter/ProcessExecutor.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/starter/ProcessExecutor.java
index fb5d4e9..ddd5631 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/starter/ProcessExecutor.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/starter/ProcessExecutor.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/util/LLVMConstants.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/util/LLVMConstants.java
index e9ca35f..0396931 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/util/LLVMConstants.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/util/LLVMConstants.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/util/ManipulateAmalthea.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/util/ManipulateAmalthea.java
index 22993ce..9279c0d 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/util/ManipulateAmalthea.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.llvm/src/org/eclipse/app4mc/sca2amalthea/llvm/util/ManipulateAmalthea.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.scairmodelenricher/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.scairmodelenricher/.gitignore
deleted file mode 100644
index 24d6437..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.scairmodelenricher/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.scairmodelenricher/META-INF/MANIFEST.MF b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.scairmodelenricher/META-INF/MANIFEST.MF
index 3c26d9f..ee84912 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.scairmodelenricher/META-INF/MANIFEST.MF
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.scairmodelenricher/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Scairmodelenricher
Bundle-SymbolicName: org.eclipse.app4mc.sca2amalthea.scairmodelenricher
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 0.9.8.qualifier
Bundle-Vendor: Eclipse.org
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.app4mc.sca2amalthea.ir,
@@ -11,3 +11,4 @@
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.app4mc.sca2amalthea.scairmodelenricher
+Automatic-Module-Name: org.eclipse.app4mc.sca2amalthea.scairmodelenricher
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.scairmodelenricher/bin/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.scairmodelenricher/bin/.gitignore
deleted file mode 100644
index cf1db2e..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.scairmodelenricher/bin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/org/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.scairmodelenricher/pom.xml b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.scairmodelenricher/pom.xml
deleted file mode 100644
index c7e765b..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.scairmodelenricher/pom.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.build</artifactId>
- <version>1.0.0.qualifier</version>
- <relativePath>../../build/org.eclipse.app4mc.sca2amalthea.build</relativePath>
- </parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.scairmodelenricher</artifactId>
- <packaging>eclipse-plugin</packaging>
-
- <build>
- <sourceDirectory>src</sourceDirectory>
- <resources>
- <resource>
- <directory>xtend-gen</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>src</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <version>2.4.1</version>
- <configuration>
- <filesets>
- <fileset>
- <directory>xtend-gen</directory>
- <includes>
- <include>**</include>
- </includes>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>1.7</version>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>xtend-gen</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.eclipse.xtend</groupId>
- <artifactId>xtend-maven-plugin</artifactId>
- <version>2.7.3</version>
- <executions>
- <execution>
- <goals>
- <goal>compile</goal>
- </goals>
- <configuration>
- <outputDirectory>xtend-gen</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.scairmodelenricher/src/org/eclipse/app4mc/sca2amalthea/scairmodelenricher/SCAIRModelEnrichmentUtils.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.scairmodelenricher/src/org/eclipse/app4mc/sca2amalthea/scairmodelenricher/SCAIRModelEnrichmentUtils.java
index 5e432e7..6cebbf2 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.scairmodelenricher/src/org/eclipse/app4mc/sca2amalthea/scairmodelenricher/SCAIRModelEnrichmentUtils.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.scairmodelenricher/src/org/eclipse/app4mc/sca2amalthea/scairmodelenricher/SCAIRModelEnrichmentUtils.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/.gitignore
deleted file mode 100644
index 24d6437..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/META-INF/MANIFEST.MF b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/META-INF/MANIFEST.MF
index f64e2b8..dbe3d28 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/META-INF/MANIFEST.MF
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/META-INF/MANIFEST.MF
@@ -2,8 +2,9 @@
Bundle-ManifestVersion: 2
Bundle-Name: Serialization
Bundle-SymbolicName: org.eclipse.app4mc.sca2amalthea.serialization
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 0.9.8.qualifier
Bundle-Vendor: Eclipse.org
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Require-Bundle: org.eclipse.emf.ecore.xmi;bundle-version="2.10.2"
Export-Package: org.eclipse.app4mc.sca2amalthea.serialization
+Automatic-Module-Name: org.eclipse.app4mc.sca2amalthea.serialization
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/bin/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/bin/.gitignore
deleted file mode 100644
index cf1db2e..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/bin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/org/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/pom.xml b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/pom.xml
deleted file mode 100644
index 84835b6..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/pom.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.build</artifactId>
- <version>1.0.0.qualifier</version>
- <relativePath>../../build/org.eclipse.app4mc.sca2amalthea.build</relativePath>
- </parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.serialization</artifactId>
- <packaging>eclipse-plugin</packaging>
-
- <build>
- <sourceDirectory>src</sourceDirectory>
- <resources>
- <resource>
- <directory>xtend-gen</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>src</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <version>2.4.1</version>
- <configuration>
- <filesets>
- <fileset>
- <directory>xtend-gen</directory>
- <includes>
- <include>**</include>
- </includes>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>1.7</version>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>xtend-gen</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.eclipse.xtend</groupId>
- <artifactId>xtend-maven-plugin</artifactId>
- <version>2.7.3</version>
- <executions>
- <execution>
- <goals>
- <goal>compile</goal>
- </goals>
- <configuration>
- <outputDirectory>xtend-gen</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/src/org/eclipse/app4mc/sca2amalthea/serialization/SCAResource.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/src/org/eclipse/app4mc/sca2amalthea/serialization/SCAResource.java
index 8f56de1..c08a6af 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/src/org/eclipse/app4mc/sca2amalthea/serialization/SCAResource.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/src/org/eclipse/app4mc/sca2amalthea/serialization/SCAResource.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/src/org/eclipse/app4mc/sca2amalthea/serialization/SCAResourceFactory.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/src/org/eclipse/app4mc/sca2amalthea/serialization/SCAResourceFactory.java
index 09d74a4..98e6c84 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/src/org/eclipse/app4mc/sca2amalthea/serialization/SCAResourceFactory.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/src/org/eclipse/app4mc/sca2amalthea/serialization/SCAResourceFactory.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/src/org/eclipse/app4mc/sca2amalthea/serialization/SCAXMLHandler.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/src/org/eclipse/app4mc/sca2amalthea/serialization/SCAXMLHandler.java
index ed99b2e..e349b94 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/src/org/eclipse/app4mc/sca2amalthea/serialization/SCAXMLHandler.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/src/org/eclipse/app4mc/sca2amalthea/serialization/SCAXMLHandler.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/src/org/eclipse/app4mc/sca2amalthea/serialization/SCAXMLLoadImpl.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/src/org/eclipse/app4mc/sca2amalthea/serialization/SCAXMLLoadImpl.java
index ab364bb..44bbabd 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/src/org/eclipse/app4mc/sca2amalthea/serialization/SCAXMLLoadImpl.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/src/org/eclipse/app4mc/sca2amalthea/serialization/SCAXMLLoadImpl.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/src/org/eclipse/app4mc/sca2amalthea/serialization/SCAXMLSaveImpl.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/src/org/eclipse/app4mc/sca2amalthea/serialization/SCAXMLSaveImpl.java
index a4a7ff3..702ae67 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/src/org/eclipse/app4mc/sca2amalthea/serialization/SCAXMLSaveImpl.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.serialization/src/org/eclipse/app4mc/sca2amalthea/serialization/SCAXMLSaveImpl.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/.gitignore
deleted file mode 100644
index 24d6437..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/META-INF/MANIFEST.MF b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/META-INF/MANIFEST.MF
index a815f9c..4d05187 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/META-INF/MANIFEST.MF
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/META-INF/MANIFEST.MF
@@ -1,8 +1,8 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: Ui
+Bundle-Name: SCA"AMALTHEA Ui
Bundle-SymbolicName: org.eclipse.app4mc.sca2amalthea.ui;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 0.9.8.qualifier
Bundle-Activator: org.eclipse.app4mc.sca2amalthea.ui.Activator
Bundle-Vendor: Eclipse.org
Require-Bundle: org.eclipse.ui,
@@ -18,8 +18,10 @@
org.eclipse.app4mc.sca2amalthea.utils,
org.eclipse.app4mc.sca.util,
org.eclipse.app4mc.sca.ui,
- org.eclipse.app4mc.sca.logging;bundle-version="1.0.0"
+ org.eclipse.app4mc.sca.logging,
+ org.eclipse.core.jobs,
+ org.eclipse.equinox.preferences
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.app4mc.sca2amalthea.ui.handlers,
- org.eclipse.app4mc.sca2amalthea.ui.util
+Export-Package: org.eclipse.app4mc.sca2amalthea.ui.handlers
+Automatic-Module-Name: org.eclipse.app4mc.sca2amalthea.ui
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/bin/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/bin/.gitignore
deleted file mode 100644
index cf1db2e..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/bin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/org/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/plugin.xml b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/plugin.xml
index d9e06ec..8a6a4cc 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/plugin.xml
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/plugin.xml
@@ -30,9 +30,6 @@
<instanceof
value="org.eclipse.core.resources.IProject">
</instanceof>
- <instanceof
- value="org.eclipse.core.resources.IFile">
- </instanceof>
</or>
</iterate>
</or>
@@ -66,22 +63,5 @@
</with>
</activeWhen>
</handler>
- </extension>
- <extension
- point="org.eclipse.ui.preferencePages">
- <page
- class="org.eclipse.app4mc.sca2amalthea.ui.preferences.SCAToAmaltheaPreferencePage"
- id="org.eclipse.app4mc.sca2amalthea.ui.preferencePage"
- name="SCA2Amalthea"
- category="SCA Tools">
- </page>
- </extension>
- <extension
- point="org.eclipse.app4mc.sca.ui.exportOptions">
- <exporter
- name="SCAToAmalthea"
- preferences="org.eclipse.app4mc.sca2amalthea.ui.preferences.SCAToAmaltheaExportPreferenceList"
- tool="SCA2Amalthea">
- </exporter>
- </extension>
+ </extension>
</plugin>
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/pom.xml b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/pom.xml
deleted file mode 100644
index 52246ca..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/pom.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.build</artifactId>
- <version>1.0.0.qualifier</version>
- <relativePath>../../build/org.eclipse.app4mc.sca2amalthea.build</relativePath>
- </parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.ui</artifactId>
- <packaging>eclipse-plugin</packaging>
-
-
- <build>
- <sourceDirectory>src</sourceDirectory>
- <resources>
- <resource>
- <directory>xtend-gen</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>src</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <version>2.4.1</version>
- <configuration>
- <filesets>
- <fileset>
- <directory>xtend-gen</directory>
- <includes>
- <include>**</include>
- </includes>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>1.7</version>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>xtend-gen</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.eclipse.xtend</groupId>
- <artifactId>xtend-maven-plugin</artifactId>
- <version>2.7.3</version>
- <executions>
- <execution>
- <goals>
- <goal>compile</goal>
- </goals>
- <configuration>
- <outputDirectory>xtend-gen</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/Activator.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/Activator.java
index fa84b27..ce4861d 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/Activator.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/Activator.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/handlers/SCAToAmaltheaHandler.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/handlers/SCAToAmaltheaHandler.java
index d2ddc15..1a4d94d 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/handlers/SCAToAmaltheaHandler.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/handlers/SCAToAmaltheaHandler.java
@@ -1,408 +1,95 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
- *
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
+ *
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
+ * which is available at https://www.eclipse.org/legal/epl-2.0
+ *
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
package org.eclipse.app4mc.sca2amalthea.ui.handlers;
-import java.util.Timer;
-import java.util.TimerTask;
+import org.eclipse.app4mc.sca.ui.util.AmaltheaWizardPreferenceConstants;
+import org.eclipse.app4mc.sca.ui.util.SCAToolsUIUtil;
+import org.eclipse.app4mc.sca.ui.widget.builder.OutputDetailsWidgetBuilder;
+import org.eclipse.app4mc.sca.ui.widget.builder.SchedulingOsDataWidgetBuilder;
+import org.eclipse.app4mc.sca.ui.widget.builder.SwModelWidgetBuilder;
+import org.eclipse.app4mc.sca.ui.wizard.GenerateAmaltheaWizard;
+import org.eclipse.app4mc.sca.ui.wizard.GenerateAmaltheaWizardPage;
+import org.eclipse.app4mc.sca.util.App4mcToolConstants;
+import org.eclipse.app4mc.sca2amalthea.ui.wizard.SCA2AmaltheaExecutor;
+import org.eclipse.app4mc.sca2amalthea.ui.wizard.SCA2AmaltheaWidgetBuilder;
-import org.eclipse.app4mc.sca.logging.manager.Logmanager;
-import org.eclipse.app4mc.sca2amalthea.llvm.headless.GenerateAmaltheaModelFromLLVM;
-import org.eclipse.app4mc.sca2amalthea.ui.Activator;
-import org.eclipse.app4mc.sca2amalthea.utils.UtilityForProcessHandling;
-import org.eclipse.app4mc.sca2amalthea.utils.constants.SCA2AmaltheaConstants;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.internal.resources.Resource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubMonitor;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.TreeSelection;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+
+import org.eclipse.jface.wizard.WizardDialog;
+
import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.handlers.HandlerUtil;
+
+import java.util.Arrays;
+import java.util.Properties;
/**
*/
-@SuppressWarnings("restriction")
public class SCAToAmaltheaHandler extends AbstractHandler {
-
- private String cFilePath = "";
- private String traverseASTPath = "";
- private String outPutPath = "";
- private String taskListFile = "";
- private String headerTextFilePath = "";
- private String buildCmdLogFilePath = "";
- private String lockfunctionFile = "";
- private boolean isStructMemberEnabled = false;
- private volatile Boolean isGenerationDone = Boolean.FALSE;
- private final Object mutex = new Object();
- private Job currentJob = null;
- private boolean confirmation = true;
- private Shell currentShell;
- private static String infoMessage;
- private static String confirmationMessage;
- private static String title;
- private static int timerDelay;
- private static int timerPeriod;
-
- /**
- * Sets the timer delay for the timer
- *
- * @param timerDelay time delay in milliseconds.
- */
- public static void setTimerDelay(final int timerDelay) {
- SCAToAmaltheaHandler.timerDelay = timerDelay;
- }
-
- /**
- * Returns the timer delay that was set.
- *
- * @return timer delay.
- */
- public static int getTimerDelay() {
- return SCAToAmaltheaHandler.timerDelay;
- }
-
- /**
- * Sets the time period after which the timer task would be executed.
- *
- * @param timerPeriod time period in milliseonds.
- */
- public static void setTimerPeriod(final int timerPeriod) {
- SCAToAmaltheaHandler.timerPeriod = timerPeriod;
- }
-
- /**
- * Returns the time period that was set.
- *
- * @return timer period.
- */
- public static int getTimerPeriod() {
- return SCAToAmaltheaHandler.timerPeriod;
- }
-
-
- @Override
- public Object execute(final ExecutionEvent event) throws ExecutionException {
-
- IPreferenceStore preferenceStore = org.eclipse.app4mc.sca2amalthea.utils.Activator.getDefault().getPreferenceStore();
- this.currentShell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
- if (event != null) {
- ISelection selection = HandlerUtil.getCurrentSelection(event);
- if (((TreeSelection) selection).getFirstElement() instanceof Resource) {
- Resource resource = (Resource) ((TreeSelection) selection).getFirstElement();
- this.cFilePath = resource.getLocation().toString();
- this.isStructMemberEnabled = preferenceStore.getBoolean(SCA2AmaltheaConstants.ENABLE_STRUCT_MEMBER);
- }
- }
-
- this.traverseASTPath = preferenceStore.getString(SCA2AmaltheaConstants.AST_PATH);
- this.taskListFile = preferenceStore.getString(SCA2AmaltheaConstants.TASK_INFO);
- this.headerTextFilePath = preferenceStore.getString(SCA2AmaltheaConstants.HDIR_LIST);
- this.buildCmdLogFilePath = preferenceStore.getString(SCA2AmaltheaConstants.BLOG);
- this.lockfunctionFile = preferenceStore.getString(SCA2AmaltheaConstants.LOCK_INFO);
- if (preferenceStore.getBoolean(SCA2AmaltheaConstants.ENABLE_OPTIONAL_FIELDS)) {
- this.outPutPath = preferenceStore.getString(SCA2AmaltheaConstants.OUTPUT_PATH);
- }
- else {
- this.outPutPath = preferenceStore.getDefaultString(SCA2AmaltheaConstants.OUTPUT_PATH);
-
- }
-
- if(this.traverseASTPath.isEmpty()){
- MessageDialog.openError(this.currentShell, "Error Amalthea model generation", "Path to LLVM executable is not configured in sca2Amalthea preferences");
- }
- else{
- if (UtilityForProcessHandling.getCurrentRunningProcess() == null) {
- createAndExecuteJobForModelGeneration();
- }
- else {
- String information = "The generation of 2 models at the same time is not allowed";
- this.currentShell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
- MessageDialog.openInformation(this.currentShell, "Operation not allowed", information);
- Logmanager.getInstance().log(information);
- }
- }
-
- return null;
- }
-
- /**
- *
- */
- private void createAndExecuteJobForModelGeneration() {
- Job job = new Job("AMALTHEA model generation") {
-
- @Override
- public IStatus run(final IProgressMonitor monitor) {
- final SubMonitor subMonitor = SubMonitor.convert(monitor, 600);
- Thread progressMonitorObserverThread = null;
- boolean isPopupToBeDisplayed = false;
- try {
- progressMonitorObserverThread = createInfiniteProgressMonitor(subMonitor);
- progressMonitorObserverThread.start();
- GenerateAmaltheaModelFromLLVM generator = new GenerateAmaltheaModelFromLLVM(
- SCAToAmaltheaHandler.this.cFilePath, SCAToAmaltheaHandler.this.outPutPath,
- SCAToAmaltheaHandler.this.traverseASTPath, SCAToAmaltheaHandler.this.taskListFile,
- SCAToAmaltheaHandler.this.headerTextFilePath, SCAToAmaltheaHandler.this.buildCmdLogFilePath,
- SCAToAmaltheaHandler.this.lockfunctionFile,
- SCAToAmaltheaHandler.this.isStructMemberEnabled);
- setInfoMessage("The time required to generate the Amalthea model depends on the size of the PVER.");
- setTitle("Information-Amalthea Model Generation");
- Display.getDefault().syncExec(new InfoPopUp());
- startTimer();
- int returncode = generator.run();
- synchronized (SCAToAmaltheaHandler.this.mutex) {
- SCAToAmaltheaHandler.this.isGenerationDone = true;
- }
- // check the exit status of the process and show a information popup
- if ((returncode != 0) || (UtilityForProcessHandling.getCurrentRunningProcess().exitValue() != 0)) {
- if (SCAToAmaltheaHandler.this.confirmation) {
- setInfoMessage("There was some error while parsing c files or when generating the AMALTHEA model.");
- setTitle("Error");
- Display.getDefault().syncExec(new InfoPopUp());
- }
- else {
- SCAToAmaltheaHandler.this.confirmation = true;
- }
- UtilityForProcessHandling.setCurrentRunningProcess(null);
- }
- else {
- isPopupToBeDisplayed = true;
- }
- }
- catch (Exception e) {
- Logmanager.getInstance().logException(this.getClass(), e, Activator.PLUGIN_ID);
-
- if (progressMonitorObserverThread != null) {
- waitForThread(progressMonitorObserverThread);
- }
-
- subMonitor.done();
- return Status.CANCEL_STATUS;
- }
- waitForThread(progressMonitorObserverThread);
- subMonitor.done();
- if (isPopupToBeDisplayed) {
- setInfoMessage("Amathea model generation completed");
- setTitle("Amathea model generated");
- Display.getDefault().syncExec(new InfoPopUp());
- }
- return new Status(IStatus.OK, Activator.PLUGIN_ID, "AMALTHEA model generation completed");
- }
-
-
- /**
- * @param t
- */
- private void waitForThread(final Thread t) {
- try {
- if (t != null) {
- t.join();
- }
- }
- catch (InterruptedException e) {
- Logmanager.getInstance().log(e.getMessage());
- }
- }
- };
- this.currentJob = job;
- job.schedule();
- }
-
- /**
- * @param subMonitor
- */
- private Thread createInfiniteProgressMonitor(final SubMonitor subMonitor) {
- return new InfiniteProgressMonitorObserver(subMonitor);
- }
-
- class InfiniteProgressMonitorObserver extends Thread {
-
- private String message = "Terminating AMALTHEA model generation job";
- private final SubMonitor subMonitor;
-
- /**
- * @param subMonitor monitor which will be observed
- */
- public InfiniteProgressMonitorObserver(final SubMonitor subMonitor) {
- super();
- this.subMonitor = subMonitor;
- }
-
@Override
- public void run() {
+ public Object execute(final ExecutionEvent event) throws ExecutionException {
+ Properties properties = getProperties();
+ SCA2AmaltheaWidgetBuilder sca2AmaltheaWidgetBuilder = new SCA2AmaltheaWidgetBuilder(properties);
+ SwModelWidgetBuilder swModelWidgetBuilder = new SwModelWidgetBuilder(sca2AmaltheaWidgetBuilder,
+ properties);
+ SchedulingOsDataWidgetBuilder schedulingOsDataWidgetBuilder = new SchedulingOsDataWidgetBuilder(properties);
+ OutputDetailsWidgetBuilder outputDetailsWidgetBuilder = new OutputDetailsWidgetBuilder(properties);
+ GenerateAmaltheaWizardPage scaAmaltheaWizardPage = new GenerateAmaltheaWizardPage("SCA2Amalthea Configuration page",
+ Arrays.asList(swModelWidgetBuilder,
+ schedulingOsDataWidgetBuilder, outputDetailsWidgetBuilder));
+ GenerateAmaltheaWizard generateAmaltheaWizard = new GenerateAmaltheaWizard(Arrays.asList(
+ scaAmaltheaWizardPage), properties,
+ new SCA2AmaltheaExecutor());
+ WizardDialog wizardDialog = new WizardDialog(Display.getCurrent()
+ .getActiveShell(),
+ generateAmaltheaWizard);
+ wizardDialog.setMinimumPageSize(800, 600);
- this.message = runLogarithmicWaitOnProgressMonitor();
-
- terminateMonitorIn10Secondes();
-
- UtilityForProcessHandling.setCurrentRunningProcess(null);
- UtilityForProcessHandling.setModelGenerationcancelled(false);
- SCAToAmaltheaHandler.this.isGenerationDone = false;
+ return wizardDialog.open();
}
- /**
- * @param subMonitor
- * @param message
- * @return
- */
- private String runLogarithmicWaitOnProgressMonitor() {
- String messageToRenameJob = "Terminating AMALTHEA model generation job";
- boolean isProcessCompleted = false;
- int advancementCounter = 0;
+ private Properties getProperties() {
+ Properties properties = new Properties();
+ IProject selectedProject = SCAToolsUIUtil.getCurrentProjectResource();
+ IEclipsePreferences projectpreferences = SCAToolsUIUtil.loadProjectScopePrefs(selectedProject,
+ App4mcToolConstants.SCA2AMALTHEA_TOOL_ID);
+ properties.setProperty(AmaltheaWizardPreferenceConstants.PROJECT_PATH,
+ SCAToolsUIUtil.getCurrentSelectionProjectPath());
+ properties.setProperty(AmaltheaWizardPreferenceConstants.ENABLE_STRUCT_MEMBER_KEY,
+ projectpreferences.get(
+ AmaltheaWizardPreferenceConstants.ENABLE_STRUCT_MEMBER_KEY,
+ Boolean.FALSE.toString()));
+ properties.setProperty(AmaltheaWizardPreferenceConstants.AST_PATH_KEY,
+ projectpreferences.get(AmaltheaWizardPreferenceConstants.AST_PATH_KEY, ""));
+ properties.setProperty(AmaltheaWizardPreferenceConstants.HDIR_LIST_KEY,
+ projectpreferences.get(AmaltheaWizardPreferenceConstants.HDIR_LIST_KEY, ""));
+ properties.setProperty(AmaltheaWizardPreferenceConstants.BLOG_KEY,
+ projectpreferences.get(AmaltheaWizardPreferenceConstants.BLOG_KEY, ""));
+ properties.setProperty(AmaltheaWizardPreferenceConstants.OS_LOCK_FILE,
+ projectpreferences.get(AmaltheaWizardPreferenceConstants.OS_LOCK_FILE, ""));
+ properties.setProperty(AmaltheaWizardPreferenceConstants.TASK_SCHEDULING_FILE,
+ projectpreferences.get(
+ AmaltheaWizardPreferenceConstants.TASK_SCHEDULING_FILE, ""));
+ properties.setProperty(AmaltheaWizardPreferenceConstants.OUTPUT_DIRECTORY,
+ projectpreferences.get(
+ AmaltheaWizardPreferenceConstants.OUTPUT_DIRECTORY, ""));
- while (!isProcessCompleted) {
- if (this.subMonitor.isCanceled()) {
- synchronized (SCAToAmaltheaHandler.this.mutex) {
- SCAToAmaltheaHandler.this.isGenerationDone = true;
- }
- Process p = UtilityForProcessHandling.getCurrentRunningProcess();
- p.destroyForcibly();
-
- UtilityForProcessHandling.setCurrentRunningProcess(null);
- UtilityForProcessHandling.setModelGenerationcancelled(true);
-
- messageToRenameJob = "Cancelling the model generation job";
- }
- try {
- this.subMonitor.worked(1);
- advancementCounter++;
- if ((advancementCounter % 300) == 0) {
- advancementCounter = 1;
- this.subMonitor.setWorkRemaining(600);
- }
- Thread.sleep(1000);
- }
- catch (InterruptedException e) {
- Logmanager.getInstance().log(e.getMessage());
- }
- synchronized (SCAToAmaltheaHandler.this.mutex) {
- isProcessCompleted = SCAToAmaltheaHandler.this.isGenerationDone;
- }
- }
- return messageToRenameJob;
+ return properties;
}
-
- /**
- * @param subMonitor
- * @param message
- */
- private void terminateMonitorIn10Secondes() {
- int numberOfSecondUntilEnd = 10;
- this.subMonitor.setWorkRemaining(numberOfSecondUntilEnd);
- this.subMonitor.setTaskName(this.message);
- SCAToAmaltheaHandler.this.currentJob.setName(this.message);
- while (numberOfSecondUntilEnd > 0) {
- try {
- this.subMonitor.worked(1);
- Thread.sleep(1000);
- }
- catch (InterruptedException e) {
- Logmanager.getInstance().log(e.getMessage());
- }
- --numberOfSecondUntilEnd;
- }
- }
-
- }
-
- /**
- * Inner class to show a confirmation pop up.
- *
- */
- class ConfirmationPopUp implements Runnable {
-
- @Override
- public void run() {
- SCAToAmaltheaHandler.this.confirmation =
- MessageDialog.openConfirm(SCAToAmaltheaHandler.this.currentShell, title, confirmationMessage);
-
- }
- }
-
- /**
- * Inner class to show a information pop up.
- */
- class InfoPopUp implements Runnable {
-
- @Override
- public void run() {
- MessageDialog.openInformation(SCAToAmaltheaHandler.this.currentShell, title, infoMessage);
-
- }
- }
-
- /**
- * This method starts the timer.The timer is sceduled to run after every 15mins.Every time the timer runs it checks if
- * the eclipse job is still alive. If so it pops up a confirmation dialog asking if the user wishes to continue. If
- * the user wishes to continue the timer keeps running and keeps showing the popup after every 15 mins and if the user
- * wishes to abort then it cancels the eclipse job, cancels the timer and kills the sca.exe process.If the eclipse job
- * is not alive it cancels the timer.
- */
- private void startTimer() {
- if (getTimerDelay() == 0) {
- setTimerDelay(40 * 60 * 1000);
- }
- if (getTimerPeriod() == 0) {
- setTimerPeriod(40 * 60 * 1000);
- }
- Job eclipseJob = Job.getJobManager().currentJob();
- Timer t = new Timer();
- t.scheduleAtFixedRate(new TimerTask() {
-
- @Override
- public void run() {
- if ((eclipseJob.getThread() != null) && eclipseJob.getThread().isAlive()) {
- setConfirmationMessage(
- "The amalthea model generation job is still running.It might take some more time. Do you wish to continue? Press Ok to continue or cancel to abort");
- setTitle("Amalthea Job status");
- Display.getDefault().syncExec(new ConfirmationPopUp());
- if (!SCAToAmaltheaHandler.this.confirmation) {
- t.cancel();
- eclipseJob.cancel();
- Process p = UtilityForProcessHandling.getCurrentRunningProcess();
- if (p != null) {
- p.destroyForcibly();
- }
- }
- }
- else {
- t.cancel();
- }
- }
- }, getTimerDelay(), getTimerPeriod());
- }
-
- private static void setInfoMessage(final String message) {
- SCAToAmaltheaHandler.infoMessage = message;
- }
-
- private static void setTitle(final String message) {
- SCAToAmaltheaHandler.title = message;
- }
-
- private static void setConfirmationMessage(final String message) {
- SCAToAmaltheaHandler.confirmationMessage = message;
- }
}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/preferences/SCAToAmaltheaExportPreferenceList.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/preferences/SCAToAmaltheaExportPreferenceList.java
deleted file mode 100644
index f7a81ae..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/preferences/SCAToAmaltheaExportPreferenceList.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- ********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.sca2amalthea.ui.preferences;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.app4mc.sca.ui.preferences.interfaces.IExportPreferences;
-import org.eclipse.app4mc.sca2amalthea.utils.constants.SCA2AmaltheaConstants;
-import org.eclipse.jface.preference.IPreferenceStore;
-
-/**
- */
-public class SCAToAmaltheaExportPreferenceList implements IExportPreferences {
-
-
- /**
- * The private constructor
- */
- public SCAToAmaltheaExportPreferenceList() {
- // empty private constructor
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public List<String> keysToExport() {
- String[] prefToSave = { // NOSONAR not significant
- SCA2AmaltheaConstants.ENABLE_STRUCT_MEMBER,
- SCA2AmaltheaConstants.ENABLE_OPTIONAL_FIELDS,
- SCA2AmaltheaConstants.AST_PATH,
- SCA2AmaltheaConstants.OUTPUT_PATH,
- SCA2AmaltheaConstants.TASK_INFO,
- SCA2AmaltheaConstants.BLOG,
- SCA2AmaltheaConstants.HDIR_LIST,
- SCA2AmaltheaConstants.LOCK_INFO };
- return Arrays.asList(prefToSave);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public IPreferenceStore getPreferenceStore() {
- return org.eclipse.app4mc.sca2amalthea.utils.Activator.getDefault().getPreferenceStore();
- }
-}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/preferences/SCAToAmaltheaPreferencePage.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/preferences/SCAToAmaltheaPreferencePage.java
deleted file mode 100644
index ea57a5c..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/preferences/SCAToAmaltheaPreferencePage.java
+++ /dev/null
@@ -1,379 +0,0 @@
-/**
- ********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.sca2amalthea.ui.preferences;
-
-
-import java.io.File;
-
-import org.eclipse.app4mc.sca.ui.preferences.AbstractSCAToolsPreferencePage;
-import org.eclipse.app4mc.sca.util.App4mcToolConstants;
-import org.eclipse.app4mc.sca2amalthea.ui.util.SCAToAmaltheaPreferencePageConstants;
-import org.eclipse.app4mc.sca2amalthea.utils.constants.SCA2AmaltheaConstants;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.jface.preference.BooleanFieldEditor;
-import org.eclipse.jface.preference.DirectoryFieldEditor;
-import org.eclipse.jface.preference.FieldEditor;
-import org.eclipse.jface.preference.FileFieldEditor;
-import org.eclipse.jface.preference.PathEditor;
-import org.eclipse.jface.preference.PreferenceDialog;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IWorkbench;
-
-/**
- */
-public class SCAToAmaltheaPreferencePage extends AbstractSCAToolsPreferencePage {
-
-
- private DirectoryFieldEditor llvmExecutableEditor;
- private DirectoryFieldEditor outputPathEditor;
- private FileFieldEditor taskInfoEditor;
- private PathEditor headerTextFileEditor;
- private FileFieldEditor buildCmdLogFileEditor;
- private BooleanFieldEditor enable;
- private BooleanFieldEditor structMemberRemover;
- private Group optional;
- private Group configure;
- private Group mandatory;
- private FileFieldEditor lockFunctionsEditor;
-
- /**
- * Using GRID layout
- */
- public SCAToAmaltheaPreferencePage() {
- super(1);
-
- }
-
- /**
- * creating UI controls for sca2Amalthea preference page
- */
-
- @Override
- public void createFieldEditors() {
-
- this.mandatory=new Group(getFieldEditorParent(), SWT.SHADOW_OUT);
- this.configure = new Group(getFieldEditorParent(), SWT.SHADOW_OUT);
- this.optional = new Group(getFieldEditorParent(), SWT.SHADOW_OUT);
-
- this.mandatory.setText("MANDATORY CONFIGURATION");
- this.optional.setText("OPTIONAL CONFIGURATION");
- this.configure.setText("EDIT OPTIONAL CONFIGURATION");
- GridLayout layout = new GridLayout(1, false);
-
- this.mandatory.setLayout(layout);
- this.configure.setLayout(layout);
- this.optional.setLayout(layout);
-
- GridDataFactory.defaultsFor(this.mandatory).grab(true, false).span(2, 1).applyTo(this.mandatory);
- GridDataFactory.defaultsFor(this.configure).grab(true, false).span(2, 1).applyTo(this.configure);
- GridDataFactory.defaultsFor(this.optional).grab(true, false).span(2, 1).applyTo(this.optional);
-
-
- this.llvmExecutableEditor =
- new DirectoryFieldEditor(SCA2AmaltheaConstants.AST_PATH, "&Path to the LLVM Executable", this.mandatory);
- addField(this.llvmExecutableEditor);
- this.llvmExecutableEditor.setFilterPath(new File(getProjectPath()));
-
-
- this.outputPathEditor =
- new DirectoryFieldEditor(SCA2AmaltheaConstants.OUTPUT_PATH, "&Output Directory Path:", this.optional);
- this.outputPathEditor.getTextControl(this.optional)
- .setToolTipText(SCAToAmaltheaPreferencePageConstants.OUTPUT_PATH_DEFAULT_MESSAGE);
- addField(this.outputPathEditor);
- this.outputPathEditor.setFilterPath(new File(getProjectPath()));
-
-
- this.taskInfoEditor = new FileFieldEditor(SCA2AmaltheaConstants.TASK_INFO, "&Task Information file", this.optional);
- this.taskInfoEditor.getTextControl(this.optional)
- .setToolTipText(SCAToAmaltheaPreferencePageConstants.TASK_INFO_FILE_DEFAULT_MEAASGE);
- addField(this.taskInfoEditor);
- this.taskInfoEditor.setFilterPath(new File(getProjectPath()));
-
-
- this.structMemberRemover =
- new BooleanFieldEditor(SCA2AmaltheaConstants.ENABLE_STRUCT_MEMBER, "&Enable Structure member", this.configure);
- addField(this.structMemberRemover);
-
- this.enable = new BooleanFieldEditor(SCA2AmaltheaConstants.ENABLE_OPTIONAL_FIELDS, "&Configure optional fields",
- this.configure);
- addField(this.enable);
-
- this.headerTextFileEditor = new PathEditor(SCA2AmaltheaConstants.HDIR_LIST, "&Header directories",
- "Choose a header directory", this.optional);
- this.headerTextFileEditor.getListControl(this.optional)
- .setToolTipText(SCAToAmaltheaPreferencePageConstants.HEADER_TEXT_FILE_DEFAULT_MESSAGE);
- addField(this.headerTextFileEditor);
-
-
- this.buildCmdLogFileEditor =
- new FileFieldEditor(SCA2AmaltheaConstants.BLOG, "&Build command log file", this.optional);
- this.buildCmdLogFileEditor.getTextControl(this.optional)
- .setToolTipText(SCAToAmaltheaPreferencePageConstants.BUILD_LOG_FILE_DEFAULT_MESSAGE);
- addField(this.buildCmdLogFileEditor);
- this.buildCmdLogFileEditor.setFilterPath(new File(getProjectPath()));
-
- this.lockFunctionsEditor =
- new FileFieldEditor(SCA2AmaltheaConstants.LOCK_INFO, "& Lock Function file", this.optional);
- this.lockFunctionsEditor.getTextControl(this.optional)
- .setToolTipText(SCAToAmaltheaPreferencePageConstants.LOCK_FUNCTIONS_DEFAULT_MESSAGE);
- addField(this.lockFunctionsEditor);
- addListeners();
- validate();
- }
-
- /**
- * Setting the preference store
- *
- * @param workbench the workBench
- */
-
- @Override
- public void init(final IWorkbench workbench) {
- setPreferenceStore(org.eclipse.app4mc.sca2amalthea.utils.Activator.getDefault().getPreferenceStore());
- setDescription("Source Code to Amalthea Preference Settings");
-
- }
-
-
- /**
- * Enable or disable the field editors based on "EDIT OPTIONAL CONFIGURATION" check box
- */
- @Override
- protected void checkState() {
- super.checkState();
- setValid(true);
-
- if (this.enable.getBooleanValue()) {
- this.outputPathEditor.setEnabled(true, this.optional);
- this.outputPathEditor.getTextControl(this.optional).setEditable(false);
-
- this.buildCmdLogFileEditor.setEnabled(true, this.optional);
- this.buildCmdLogFileEditor.getTextControl(this.optional).setEditable(false);
- this.headerTextFileEditor.setEnabled(true, this.optional);
-
-
- this.taskInfoEditor.setEnabled(true, this.optional);
-
- this.taskInfoEditor.getTextControl(this.optional).setEditable(false);
-
- this.lockFunctionsEditor.setEnabled(true, this.optional);
- this.lockFunctionsEditor.getTextControl(this.optional).setEditable(false);
- clearOptionalFields();
- }
- else {
- this.outputPathEditor.setEnabled(false, this.optional);
- this.outputPathEditor.setStringValue(getPreferenceStore().getDefaultString(SCA2AmaltheaConstants.OUTPUT_PATH));
-
- this.buildCmdLogFileEditor.setEnabled(false, this.optional);
- this.buildCmdLogFileEditor.setStringValue(getPreferenceStore().getDefaultString(SCA2AmaltheaConstants.BLOG));
- this.headerTextFileEditor.setEnabled(false, this.optional);
-
- this.headerTextFileEditor.getListControl(this.optional).removeAll();
- this.headerTextFileEditor.getListControl(this.optional)
- .add(getPreferenceStore().getDefaultString(SCA2AmaltheaConstants.HDIR_LIST), 0);
-
- this.headerTextFileEditor.getListControl(this.optional).deselect(0);
- this.taskInfoEditor.setEnabled(false, this.optional);
- this.taskInfoEditor.setStringValue(getPreferenceStore().getDefaultString(SCA2AmaltheaConstants.TASK_INFO));
-
- this.lockFunctionsEditor.setEnabled(false, this.optional);
- this.lockFunctionsEditor.setStringValue(getPreferenceStore().getDefaultString(SCA2AmaltheaConstants.LOCK_INFO));
- setErrorMessage(null);
- }
-
- Control[] control = this.headerTextFileEditor.getButtonBoxControl(this.optional).getChildren();
- for (Control c : control) {
- if (c instanceof Button) {
- Button b = (Button) c;
- if (b.getText().equals(JFaceResources.getString("ListEditor.up")) ||
- b.getText().equals(JFaceResources.getString("ListEditor.down"))) {
- b.setVisible(false);
- }
- else {
- b.setVisible(true);
- }
- }
- }
-
- GridData gridData = (GridData) this.headerTextFileEditor.getLabelControl(this.optional).getLayoutData();
- gridData.horizontalSpan = 1;
- GridData gridDataText = (GridData) this.headerTextFileEditor.getListControl(this.optional).getLayoutData();
- gridDataText.horizontalSpan = 1;
- GridData gridDataButton = (GridData) this.headerTextFileEditor.getButtonBoxControl(this.optional).getLayoutData();
- gridDataButton.horizontalSpan = 1;
- validate();
- }
-
- /**
- * Called when the property of any of the field editors changes
- */
- @Override
- public void propertyChange(final PropertyChangeEvent event) {
- super.propertyChange(event);
- if (event.getProperty().equals(FieldEditor.VALUE)) {
- checkState();
- }
- }
-
- /**
- * Just return true when user press OK
- */
-
- @Override
- public boolean performOk() {
- if(getErrorMessage()!=null){
- MessageDialog.openError(getShell(), "Error in Configuration", getErrorMessage());
- return false;
- }
- super.performOk();
- return true;
-
- }
- @Override
- protected void performApply() {
- performOk();
- }
-
- /**
- * clear the Optional fields
- */
-
- private void clearOptionalFields() {
- if (this.outputPathEditor.getStringValue()
- .equals(SCA2AmaltheaConstants.getPreferenceStore().getDefaultString(SCA2AmaltheaConstants.OUTPUT_PATH))) {
- this.outputPathEditor.setStringValue("");
- }
- }
-
- private String getProjectPath() {
- IProject[] project = ResourcesPlugin.getWorkspace().getRoot().getProjects();
- if ((project != null) && (project.length != 0)) {
- return project[0].getLocation().toString();
- }
- return "";
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String getToolId() {
- return App4mcToolConstants.SCA2AMALTHEA_TOOL_ID;
- }
-
- private void validate(){
- if(this.llvmExecutableEditor.getStringValue().isEmpty()){
- setErrorMessage("Path to the LLVM executable is mandatory and cannot be empty");
- }
- else if(!new File(this.llvmExecutableEditor.getStringValue()).exists()){
- setErrorMessage("Path to the LLVM executable does not exist");
- }
- else if (!this.taskInfoEditor.getStringValue().isEmpty() && !this.taskInfoEditor.getStringValue().endsWith(".csv")){
- setErrorMessage("Task Information file should have a .csv extension");
- }
- else if(!this.taskInfoEditor.getStringValue().isEmpty() && !new File(this.taskInfoEditor.getStringValue()).exists()){
- setErrorMessage("Task Information file does not exist");
- }
- else{
- setErrorMessage(null);
- }
- disableOrEnableOkAndApplyButton();
- }
-
- private void addListeners() {
- addFocusListenerToTextBox(this.outputPathEditor.getTextControl(this.optional));
- addKeyListenerToTextBox(this.outputPathEditor.getTextControl(this.optional));
- addFocusListenerToTextBox(this.llvmExecutableEditor.getTextControl(this.mandatory));
- addKeyListenerToTextBox(this.llvmExecutableEditor.getTextControl(this.mandatory));
- addFocusListenerToTextBox(this.taskInfoEditor.getTextControl(this.optional));
- addKeyListenerToTextBox(this.taskInfoEditor.getTextControl(this.optional));
- addFocusListenerToTextBox(this.buildCmdLogFileEditor.getTextControl(this.optional));
- addKeyListenerToTextBox(this.buildCmdLogFileEditor.getTextControl(this.optional));
- addFocusListenerToTextBox(this.lockFunctionsEditor.getTextControl(this.optional));
- addKeyListenerToTextBox(this.lockFunctionsEditor.getTextControl(this.optional));
- }
-
- private void addFocusListenerToTextBox(final Text t) {
- t.addFocusListener(new FocusListener() {
- @Override
- public void focusLost(final FocusEvent e) {
- validate();
- }
- @Override
- public void focusGained(final FocusEvent e) {
- validate();
- }
- });
- }
-
- private void addKeyListenerToTextBox(final Text t) {
- t.addKeyListener(new KeyListener() {
- @Override
- public void keyReleased(final KeyEvent e) {
- validate();
- }
- @Override
- public void keyPressed(final KeyEvent e) {
- validate();
- }
- });
- }
-
- private void disableOrEnableOkAndApplyButton() {
- Button okButton = null;
- PreferenceDialog iPreferencePageContainer = (PreferenceDialog) getContainer();
-
- Composite buttons = (Composite) iPreferencePageContainer.buttonBar;
- Control[] allbuttons = buttons.getChildren();
- Composite compositeForButtons = (Composite) allbuttons[1];
- for (Control b : compositeForButtons.getChildren()) {
- if (b instanceof Button) {
- Button presentButton = (Button) b;
- if ("OK".equals(presentButton.getText())) {
- okButton = presentButton;
- }
- }
- }
- Button applyButton = getApplyButton();
- if ((okButton != null) && (applyButton != null)) {
- if (getErrorMessage() != null) {
- setValid(false);
- okButton.setEnabled(false);
- applyButton.setEnabled(false);
- }
- else {
- setValid(true);
- okButton.setEnabled(true);
- applyButton.setEnabled(true);
- }
- }
- }
-}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/util/SCAToAmaltheaPreferencePageConstants.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/util/SCAToAmaltheaPreferencePageConstants.java
deleted file mode 100644
index 758eda1..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/util/SCAToAmaltheaPreferencePageConstants.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- ********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-package org.eclipse.app4mc.sca2amalthea.ui.util;
-
-
-/**
- * This class defines constants which are used in SCAToAmaltheaPreferencePage implementation.
- */
-public final class SCAToAmaltheaPreferencePageConstants {
-
- /**
- * Private Constructor
- */
- private SCAToAmaltheaPreferencePageConstants() {
- // Private constructor
- }
-
-
- /**
- * Tool Tip message for the Output Directory Path field.
- */
- public static final String OUTPUT_PATH_DEFAULT_MESSAGE =
- "By Default all the output files will be present in sca2amalthea directory which is present inside the (Project directory)/_bin/sca2amlthea";
-
-
- /**
- * Tool Tip message for the Task Information File field.
- */
- public static final String TASK_INFO_FILE_DEFAULT_MEAASGE = "By default all functions are treated as runnables";
-
- /**
- * Tool Tip message for the Build Command Log File field.
- */
- public static final String BUILD_LOG_FILE_DEFAULT_MESSAGE = "By default the c files from project directory are used";
-
-
- /**
- * Tool Tip message for the Header Directories field.
- */
- public static final String HEADER_TEXT_FILE_DEFAULT_MESSAGE =
- "By default the header files from the project directory are used";
-
- /**
- * Tool Tip message for the Lock Function File field.
- */
- public static final String LOCK_FUNCTIONS_DEFAULT_MESSAGE = "By default an internal lock function file will be used";
-
- /**
- * Configure optional fields check box text
- */
- public static final String CONFIGURE = "Configure optional fields";
-
- /**
- * Browse button text.
- */
- public static final String BROWSE = "Browse...";
-
-}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/wizard/SCA2AmaltheaExecutor.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/wizard/SCA2AmaltheaExecutor.java
new file mode 100644
index 0000000..29b8fa5
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/wizard/SCA2AmaltheaExecutor.java
@@ -0,0 +1,123 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca2amalthea.ui.wizard;
+
+import java.util.Map;
+import java.util.Properties;
+
+import org.eclipse.app4mc.sca.logging.manager.Logmanager;
+import org.eclipse.app4mc.sca.ui.util.AmaltheaWizardPreferenceConstants;
+import org.eclipse.app4mc.sca.ui.util.IAmaltheaGenerator;
+import org.eclipse.app4mc.sca.ui.util.SCAToolsUIUtil;
+import org.eclipse.app4mc.sca.util.App4mcToolConstants;
+import org.eclipse.app4mc.sca2amalthea.llvm.headless.GenerateAmaltheaModelFromLLVM;
+import org.eclipse.app4mc.sca2amalthea.llvm.headless.SCA2AMALTHEAStarterProperties;
+import org.eclipse.app4mc.sca2amalthea.ui.Activator;
+import org.eclipse.app4mc.sca2amalthea.utils.UtilityForProcessHandling;
+import org.eclipse.app4mc.sca2amalthea.utils.constants.SCA2AmaltheaConstants;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Display;
+import org.osgi.service.prefs.BackingStoreException;
+
+/**
+ * The sca2Amalthea execution starts with this class.
+ */
+public class SCA2AmaltheaExecutor implements IAmaltheaGenerator {
+
+ private Properties properties;
+
+
+ @Override
+ public IStatus execute(final IProgressMonitor iProgressMonitor, final Properties properties) {
+ IStatus status = Status.OK_STATUS;
+ this.properties = properties;
+ storeUserSelectionToProjectPreferences();
+ SCAProgressMonitor scaProgressMonitor = new SCAProgressMonitor(Job.getJobManager().currentJob());
+ Thread progressMonitorObserverThread = scaProgressMonitor.createInfiniteProgressMonitor(iProgressMonitor);
+ try {
+ progressMonitorObserverThread.start();
+ Display.getDefault().syncExec(new SCAPopup(App4mcToolConstants.SCA2AMALTHEA_TOOL_ID,
+ SCA2AmaltheaConstants.AMALTHEA_GENERATION__PROJECT_SIZE_MESSAGE, MessageDialog.INFORMATION));
+ SCA2AMALTHEAStarterProperties sca2AmaltheaStarterProperties = new SCA2AMALTHEAStarterProperties();
+ sca2AmaltheaStarterProperties
+ .setProjectPath(this.properties.getProperty(AmaltheaWizardPreferenceConstants.PROJECT_PATH));
+ sca2AmaltheaStarterProperties
+ .setOutPutPath(this.properties.getProperty(AmaltheaWizardPreferenceConstants.OUTPUT_DIRECTORY));
+ sca2AmaltheaStarterProperties.getLlvmStarterProperties()
+ .setTraverseAstFile(this.properties.getProperty(AmaltheaWizardPreferenceConstants.AST_PATH_KEY));
+ sca2AmaltheaStarterProperties
+ .setTaskListFile(this.properties.getProperty(AmaltheaWizardPreferenceConstants.TASK_SCHEDULING_FILE));
+ sca2AmaltheaStarterProperties
+ .setHDirFilePath(this.properties.getProperty(AmaltheaWizardPreferenceConstants.HDIR_LIST_KEY));
+ sca2AmaltheaStarterProperties
+ .setBuildLogFile(this.properties.getProperty(AmaltheaWizardPreferenceConstants.BUILD_CMDS_LOG_FILE));
+ sca2AmaltheaStarterProperties
+ .setLockinfoFile(this.properties.getProperty(AmaltheaWizardPreferenceConstants.OS_LOCK_FILE));
+ sca2AmaltheaStarterProperties.setIsStructMemberEnabled(
+ Boolean.parseBoolean(this.properties.getProperty(AmaltheaWizardPreferenceConstants.ENABLE_STRUCT_MEMBER_KEY)));
+
+ GenerateAmaltheaModelFromLLVM generator = new GenerateAmaltheaModelFromLLVM(sca2AmaltheaStarterProperties);
+ SCA2AmaltheaTimer scaTimer = new SCA2AmaltheaTimer();
+ scaTimer.startTimer();
+ status = generator.run();
+ scaProgressMonitor.setGenerationDone(true);
+
+ if ((UtilityForProcessHandling.getCurrentRunningProcess().exitValue() != 0) &&
+ !UtilityForProcessHandling.isModelGenerationcancelled()) {
+ Display.getDefault().syncExec(new SCAPopup(App4mcToolConstants.SCA2AMALTHEA_TOOL_ID,
+ SCA2AmaltheaConstants.PARSING_ERROR, MessageDialog.INFORMATION));
+ return Status.CANCEL_STATUS;
+ }
+ }
+ catch (Exception e) {
+ Logmanager.getInstance().logException(this.getClass(), e, Activator.PLUGIN_ID);
+ if (progressMonitorObserverThread != null) {
+ waitForThread(progressMonitorObserverThread);
+ }
+ scaProgressMonitor.getSubMonitor().done();
+ return Status.CANCEL_STATUS;
+ }
+
+ waitForThread(progressMonitorObserverThread);
+ scaProgressMonitor.getSubMonitor().done();
+ UtilityForProcessHandling.setCurrentRunningProcess(null);
+ return status;
+ }
+
+ private void storeUserSelectionToProjectPreferences() {
+ Display.getDefault().syncExec(() -> {
+ IEclipsePreferences projectPreferences = SCAToolsUIUtil
+ .loadProjectScopePrefs(SCAToolsUIUtil.getCurrentProjectResource(), App4mcToolConstants.SCA2AMALTHEA_TOOL_ID);
+ try {
+ projectPreferences.clear();
+ for (Map.Entry<Object, Object> e : this.properties.entrySet()) {
+ projectPreferences.put(e.getKey().toString(), e.getValue().toString());
+ }
+ projectPreferences.flush();
+ }
+ catch (BackingStoreException e) {
+ Logmanager.getInstance().logException(this.getClass(), e, Activator.PLUGIN_ID);
+ }
+ });
+ }
+
+ private void waitForThread(final Thread thread) {
+ try {
+ if (thread != null) {
+ thread.join();
+ }
+ }
+ catch (InterruptedException e) {
+ Logmanager.getInstance().log(e.getMessage());
+ }
+ }
+
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/wizard/SCA2AmaltheaTimer.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/wizard/SCA2AmaltheaTimer.java
new file mode 100644
index 0000000..3ac7341
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/wizard/SCA2AmaltheaTimer.java
@@ -0,0 +1,70 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca2amalthea.ui.wizard;
+
+import java.util.Timer;
+import java.util.TimerTask;
+
+import org.eclipse.app4mc.sca.util.App4mcToolConstants;
+import org.eclipse.app4mc.sca2amalthea.utils.UtilityForProcessHandling;
+import org.eclipse.app4mc.sca2amalthea.utils.constants.SCA2AmaltheaConstants;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ *
+ */
+public class SCA2AmaltheaTimer {
+
+ class SCA2AmaltheaTimerTask extends TimerTask {
+
+ private final Timer timer;
+ private final Job eclipseJob;
+
+ public SCA2AmaltheaTimerTask(final Timer timerInstance, final Job eclipseJob) {
+ this.timer = timerInstance;
+ this.eclipseJob = eclipseJob;
+ }
+
+ @Override
+ public void run() {
+ if ((this.eclipseJob.getThread() != null) && this.eclipseJob.getThread().isAlive()) {
+ SCAPopup scaPopup = new SCAPopup(App4mcToolConstants.SCA2AMALTHEA_TOOL_ID,
+ SCA2AmaltheaConstants.AMALTHEA_GENERATION_TOO_LONG, MessageDialog.CONFIRM);
+ Display.getDefault().syncExec(scaPopup);
+ int confirmationStatus = scaPopup.getDialogStatus() ? 0 : 1;
+ if (confirmationStatus == 1) {
+ this.timer.cancel();
+ Process p = UtilityForProcessHandling.getCurrentRunningProcess();
+ if (p != null) {
+ p.destroyForcibly();
+ UtilityForProcessHandling.setModelGenerationcancelled(true);
+ }
+ }
+ }
+ else {
+ this.timer.cancel();
+ }
+ }
+ }
+
+ /**
+ * This method starts the timer.The timer is sceduled to run after every 40mins.Every time the timer runs it checks if
+ * the eclipse job is still alive. If so it pops up a confirmation dialog asking if the user wishes to continue. If
+ * the user wishes to continue the timer keeps running and keeps showing the popup after every 40 mins and if the user
+ * wishes to abort then it cancels the timer and kills the sca.exe process.If the eclipse job is not alive it cancels
+ * the timer.
+ */
+ public void startTimer() {
+ int timerDelay = 40 * 60 * 1000;
+ int timerPeriod = 40 * 60 * 1000;
+ Job eclipseJob = Job.getJobManager().currentJob();
+ Timer t = new Timer();
+ t.scheduleAtFixedRate(new SCA2AmaltheaTimerTask(t, eclipseJob), timerDelay, timerPeriod);
+ }
+
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/wizard/SCA2AmaltheaWidget.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/wizard/SCA2AmaltheaWidget.java
new file mode 100644
index 0000000..52a6f2c
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/wizard/SCA2AmaltheaWidget.java
@@ -0,0 +1,287 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca2amalthea.ui.wizard;
+
+import java.io.File;
+import java.util.HashSet;
+import java.util.Properties;
+
+import org.eclipse.app4mc.sca.ui.util.AmaltheaWizardPreferenceConstants;
+import org.eclipse.app4mc.sca.ui.util.ButtonInfo;
+import org.eclipse.app4mc.sca.ui.util.ButtonType;
+import org.eclipse.app4mc.sca.ui.util.LabelListButtonCreator;
+import org.eclipse.app4mc.sca.ui.util.LabelTextButtonCreator;
+import org.eclipse.app4mc.sca.ui.util.WizardConstants;
+import org.eclipse.app4mc.sca.ui.widgets.Widget;
+import org.eclipse.app4mc.sca2amalthea.ui.Activator;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.FileDialog;
+
+import com.google.common.base.Joiner;
+import com.google.common.base.Splitter;
+import com.google.common.collect.Lists;
+
+/**
+ * This class is responsible to create UI controls for SCA2Amalthea widget.
+ */
+public class SCA2AmaltheaWidget extends Widget {
+
+ private LabelTextButtonCreator astPath;
+ private LabelTextButtonCreator buildCmmandlogPath;
+ private final Properties properties;
+ private Button generateStructMember;
+ private LabelListButtonCreator headerList;
+
+ /**
+ * @param parent Composite instance
+ * @param properties Properties instance
+ */
+ public SCA2AmaltheaWidget(final Composite parent, final Properties properties) {
+ this.properties = properties;
+ createComponent(parent);
+ }
+
+ /**
+ * The methods creates the UI elements using the SWT Widgets. The UI consists of a)Check-box for enabling struct
+ * members b)Path to LLVM Executable text box c)Header Directories d)Build cmd log file text box.
+ *
+ * @param parent Composite instance.
+ */
+ private void createComponent(final Composite parent) {
+ Composite compositeForCheckBoxes = new Composite(parent, SWT.NONE);
+ compositeForCheckBoxes.setLayout(new GridLayout(1, true));
+
+ this.generateStructMember = new Button(compositeForCheckBoxes, SWT.CHECK);
+ this.generateStructMember.setText(WizardConstants.GENERATE_STRUCT_MEMBER);
+ this.generateStructMember.setLayoutData(new GridData(SWT.CENTER, SWT.NONE, true, false));
+
+ Composite composite = new Composite(parent, SWT.NONE);
+ GridDataFactory.defaultsFor(composite).grab(true, false).span(3, 1).applyTo(composite);
+ composite.setLayout(new GridLayout(3, false));
+
+ this.astPath = new LabelTextButtonCreator(composite, WizardConstants.LLVM_PATH_TEXT, "ast_path",
+ WizardConstants.BROWSE, "ast_path_browse");
+ this.astPath.setProjectPath(this.properties.getProperty(AmaltheaWizardPreferenceConstants.PROJECT_PATH));
+
+ this.buildCmmandlogPath = new LabelTextButtonCreator(composite, WizardConstants.BUILD_CMD_FILE, "build_cmd_log",
+ WizardConstants.BROWSE, "build_cmd_log_browse");
+ this.buildCmmandlogPath.setProjectPath(this.properties.getProperty(AmaltheaWizardPreferenceConstants.PROJECT_PATH));
+
+ java.util.Set<ButtonInfo> buttonInfoList = new HashSet<ButtonInfo>();
+ ButtonInfo newButton = new ButtonInfo(WizardConstants.NEW_BUTTON, "new", ButtonType.BROWSE_FOLDER);
+ ButtonInfo removeButton = new ButtonInfo(WizardConstants.REMOVE_BUTTON, "remove", ButtonType.REMOVE);
+ buttonInfoList.add(newButton);
+ buttonInfoList.add(removeButton);
+
+ this.headerList = new LabelListButtonCreator(composite, WizardConstants.HEADER_DIRECTORIES,
+ "header_directories_list", buttonInfoList);
+ this.headerList.setProjectPath(this.properties.getProperty(AmaltheaWizardPreferenceConstants.PROJECT_PATH));
+
+ addListeners();
+ initialiseOptions();
+ }
+
+
+ /**
+ * This method returns the properties instance.
+ */
+ @Override
+ public Properties getOptions() {
+ return this.properties;
+ }
+
+
+ /**
+ * This method basically validates the values in the UI elements and set appropriate error message.
+ */
+ @Override
+ public IStatus validate() {
+ if (this.astPath.getTextField().getText().isEmpty()) {
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID, WizardConstants.LLVM_PATH_EMPTY_ERROR_MESSAGE);
+ }
+ else if (!this.astPath.getTextField().getText().isEmpty() &&
+ !new File(this.astPath.getTextField().getText()).exists() &&
+ !new File(this.properties.getProperty(AmaltheaWizardPreferenceConstants.PROJECT_PATH) +
+ this.astPath.getTextField().getText()).exists()) {
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID, WizardConstants.LLVM_PATH_ERROR_MESSAGE);
+ }
+ else if(new File(this.astPath.getTextField().getText()).isFile()||new File(this.properties.getProperty(AmaltheaWizardPreferenceConstants.PROJECT_PATH) +
+ this.astPath.getTextField().getText()).isFile()) {
+ return new Status(IStatus.ERROR,Activator.PLUGIN_ID,WizardConstants.LLVM_PATH_DIR_MESSAGE);
+ }
+ else if (!this.buildCmmandlogPath.getTextField().getText().isEmpty() &&
+ !new File(this.buildCmmandlogPath.getTextField().getText()).exists() &&
+ !new File(this.properties.getProperty(AmaltheaWizardPreferenceConstants.PROJECT_PATH) +
+ this.buildCmmandlogPath.getTextField().getText()).exists()) {
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID, WizardConstants.BUILD_CMD_FILE_ERROR_MESSAGE);
+ }
+ else if (!this.buildCmmandlogPath.getTextField().getText().isEmpty() &&
+ (!(this.buildCmmandlogPath.getTextField().getText().endsWith(".log")))) {
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID, WizardConstants.BUILD_CMD_FILE_EXTENSION_ERROR_MESSAGE);
+ }
+ else if (this.headerList.getListBox().getItemCount() > 0) {
+ for (String hDir : this.headerList.getListBox().getItems()) {
+ if (!new File(hDir).exists() &&
+ !new File(this.properties.getProperty(AmaltheaWizardPreferenceConstants.PROJECT_PATH) + hDir).exists()) {
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID, WizardConstants.HEADER_LIST_ERROR_MESSAGE);
+ }
+ }
+ }
+ return Status.OK_STATUS;
+
+ }
+
+
+ /**
+ * This method adds the listeners to the UI elemets of this widget.
+ */
+ private void addListeners() {
+ this.generateStructMember.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ SCA2AmaltheaWidget.this.properties.setProperty(AmaltheaWizardPreferenceConstants.ENABLE_STRUCT_MEMBER_KEY,
+ Boolean.toString(SCA2AmaltheaWidget.this.generateStructMember.getSelection()));
+ }
+ });
+
+ this.astPath.getButton().addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ DirectoryDialog dialog = new DirectoryDialog(Display.getCurrent().getActiveShell());
+ dialog.setFilterPath(SCA2AmaltheaWidget.this.astPath.provideDialogLocation());
+ String ast_dir_Path = dialog.open();
+ if (ast_dir_Path != null) {
+ SCA2AmaltheaWidget.this.astPath.setFilePath(ast_dir_Path);
+ }
+ }
+ });
+
+ this.astPath.getTextField().addModifyListener(event -> {
+ this.properties.setProperty(AmaltheaWizardPreferenceConstants.AST_PATH_KEY,
+ this.astPath.getAbsoluteFilePath());
+ setChanged();
+ notifyObservers();
+
+ });
+
+ this.buildCmmandlogPath.getButton().addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ FileDialog dialog = new FileDialog(Display.getCurrent().getActiveShell());
+ dialog.setFilterPath(SCA2AmaltheaWidget.this.buildCmmandlogPath.provideDialogLocation());
+ String build_cmd_file_path = dialog.open();
+ if (build_cmd_file_path != null) {
+ SCA2AmaltheaWidget.this.buildCmmandlogPath.setFilePath(build_cmd_file_path);
+ }
+ }
+ });
+
+ this.buildCmmandlogPath.getTextField().addModifyListener(event -> {
+ this.properties.setProperty(AmaltheaWizardPreferenceConstants.BUILD_CMDS_LOG_FILE,
+ this.buildCmmandlogPath.getAbsoluteFilePath());
+ setChanged();
+ notifyObservers();
+
+ });
+
+ for (Button b : this.headerList.getButtonList()) {
+ ButtonInfo buttonInfo = this.headerList.getButtonInfoMap().get(b.getText());
+ if (buttonInfo.getButtonType().equals(ButtonType.BROWSE_FILE)) {
+ b.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ FileDialog dialog = new FileDialog(Display.getCurrent().getActiveShell());
+ String filePath = dialog.open();
+ if (filePath != null) {
+ SCA2AmaltheaWidget.this.headerList.setFilePath(filePath);
+ }
+ setChanged();
+ notifyObservers();
+ }
+ });
+ }
+ else if (buttonInfo.getButtonType().equals(ButtonType.BROWSE_FOLDER)) {
+ b.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ DirectoryDialog dialog = new DirectoryDialog(Display.getCurrent().getActiveShell());
+ String directoryPath = dialog.open();
+ if (directoryPath != null) {
+ SCA2AmaltheaWidget.this.headerList.setFilePath(directoryPath);
+ }
+ setChanged();
+ notifyObservers();
+ SCA2AmaltheaWidget.this.properties.setProperty(AmaltheaWizardPreferenceConstants.HDIR_LIST_KEY,
+ Joiner.on(File.pathSeparator).join(getHeaderDirList()));
+ }
+ });
+ }
+ else if (buttonInfo.getButtonType().equals(ButtonType.REMOVE)) {
+ b.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ SCA2AmaltheaWidget.this.headerList.getListBox()
+ .remove(SCA2AmaltheaWidget.this.headerList.getListBox().getSelectionIndices());
+ SCA2AmaltheaWidget.this.properties.setProperty(AmaltheaWizardPreferenceConstants.HDIR_LIST_KEY,
+ Joiner.on(File.pathSeparator).join(getHeaderDirList()));
+ }
+ });
+ }
+ }
+ }
+
+ /**
+ * @return the headerDirList
+ */
+ public java.util.List<String> getHeaderDirList() {
+ java.util.List<String> list = Lists.newArrayList();
+ for (int i = 0; i < this.headerList.getListBox().getItemCount(); i++) {
+ list.add(this.headerList.getListBox().getItem(i));
+ }
+ return list;
+ }
+
+
+ /**
+ * This method initializes the UI elements to the values provided in the properties instance.
+ */
+ private void initialiseOptions() {
+ this.generateStructMember.setSelection(
+ Boolean.parseBoolean(this.properties.getProperty(AmaltheaWizardPreferenceConstants.ENABLE_STRUCT_MEMBER_KEY)));
+ if (this.properties.getProperty(AmaltheaWizardPreferenceConstants.AST_PATH_KEY) != null) {
+ this.astPath.getTextField()
+ .setText(this.properties.getProperty(AmaltheaWizardPreferenceConstants.AST_PATH_KEY));
+ }
+ if ((this.properties.getProperty(AmaltheaWizardPreferenceConstants.HDIR_LIST_KEY) != null) &&
+ !this.properties.getProperty(AmaltheaWizardPreferenceConstants.HDIR_LIST_KEY).isEmpty()) {
+ this.headerList.getListBox()
+ .setItems(Splitter.on(File.pathSeparator)
+ .splitToList(this.properties.getProperty(AmaltheaWizardPreferenceConstants.HDIR_LIST_KEY))
+ .toArray(new String[] {}));
+ }
+ if (this.properties.getProperty(AmaltheaWizardPreferenceConstants.BLOG_KEY) != null) {
+ this.buildCmmandlogPath.getTextField().setText(this.properties.getProperty(AmaltheaWizardPreferenceConstants.BLOG_KEY));
+ }
+
+ }
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/wizard/SCA2AmaltheaWidgetBuilder.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/wizard/SCA2AmaltheaWidgetBuilder.java
new file mode 100644
index 0000000..07a3a3a
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/wizard/SCA2AmaltheaWidgetBuilder.java
@@ -0,0 +1,38 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca2amalthea.ui.wizard;
+
+import java.util.Properties;
+
+import org.eclipse.app4mc.sca.ui.widget.builder.WidgetBuilder;
+import org.eclipse.app4mc.sca.ui.widgets.Widget;
+import org.eclipse.swt.widgets.Composite;
+
+
+/**
+ * This is a Widget Builder class for @SCA2AmaltheaWidget. This class internally uses SCA2AmaltheaWiget to create the UI
+ * elements.
+ */
+public class SCA2AmaltheaWidgetBuilder implements WidgetBuilder {
+
+ private final Properties properties;
+
+ /**
+ * @param properties Properties instance.
+ */
+ public SCA2AmaltheaWidgetBuilder(final Properties properties) {
+ this.properties = properties;
+ }
+
+ /**
+ * Builds the SCA2Amalthea Widget.
+ */
+ @Override
+ public Widget buildWidget(final Composite parent) {
+ return new SCA2AmaltheaWidget(parent, this.properties);
+ }
+
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/wizard/SCAPopup.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/wizard/SCAPopup.java
new file mode 100644
index 0000000..5d4a0a5
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/wizard/SCAPopup.java
@@ -0,0 +1,52 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca2amalthea.ui.wizard;
+
+import org.eclipse.app4mc.sca.ui.messagedialog.App4mcMessgeDialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * This class to be used by SCA2Amalthea to show any kind of message dialog.
+ */
+public class SCAPopup implements Runnable {
+
+ private Shell currentShell;
+ private final String title;
+ private final String message;
+ private final int dialogType;
+ private boolean dialogStatus;
+
+ /**
+ * @param title the title to be displayed in the message dialog
+ * @param message the message to be displayed in the message dialog.
+ * @param dialogType the type of dailog Eg information,confirmation etc
+ */
+ public SCAPopup(final String title, final String message, final int dialogType) {
+ Display.getDefault().syncExec(() -> {
+ SCAPopup.this.currentShell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+ });
+ this.title = title;
+ this.message = message;
+ this.dialogType = dialogType;
+ }
+
+ @Override
+ public void run() {
+ App4mcMessgeDialog confirmationMessageDialog =
+ new App4mcMessgeDialog(this.dialogType, SCAPopup.this.currentShell, this.title, null, this.message);
+ this.dialogStatus = (confirmationMessageDialog.open() == 0);
+ }
+
+ /**
+ * @return the status returning if the dialog was open or not.
+ */
+ public boolean getDialogStatus() {
+ return this.dialogStatus;
+ }
+
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/wizard/SCAProgressMonitor.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/wizard/SCAProgressMonitor.java
new file mode 100644
index 0000000..adc23d7
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.ui/src/org/eclipse/app4mc/sca2amalthea/ui/wizard/SCAProgressMonitor.java
@@ -0,0 +1,145 @@
+/**
+ ******************************************************************************** Copyright (c) 2017-2020 Robert Bosch GmbH and others. This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/
+ * SPDX-License-Identifier: EPL-2.0 Contributors: Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.sca2amalthea.ui.wizard;
+
+import org.eclipse.app4mc.sca.logging.manager.Logmanager;
+import org.eclipse.app4mc.sca2amalthea.utils.UtilityForProcessHandling;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.core.runtime.jobs.Job;
+
+/**
+ * This class is responsible for showing the progress monitor for sca2Amalthea.
+ */
+public class SCAProgressMonitor {
+
+ private SubMonitor subMonitor;
+
+ private boolean isGenerationDone = false;
+
+ private final Object mutex = new Object();
+
+ private final Job eclipseJob;
+
+ private static final int TOTAL_PROBABLE_EXECUTION_TIME = 600;
+
+ /**
+ * @param eclipseJob Eclipe job instance
+ */
+ public SCAProgressMonitor(final Job eclipseJob) {
+ this.eclipseJob = eclipseJob;
+ }
+
+
+ class InfiniteProgressMonitorObserver extends Thread {
+
+ /**
+ * @param subMonitor monitor which will be observed
+ */
+ public InfiniteProgressMonitorObserver(final SubMonitor subMonitor) {
+ super();
+ SCAProgressMonitor.this.subMonitor = subMonitor;
+ }
+
+ @Override
+ public void run() {
+ runLogarithmicWaitOnProgressMonitor();
+ terminateMonitor();
+ }
+
+ /**
+ * @param subMonitor
+ * @param jobName
+ */
+ private void runLogarithmicWaitOnProgressMonitor() {
+ boolean isProcessCompleted = false;
+ int advancementCounter = 0;
+
+ while (!isProcessCompleted) {
+ if (SCAProgressMonitor.this.subMonitor.isCanceled()) {
+ synchronized (SCAProgressMonitor.this.mutex) {
+ SCAProgressMonitor.this.isGenerationDone = true;
+ }
+ Process p = UtilityForProcessHandling.getCurrentRunningProcess();
+ p.destroyForcibly();
+ UtilityForProcessHandling.setModelGenerationcancelled(true);
+
+ SCAProgressMonitor.this.eclipseJob.setName("Cancelling the model generation job");
+ }
+ try {
+ SCAProgressMonitor.this.subMonitor.worked(1);
+ advancementCounter++;
+ if ((advancementCounter % (TOTAL_PROBABLE_EXECUTION_TIME / 2)) == 0) { // half time
+ advancementCounter = 1;
+ SCAProgressMonitor.this.subMonitor.setWorkRemaining(TOTAL_PROBABLE_EXECUTION_TIME);
+ }
+ Thread.sleep(1000);
+ }
+ catch (InterruptedException e) {
+ Logmanager.getInstance().log(e.getMessage());
+ Thread.currentThread().interrupt();
+ }
+ synchronized (SCAProgressMonitor.this.mutex) {
+ isProcessCompleted = SCAProgressMonitor.this.isGenerationDone;
+ }
+ }
+ }
+
+ /**
+ * @param subMonitor
+ * @param jobName
+ */
+ private void terminateMonitor() {
+ int numberOfSecondUntilEnd = 3;
+ SCAProgressMonitor.this.subMonitor.setWorkRemaining(numberOfSecondUntilEnd);
+ while (numberOfSecondUntilEnd > 0) {
+ try {
+ SCAProgressMonitor.this.subMonitor.worked(1);
+ Thread.sleep(1000);
+ }
+ catch (InterruptedException e) {
+ Logmanager.getInstance().log(e.getMessage());
+ Thread.currentThread().interrupt();
+ }
+ --numberOfSecondUntilEnd;
+ }
+ UtilityForProcessHandling.setModelGenerationcancelled(false);
+ }
+ }
+
+ /**
+ * @param monitor Iprogress monitor
+ * @return Thread instance
+ */
+ public Thread createInfiniteProgressMonitor(final IProgressMonitor monitor) {
+ this.subMonitor = SubMonitor.convert(monitor, TOTAL_PROBABLE_EXECUTION_TIME);
+ return new InfiniteProgressMonitorObserver(this.subMonitor);
+ }
+
+ /**
+ * @return SubMonitor instance
+ */
+ public SubMonitor getSubMonitor() {
+ return this.subMonitor;
+ }
+
+ /**
+ * @return the isGenerationDone
+ */
+ public boolean isGenerationDone() {
+ return this.isGenerationDone;
+ }
+
+
+ /**
+ * @param isGenerationDone the isGenerationDone to set
+ */
+ public void setGenerationDone(final boolean isGenerationDone) {
+ synchronized (SCAProgressMonitor.this.mutex) {
+ this.isGenerationDone = isGenerationDone;
+ }
+ }
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/.gitignore
deleted file mode 100644
index 24d6437..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/META-INF/MANIFEST.MF b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/META-INF/MANIFEST.MF
index 7a85084..9a9359e 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/META-INF/MANIFEST.MF
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/META-INF/MANIFEST.MF
@@ -1,14 +1,14 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Utils
-Bundle-SymbolicName: org.eclipse.app4mc.sca2amalthea.utils
-Bundle-Version: 1.0.0.qualifier
-Bundle-Activator: org.eclipse.app4mc.sca2amalthea.utils.Activator
-Bundle-Vendor: Eclipse.org
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: SCA2AMALTHEA Utils
+Bundle-SymbolicName: org.eclipse.app4mc.sca2amalthea.utils
+Bundle-Version: 0.9.8.qualifier
+Bundle-Activator: org.eclipse.app4mc.sca2amalthea.utils.Activator
+Bundle-Vendor: Eclipse.org
Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.app4mc.sca2amalthea.utils,
- org.eclipse.app4mc.sca2amalthea.utils.constants
-
+ org.eclipse.core.runtime
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.app4mc.sca2amalthea.utils,
+ org.eclipse.app4mc.sca2amalthea.utils.constants
+
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/bin/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/bin/.gitignore
deleted file mode 100644
index cf1db2e..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/bin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/org/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/pom.xml b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/pom.xml
deleted file mode 100644
index 673b445..0000000
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/pom.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.build</artifactId>
- <version>1.0.0.qualifier</version>
- <relativePath>../../build/org.eclipse.app4mc.sca2amalthea.build</relativePath>
- </parent>
- <groupId>sca2amalthea</groupId>
- <artifactId>org.eclipse.app4mc.sca2amalthea.utils</artifactId>
- <packaging>eclipse-plugin</packaging>
-
- <build>
- <sourceDirectory>src</sourceDirectory>
- <resources>
- <resource>
- <directory>xtend-gen</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>src</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <version>2.4.1</version>
- <configuration>
- <filesets>
- <fileset>
- <directory>xtend-gen</directory>
- <includes>
- <include>**</include>
- </includes>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>1.7</version>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>xtend-gen</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.eclipse.xtend</groupId>
- <artifactId>xtend-maven-plugin</artifactId>
- <version>2.7.3</version>
- <executions>
- <execution>
- <goals>
- <goal>compile</goal>
- </goals>
- <configuration>
- <outputDirectory>xtend-gen</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/src/org/eclipse/app4mc/sca2amalthea/utils/Activator.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/src/org/eclipse/app4mc/sca2amalthea/utils/Activator.java
index 70105fc..aad6c55 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/src/org/eclipse/app4mc/sca2amalthea/utils/Activator.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/src/org/eclipse/app4mc/sca2amalthea/utils/Activator.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/src/org/eclipse/app4mc/sca2amalthea/utils/UtilityForProcessHandling.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/src/org/eclipse/app4mc/sca2amalthea/utils/UtilityForProcessHandling.java
index 6436708..6ecbdc0 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/src/org/eclipse/app4mc/sca2amalthea/utils/UtilityForProcessHandling.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/src/org/eclipse/app4mc/sca2amalthea/utils/UtilityForProcessHandling.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/src/org/eclipse/app4mc/sca2amalthea/utils/constants/SCA2AmaltheaConstants.java b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/src/org/eclipse/app4mc/sca2amalthea/utils/constants/SCA2AmaltheaConstants.java
index c0ee754..0dcb47e 100644
--- a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/src/org/eclipse/app4mc/sca2amalthea/utils/constants/SCA2AmaltheaConstants.java
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca2amalthea.utils/src/org/eclipse/app4mc/sca2amalthea/utils/constants/SCA2AmaltheaConstants.java
@@ -1,98 +1,48 @@
/**
********************************************************************************
- * Copyright (c) 2017 Robert Bosch GmbH and others.
- *
+ * Copyright (c) 2017-2020 Robert Bosch GmbH and others.
+ *
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
+ * which is available at https://www.eclipse.org/legal/epl-2.0
+ *
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
package org.eclipse.app4mc.sca2amalthea.utils.constants;
-import org.eclipse.app4mc.sca2amalthea.utils.Activator;
-import org.eclipse.jface.preference.IPreferenceStore;
/**
* Constants for all the SCA2Amalthea operations
*/
public final class SCA2AmaltheaConstants {
+ /**
+ * Ini Task cycle constant
+ */
+ public static final String INI_TASK_CYCLE = "ONCE";
- /**
- * Added private constructor to hide the implicit public one
- */
- private SCA2AmaltheaConstants() {
- // empty constructor
- }
+ /**
+ * Parsing Error constant
+ */
+ public static final String PARSING_ERROR = "There was some error while parsing c files or when generating the AMALTHEA model.";
- /**
- *
- */
- public static final String TASK_INFO = "taskInfo";
- /**
- *
- */
- public static final String OUTPUT_PATH = "outputPath";
- /**
- *
- */
- public static final String AST_PATH = "astPath";
- /**
- *
- */
- public static final String LOCK_INFO = "lockInfo";
- /**
- *
- */
- public static final String BLOG = "blog";
- /**
- *
- */
- public static final String HDIR_LIST = "hdirList";
+ /**
+ * Amalthea generation taking too long message.
+ */
+ public static final String AMALTHEA_GENERATION_TOO_LONG = "The amalthea model generation job is still running.It might take some more time. Do you wish to continue? Press Ok to continue or cancel to abort";
+ /**
+ * Amalthea generation time depends on the size of the Project error.
+ */
+ public static final String AMALTHEA_GENERATION__PROJECT_SIZE_MESSAGE = "The time required to generate the Amalthea model depends on the size of the Project.";
- /**
- *
- */
- public static final String DEBUG_MODE = "debugMode";
-
- /**
- * Preference name for the "Disable struct member" option
- */
- public static final String ENABLE_STRUCT_MEMBER = "enableStructMember";
-
- /**
- * Preference name for "Component model based on fc bc"
- */
- public static final String COMPONENT_MODEL_FC_BC = "componentModelFcBc";
-
-
- /**
- * Preference name for "Configure optional fields" option
- */
- public static final String ENABLE_OPTIONAL_FIELDS = "enableOptionalFields";
-
- /**
- *
- */
- public static final String OPT_FILE_PATH = "optFile";
-
- /**
- *
- */
- public static final String INI_TASK_CYCLE = "ONCE";
-
- /**
- * This method returns the preference store of the sca2Amalthea component.
- *
- * @return IPreferenceStore preference store
- */
- public static IPreferenceStore getPreferenceStore() {
- return Activator.getDefault().getPreferenceStore();
- }
-
+ /**
+ * Added private constructor to hide the implicit public one
+ */
+ private SCA2AmaltheaConstants() {
+ // empty constructor
+ }
}
diff --git a/eclipse-tools/sca2amalthea/plugins/pom.tycho b/eclipse-tools/sca2amalthea/plugins/pom.tycho
new file mode 100644
index 0000000..39f0a77
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/pom.tycho
@@ -0,0 +1,15 @@
+org.eclipse.app4mc.sca.amalthea.loader
+org.eclipse.app4mc.sca.amalthea.model.utils
+org.eclipse.app4mc.sca.logging
+org.eclipse.app4mc.sca.scheduling.loader
+org.eclipse.app4mc.sca.ui
+org.eclipse.app4mc.sca.util
+org.eclipse.app4mc.sca2amalthea.docu
+org.eclipse.app4mc.sca2amalthea.exporter
+org.eclipse.app4mc.sca2amalthea.ir
+org.eclipse.app4mc.sca2amalthea.ir.loader
+org.eclipse.app4mc.sca2amalthea.llvm
+org.eclipse.app4mc.sca2amalthea.scairmodelenricher
+org.eclipse.app4mc.sca2amalthea.serialization
+org.eclipse.app4mc.sca2amalthea.ui
+org.eclipse.app4mc.sca2amalthea.utils
diff --git a/eclipse-tools/sca2amalthea/pom.xml b/eclipse-tools/sca2amalthea/pom.xml
new file mode 100644
index 0000000..dc44aab
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/pom.xml
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>sca2amalthea</groupId>
+ <artifactId>parent</artifactId>
+ <version>0.9.8-SNAPSHOT</version>
+
+ <packaging>pom</packaging>
+
+ <name>SCA2AMALTHEA</name>
+
+ <properties>
+ <tycho.version>1.6.0</tycho.version>
+
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+ </properties>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <id>cbi</id>
+ <url>https://repo.eclipse.org/content/repositories/cbi-releases/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+
+ <modules>
+ <module>plugins</module>
+ <module>features</module>
+ <module>releng</module>
+ </modules>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-maven-plugin</artifactId>
+ <version>${tycho.version}</version>
+ <extensions>true</extensions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-compiler-plugin</artifactId>
+ <version>${tycho.version}</version>
+ <configuration>
+ <verbose>true</verbose>
+ <source>1.8</source>
+ <target>1.8</target>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>target-platform-configuration</artifactId>
+ <version>${tycho.version}</version>
+ <configuration>
+ <environments>
+ <environment>
+ <os>linux</os>
+ <ws>gtk</ws>
+ <arch>x86_64</arch>
+ </environment>
+ <environment>
+ <os>win32</os>
+ <ws>win32</ws>
+ <arch>x86_64</arch>
+ </environment>
+ <environment>
+ <os>macosx</os>
+ <ws>cocoa</ws>
+ <arch>x86_64</arch>
+ </environment>
+ </environments>
+
+ <target>
+ <artifact>
+ <groupId>sca2amalthea</groupId>
+ <artifactId>org.eclipse.app4mc.sca2amalthea.target</artifactId>
+ <version>0.9.8-SNAPSHOT</version>
+ </artifact>
+ </target>
+ <targetDefinitionIncludeSource>honor</targetDefinitionIncludeSource>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-surefire-plugin</artifactId>
+ <version>${tycho.version}</version>
+ <configuration>
+ <!-- argLine>${tycho.testArgLine}</argLine> -->
+ <forkMode>never</forkMode>
+ <includes>
+ <include>**/*Test.*</include>
+ </includes>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-source-plugin</artifactId>
+ <version>${tycho.version}</version>
+
+ <executions>
+ <execution>
+ <id>plugin-source</id>
+ <goals>
+ <goal>plugin-source</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>sign</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.cbi.maven.plugins</groupId>
+ <artifactId>eclipse-jarsigner-plugin</artifactId>
+ <version>1.1.3</version>
+ <executions>
+ <execution>
+ <id>sign</id>
+ <phase>package</phase>
+ <goals>
+ <goal>sign</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
diff --git a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.build/.project b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.target/.project
similarity index 76%
copy from eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.build/.project
copy to eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.target/.project
index e5155e4..74b6dfb 100644
--- a/eclipse-tools/model-transformation/build/org.eclipse.app4mc.transformation.build/.project
+++ b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.target/.project
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>org.eclipse.app4mc.transformation.build</name>
+ <name>org.eclipse.app4mc.sca2amalthea.target</name>
<comment></comment>
<projects>
</projects>
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/about.html b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.target/about.html
similarity index 100%
rename from eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/about.html
rename to eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.target/about.html
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/epl-2.0.html b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.target/epl-2.0.html
similarity index 100%
rename from eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/epl-2.0.html
rename to eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.target/epl-2.0.html
diff --git a/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.target/org.eclipse.app4mc.sca2amalthea.target.target b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.target/org.eclipse.app4mc.sca2amalthea.target.target
new file mode 100644
index 0000000..c5bc435
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.target/org.eclipse.app4mc.sca2amalthea.target.target
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde?>
+<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
+<target name="SCA2AMALTHEA Target" sequenceNumber="1589785674">
+ <locations>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.sdk.ide" version="4.14.0.I20191210-0610"/>
+ <unit id="org.eclipse.emf.ecore.xcore.lib.feature.group" version="1.5.0.v20190401-0856"/>
+ <unit id="org.eclipse.emf.sdk.feature.group" version="2.20.0.v20191028-0905"/>
+ <unit id="org.eclipse.emf.transaction.feature.group" version="1.12.0.201805140824"/>
+ <unit id="org.eclipse.emf.validation.feature.group" version="1.12.1.201812070911"/>
+ <unit id="org.eclipse.emf.workspace.feature.group" version="1.12.0.201805140824"/>
+ <unit id="org.eclipse.xtext.runtime.feature.group" version="2.20.0.v20191202-1256"/>
+ <unit id="org.eclipse.xtext.sdk.feature.group" version="2.20.0.v20191202-1256"/>
+ <unit id="org.eclipse.xtext.xbase.feature.group" version="2.20.0.v20191202-1256"/>
+ <unit id="org.eclipse.xtext.xbase.lib.feature.group" version="2.20.0.v20191202-0910"/>
+ <unit id="org.eclipse.xtend.sdk.feature.group" version="2.20.0.v20191202-1256"/>
+ <unit id="org.eclipse.xpand.sdk.feature.group" version="2.2.0.v201605260315"/>
+ <unit id="org.apache.commons.cli" version="1.2.0.v201404270220"/>
+ <unit id="org.apache.commons.lang" version="2.6.0.v201404270220"/>
+ <unit id="org.apache.log4j" version="1.2.15.v201012070815"/>
+ <unit id="org.apache.xerces" version="2.9.0.v201101211617"/>
+ <unit id="org.apache.xalan" version="2.7.1.v201005080400"/>
+ <unit id="org.apache.xml.resolver" version="1.2.0.v201005080400"/>
+ <unit id="org.apache.xml.serializer" version="2.7.1.v201005080400"/>
+ <unit id="javax.xml" version="1.3.4.v201005080400"/>
+ <unit id="org.jdom" version="1.1.1.v201101151400"/>
+ <unit id="com.google.guava" version="27.1.0.v20190517-1946"/>
+ <unit id="com.google.inject" version="3.0.0.v201605172100"/>
+ <repository location="http://download.eclipse.org/releases/2019-12"/>
+ </location>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.app4mc.platform.sdk.feature.group" version="0.9.8.202004301410"/>
+ <repository location="http://download.eclipse.org/app4mc/updatesites/releases/0.9.8"/>
+ </location>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.apache.commons.math" version="2.1.0.v201105210652"/>
+ <unit id="org.apache.commons.math3" version="3.5.0.v20190611-1023"/>
+ <repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20191126223242/repository"/>
+ </location>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.sphinx.sdk.feature.group" version="0.11.2.201802230805"/>
+ <repository location="http://download.eclipse.org/sphinx/updates/0.11.x"/>
+ </location>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.license.feature.group" version="2.0.2.v20181016-2210"/>
+ <repository location="http://download.eclipse.org/cbi/updates/license"/>
+ </location>
+ </locations>
+</target>
diff --git a/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.target/org.eclipse.app4mc.sca2amalthea.target.tpd b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.target/org.eclipse.app4mc.sca2amalthea.target.tpd
new file mode 100644
index 0000000..d4ec409
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.target/org.eclipse.app4mc.sca2amalthea.target.tpd
@@ -0,0 +1,46 @@
+target "SCA2AMALTHEA Target"
+
+with source allEnvironments
+
+location "http://download.eclipse.org/releases/2019-12" {
+ org.eclipse.sdk.ide
+ org.eclipse.emf.ecore.xcore.lib.feature.group
+ org.eclipse.emf.sdk.feature.group
+ org.eclipse.emf.transaction.feature.group
+ org.eclipse.emf.validation.feature.group
+ org.eclipse.emf.workspace.feature.group
+ org.eclipse.xtext.runtime.feature.group
+ org.eclipse.xtext.sdk.feature.group
+ org.eclipse.xtext.xbase.feature.group
+ org.eclipse.xtext.xbase.lib.feature.group
+ org.eclipse.xtend.sdk.feature.group
+ org.eclipse.xpand.sdk.feature.group
+ org.apache.commons.cli
+ org.apache.commons.lang
+ org.apache.log4j
+ org.apache.xerces
+ org.apache.xalan
+ org.apache.xml.resolver
+ org.apache.xml.serializer
+ javax.xml
+ org.jdom
+ com.google.guava
+ com.google.inject
+}
+
+location "http://download.eclipse.org/app4mc/updatesites/releases/0.9.8" {
+ org.eclipse.app4mc.platform.sdk.feature.group
+}
+
+location "https://download.eclipse.org/tools/orbit/downloads/drops/R20191126223242/repository" {
+ org.apache.commons.math
+ org.apache.commons.math3
+}
+
+location "http://download.eclipse.org/sphinx/updates/0.11.x" {
+ org.eclipse.sphinx.sdk.feature.group
+}
+
+location "http://download.eclipse.org/cbi/updates/license" {
+ org.eclipse.license.feature.group
+}
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/.project b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.updatesite/.project
similarity index 99%
rename from eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/.project
rename to eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.updatesite/.project
index 7a354e4..71539b5 100644
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/.project
+++ b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.updatesite/.project
@@ -1,17 +1,17 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.app4mc.sca2amalthea.updatesite</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.pde.UpdateSiteBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.UpdateSiteNature</nature>
- </natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.app4mc.sca2amalthea.updatesite</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.UpdateSiteBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.UpdateSiteNature</nature>
+ </natures>
+</projectDescription>
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/about.html b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.updatesite/about.html
similarity index 100%
rename from eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/about.html
rename to eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.updatesite/about.html
diff --git a/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.updatesite/category.xml b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.updatesite/category.xml
new file mode 100644
index 0000000..5906998
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.updatesite/category.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<site>
+ <feature id="org.eclipse.app4mc.sca2amalthea.feature">
+ <category name="SCA2AMALTHEA"/>
+ </feature>
+ <feature id="org.eclipse.app4mc.sca2amalthea.feature.sdk">
+ <category name="SCA2AMALTHEA"/>
+ </feature>
+ <category-def name="SCA2AMALTHEA" label="SCA2AMALTHEA"/>
+</site>
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/epl-2.0.html b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.updatesite/epl-2.0.html
similarity index 100%
rename from eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/epl-2.0.html
rename to eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.updatesite/epl-2.0.html
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/index.html b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.updatesite/index.html
similarity index 99%
rename from eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/index.html
rename to eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.updatesite/index.html
index 485c676..e96fd10 100644
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/index.html
+++ b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.updatesite/index.html
@@ -1,60 +1,60 @@
-<html>
-<head>
-<title>org.eclipse.app4mc.sca2amalthea.updatesite</title>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<style>@import url("web/site.css");</style>
-<script type="text/javascript">
- var returnval = 0;
- var stylesheet, xmlFile, cache, doc;
- function init(){
- // NSCP 7.1+ / Mozilla 1.4.1+ / Safari
- // Use the standard DOM Level 2 technique, if it is supported
- if (document.implementation && document.implementation.createDocument) {
- xmlFile = document.implementation.createDocument("", "", null);
- stylesheet = document.implementation.createDocument("", "", null);
- if (xmlFile.load){
- xmlFile.load("site.xml");
- stylesheet.load("web/site.xsl");
- } else {
- alert("Document could not be loaded by browser.");
- }
- xmlFile.addEventListener("load", transform, false);
- stylesheet.addEventListener("load", transform, false);
- }
- //IE 6.0+ solution
- else if (window.ActiveXObject) {
- xmlFile = new ActiveXObject("msxml2.DOMDocument.3.0");
- xmlFile.async = false;
- xmlFile.load("site.xml");
- stylesheet = new ActiveXObject("msxml2.FreeThreadedDOMDocument.3.0");
- stylesheet.async = false;
- stylesheet.load("web/site.xsl");
- cache = new ActiveXObject("msxml2.XSLTemplate.3.0");
- cache.stylesheet = stylesheet;
- transformData();
- }
- }
- // separate transformation function for IE 6.0+
- function transformData(){
- var processor = cache.createProcessor();
- processor.input = xmlFile;
- processor.transform();
- data.innerHTML = processor.output;
- }
- // separate transformation function for NSCP 7.1+ and Mozilla 1.4.1+
- function transform(){
- returnval+=1;
- if (returnval==2){
- var processor = new XSLTProcessor();
- processor.importStylesheet(stylesheet);
- doc = processor.transformToDocument(xmlFile);
- document.getElementById("data").innerHTML = doc.documentElement.innerHTML;
- }
- }
-</script>
-</head>
-<body onload="init();">
-<!--[insert static HTML here]-->
-<div id="data"><!-- this is where the transformed data goes --></div>
-</body>
-</html>
+<html>
+<head>
+<title>org.eclipse.app4mc.sca2amalthea.updatesite</title>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<style>@import url("web/site.css");</style>
+<script type="text/javascript">
+ var returnval = 0;
+ var stylesheet, xmlFile, cache, doc;
+ function init(){
+ // NSCP 7.1+ / Mozilla 1.4.1+ / Safari
+ // Use the standard DOM Level 2 technique, if it is supported
+ if (document.implementation && document.implementation.createDocument) {
+ xmlFile = document.implementation.createDocument("", "", null);
+ stylesheet = document.implementation.createDocument("", "", null);
+ if (xmlFile.load){
+ xmlFile.load("site.xml");
+ stylesheet.load("web/site.xsl");
+ } else {
+ alert("Document could not be loaded by browser.");
+ }
+ xmlFile.addEventListener("load", transform, false);
+ stylesheet.addEventListener("load", transform, false);
+ }
+ //IE 6.0+ solution
+ else if (window.ActiveXObject) {
+ xmlFile = new ActiveXObject("msxml2.DOMDocument.3.0");
+ xmlFile.async = false;
+ xmlFile.load("site.xml");
+ stylesheet = new ActiveXObject("msxml2.FreeThreadedDOMDocument.3.0");
+ stylesheet.async = false;
+ stylesheet.load("web/site.xsl");
+ cache = new ActiveXObject("msxml2.XSLTemplate.3.0");
+ cache.stylesheet = stylesheet;
+ transformData();
+ }
+ }
+ // separate transformation function for IE 6.0+
+ function transformData(){
+ var processor = cache.createProcessor();
+ processor.input = xmlFile;
+ processor.transform();
+ data.innerHTML = processor.output;
+ }
+ // separate transformation function for NSCP 7.1+ and Mozilla 1.4.1+
+ function transform(){
+ returnval+=1;
+ if (returnval==2){
+ var processor = new XSLTProcessor();
+ processor.importStylesheet(stylesheet);
+ doc = processor.transformToDocument(xmlFile);
+ document.getElementById("data").innerHTML = doc.documentElement.innerHTML;
+ }
+ }
+</script>
+</head>
+<body onload="init();">
+<!--[insert static HTML here]-->
+<div id="data"><!-- this is where the transformed data goes --></div>
+</body>
+</html>
diff --git a/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.updatesite/pom.xml b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.updatesite/pom.xml
new file mode 100644
index 0000000..afa8fa1
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.updatesite/pom.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>org.eclipse.app4mc.sca2amalthea.updatesite</artifactId>
+
+ <packaging>eclipse-repository</packaging>
+
+ <parent>
+ <groupId>sca2amalthea</groupId>
+ <artifactId>parent</artifactId>
+ <version>0.9.8-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+</project>
\ No newline at end of file
diff --git a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/siteTemplate/index.html b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.updatesite/siteTemplate/index.html
similarity index 100%
copy from eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/siteTemplate/index.html
copy to eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.updatesite/siteTemplate/index.html
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/web/site.css b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.updatesite/web/site.css
similarity index 99%
rename from eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/web/site.css
rename to eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.updatesite/web/site.css
index 425134e..62c6f9f 100644
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/web/site.css
+++ b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.updatesite/web/site.css
@@ -1,12 +1,12 @@
-<STYLE type="text/css">
-td.spacer {padding-bottom: 10px; padding-top: 10px;}
-.title { font-family: sans-serif; color: #99AACC;}
-.bodyText { font-family: sans-serif; font-size: 9pt; color:#000000; }
-.sub-header { font-family: sans-serif; font-style: normal; font-weight: bold; font-size: 9pt; color: white;}
-.log-text {font-family: sans-serif; font-style: normal; font-weight: lighter; font-size: 8pt; color:black;}
-.big-header { font-family: sans-serif; font-style: normal; font-weight: bold; font-size: 9pt; color: white; border-top:10px solid white;}
-.light-row {background:#FFFFFF}
-.dark-row {background:#EEEEFF}
-.header {background:#99AADD}
-#indent {word-wrap : break-word;width :300px;text-indent:10px;}
-</STYLE>
+<STYLE type="text/css">
+td.spacer {padding-bottom: 10px; padding-top: 10px;}
+.title { font-family: sans-serif; color: #99AACC;}
+.bodyText { font-family: sans-serif; font-size: 9pt; color:#000000; }
+.sub-header { font-family: sans-serif; font-style: normal; font-weight: bold; font-size: 9pt; color: white;}
+.log-text {font-family: sans-serif; font-style: normal; font-weight: lighter; font-size: 8pt; color:black;}
+.big-header { font-family: sans-serif; font-style: normal; font-weight: bold; font-size: 9pt; color: white; border-top:10px solid white;}
+.light-row {background:#FFFFFF}
+.dark-row {background:#EEEEFF}
+.header {background:#99AADD}
+#indent {word-wrap : break-word;width :300px;text-indent:10px;}
+</STYLE>
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/web/site.xsl b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.updatesite/web/site.xsl
similarity index 99%
rename from eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/web/site.xsl
rename to eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.updatesite/web/site.xsl
index 4a2d095..5582b74 100644
--- a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/web/site.xsl
+++ b/eclipse-tools/sca2amalthea/releng/org.eclipse.app4mc.sca2amalthea.updatesite/web/site.xsl
@@ -1,214 +1,214 @@
-<xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:msxsl="urn:schemas-microsoft-com:xslt">
-<xsl:output method="html" encoding="UTF-8"/>
-<xsl:key name="cat" match="category" use="@name"/>
-<xsl:template match="/">
-<xsl:for-each select="site">
- <html>
- <head>
- <title>org.eclipse.app4mc.sca2amalthea.updatesite</title>
- <style>@import url("web/site.css");</style>
- </head>
- <body>
- <h1 class="title">org.eclipse.app4mc.sca2amalthea.updatesite</h1>
- <p class="bodyText"><xsl:value-of select="description"/></p>
- <table width="100%" border="0" cellspacing="1" cellpadding="2">
- <xsl:for-each select="category-def">
- <xsl:sort select="@label" order="ascending" case-order="upper-first"/>
- <xsl:sort select="@name" order="ascending" case-order="upper-first"/>
- <xsl:if test="count(key('cat',@name)) != 0">
- <tr class="header">
- <td class="sub-header" width="30%">
- <xsl:value-of select="@name"/>
- </td>
- <td class="sub-header" width="70%">
- <xsl:value-of select="@label"/>
- </td>
- </tr>
- <xsl:for-each select="key('cat',@name)">
- <xsl:sort select="ancestor::feature//@version" order="ascending"/>
- <xsl:sort select="ancestor::feature//@id" order="ascending" case-order="upper-first"/>
- <tr>
- <xsl:choose>
- <xsl:when test="(position() mod 2 = 1)">
- <xsl:attribute name="class">dark-row</xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
- <xsl:attribute name="class">light-row</xsl:attribute>
- </xsl:otherwise>
- </xsl:choose>
- <td class="log-text" id="indent">
- <xsl:choose>
- <xsl:when test="ancestor::feature//@label">
- <a href="{ancestor::feature//@url}"><xsl:value-of select="ancestor::feature//@label"/></a>
- <br/>
- <div id="indent">
- (<xsl:value-of select="ancestor::feature//@id"/> - <xsl:value-of select="ancestor::feature//@version"/>)
- </div>
- </xsl:when>
- <xsl:otherwise>
- <a href="{ancestor::feature//@url}"><xsl:value-of select="ancestor::feature//@id"/> - <xsl:value-of select="ancestor::feature//@version"/></a>
- </xsl:otherwise>
- </xsl:choose>
- <br />
- </td>
- <td>
- <table>
- <xsl:if test="ancestor::feature//@os">
- <tr><td class="log-text" id="indent">Operating Systems:</td>
- <td class="log-text" id="indent"><xsl:value-of select="ancestor::feature//@os"/></td>
- </tr>
- </xsl:if>
- <xsl:if test="ancestor::feature//@ws">
- <tr><td class="log-text" id="indent">Windows Systems:</td>
- <td class="log-text" id="indent"><xsl:value-of select="ancestor::feature//@ws"/></td>
- </tr>
- </xsl:if>
- <xsl:if test="ancestor::feature//@nl">
- <tr><td class="log-text" id="indent">Languages:</td>
- <td class="log-text" id="indent"><xsl:value-of select="ancestor::feature//@nl"/></td>
- </tr>
- </xsl:if>
- <xsl:if test="ancestor::feature//@arch">
- <tr><td class="log-text" id="indent">Architecture:</td>
- <td class="log-text" id="indent"><xsl:value-of select="ancestor::feature//@arch"/></td>
- </tr>
- </xsl:if>
- </table>
- </td>
- </tr>
- </xsl:for-each>
- <tr><td class="spacer"><br/></td><td class="spacer"><br/></td></tr>
- </xsl:if>
- </xsl:for-each>
- <xsl:if test="count(feature) > count(feature/category)">
- <tr class="header">
- <td class="sub-header" colspan="2">
- Uncategorized
- </td>
- </tr>
- </xsl:if>
- <xsl:choose>
- <xsl:when test="function-available('msxsl:node-set')">
- <xsl:variable name="rtf-nodes">
- <xsl:for-each select="feature[not(category)]">
- <xsl:sort select="@id" order="ascending" case-order="upper-first"/>
- <xsl:sort select="@version" order="ascending" />
- <xsl:value-of select="."/>
- <xsl:copy-of select="." />
- </xsl:for-each>
- </xsl:variable>
- <xsl:variable name="myNodeSet" select="msxsl:node-set($rtf-nodes)/*"/>
- <xsl:for-each select="$myNodeSet">
- <tr>
- <xsl:choose>
- <xsl:when test="position() mod 2 = 1">
- <xsl:attribute name="class">dark-row</xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
- <xsl:attribute name="class">light-row</xsl:attribute>
- </xsl:otherwise>
- </xsl:choose>
- <td class="log-text" id="indent">
- <xsl:choose>
- <xsl:when test="@label">
- <a href="{@url}"><xsl:value-of select="@label"/></a>
- <br />
- <div id="indent">
- (<xsl:value-of select="@id"/> - <xsl:value-of select="@version"/>)
- </div>
- </xsl:when>
- <xsl:otherwise>
- <a href="{@url}"><xsl:value-of select="@id"/> - <xsl:value-of select="@version"/></a>
- </xsl:otherwise>
- </xsl:choose>
- <br /><br />
- </td>
- <td>
- <table>
- <xsl:if test="@os">
- <tr><td class="log-text" id="indent">Operating Systems:</td>
- <td class="log-text" id="indent"><xsl:value-of select="@os"/></td>
- </tr>
- </xsl:if>
- <xsl:if test="@ws">
- <tr><td class="log-text" id="indent">Windows Systems:</td>
- <td class="log-text" id="indent"><xsl:value-of select="@ws"/></td>
- </tr>
- </xsl:if>
- <xsl:if test="@nl">
- <tr><td class="log-text" id="indent">Languages:</td>
- <td class="log-text" id="indent"><xsl:value-of select="@nl"/></td>
- </tr>
- </xsl:if>
- <xsl:if test="@arch">
- <tr><td class="log-text" id="indent">Architecture:</td>
- <td class="log-text" id="indent"><xsl:value-of select="@arch"/></td>
- </tr>
- </xsl:if>
- </table>
- </td>
- </tr>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:for-each select="feature[not(category)]">
- <xsl:sort select="@id" order="ascending" case-order="upper-first"/>
- <xsl:sort select="@version" order="ascending" />
- <tr>
- <xsl:choose>
- <xsl:when test="count(preceding-sibling::feature[not(category)]) mod 2 = 1">
- <xsl:attribute name="class">dark-row</xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
- <xsl:attribute name="class">light-row</xsl:attribute>
- </xsl:otherwise>
- </xsl:choose>
- <td class="log-text" id="indent">
- <xsl:choose>
- <xsl:when test="@label">
- <a href="{@url}"><xsl:value-of select="@label"/></a>
- <br />
- <div id="indent">
- (<xsl:value-of select="@id"/> - <xsl:value-of select="@version"/>)
- </div>
- </xsl:when>
- <xsl:otherwise>
- <a href="{@url}"><xsl:value-of select="@id"/> - <xsl:value-of select="@version"/></a>
- </xsl:otherwise>
- </xsl:choose>
- <br /><br />
- </td>
- <td>
- <table>
- <xsl:if test="@os">
- <tr><td class="log-text" id="indent">Operating Systems:</td>
- <td class="log-text" id="indent"><xsl:value-of select="@os"/></td>
- </tr>
- </xsl:if>
- <xsl:if test="@ws">
- <tr><td class="log-text" id="indent">Windows Systems:</td>
- <td class="log-text" id="indent"><xsl:value-of select="@ws"/></td>
- </tr>
- </xsl:if>
- <xsl:if test="@nl">
- <tr><td class="log-text" id="indent">Languages:</td>
- <td class="log-text" id="indent"><xsl:value-of select="@nl"/></td>
- </tr>
- </xsl:if>
- <xsl:if test="@arch">
- <tr><td class="log-text" id="indent">Architecture:</td>
- <td class="log-text" id="indent"><xsl:value-of select="@arch"/></td>
- </tr>
- </xsl:if>
- </table>
- </td>
- </tr>
- </xsl:for-each>
- </xsl:otherwise>
- </xsl:choose>
- </table>
- </body>
- </html>
-</xsl:for-each>
-</xsl:template>
-</xsl:stylesheet>
+<xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:msxsl="urn:schemas-microsoft-com:xslt">
+<xsl:output method="html" encoding="UTF-8"/>
+<xsl:key name="cat" match="category" use="@name"/>
+<xsl:template match="/">
+<xsl:for-each select="site">
+ <html>
+ <head>
+ <title>org.eclipse.app4mc.sca2amalthea.updatesite</title>
+ <style>@import url("web/site.css");</style>
+ </head>
+ <body>
+ <h1 class="title">org.eclipse.app4mc.sca2amalthea.updatesite</h1>
+ <p class="bodyText"><xsl:value-of select="description"/></p>
+ <table width="100%" border="0" cellspacing="1" cellpadding="2">
+ <xsl:for-each select="category-def">
+ <xsl:sort select="@label" order="ascending" case-order="upper-first"/>
+ <xsl:sort select="@name" order="ascending" case-order="upper-first"/>
+ <xsl:if test="count(key('cat',@name)) != 0">
+ <tr class="header">
+ <td class="sub-header" width="30%">
+ <xsl:value-of select="@name"/>
+ </td>
+ <td class="sub-header" width="70%">
+ <xsl:value-of select="@label"/>
+ </td>
+ </tr>
+ <xsl:for-each select="key('cat',@name)">
+ <xsl:sort select="ancestor::feature//@version" order="ascending"/>
+ <xsl:sort select="ancestor::feature//@id" order="ascending" case-order="upper-first"/>
+ <tr>
+ <xsl:choose>
+ <xsl:when test="(position() mod 2 = 1)">
+ <xsl:attribute name="class">dark-row</xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="class">light-row</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ <td class="log-text" id="indent">
+ <xsl:choose>
+ <xsl:when test="ancestor::feature//@label">
+ <a href="{ancestor::feature//@url}"><xsl:value-of select="ancestor::feature//@label"/></a>
+ <br/>
+ <div id="indent">
+ (<xsl:value-of select="ancestor::feature//@id"/> - <xsl:value-of select="ancestor::feature//@version"/>)
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <a href="{ancestor::feature//@url}"><xsl:value-of select="ancestor::feature//@id"/> - <xsl:value-of select="ancestor::feature//@version"/></a>
+ </xsl:otherwise>
+ </xsl:choose>
+ <br />
+ </td>
+ <td>
+ <table>
+ <xsl:if test="ancestor::feature//@os">
+ <tr><td class="log-text" id="indent">Operating Systems:</td>
+ <td class="log-text" id="indent"><xsl:value-of select="ancestor::feature//@os"/></td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="ancestor::feature//@ws">
+ <tr><td class="log-text" id="indent">Windows Systems:</td>
+ <td class="log-text" id="indent"><xsl:value-of select="ancestor::feature//@ws"/></td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="ancestor::feature//@nl">
+ <tr><td class="log-text" id="indent">Languages:</td>
+ <td class="log-text" id="indent"><xsl:value-of select="ancestor::feature//@nl"/></td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="ancestor::feature//@arch">
+ <tr><td class="log-text" id="indent">Architecture:</td>
+ <td class="log-text" id="indent"><xsl:value-of select="ancestor::feature//@arch"/></td>
+ </tr>
+ </xsl:if>
+ </table>
+ </td>
+ </tr>
+ </xsl:for-each>
+ <tr><td class="spacer"><br/></td><td class="spacer"><br/></td></tr>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:if test="count(feature) > count(feature/category)">
+ <tr class="header">
+ <td class="sub-header" colspan="2">
+ Uncategorized
+ </td>
+ </tr>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="function-available('msxsl:node-set')">
+ <xsl:variable name="rtf-nodes">
+ <xsl:for-each select="feature[not(category)]">
+ <xsl:sort select="@id" order="ascending" case-order="upper-first"/>
+ <xsl:sort select="@version" order="ascending" />
+ <xsl:value-of select="."/>
+ <xsl:copy-of select="." />
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:variable name="myNodeSet" select="msxsl:node-set($rtf-nodes)/*"/>
+ <xsl:for-each select="$myNodeSet">
+ <tr>
+ <xsl:choose>
+ <xsl:when test="position() mod 2 = 1">
+ <xsl:attribute name="class">dark-row</xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="class">light-row</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ <td class="log-text" id="indent">
+ <xsl:choose>
+ <xsl:when test="@label">
+ <a href="{@url}"><xsl:value-of select="@label"/></a>
+ <br />
+ <div id="indent">
+ (<xsl:value-of select="@id"/> - <xsl:value-of select="@version"/>)
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <a href="{@url}"><xsl:value-of select="@id"/> - <xsl:value-of select="@version"/></a>
+ </xsl:otherwise>
+ </xsl:choose>
+ <br /><br />
+ </td>
+ <td>
+ <table>
+ <xsl:if test="@os">
+ <tr><td class="log-text" id="indent">Operating Systems:</td>
+ <td class="log-text" id="indent"><xsl:value-of select="@os"/></td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="@ws">
+ <tr><td class="log-text" id="indent">Windows Systems:</td>
+ <td class="log-text" id="indent"><xsl:value-of select="@ws"/></td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="@nl">
+ <tr><td class="log-text" id="indent">Languages:</td>
+ <td class="log-text" id="indent"><xsl:value-of select="@nl"/></td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="@arch">
+ <tr><td class="log-text" id="indent">Architecture:</td>
+ <td class="log-text" id="indent"><xsl:value-of select="@arch"/></td>
+ </tr>
+ </xsl:if>
+ </table>
+ </td>
+ </tr>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="feature[not(category)]">
+ <xsl:sort select="@id" order="ascending" case-order="upper-first"/>
+ <xsl:sort select="@version" order="ascending" />
+ <tr>
+ <xsl:choose>
+ <xsl:when test="count(preceding-sibling::feature[not(category)]) mod 2 = 1">
+ <xsl:attribute name="class">dark-row</xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="class">light-row</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ <td class="log-text" id="indent">
+ <xsl:choose>
+ <xsl:when test="@label">
+ <a href="{@url}"><xsl:value-of select="@label"/></a>
+ <br />
+ <div id="indent">
+ (<xsl:value-of select="@id"/> - <xsl:value-of select="@version"/>)
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <a href="{@url}"><xsl:value-of select="@id"/> - <xsl:value-of select="@version"/></a>
+ </xsl:otherwise>
+ </xsl:choose>
+ <br /><br />
+ </td>
+ <td>
+ <table>
+ <xsl:if test="@os">
+ <tr><td class="log-text" id="indent">Operating Systems:</td>
+ <td class="log-text" id="indent"><xsl:value-of select="@os"/></td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="@ws">
+ <tr><td class="log-text" id="indent">Windows Systems:</td>
+ <td class="log-text" id="indent"><xsl:value-of select="@ws"/></td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="@nl">
+ <tr><td class="log-text" id="indent">Languages:</td>
+ <td class="log-text" id="indent"><xsl:value-of select="@nl"/></td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="@arch">
+ <tr><td class="log-text" id="indent">Architecture:</td>
+ <td class="log-text" id="indent"><xsl:value-of select="@arch"/></td>
+ </tr>
+ </xsl:if>
+ </table>
+ </td>
+ </tr>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </table>
+ </body>
+ </html>
+</xsl:for-each>
+</xsl:template>
+</xsl:stylesheet>