Merge branch 'zmeer/feature/emfGraphicalViewer'
diff --git a/description.txt b/description.txt
index 49135f9..b8de5c8 100644
--- a/description.txt
+++ b/description.txt
@@ -1 +1,5 @@
1.Application Platform Project for MultiCore (APP4MC) - Development tools.
+
+Development workflow:
+
+ - master: single branch for all activities
diff --git a/eclipse-tools/model-transformation/README.md b/eclipse-tools/model-transformation/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/eclipse-tools/model-transformation/README.md
diff --git a/eclipse-tools/model-transformation/build/.gitignore b/eclipse-tools/model-transformation/build/.gitignore
new file mode 100644
index 0000000..3197db3
--- /dev/null
+++ b/eclipse-tools/model-transformation/build/.gitignore
@@ -0,0 +1,2 @@
+/bin/
+/xtend-gen/
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/build/Target/.project b/eclipse-tools/model-transformation/build/Target/.project
new file mode 100644
index 0000000..b6b8305
--- /dev/null
+++ b/eclipse-tools/model-transformation/build/Target/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Target</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
diff --git a/eclipse-tools/model-transformation/build/Target/base.target b/eclipse-tools/model-transformation/build/Target/base.target
new file mode 100644
index 0000000..bfd7b62
--- /dev/null
+++ b/eclipse-tools/model-transformation/build/Target/base.target
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde version="3.8"?><target name="Running Platform" sequenceNumber="20">
+<locations>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.emf.ecore.xcore.feature.group" version="1.3.0.v20150602-0808"/>
+<unit id="org.eclipse.emf.sdk.feature.group" version="2.11.2.v20160208-0841"/>
+<unit id="org.eclipse.sphinx.sdk.feature.group" version="0.9.2.201601200932"/>
+<repository location="http://download.eclipse.org/releases/mars/"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.emf.ecore.feature.group" version="2.11.2.v20160208-0816"/>
+<unit id="org.eclipse.platform.feature.group" version="4.5.2.v20160212-1500"/>
+<repository location="http://download.eclipse.org/eclipse/updates/4.5"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.app4mc.amalthea.models.feature.group" version="0.8.1.201707281435"/>
+<unit id="org.eclipse.app4mc.amalthea.models.sdk.feature.group" version="0.8.1.201707281435"/>
+<repository location="http://download.eclipse.org/app4mc/updatesites/releases/0.8.1/"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.app4mc.emfutils.content.extractor.feature.feature.group" version="0.8.0.201710041454"/>
+<unit id="org.eclipse.app4mc.emfutils.metamodelviewer.feature.feature.group" version="0.8.0.201710041454"/>
+<repository location="https://ci.eclipse.org/app4mc/job/emf-graphical-viewer-develop/lastSuccessfulBuild/artifact/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/target/repository/"/>
+</location>
+</locations>
+<environment>
+<os>win32</os>
+<ws>win32</ws>
+<arch>x86_64</arch>
+<nl>en_US</nl>
+</environment>
+</target>
diff --git a/eclipse-tools/model-transformation/doc/.gitignore b/eclipse-tools/model-transformation/doc/.gitignore
new file mode 100644
index 0000000..d3fb94c
--- /dev/null
+++ b/eclipse-tools/model-transformation/doc/.gitignore
@@ -0,0 +1,3 @@
+/bin/
+/target/
+/xtend-gen/
\ No newline at end of file
diff --git "a/eclipse-tools/model-transformation/doc/AMALTHEA_Transformation_Engine \050ATE\051.pptx" "b/eclipse-tools/model-transformation/doc/AMALTHEA_Transformation_Engine \050ATE\051.pptx"
new file mode 100644
index 0000000..cade096
--- /dev/null
+++ "b/eclipse-tools/model-transformation/doc/AMALTHEA_Transformation_Engine \050ATE\051.pptx"
Binary files differ
diff --git a/eclipse-tools/model-transformation/doc/overview.bmp b/eclipse-tools/model-transformation/doc/overview.bmp
new file mode 100644
index 0000000..70542a5
--- /dev/null
+++ b/eclipse-tools/model-transformation/doc/overview.bmp
Binary files differ
diff --git a/eclipse-tools/model-transformation/features/.gitignore b/eclipse-tools/model-transformation/features/.gitignore
new file mode 100644
index 0000000..d3fb94c
--- /dev/null
+++ b/eclipse-tools/model-transformation/features/.gitignore
@@ -0,0 +1,3 @@
+/bin/
+/target/
+/xtend-gen/
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/.classpath b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/.classpath
new file mode 100644
index 0000000..428337e
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/.classpath
@@ -0,0 +1,8 @@
+<?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="src" path="xtend-gen"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/.gitignore b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/.gitignore
new file mode 100644
index 0000000..d3fb94c
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/.gitignore
@@ -0,0 +1,3 @@
+/bin/
+/target/
+/xtend-gen/
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/.project b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/.project
new file mode 100644
index 0000000..fa5bc04
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.app4mc.m2m.transformation.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <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>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ </natures>
+</projectDescription>
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/.settings/org.eclipse.jdt.core.prefs b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.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/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/META-INF/MANIFEST.MF b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..ae5e443
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Transformation
+Bundle-SymbolicName: com.bosch.m2m.app4mc.m2m.transformation.core;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: BOSCH
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: com.google.inject;bundle-version="3.0.0",
+ org.apache.log4j;bundle-version="1.2.15",
+ org.eclipse.emf;bundle-version="2.6.0",
+ org.eclipse.app4mc.amalthea.model;bundle-version="0.8.1";visibility:=reexport,
+ org.eclipse.app4mc.sample.simulation.model;bundle-version="0.1.0",
+ org.eclipse.app4mc.transformation.extensions;bundle-version="1.0.0"
+Export-Package: com.bosch.m2m.app4mc.m2m.transformation.core.configuration,
+ com.bosch.m2m.app4mc.m2m.transformation.core.module
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/build.properties b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/build.properties
new file mode 100644
index 0000000..600d1b4
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/build.properties
@@ -0,0 +1,6 @@
+source.. = src/,\
+ xtend-gen/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/plugin.xml b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/plugin.xml
new file mode 100644
index 0000000..1e44215
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/plugin.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.app4mc.transformation.extensions.m2m">
+ <m2m
+ class="com.bosch.m2m.app4mc.m2m.transformation.core.configuration.M2MTransformation"
+ enabled="true"
+ id="com.bosch.m2m.app4mc.simulation.generic.transformation.m2m">
+ </m2m>
+ </extension>
+ <extension
+ point="org.eclipse.app4mc.transformation.extensions.module">
+ <module
+ class="com.bosch.m2m.app4mc.m2m.transformation.core.module.DefaultM2MInjectorModule"
+ enabled="true"
+ id="com.bosch.m2m.app4mc.m2m.transformation.core.module1">
+ </module>
+ </extension>
+
+</plugin>
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/pom.xml b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/pom.xml
new file mode 100644
index 0000000..979c4ee
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/pom.xml
@@ -0,0 +1,83 @@
+<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>./com.bosch.m2m.simulation.build</relativePath>
+ <groupId>m2m</groupId>
+ <artifactId>com.bosch.m2m.simulation.build</artifactId>
+ <version>1.0.0.qualifier</version>
+ </parent>
+
+ <artifactId>org.eclipse.app4mc.transformation.extensions</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>
+ <groupId>m2m</groupId>
+</project>
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/configuration/M2MTransformation.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/configuration/M2MTransformation.java
new file mode 100644
index 0000000..1962b09
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/configuration/M2MTransformation.java
@@ -0,0 +1,70 @@
+package com.bosch.m2m.app4mc.m2m.transformation.core.configuration;
+
+import java.util.Properties;
+
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
+import org.eclipse.app4mc.SampleSimulation.SimulationPackage;
+import org.eclipse.app4mc.transformation.extensions.executiontype.IModelToModelTransformation;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+
+import com.bosch.m2m.app4mc.m2m.transformation.core.model.loaders.AmaltheaMultiFileLoader;
+
+public class M2MTransformation implements IModelToModelTransformation {
+
+ private Properties parameters;
+
+ private Logger logger=LogManager.getLogger(M2MTransformation.class);
+
+ public M2MTransformation() {
+ // TODO Auto-generated constructor stub
+ }
+
+ @Override
+ public ResourceSet getInputResourceSet() {
+
+ if(parameters !=null){
+
+ String folderPath = parameters.getProperty("amalthea_models_folder");
+
+ if(folderPath !=null){
+
+ ResourceSet resourceSet = new AmaltheaMultiFileLoader().loadMultipleFiles(folderPath);
+
+ return resourceSet;
+ }else{
+ logger.error("amalthea_models_folder parameter not set", new NullPointerException("amalthea_models_folder property not set"));
+ }
+
+ }else{
+ logger.error("Parameters object not set ", new NullPointerException("Parameter object is null"));
+ }
+ return null;
+ }
+
+ @Override
+ public ResourceSet getOuputResourceSet() {
+
+ ResourceSet outputRurceSet=new ResourceSetImpl();
+
+ outputRurceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put
+ (Resource.Factory.Registry.DEFAULT_EXTENSION,
+ new XMIResourceFactoryImpl());
+
+ outputRurceSet.getPackageRegistry().put
+ (SimulationPackage.eNS_URI,
+ SimulationPackage.eINSTANCE);
+
+ return outputRurceSet;
+ }
+
+ @Override
+ public void setProperties(Properties parameters) {
+
+ this.parameters=parameters;
+ }
+
+}
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/m2m/templates/AmaltheaTransformer.xtend b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/m2m/templates/AmaltheaTransformer.xtend
new file mode 100644
index 0000000..4426b07
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/m2m/templates/AmaltheaTransformer.xtend
@@ -0,0 +1,74 @@
+package com.bosch.m2m.app4mc.m2m.transformation.core.m2m.templates
+
+import com.google.inject.Inject
+import java.io.File
+import org.eclipse.app4mc.amalthea.model.Amalthea
+import org.eclipse.app4mc.transformation.extensions.base.templates.RootTransformer
+import org.eclipse.emf.common.util.URI
+import org.eclipse.emf.ecore.resource.ResourceSet
+import org.eclipse.app4mc.SampleSimulation.SimulationFactory
+
+class AmaltheaTransformer extends RootTransformer{
+
+ /*- Factory initiaization */
+ val simulationRootFactory = SimulationFactory.eINSTANCE
+
+
+ /*- Transformer classes initiaization */
+ @Inject extension SWTransformer sw
+
+ @Inject extension HWTransformer hw
+
+ @Inject extension OSTransformer os
+
+ @Inject extension MappingTransformer mt
+
+
+
+ override m2mTransformation(ResourceSet inputResourceSet, ResourceSet outputResourceSet) {
+
+ var int fileIndex=1
+
+ for(resource : inputResourceSet.resources){
+ for(content : resource.contents){
+
+ logger.info("Processing file : "+resource.URI)
+
+ val simulationModelRoot=transform(content as Amalthea)
+
+ val out_uri=URI.createFileURI(getProperty("simulation_models_folder")+File.separator+fileIndex+++".root")
+
+ val out_resource=outputResourceSet.createResource(out_uri)
+
+ out_resource.contents.add(simulationModelRoot)
+
+ out_resource.save(null)
+
+ logger.info("Transformed model file generated at : "+ out_uri)
+
+ }
+ }
+ }
+
+
+
+ def create simulationRootFactory.createModel transform(Amalthea amalthea){
+
+ customObjsStore.injectMembers(SWTransformer , sw)
+
+ customObjsStore.injectMembers(HWTransformer , hw)
+
+ customObjsStore.injectMembers(OSTransformer , os)
+
+ customObjsStore.injectMembers(MappingTransformer , mt)
+
+
+ hw.transfromHWModel(amalthea.hwModel,it)
+
+ os.transfromOSModel(amalthea.osModel,it)
+
+ mt.transfromMappingModel(amalthea.mappingModel,it)
+
+ }
+
+}
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/m2m/templates/HWTransformer.xtend b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/m2m/templates/HWTransformer.xtend
new file mode 100644
index 0000000..4f941d6
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/m2m/templates/HWTransformer.xtend
@@ -0,0 +1,46 @@
+package com.bosch.m2m.app4mc.m2m.transformation.core.m2m.templates
+
+import org.eclipse.app4mc.SampleSimulation.Model
+import org.eclipse.app4mc.SampleSimulation.SimulationFactory
+import org.eclipse.app4mc.amalthea.model.AmaltheaFactory
+import org.eclipse.app4mc.amalthea.model.HWModel
+import org.eclipse.app4mc.amalthea.model.Memory
+import org.eclipse.app4mc.transformation.extensions.base.templates.AbstractTransformer
+
+public class HWTransformer extends AbstractTransformer{
+
+ def OSTransformer getOS(){
+ return customObjsStore.getInstance(OSTransformer)
+ }
+
+ /*- Factory initiaization */
+ val simulationFactory = SimulationFactory.eINSTANCE
+
+
+ val amaltheaFactory = AmaltheaFactory.eINSTANCE
+
+
+ public def transfromHWModel(HWModel amaltheaModel, Model simulationModel){
+
+ for(amaltheaEcu:amaltheaModel?.system?.ecus){
+
+ for(amaltheaMicroController: amaltheaEcu?.microcontrollers){
+
+ for(memory: amaltheaMicroController?.memories){
+
+ val simulationModelMemory = createMemory(memory);
+
+ simulationModel.memories.add(simulationModelMemory)
+
+ }
+
+ }
+ }
+ }
+
+
+ public def create simulationFactory.createMemory createMemory(Memory amltMemory){
+ name=amltMemory.name
+ }
+
+}
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/m2m/templates/LabelTransformer.xtend b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/m2m/templates/LabelTransformer.xtend
new file mode 100644
index 0000000..d5f4595
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/m2m/templates/LabelTransformer.xtend
@@ -0,0 +1,5 @@
+package com.bosch.m2m.app4mc.m2m.transformation.core.m2m.templates
+
+class LabelTransformer {
+
+}
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/m2m/templates/MappingTransformer.xtend b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/m2m/templates/MappingTransformer.xtend
new file mode 100644
index 0000000..9563510
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/m2m/templates/MappingTransformer.xtend
@@ -0,0 +1,47 @@
+package com.bosch.m2m.app4mc.m2m.transformation.core.m2m.templates;
+
+import org.eclipse.app4mc.SampleSimulation.Model
+import org.eclipse.app4mc.SampleSimulation.SimulationFactory
+import org.eclipse.app4mc.amalthea.model.AmaltheaFactory
+import org.eclipse.app4mc.amalthea.model.MappingModel
+import org.eclipse.app4mc.amalthea.model.TaskScheduler
+import org.eclipse.app4mc.transformation.extensions.base.templates.AbstractTransformer
+
+public class MappingTransformer extends AbstractTransformer{
+
+
+
+ def HWTransformer getHW(){
+ return customObjsStore.getInstance(HWTransformer)
+ }
+
+ def OSTransformer getOS(){
+ return customObjsStore.getInstance(OSTransformer)
+ }
+
+
+
+ /*- Factory initiaization */
+ val simulationFactory = SimulationFactory.eINSTANCE
+
+
+ val amaltheaFactory = AmaltheaFactory.eINSTANCE
+
+ public def transfromMappingModel(MappingModel amltMappingModel, Model simulationModel){
+
+ amltMappingModel?.schedulerAllocation?.forEach[amltSA|
+
+ if(amltSA.scheduler instanceof TaskScheduler){
+ val simulationModelScheduler= getOS.createScheduler(amltSA.scheduler as TaskScheduler)
+
+ if(simulationModelScheduler.eContainer == null){
+ simulationModel.schedulers.add(simulationModelScheduler)
+ }
+
+ }
+
+ ]
+
+ }
+
+}
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/m2m/templates/OSTransformer.xtend b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/m2m/templates/OSTransformer.xtend
new file mode 100644
index 0000000..2276867
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/m2m/templates/OSTransformer.xtend
@@ -0,0 +1,38 @@
+package com.bosch.m2m.app4mc.m2m.transformation.core.m2m.templates;
+
+import org.eclipse.app4mc.SampleSimulation.Model
+import org.eclipse.app4mc.SampleSimulation.SimulationFactory
+import org.eclipse.app4mc.amalthea.model.OSModel
+import org.eclipse.app4mc.amalthea.model.TaskScheduler
+import org.eclipse.app4mc.transformation.extensions.base.templates.AbstractTransformer
+
+public class OSTransformer extends AbstractTransformer{
+
+
+ /*- Factory initiaization */
+ val simulationFactory = SimulationFactory.eINSTANCE
+
+
+ public def transfromOSModel(OSModel amaltheaOSModel, Model simulationModel){
+
+ amaltheaOSModel.operatingSystems.forEach[amltOs|
+
+ amltOs.taskSchedulers.forEach[var simulationScheduler=createScheduler(it)
+
+ if(simulationScheduler.eContainer==null){
+ simulationModel.schedulers.add(simulationScheduler)
+ }
+ ]
+
+ ]
+
+ }
+
+ def create simulationFactory.createScheduler createScheduler(TaskScheduler amltTs){
+
+ name=amltTs.name
+ }
+
+
+
+}
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/m2m/templates/SWTransformer.xtend b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/m2m/templates/SWTransformer.xtend
new file mode 100644
index 0000000..53b1504
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/m2m/templates/SWTransformer.xtend
@@ -0,0 +1,18 @@
+package com.bosch.m2m.app4mc.m2m.transformation.core.m2m.templates
+
+import org.eclipse.app4mc.transformation.extensions.base.templates.AbstractTransformer
+
+public class SWTransformer extends AbstractTransformer {
+
+
+ String name
+
+ public def String getName() {
+ return name;
+ }
+
+ public def void setName(String name) {
+ this.name = name;
+ }
+
+}
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/model/loaders/AmaltheaMultiFileLoader.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/model/loaders/AmaltheaMultiFileLoader.java
new file mode 100644
index 0000000..01ee2a5
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/model/loaders/AmaltheaMultiFileLoader.java
@@ -0,0 +1,80 @@
+package com.bosch.m2m.app4mc.m2m.transformation.core.model.loaders;
+
+import java.io.File;
+import java.io.FilenameFilter;
+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.AmaltheaPackage;
+import org.eclipse.app4mc.amalthea.sphinx.AmaltheaResourceFactory;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+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.resource.ExtendedResourceSet;
+import org.eclipse.sphinx.emf.resource.ExtendedResourceSetImpl;
+
+public class AmaltheaMultiFileLoader {
+
+ public ResourceSet loadMultipleFiles(String directoryPath){
+
+ File folder = new File(directoryPath);
+
+ if(folder.isDirectory()){
+ File[] listFiles = folder.listFiles( new FilenameFilter() {
+
+ @Override
+ public boolean accept(File file, String name) {
+
+ if(name.endsWith(".amxmi")){
+ return true;
+ }
+
+ return false;
+ }
+ });
+
+ ResourceSet resourceSet = initializeResourceSet();
+
+ loadMultipleFiles(resourceSet, listFiles);
+
+ return resourceSet;
+ }
+
+ return new ResourceSetImpl();
+
+ }
+
+ private List<Amalthea> loadMultipleFiles(ResourceSet resourceSet, File[] listFiles) {
+
+ List<Amalthea> models =new ArrayList<Amalthea>();
+
+ for (File amxmiFile : listFiles) {
+
+ final Resource res = resourceSet.createResource(URI.createURI("file:////"+amxmiFile.getAbsolutePath()));
+ try {
+ res.load(null);
+ for (final EObject content : res.getContents()) {
+ if (content instanceof Amalthea) {
+ models.add((Amalthea) content);
+ }
+ }
+ } catch (IOException e) {
+ // ignore
+ }
+ }
+ return models;
+ }
+
+ private static ResourceSet initializeResourceSet() {
+ final ExtendedResourceSet resSet = new ExtendedResourceSetImpl();
+ resSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("amxmi", new AmaltheaResourceFactory());
+ AmaltheaPackage.eINSTANCE.eClass(); // register the package
+
+ return resSet;
+ }
+
+}
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/module/DefaultM2MInjectorModule.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/module/DefaultM2MInjectorModule.java
new file mode 100644
index 0000000..3e35b1d
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.m2m.transformation.core/src/com/bosch/m2m/app4mc/m2m/transformation/core/module/DefaultM2MInjectorModule.java
@@ -0,0 +1,26 @@
+package com.bosch.m2m.app4mc.m2m.transformation.core.module;
+
+import org.eclipse.app4mc.transformation.extensions.AbstractM2MInjectorModule;
+import org.eclipse.app4mc.transformation.extensions.base.templates.RootTransformer;
+
+import com.bosch.m2m.app4mc.m2m.transformation.core.m2m.templates.AmaltheaTransformer;
+
+public class DefaultM2MInjectorModule extends AbstractM2MInjectorModule {
+
+ public DefaultM2MInjectorModule() {
+ }
+
+ @Override
+ protected void configure() {
+
+ initializeBaseConfiguration();
+
+ }
+
+ @Override
+ protected void initializeBaseConfiguration() {
+ super.initializeBaseConfiguration();
+ bind(RootTransformer.class).to(AmaltheaTransformer.class);
+ }
+
+}
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/.classpath b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/.classpath
new file mode 100644
index 0000000..22f3064
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/.project b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/.project
new file mode 100644
index 0000000..a907690
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.app4mc.sample.simulation.model</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/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/META-INF/MANIFEST.MF b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..6ec4c3b
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.app4mc.sample.simulation.model;singleton:=true
+Bundle-Version: 0.1.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.app4mc.SampleSimulation,
+ org.eclipse.app4mc.SampleSimulation.impl,
+ org.eclipse.app4mc.SampleSimulation.util
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/bin/.gitignore b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/bin/.gitignore
new file mode 100644
index 0000000..cf1db2e
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/bin/.gitignore
@@ -0,0 +1 @@
+/org/
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/build.properties b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/build.properties
new file mode 100644
index 0000000..547d4df
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/build.properties
@@ -0,0 +1,19 @@
+# /*******************************************************************************
+# * Copyright (c) 2017 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
+# *******************************************************************************/
+
+bin.includes = .,\
+ model/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/model/Sample.ecore b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/model/Sample.ecore
new file mode 100644
index 0000000..af217e7
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/model/Sample.ecore
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="SampleSimulation" nsURI="http://sample.simulation/1.0" nsPrefix="SampleSimulation">
+ <eClassifiers xsi:type="ecore:EClass" name="Model">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="runnables" upperBound="-1"
+ eType="#//Runnable" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="labels" upperBound="-1"
+ eType="#//Label" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="memories" upperBound="-1"
+ eType="#//Memory" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="schedulers" upperBound="-1"
+ eType="#//Scheduler" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Runnable">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="labels" eType="#//Label"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Label">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Memory">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Scheduler">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/model/Sample.genmodel b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/model/Sample.genmodel
new file mode 100644
index 0000000..dc9edcd
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/model/Sample.genmodel
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="*******************************************************************************
 * Copyright (c) 2017 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
 *******************************************************************************"
+ modelDirectory="/org.eclipse.app4mc.sample.simulation.model/src" modelPluginID="org.eclipse.app4mc.sample.simulation.model"
+ modelName="Sample" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+ importerID="org.eclipse.emf.importer.ecore" complianceLevel="8.0" copyrightFields="false"
+ operationReflection="true" importOrganizing="true">
+ <foreignModel>Sample.ecore</foreignModel>
+ <genPackages prefix="Simulation" basePackage="org.eclipse.app4mc" disposableProviderFactory="true"
+ ecorePackage="Sample.ecore#/">
+ <genClasses ecoreClass="Sample.ecore#//Model">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Sample.ecore#//Model/runnables"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Sample.ecore#//Model/labels"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Sample.ecore#//Model/memories"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Sample.ecore#//Model/schedulers"/>
+ </genClasses>
+ <genClasses ecoreClass="Sample.ecore#//Runnable">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Sample.ecore#//Runnable/labels"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Sample.ecore#//Runnable/name"/>
+ </genClasses>
+ <genClasses ecoreClass="Sample.ecore#//Label">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Sample.ecore#//Label/name"/>
+ </genClasses>
+ <genClasses ecoreClass="Sample.ecore#//Memory">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Sample.ecore#//Memory/name"/>
+ </genClasses>
+ <genClasses ecoreClass="Sample.ecore#//Scheduler">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Sample.ecore#//Scheduler/name"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/plugin.properties b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/plugin.properties
new file mode 100644
index 0000000..ae758cf
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/plugin.properties
@@ -0,0 +1,13 @@
+# /*******************************************************************************
+# * Copyright (c) 2017 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
+# *******************************************************************************/
+
+pluginName = Sample Model
+providerName = www.example.org
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/plugin.xml b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/plugin.xml
new file mode 100644
index 0000000..0b77a3f
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/plugin.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ /*******************************************************************************
+ * Copyright (c) 2017 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
+ *******************************************************************************/
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <!-- @generated Sample -->
+ <package
+ uri="http://sample.simulation/1.0"
+ class="org.eclipse.app4mc.SampleSimulation.SimulationPackage"
+ genModel="model/Sample.genmodel"/>
+ </extension>
+
+</plugin>
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/Label.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/Label.java
new file mode 100644
index 0000000..d36768f
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/Label.java
@@ -0,0 +1,60 @@
+/**
+ * *******************************************************************************
+ * * Copyright (c) 2017 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.SampleSimulation;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Label</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.app4mc.SampleSimulation.Label#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.SampleSimulation.SimulationPackage#getLabel()
+ * @model
+ * @generated
+ */
+public interface Label extends EObject {
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.app4mc.SampleSimulation.SimulationPackage#getLabel_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.app4mc.SampleSimulation.Label#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+} // Label
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/Memory.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/Memory.java
new file mode 100644
index 0000000..e50a04f
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/Memory.java
@@ -0,0 +1,60 @@
+/**
+ * *******************************************************************************
+ * * Copyright (c) 2017 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.SampleSimulation;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Memory</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.app4mc.SampleSimulation.Memory#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.SampleSimulation.SimulationPackage#getMemory()
+ * @model
+ * @generated
+ */
+public interface Memory extends EObject {
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.app4mc.SampleSimulation.SimulationPackage#getMemory_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.app4mc.SampleSimulation.Memory#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+} // Memory
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/Model.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/Model.java
new file mode 100644
index 0000000..82230ab
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/Model.java
@@ -0,0 +1,103 @@
+/**
+ * *******************************************************************************
+ * * Copyright (c) 2017 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.SampleSimulation;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.app4mc.SampleSimulation.Model#getRunnables <em>Runnables</em>}</li>
+ * <li>{@link org.eclipse.app4mc.SampleSimulation.Model#getLabels <em>Labels</em>}</li>
+ * <li>{@link org.eclipse.app4mc.SampleSimulation.Model#getMemories <em>Memories</em>}</li>
+ * <li>{@link org.eclipse.app4mc.SampleSimulation.Model#getSchedulers <em>Schedulers</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.SampleSimulation.SimulationPackage#getModel()
+ * @model
+ * @generated
+ */
+public interface Model extends EObject {
+ /**
+ * Returns the value of the '<em><b>Runnables</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.app4mc.SampleSimulation.Runnable}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Runnables</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Runnables</em>' containment reference list.
+ * @see org.eclipse.app4mc.SampleSimulation.SimulationPackage#getModel_Runnables()
+ * @model containment="true"
+ * @generated
+ */
+ EList<org.eclipse.app4mc.SampleSimulation.Runnable> getRunnables();
+
+ /**
+ * Returns the value of the '<em><b>Labels</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.app4mc.SampleSimulation.Label}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Labels</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Labels</em>' containment reference list.
+ * @see org.eclipse.app4mc.SampleSimulation.SimulationPackage#getModel_Labels()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Label> getLabels();
+
+ /**
+ * Returns the value of the '<em><b>Memories</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.app4mc.SampleSimulation.Memory}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Memories</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Memories</em>' containment reference list.
+ * @see org.eclipse.app4mc.SampleSimulation.SimulationPackage#getModel_Memories()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Memory> getMemories();
+
+ /**
+ * Returns the value of the '<em><b>Schedulers</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.app4mc.SampleSimulation.Scheduler}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Schedulers</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Schedulers</em>' containment reference list.
+ * @see org.eclipse.app4mc.SampleSimulation.SimulationPackage#getModel_Schedulers()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Scheduler> getSchedulers();
+
+} // Model
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/Runnable.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/Runnable.java
new file mode 100644
index 0000000..45cdf81
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/Runnable.java
@@ -0,0 +1,87 @@
+/**
+ * *******************************************************************************
+ * * Copyright (c) 2017 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.SampleSimulation;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Runnable</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.app4mc.SampleSimulation.Runnable#getLabels <em>Labels</em>}</li>
+ * <li>{@link org.eclipse.app4mc.SampleSimulation.Runnable#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.SampleSimulation.SimulationPackage#getRunnable()
+ * @model
+ * @generated
+ */
+public interface Runnable extends EObject {
+ /**
+ * Returns the value of the '<em><b>Labels</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Labels</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Labels</em>' reference.
+ * @see #setLabels(Label)
+ * @see org.eclipse.app4mc.SampleSimulation.SimulationPackage#getRunnable_Labels()
+ * @model
+ * @generated
+ */
+ Label getLabels();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.app4mc.SampleSimulation.Runnable#getLabels <em>Labels</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Labels</em>' reference.
+ * @see #getLabels()
+ * @generated
+ */
+ void setLabels(Label value);
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.app4mc.SampleSimulation.SimulationPackage#getRunnable_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.app4mc.SampleSimulation.Runnable#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+} // Runnable
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/Scheduler.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/Scheduler.java
new file mode 100644
index 0000000..18bbcaf
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/Scheduler.java
@@ -0,0 +1,60 @@
+/**
+ * *******************************************************************************
+ * * Copyright (c) 2017 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.SampleSimulation;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Scheduler</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.app4mc.SampleSimulation.Scheduler#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.app4mc.SampleSimulation.SimulationPackage#getScheduler()
+ * @model
+ * @generated
+ */
+public interface Scheduler extends EObject {
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.app4mc.SampleSimulation.SimulationPackage#getScheduler_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.app4mc.SampleSimulation.Scheduler#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+} // Scheduler
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/SimulationFactory.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/SimulationFactory.java
new file mode 100644
index 0000000..6cb9951
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/SimulationFactory.java
@@ -0,0 +1,88 @@
+/**
+ * *******************************************************************************
+ * * Copyright (c) 2017 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.SampleSimulation;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.SampleSimulation.SimulationPackage
+ * @generated
+ */
+public interface SimulationFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ SimulationFactory eINSTANCE = org.eclipse.app4mc.SampleSimulation.impl.SimulationFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Model</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Model</em>'.
+ * @generated
+ */
+ Model createModel();
+
+ /**
+ * Returns a new object of class '<em>Runnable</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Runnable</em>'.
+ * @generated
+ */
+ Runnable createRunnable();
+
+ /**
+ * Returns a new object of class '<em>Label</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Label</em>'.
+ * @generated
+ */
+ Label createLabel();
+
+ /**
+ * Returns a new object of class '<em>Memory</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Memory</em>'.
+ * @generated
+ */
+ Memory createMemory();
+
+ /**
+ * Returns a new object of class '<em>Scheduler</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Scheduler</em>'.
+ * @generated
+ */
+ Scheduler createScheduler();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ SimulationPackage getSimulationPackage();
+
+} //SimulationFactory
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/SimulationPackage.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/SimulationPackage.java
new file mode 100644
index 0000000..9e9c80c
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/SimulationPackage.java
@@ -0,0 +1,588 @@
+/**
+ * *******************************************************************************
+ * * Copyright (c) 2017 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.SampleSimulation;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.SampleSimulation.SimulationFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface SimulationPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "SampleSimulation";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://sample.simulation/1.0";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "SampleSimulation";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ SimulationPackage eINSTANCE = org.eclipse.app4mc.SampleSimulation.impl.SimulationPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.app4mc.SampleSimulation.impl.ModelImpl <em>Model</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.SampleSimulation.impl.ModelImpl
+ * @see org.eclipse.app4mc.SampleSimulation.impl.SimulationPackageImpl#getModel()
+ * @generated
+ */
+ int MODEL = 0;
+
+ /**
+ * The feature id for the '<em><b>Runnables</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODEL__RUNNABLES = 0;
+
+ /**
+ * The feature id for the '<em><b>Labels</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODEL__LABELS = 1;
+
+ /**
+ * The feature id for the '<em><b>Memories</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODEL__MEMORIES = 2;
+
+ /**
+ * The feature id for the '<em><b>Schedulers</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODEL__SCHEDULERS = 3;
+
+ /**
+ * The number of structural features of the '<em>Model</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODEL_FEATURE_COUNT = 4;
+
+ /**
+ * The number of operations of the '<em>Model</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODEL_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.app4mc.SampleSimulation.impl.RunnableImpl <em>Runnable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.SampleSimulation.impl.RunnableImpl
+ * @see org.eclipse.app4mc.SampleSimulation.impl.SimulationPackageImpl#getRunnable()
+ * @generated
+ */
+ int RUNNABLE = 1;
+
+ /**
+ * The feature id for the '<em><b>Labels</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RUNNABLE__LABELS = 0;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RUNNABLE__NAME = 1;
+
+ /**
+ * The number of structural features of the '<em>Runnable</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RUNNABLE_FEATURE_COUNT = 2;
+
+ /**
+ * The number of operations of the '<em>Runnable</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RUNNABLE_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.app4mc.SampleSimulation.impl.LabelImpl <em>Label</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.SampleSimulation.impl.LabelImpl
+ * @see org.eclipse.app4mc.SampleSimulation.impl.SimulationPackageImpl#getLabel()
+ * @generated
+ */
+ int LABEL = 2;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LABEL__NAME = 0;
+
+ /**
+ * The number of structural features of the '<em>Label</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LABEL_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Label</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LABEL_OPERATION_COUNT = 0;
+
+
+ /**
+ * The meta object id for the '{@link org.eclipse.app4mc.SampleSimulation.impl.MemoryImpl <em>Memory</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.SampleSimulation.impl.MemoryImpl
+ * @see org.eclipse.app4mc.SampleSimulation.impl.SimulationPackageImpl#getMemory()
+ * @generated
+ */
+ int MEMORY = 3;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MEMORY__NAME = 0;
+
+ /**
+ * The number of structural features of the '<em>Memory</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MEMORY_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Memory</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MEMORY_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.app4mc.SampleSimulation.impl.SchedulerImpl <em>Scheduler</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.SampleSimulation.impl.SchedulerImpl
+ * @see org.eclipse.app4mc.SampleSimulation.impl.SimulationPackageImpl#getScheduler()
+ * @generated
+ */
+ int SCHEDULER = 4;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SCHEDULER__NAME = 0;
+
+ /**
+ * The number of structural features of the '<em>Scheduler</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SCHEDULER_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Scheduler</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SCHEDULER_OPERATION_COUNT = 0;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.app4mc.SampleSimulation.Model <em>Model</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Model</em>'.
+ * @see org.eclipse.app4mc.SampleSimulation.Model
+ * @generated
+ */
+ EClass getModel();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.app4mc.SampleSimulation.Model#getRunnables <em>Runnables</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Runnables</em>'.
+ * @see org.eclipse.app4mc.SampleSimulation.Model#getRunnables()
+ * @see #getModel()
+ * @generated
+ */
+ EReference getModel_Runnables();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.app4mc.SampleSimulation.Model#getLabels <em>Labels</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Labels</em>'.
+ * @see org.eclipse.app4mc.SampleSimulation.Model#getLabels()
+ * @see #getModel()
+ * @generated
+ */
+ EReference getModel_Labels();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.app4mc.SampleSimulation.Model#getMemories <em>Memories</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Memories</em>'.
+ * @see org.eclipse.app4mc.SampleSimulation.Model#getMemories()
+ * @see #getModel()
+ * @generated
+ */
+ EReference getModel_Memories();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.app4mc.SampleSimulation.Model#getSchedulers <em>Schedulers</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Schedulers</em>'.
+ * @see org.eclipse.app4mc.SampleSimulation.Model#getSchedulers()
+ * @see #getModel()
+ * @generated
+ */
+ EReference getModel_Schedulers();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.app4mc.SampleSimulation.Runnable <em>Runnable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Runnable</em>'.
+ * @see org.eclipse.app4mc.SampleSimulation.Runnable
+ * @generated
+ */
+ EClass getRunnable();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.app4mc.SampleSimulation.Runnable#getLabels <em>Labels</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Labels</em>'.
+ * @see org.eclipse.app4mc.SampleSimulation.Runnable#getLabels()
+ * @see #getRunnable()
+ * @generated
+ */
+ EReference getRunnable_Labels();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.app4mc.SampleSimulation.Runnable#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.app4mc.SampleSimulation.Runnable#getName()
+ * @see #getRunnable()
+ * @generated
+ */
+ EAttribute getRunnable_Name();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.app4mc.SampleSimulation.Label <em>Label</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Label</em>'.
+ * @see org.eclipse.app4mc.SampleSimulation.Label
+ * @generated
+ */
+ EClass getLabel();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.app4mc.SampleSimulation.Label#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.app4mc.SampleSimulation.Label#getName()
+ * @see #getLabel()
+ * @generated
+ */
+ EAttribute getLabel_Name();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.app4mc.SampleSimulation.Memory <em>Memory</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Memory</em>'.
+ * @see org.eclipse.app4mc.SampleSimulation.Memory
+ * @generated
+ */
+ EClass getMemory();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.app4mc.SampleSimulation.Memory#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.app4mc.SampleSimulation.Memory#getName()
+ * @see #getMemory()
+ * @generated
+ */
+ EAttribute getMemory_Name();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.app4mc.SampleSimulation.Scheduler <em>Scheduler</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Scheduler</em>'.
+ * @see org.eclipse.app4mc.SampleSimulation.Scheduler
+ * @generated
+ */
+ EClass getScheduler();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.app4mc.SampleSimulation.Scheduler#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.app4mc.SampleSimulation.Scheduler#getName()
+ * @see #getScheduler()
+ * @generated
+ */
+ EAttribute getScheduler_Name();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ SimulationFactory getSimulationFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.app4mc.SampleSimulation.impl.ModelImpl <em>Model</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.SampleSimulation.impl.ModelImpl
+ * @see org.eclipse.app4mc.SampleSimulation.impl.SimulationPackageImpl#getModel()
+ * @generated
+ */
+ EClass MODEL = eINSTANCE.getModel();
+
+ /**
+ * The meta object literal for the '<em><b>Runnables</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MODEL__RUNNABLES = eINSTANCE.getModel_Runnables();
+
+ /**
+ * The meta object literal for the '<em><b>Labels</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MODEL__LABELS = eINSTANCE.getModel_Labels();
+
+ /**
+ * The meta object literal for the '<em><b>Memories</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MODEL__MEMORIES = eINSTANCE.getModel_Memories();
+
+ /**
+ * The meta object literal for the '<em><b>Schedulers</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MODEL__SCHEDULERS = eINSTANCE.getModel_Schedulers();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.app4mc.SampleSimulation.impl.RunnableImpl <em>Runnable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.SampleSimulation.impl.RunnableImpl
+ * @see org.eclipse.app4mc.SampleSimulation.impl.SimulationPackageImpl#getRunnable()
+ * @generated
+ */
+ EClass RUNNABLE = eINSTANCE.getRunnable();
+
+ /**
+ * The meta object literal for the '<em><b>Labels</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference RUNNABLE__LABELS = eINSTANCE.getRunnable_Labels();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute RUNNABLE__NAME = eINSTANCE.getRunnable_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.app4mc.SampleSimulation.impl.LabelImpl <em>Label</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.SampleSimulation.impl.LabelImpl
+ * @see org.eclipse.app4mc.SampleSimulation.impl.SimulationPackageImpl#getLabel()
+ * @generated
+ */
+ EClass LABEL = eINSTANCE.getLabel();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LABEL__NAME = eINSTANCE.getLabel_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.app4mc.SampleSimulation.impl.MemoryImpl <em>Memory</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.SampleSimulation.impl.MemoryImpl
+ * @see org.eclipse.app4mc.SampleSimulation.impl.SimulationPackageImpl#getMemory()
+ * @generated
+ */
+ EClass MEMORY = eINSTANCE.getMemory();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute MEMORY__NAME = eINSTANCE.getMemory_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.app4mc.SampleSimulation.impl.SchedulerImpl <em>Scheduler</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.SampleSimulation.impl.SchedulerImpl
+ * @see org.eclipse.app4mc.SampleSimulation.impl.SimulationPackageImpl#getScheduler()
+ * @generated
+ */
+ EClass SCHEDULER = eINSTANCE.getScheduler();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SCHEDULER__NAME = eINSTANCE.getScheduler_Name();
+
+ }
+
+} //SimulationPackage
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/impl/LabelImpl.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/impl/LabelImpl.java
new file mode 100644
index 0000000..e2e5fe9
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/impl/LabelImpl.java
@@ -0,0 +1,173 @@
+/**
+ * *******************************************************************************
+ * * Copyright (c) 2017 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.SampleSimulation.impl;
+
+import org.eclipse.app4mc.SampleSimulation.Label;
+import org.eclipse.app4mc.SampleSimulation.SimulationPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Label</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.app4mc.SampleSimulation.impl.LabelImpl#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class LabelImpl extends MinimalEObjectImpl.Container implements Label {
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LabelImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return SimulationPackage.Literals.LABEL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SimulationPackage.LABEL__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case SimulationPackage.LABEL__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case SimulationPackage.LABEL__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case SimulationPackage.LABEL__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case SimulationPackage.LABEL__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //LabelImpl
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/impl/MemoryImpl.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/impl/MemoryImpl.java
new file mode 100644
index 0000000..75bb6d5
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/impl/MemoryImpl.java
@@ -0,0 +1,173 @@
+/**
+ * *******************************************************************************
+ * * Copyright (c) 2017 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.SampleSimulation.impl;
+
+import org.eclipse.app4mc.SampleSimulation.Memory;
+import org.eclipse.app4mc.SampleSimulation.SimulationPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Memory</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.app4mc.SampleSimulation.impl.MemoryImpl#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class MemoryImpl extends MinimalEObjectImpl.Container implements Memory {
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected MemoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return SimulationPackage.Literals.MEMORY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SimulationPackage.MEMORY__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case SimulationPackage.MEMORY__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case SimulationPackage.MEMORY__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case SimulationPackage.MEMORY__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case SimulationPackage.MEMORY__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //MemoryImpl
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/impl/ModelImpl.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/impl/ModelImpl.java
new file mode 100644
index 0000000..1f34212
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/impl/ModelImpl.java
@@ -0,0 +1,272 @@
+/**
+ * *******************************************************************************
+ * * Copyright (c) 2017 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.SampleSimulation.impl;
+
+import java.util.Collection;
+
+import org.eclipse.app4mc.SampleSimulation.Label;
+import org.eclipse.app4mc.SampleSimulation.Memory;
+import org.eclipse.app4mc.SampleSimulation.Model;
+import org.eclipse.app4mc.SampleSimulation.Scheduler;
+import org.eclipse.app4mc.SampleSimulation.SimulationPackage;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.app4mc.SampleSimulation.impl.ModelImpl#getRunnables <em>Runnables</em>}</li>
+ * <li>{@link org.eclipse.app4mc.SampleSimulation.impl.ModelImpl#getLabels <em>Labels</em>}</li>
+ * <li>{@link org.eclipse.app4mc.SampleSimulation.impl.ModelImpl#getMemories <em>Memories</em>}</li>
+ * <li>{@link org.eclipse.app4mc.SampleSimulation.impl.ModelImpl#getSchedulers <em>Schedulers</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ModelImpl extends MinimalEObjectImpl.Container implements Model {
+ /**
+ * The cached value of the '{@link #getRunnables() <em>Runnables</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRunnables()
+ * @generated
+ * @ordered
+ */
+ protected EList<org.eclipse.app4mc.SampleSimulation.Runnable> runnables;
+
+ /**
+ * The cached value of the '{@link #getLabels() <em>Labels</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLabels()
+ * @generated
+ * @ordered
+ */
+ protected EList<Label> labels;
+
+ /**
+ * The cached value of the '{@link #getMemories() <em>Memories</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMemories()
+ * @generated
+ * @ordered
+ */
+ protected EList<Memory> memories;
+
+ /**
+ * The cached value of the '{@link #getSchedulers() <em>Schedulers</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSchedulers()
+ * @generated
+ * @ordered
+ */
+ protected EList<Scheduler> schedulers;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ModelImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return SimulationPackage.Literals.MODEL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<org.eclipse.app4mc.SampleSimulation.Runnable> getRunnables() {
+ if (runnables == null) {
+ runnables = new EObjectContainmentEList<org.eclipse.app4mc.SampleSimulation.Runnable>(org.eclipse.app4mc.SampleSimulation.Runnable.class, this, SimulationPackage.MODEL__RUNNABLES);
+ }
+ return runnables;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Label> getLabels() {
+ if (labels == null) {
+ labels = new EObjectContainmentEList<Label>(Label.class, this, SimulationPackage.MODEL__LABELS);
+ }
+ return labels;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Memory> getMemories() {
+ if (memories == null) {
+ memories = new EObjectContainmentEList<Memory>(Memory.class, this, SimulationPackage.MODEL__MEMORIES);
+ }
+ return memories;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Scheduler> getSchedulers() {
+ if (schedulers == null) {
+ schedulers = new EObjectContainmentEList<Scheduler>(Scheduler.class, this, SimulationPackage.MODEL__SCHEDULERS);
+ }
+ return schedulers;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case SimulationPackage.MODEL__RUNNABLES:
+ return ((InternalEList<?>)getRunnables()).basicRemove(otherEnd, msgs);
+ case SimulationPackage.MODEL__LABELS:
+ return ((InternalEList<?>)getLabels()).basicRemove(otherEnd, msgs);
+ case SimulationPackage.MODEL__MEMORIES:
+ return ((InternalEList<?>)getMemories()).basicRemove(otherEnd, msgs);
+ case SimulationPackage.MODEL__SCHEDULERS:
+ return ((InternalEList<?>)getSchedulers()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case SimulationPackage.MODEL__RUNNABLES:
+ return getRunnables();
+ case SimulationPackage.MODEL__LABELS:
+ return getLabels();
+ case SimulationPackage.MODEL__MEMORIES:
+ return getMemories();
+ case SimulationPackage.MODEL__SCHEDULERS:
+ return getSchedulers();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case SimulationPackage.MODEL__RUNNABLES:
+ getRunnables().clear();
+ getRunnables().addAll((Collection<? extends org.eclipse.app4mc.SampleSimulation.Runnable>)newValue);
+ return;
+ case SimulationPackage.MODEL__LABELS:
+ getLabels().clear();
+ getLabels().addAll((Collection<? extends Label>)newValue);
+ return;
+ case SimulationPackage.MODEL__MEMORIES:
+ getMemories().clear();
+ getMemories().addAll((Collection<? extends Memory>)newValue);
+ return;
+ case SimulationPackage.MODEL__SCHEDULERS:
+ getSchedulers().clear();
+ getSchedulers().addAll((Collection<? extends Scheduler>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case SimulationPackage.MODEL__RUNNABLES:
+ getRunnables().clear();
+ return;
+ case SimulationPackage.MODEL__LABELS:
+ getLabels().clear();
+ return;
+ case SimulationPackage.MODEL__MEMORIES:
+ getMemories().clear();
+ return;
+ case SimulationPackage.MODEL__SCHEDULERS:
+ getSchedulers().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case SimulationPackage.MODEL__RUNNABLES:
+ return runnables != null && !runnables.isEmpty();
+ case SimulationPackage.MODEL__LABELS:
+ return labels != null && !labels.isEmpty();
+ case SimulationPackage.MODEL__MEMORIES:
+ return memories != null && !memories.isEmpty();
+ case SimulationPackage.MODEL__SCHEDULERS:
+ return schedulers != null && !schedulers.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ModelImpl
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/impl/RunnableImpl.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/impl/RunnableImpl.java
new file mode 100644
index 0000000..bf6f305
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/impl/RunnableImpl.java
@@ -0,0 +1,234 @@
+/**
+ * *******************************************************************************
+ * * Copyright (c) 2017 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.SampleSimulation.impl;
+
+import org.eclipse.app4mc.SampleSimulation.Label;
+import org.eclipse.app4mc.SampleSimulation.SimulationPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Runnable</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.app4mc.SampleSimulation.impl.RunnableImpl#getLabels <em>Labels</em>}</li>
+ * <li>{@link org.eclipse.app4mc.SampleSimulation.impl.RunnableImpl#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RunnableImpl extends MinimalEObjectImpl.Container implements org.eclipse.app4mc.SampleSimulation.Runnable {
+ /**
+ * The cached value of the '{@link #getLabels() <em>Labels</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLabels()
+ * @generated
+ * @ordered
+ */
+ protected Label labels;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected RunnableImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return SimulationPackage.Literals.RUNNABLE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Label getLabels() {
+ if (labels != null && labels.eIsProxy()) {
+ InternalEObject oldLabels = (InternalEObject)labels;
+ labels = (Label)eResolveProxy(oldLabels);
+ if (labels != oldLabels) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, SimulationPackage.RUNNABLE__LABELS, oldLabels, labels));
+ }
+ }
+ return labels;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Label basicGetLabels() {
+ return labels;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLabels(Label newLabels) {
+ Label oldLabels = labels;
+ labels = newLabels;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SimulationPackage.RUNNABLE__LABELS, oldLabels, labels));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SimulationPackage.RUNNABLE__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case SimulationPackage.RUNNABLE__LABELS:
+ if (resolve) return getLabels();
+ return basicGetLabels();
+ case SimulationPackage.RUNNABLE__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case SimulationPackage.RUNNABLE__LABELS:
+ setLabels((Label)newValue);
+ return;
+ case SimulationPackage.RUNNABLE__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case SimulationPackage.RUNNABLE__LABELS:
+ setLabels((Label)null);
+ return;
+ case SimulationPackage.RUNNABLE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case SimulationPackage.RUNNABLE__LABELS:
+ return labels != null;
+ case SimulationPackage.RUNNABLE__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //RunnableImpl
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/impl/SchedulerImpl.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/impl/SchedulerImpl.java
new file mode 100644
index 0000000..aa22fda
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/impl/SchedulerImpl.java
@@ -0,0 +1,173 @@
+/**
+ * *******************************************************************************
+ * * Copyright (c) 2017 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.SampleSimulation.impl;
+
+import org.eclipse.app4mc.SampleSimulation.Scheduler;
+import org.eclipse.app4mc.SampleSimulation.SimulationPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Scheduler</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.app4mc.SampleSimulation.impl.SchedulerImpl#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class SchedulerImpl extends MinimalEObjectImpl.Container implements Scheduler {
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SchedulerImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return SimulationPackage.Literals.SCHEDULER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SimulationPackage.SCHEDULER__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case SimulationPackage.SCHEDULER__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case SimulationPackage.SCHEDULER__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case SimulationPackage.SCHEDULER__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case SimulationPackage.SCHEDULER__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //SchedulerImpl
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/impl/SimulationFactoryImpl.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/impl/SimulationFactoryImpl.java
new file mode 100644
index 0000000..cb65d7e
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/impl/SimulationFactoryImpl.java
@@ -0,0 +1,154 @@
+/**
+ * *******************************************************************************
+ * * Copyright (c) 2017 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.SampleSimulation.impl;
+
+import org.eclipse.app4mc.SampleSimulation.Label;
+import org.eclipse.app4mc.SampleSimulation.Memory;
+import org.eclipse.app4mc.SampleSimulation.Model;
+import org.eclipse.app4mc.SampleSimulation.Scheduler;
+import org.eclipse.app4mc.SampleSimulation.SimulationFactory;
+import org.eclipse.app4mc.SampleSimulation.SimulationPackage;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SimulationFactoryImpl extends EFactoryImpl implements SimulationFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static SimulationFactory init() {
+ try {
+ SimulationFactory theSimulationFactory = (SimulationFactory)EPackage.Registry.INSTANCE.getEFactory(SimulationPackage.eNS_URI);
+ if (theSimulationFactory != null) {
+ return theSimulationFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new SimulationFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SimulationFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case SimulationPackage.MODEL: return createModel();
+ case SimulationPackage.RUNNABLE: return createRunnable();
+ case SimulationPackage.LABEL: return createLabel();
+ case SimulationPackage.MEMORY: return createMemory();
+ case SimulationPackage.SCHEDULER: return createScheduler();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Model createModel() {
+ ModelImpl model = new ModelImpl();
+ return model;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.app4mc.SampleSimulation.Runnable createRunnable() {
+ RunnableImpl runnable = new RunnableImpl();
+ return runnable;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Label createLabel() {
+ LabelImpl label = new LabelImpl();
+ return label;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Memory createMemory() {
+ MemoryImpl memory = new MemoryImpl();
+ return memory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Scheduler createScheduler() {
+ SchedulerImpl scheduler = new SchedulerImpl();
+ return scheduler;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SimulationPackage getSimulationPackage() {
+ return (SimulationPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static SimulationPackage getPackage() {
+ return SimulationPackage.eINSTANCE;
+ }
+
+} //SimulationFactoryImpl
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/impl/SimulationPackageImpl.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/impl/SimulationPackageImpl.java
new file mode 100644
index 0000000..d63507f
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/impl/SimulationPackageImpl.java
@@ -0,0 +1,359 @@
+/**
+ * *******************************************************************************
+ * * Copyright (c) 2017 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.SampleSimulation.impl;
+
+import org.eclipse.app4mc.SampleSimulation.Label;
+import org.eclipse.app4mc.SampleSimulation.Memory;
+import org.eclipse.app4mc.SampleSimulation.Model;
+import org.eclipse.app4mc.SampleSimulation.Scheduler;
+import org.eclipse.app4mc.SampleSimulation.SimulationFactory;
+import org.eclipse.app4mc.SampleSimulation.SimulationPackage;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SimulationPackageImpl extends EPackageImpl implements SimulationPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass modelEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass runnableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass labelEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass memoryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass schedulerEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.app4mc.SampleSimulation.SimulationPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private SimulationPackageImpl() {
+ super(eNS_URI, SimulationFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link SimulationPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static SimulationPackage init() {
+ if (isInited) return (SimulationPackage)EPackage.Registry.INSTANCE.getEPackage(SimulationPackage.eNS_URI);
+
+ // Obtain or create and register package
+ SimulationPackageImpl theSimulationPackage = (SimulationPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof SimulationPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new SimulationPackageImpl());
+
+ isInited = true;
+
+ // Create package meta-data objects
+ theSimulationPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theSimulationPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theSimulationPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(SimulationPackage.eNS_URI, theSimulationPackage);
+ return theSimulationPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getModel() {
+ return modelEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getModel_Runnables() {
+ return (EReference)modelEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getModel_Labels() {
+ return (EReference)modelEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getModel_Memories() {
+ return (EReference)modelEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getModel_Schedulers() {
+ return (EReference)modelEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getRunnable() {
+ return runnableEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getRunnable_Labels() {
+ return (EReference)runnableEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getRunnable_Name() {
+ return (EAttribute)runnableEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLabel() {
+ return labelEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLabel_Name() {
+ return (EAttribute)labelEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getMemory() {
+ return memoryEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getMemory_Name() {
+ return (EAttribute)memoryEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getScheduler() {
+ return schedulerEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getScheduler_Name() {
+ return (EAttribute)schedulerEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SimulationFactory getSimulationFactory() {
+ return (SimulationFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ modelEClass = createEClass(MODEL);
+ createEReference(modelEClass, MODEL__RUNNABLES);
+ createEReference(modelEClass, MODEL__LABELS);
+ createEReference(modelEClass, MODEL__MEMORIES);
+ createEReference(modelEClass, MODEL__SCHEDULERS);
+
+ runnableEClass = createEClass(RUNNABLE);
+ createEReference(runnableEClass, RUNNABLE__LABELS);
+ createEAttribute(runnableEClass, RUNNABLE__NAME);
+
+ labelEClass = createEClass(LABEL);
+ createEAttribute(labelEClass, LABEL__NAME);
+
+ memoryEClass = createEClass(MEMORY);
+ createEAttribute(memoryEClass, MEMORY__NAME);
+
+ schedulerEClass = createEClass(SCHEDULER);
+ createEAttribute(schedulerEClass, SCHEDULER__NAME);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+
+ // Initialize classes, features, and operations; add parameters
+ initEClass(modelEClass, Model.class, "Model", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getModel_Runnables(), this.getRunnable(), null, "runnables", null, 0, -1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getModel_Labels(), this.getLabel(), null, "labels", null, 0, -1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getModel_Memories(), this.getMemory(), null, "memories", null, 0, -1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getModel_Schedulers(), this.getScheduler(), null, "schedulers", null, 0, -1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(runnableEClass, org.eclipse.app4mc.SampleSimulation.Runnable.class, "Runnable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getRunnable_Labels(), this.getLabel(), null, "labels", null, 0, 1, org.eclipse.app4mc.SampleSimulation.Runnable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getRunnable_Name(), ecorePackage.getEString(), "name", null, 0, 1, org.eclipse.app4mc.SampleSimulation.Runnable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(labelEClass, Label.class, "Label", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getLabel_Name(), ecorePackage.getEString(), "name", null, 0, 1, Label.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(memoryEClass, Memory.class, "Memory", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getMemory_Name(), ecorePackage.getEString(), "name", null, 0, 1, Memory.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(schedulerEClass, Scheduler.class, "Scheduler", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getScheduler_Name(), ecorePackage.getEString(), "name", null, 0, 1, Scheduler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //SimulationPackageImpl
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/util/SimulationAdapterFactory.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/util/SimulationAdapterFactory.java
new file mode 100644
index 0000000..db6b30f
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/util/SimulationAdapterFactory.java
@@ -0,0 +1,206 @@
+/**
+ * *******************************************************************************
+ * * Copyright (c) 2017 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.SampleSimulation.util;
+
+import org.eclipse.app4mc.SampleSimulation.Label;
+import org.eclipse.app4mc.SampleSimulation.Memory;
+import org.eclipse.app4mc.SampleSimulation.Model;
+import org.eclipse.app4mc.SampleSimulation.Scheduler;
+import org.eclipse.app4mc.SampleSimulation.SimulationPackage;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.SampleSimulation.SimulationPackage
+ * @generated
+ */
+public class SimulationAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static SimulationPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SimulationAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = SimulationPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SimulationSwitch<Adapter> modelSwitch =
+ new SimulationSwitch<Adapter>() {
+ @Override
+ public Adapter caseModel(Model object) {
+ return createModelAdapter();
+ }
+ @Override
+ public Adapter caseRunnable(org.eclipse.app4mc.SampleSimulation.Runnable object) {
+ return createRunnableAdapter();
+ }
+ @Override
+ public Adapter caseLabel(Label object) {
+ return createLabelAdapter();
+ }
+ @Override
+ public Adapter caseMemory(Memory object) {
+ return createMemoryAdapter();
+ }
+ @Override
+ public Adapter caseScheduler(Scheduler object) {
+ return createSchedulerAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.SampleSimulation.Model <em>Model</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.app4mc.SampleSimulation.Model
+ * @generated
+ */
+ public Adapter createModelAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.SampleSimulation.Runnable <em>Runnable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.app4mc.SampleSimulation.Runnable
+ * @generated
+ */
+ public Adapter createRunnableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.SampleSimulation.Label <em>Label</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.app4mc.SampleSimulation.Label
+ * @generated
+ */
+ public Adapter createLabelAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.SampleSimulation.Memory <em>Memory</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.app4mc.SampleSimulation.Memory
+ * @generated
+ */
+ public Adapter createMemoryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.app4mc.SampleSimulation.Scheduler <em>Scheduler</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.app4mc.SampleSimulation.Scheduler
+ * @generated
+ */
+ public Adapter createSchedulerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //SimulationAdapterFactory
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/util/SimulationSwitch.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/util/SimulationSwitch.java
new file mode 100644
index 0000000..9250550
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.sample.simulation.model/src/org/eclipse/app4mc/SampleSimulation/util/SimulationSwitch.java
@@ -0,0 +1,208 @@
+/**
+ * *******************************************************************************
+ * * Copyright (c) 2017 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.SampleSimulation.util;
+
+import org.eclipse.app4mc.SampleSimulation.Label;
+import org.eclipse.app4mc.SampleSimulation.Memory;
+import org.eclipse.app4mc.SampleSimulation.Model;
+import org.eclipse.app4mc.SampleSimulation.Scheduler;
+import org.eclipse.app4mc.SampleSimulation.SimulationPackage;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.app4mc.SampleSimulation.SimulationPackage
+ * @generated
+ */
+public class SimulationSwitch<T> extends Switch<T> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static SimulationPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SimulationSwitch() {
+ if (modelPackage == null) {
+ modelPackage = SimulationPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case SimulationPackage.MODEL: {
+ Model model = (Model)theEObject;
+ T result = caseModel(model);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case SimulationPackage.RUNNABLE: {
+ org.eclipse.app4mc.SampleSimulation.Runnable runnable = (org.eclipse.app4mc.SampleSimulation.Runnable)theEObject;
+ T result = caseRunnable(runnable);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case SimulationPackage.LABEL: {
+ Label label = (Label)theEObject;
+ T result = caseLabel(label);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case SimulationPackage.MEMORY: {
+ Memory memory = (Memory)theEObject;
+ T result = caseMemory(memory);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case SimulationPackage.SCHEDULER: {
+ Scheduler scheduler = (Scheduler)theEObject;
+ T result = caseScheduler(scheduler);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Model</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Model</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseModel(Model object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Runnable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Runnable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseRunnable(org.eclipse.app4mc.SampleSimulation.Runnable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Label</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Label</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLabel(Label object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Memory</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Memory</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseMemory(Memory object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Scheduler</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Scheduler</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseScheduler(Scheduler object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} //SimulationSwitch
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/.classpath b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.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/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/.gitignore b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/.gitignore
new file mode 100644
index 0000000..d3fb94c
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/.gitignore
@@ -0,0 +1,3 @@
+/bin/
+/target/
+/xtend-gen/
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/.project b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/.project
new file mode 100644
index 0000000..f216226
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.app4mc.transformation.3rdparty.libs</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/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/.settings/org.eclipse.jdt.core.prefs b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.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/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/META-INF/MANIFEST.MF b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..67be3e3
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: 3rdparty
+Bundle-SymbolicName: org.eclipse.app4mc.transformation.3rdparty.libs
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: BOSCH
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ClassPath: .
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/build.properties b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/build.properties
new file mode 100644
index 0000000..5113c5f
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/build.properties
@@ -0,0 +1,3 @@
+bin.includes = META-INF/,\
+ .
+source.. = src/
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/lib/.gitignore b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/lib/.gitignore
new file mode 100644
index 0000000..d3fb94c
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/lib/.gitignore
@@ -0,0 +1,3 @@
+/bin/
+/target/
+/xtend-gen/
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/pom.xml b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/pom.xml
new file mode 100644
index 0000000..d31ca87
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/pom.xml
@@ -0,0 +1,83 @@
+<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>./com.bosch.m2m.simulation.build</relativePath>
+ <groupId>m2m</groupId>
+ <artifactId>com.bosch.m2m.simulation.build</artifactId>
+ <version>1.0.0.qualifier</version>
+ </parent>
+
+ <artifactId>com.bosch.m2m.app4mc.simulation.3rdparty</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>
+ <groupId>m2m</groupId>
+</project>
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/src/.gitignore b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/src/.gitignore
new file mode 100644
index 0000000..d3fb94c
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.3rdparty.libs/src/.gitignore
@@ -0,0 +1,3 @@
+/bin/
+/target/
+/xtend-gen/
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/.classpath b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/.classpath
new file mode 100644
index 0000000..428337e
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/.classpath
@@ -0,0 +1,8 @@
+<?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="src" path="xtend-gen"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
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
new file mode 100644
index 0000000..944a1c7
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/.gitignore
@@ -0,0 +1,4 @@
+/bin/
+/target/
+/xtend-gen/
+/output
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/.project b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/.project
new file mode 100644
index 0000000..3615b5a
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.app4mc.transformation.application</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <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>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ </natures>
+</projectDescription>
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/.settings/org.eclipse.jdt.core.prefs b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.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/model-transformation/plugins/org.eclipse.app4mc.transformation.application/APP4MC_Transformation.product b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/APP4MC_Transformation.product
new file mode 100644
index 0000000..a0bb177
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/APP4MC_Transformation.product
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="APP4MCTransformation" id="org.eclipse.app4mc.transformation.application.product" application="org.eclipse.app4mc.transformation.application.application" useFeatures="false" includeLaunchers="true">
+
+ <configIni use="default">
+ </configIni>
+
+ <launcherArgs>
+ <programArgs>--input.props ./input.properties
+ </programArgs>
+ <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+ </vmArgsMac>
+ </launcherArgs>
+
+ <windowImages/>
+
+
+ <launcher>
+ <solaris/>
+ <win useIco="false">
+ <bmp/>
+ </win>
+ </launcher>
+
+ <vm>
+ </vm>
+
+ <plugins>
+ <plugin id="com.bosch.m2m.app4mc.m2m.transformation.core"/>
+ <plugin id="com.google.guava"/>
+ <plugin id="com.google.inject"/>
+ <plugin id="com.ibm.icu"/>
+ <plugin id="javax.annotation"/>
+ <plugin id="javax.inject"/>
+ <plugin id="javax.xml"/>
+ <plugin id="org.apache.batik.css"/>
+ <plugin id="org.apache.batik.util"/>
+ <plugin id="org.apache.batik.util.gui"/>
+ <plugin id="org.apache.commons.cli"/>
+ <plugin id="org.apache.commons.jxpath"/>
+ <plugin id="org.apache.commons.lang"/>
+ <plugin id="org.apache.commons.logging"/>
+ <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.eclipse.app4mc.amalthea.model"/>
+ <plugin id="org.eclipse.app4mc.amalthea.sphinx"/>
+ <plugin id="org.eclipse.app4mc.sample.simulation.model"/>
+ <plugin id="org.eclipse.app4mc.transformation.3rdparty.libs"/>
+ <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.java7" fragment="true"/>
+ <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.runtime.compatibility.registry" fragment="true"/>
+ <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.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.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.cdo.ecore.retrofit" fragment="true"/>
+ <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.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.registry"/>
+ <plugin id="org.eclipse.equinox.security"/>
+ <plugin id="org.eclipse.equinox.security.win32.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.equinox.util"/>
+ <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.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.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>
+
+
+ <preferencesInfo>
+ <targetfile overwrite="false"/>
+ </preferencesInfo>
+
+ <cssInfo>
+ </cssInfo>
+
+</product>
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/APP4MC_Transformation.product.launch b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/APP4MC_Transformation.product.launch
new file mode 100644
index 0000000..2d44030
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/APP4MC_Transformation.product.launch
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
+<booleanAttribute key="append.args" value="true"/>
+<stringAttribute key="application" value="org.eclipse.app4mc.transformation.application.application"/>
+<booleanAttribute key="askclear" value="true"/>
+<booleanAttribute key="automaticAdd" value="false"/>
+<booleanAttribute key="automaticValidate" value="true"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="false"/>
+<booleanAttribute key="clearws" value="false"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/APP4MC_Transformation.product"/>
+<booleanAttribute key="default" value="false"/>
+<booleanAttribute key="includeOptional" value="true"/>
+<stringAttribute key="location" value="${workspace_loc}/../runtime-APP4MC_Transformation.product"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog --input.props ./input.properties"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value=""/>
+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:org.eclipse.app4mc.transformation.application}"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.app4mc.transformation.application.product"/>
+<stringAttribute key="productFile" value="\org.eclipse.app4mc.transformation.application\APP4MC_Transformation.product"/>
+<stringAttribute key="selected_target_plugins" value="org.eclipse.equinox.app@default:default,org.eclipse.xtend.lib.macro@default:default,javax.xml@default:default,org.eclipse.equinox.common@default:default,com.ibm.icu@default:default,org.eclipse.emf.transaction.ui@default:default,org.eclipse.emf.transaction@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.osgi.compatibility.state@default:default,org.eclipse.sphinx.emf.workspace.ui@default:default,org.eclipse.emf.workspace@default:default,org.tukaani.xz@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.emf.ecore.change@default:default,org.w3c.dom.svg@default:default,org.eclipse.equinox.bidi@default:default,com.google.inject@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.ui.forms@default:default,org.eclipse.e4.core.di@default:default,org.apache.commons.logging@default:default,org.apache.xml.serializer@default:default,org.eclipse.app4mc.amalthea.sphinx@default:default,org.eclipse.core.variables@default:default,org.eclipse.sphinx.platform.ui@default:default,org.eclipse.sphinx.emf.workspace@default:default,org.apache.commons.cli@default:default,org.eclipse.equinox.security@default:default,org.eclipse.compare.core@default:default,org.apache.batik.css@default:default,javax.annotation@default:default,org.apache.commons.jxpath@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.util@default:default,org.eclipse.core.runtime@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.core.jobs@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.core.expressions@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.xtend.lib@default:default,org.eclipse.xtext.xbase.lib@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.jface.text@default:default,org.eclipse.equinox.ds@default:default,org.eclipse.sphinx.emf.editors.forms@default:default,org.eclipse.emf@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.equinox.security.win32.x86_64@default:default,org.eclipse.equinox.registry@default:default,org.w3c.css.sac@default:default,org.eclipse.core.runtime.compatibility.registry@default:default,org.apache.commons.lang@default:default,org.w3c.dom.smil@default:default,org.eclipse.osgi@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.ui.win32@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.core.databinding@default:default,org.w3c.dom.events@default:default,org.apache.xml.resolver@default:default,org.eclipse.emf.workspace.ui@default:default,org.eclipse.ui.views@default:default,com.google.guava@default:default,org.eclipse.emf.common@default:default,org.eclipse.core.filesystem.java7@default:default,org.eclipse.e4.ui.services@default:default,org.apache.batik.util@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.help@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.ui.ide@default:default,javax.inject@default:default,org.apache.xerces@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.text@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.app4mc.amalthea.model@default:default,org.jdom@default:default,org.eclipse.sphinx.emf.ui@default:default,org.eclipse.osgi.services@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.filesystem.win32.x86_64@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.e4.ui.widgets@default:default,org.eclipse.swt.win32.win32.x86_64@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.swt@default:default,org.eclipse.emf.ecore.xcore.lib@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.resources@default:default,org.eclipse.jface@default:default,org.eclipse.sphinx.emf.editors@default:default,org.apache.log4j@default:default,org.apache.batik.util.gui@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.sphinx.emf@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.emf.validation@default:default,org.eclipse.ui.console@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.ui@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.core.resources.win32.x86_64@default:default,org.eclipse.sphinx.platform@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,"/>
+<stringAttribute key="selected_workspace_plugins" value="com.bosch.m2m.app4mc.m2m.transformation.core@default:default,org.eclipse.app4mc.sample.simulation.model@default:default,org.eclipse.app4mc.transformation.3rdparty.libs@default:default,org.eclipse.app4mc.transformation.application@default:default,org.eclipse.app4mc.transformation.extensions@default:default,"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useCustomFeatures" value="false"/>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="true"/>
+<booleanAttribute key="useProduct" value="true"/>
+<booleanAttribute key="usefeatures" value="false"/>
+</launchConfiguration>
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
new file mode 100644
index 0000000..85e38e6
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: simulation
+Bundle-SymbolicName: org.eclipse.app4mc.transformation.application;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: BOSCH
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.sphinx.emf,
+ org.eclipse.sphinx.emf.editors,
+ com.google.guava,
+ org.eclipse.xtext.xbase.lib,
+ org.eclipse.xtend.lib,
+ org.eclipse.xtend.lib.macro,
+ org.eclipse.sphinx.emf.editors.forms,
+ com.google.inject;bundle-version="3.0.0",
+ org.apache.log4j;bundle-version="1.2.15",
+ org.eclipse.app4mc.transformation.extensions;bundle-version="1.0.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: com.bosch.m2m.app4mc.transformation.application
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/build.properties b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/build.properties
new file mode 100644
index 0000000..80ea72e
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/build.properties
@@ -0,0 +1,6 @@
+source.. = src/,\
+ xtend-gen/
+output.. = bin/
+bin.includes = plugin.xml,\
+ META-INF/,\
+ .
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/input.properties b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/input.properties
new file mode 100644
index 0000000..b9be80f
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/input.properties
@@ -0,0 +1,4 @@
+amalthea_models_folder=./input/amalthea_models
+simulation_models_folder=./output/simulation_models
+simulation_c_code_folder=./output/simulation_models/c_code
+log_file=./output/m2m_transformation.txt
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/input/amalthea_models/AMALTHEA_Democar.amxmi b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/input/amalthea_models/AMALTHEA_Democar.amxmi
new file mode 100644
index 0000000..f8f5ba7
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/input/amalthea_models/AMALTHEA_Democar.amxmi
@@ -0,0 +1,1054 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<am:Amalthea xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:am="http://app4mc.eclipse.org/amalthea/0.8.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <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>
+ <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>
+ </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>
+ </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>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </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"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </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"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ <runnableItems xsi:type="am:LabelAccess" data="VotedAPedPosition?type=Label" access="write" dataStability="inherited"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </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"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ <runnableItems xsi:type="am:LabelAccess" data="BrakeForceVoltage?type=Label" access="write" dataStability="inherited"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </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"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ <runnableItems xsi:type="am:LabelAccess" data="ArbitratedBrakeForce?type=Label" access="write" dataStability="inherited"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </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"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </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"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ <runnableItems xsi:type="am:LabelAccess" data="VotedBrakePedalPosition?type=Label" access="write" dataStability="inherited"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </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"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ <runnableItems xsi:type="am:LabelAccess" data="CaliperPosition?type=Label" access="write" dataStability="inherited"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ <runnableItems xsi:type="am:LabelAccess" data="BrakePedalPosition?type=Label" access="write" dataStability="inherited"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ <runnableItems xsi:type="am:LabelAccess" data="TriggeredCylinderNumber?type=Label" access="write" dataStability="inherited"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </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"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ <runnableItems xsi:type="am:LabelAccess" data="VotedDecelerationRate?type=Label" access="write" dataStability="inherited"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ </runnables>
+ <runnables name="EcuBrakePedalSensor" tags="SwcSensors?type=Tag" callback="false" service="false">
+ <runnableItems xsi:type="am:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </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"/>
+ </runnables>
+ <runnables name="EcuDecelerationSensor" tags="SwcSensors?type=Tag" callback="false" service="false">
+ <runnableItems xsi:type="am:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </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"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ </runnables>
+ <runnables name="EcuVehicleSpeedSensor" tags="SwcSensors?type=Tag" callback="false" service="false">
+ <runnableItems xsi:type="am:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </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"/>
+ </runnables>
+ <runnables name="EcuWheelSpeedSensor" tags="SwcSensors?type=Tag" callback="false" service="false">
+ <runnableItems xsi:type="am:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </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"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </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"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ <runnableItems xsi:type="am:LabelAccess" data="IgnitionTime?type=Label" access="write" dataStability="inherited"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ <runnableItems xsi:type="am:LabelAccess" data="MassAirFlow?type=Label" access="write" dataStability="inherited"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ <runnableItems xsi:type="am:LabelAccess" data="BrakeApplication?type=Label" access="write" dataStability="inherited"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ <runnableItems xsi:type="am:LabelAccess" data="DesiredThrottlePositionVoltage?type=Label" access="write" dataStability="inherited"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ <runnableItems xsi:type="am:LabelAccess" data="DesiredThrottlePosition?type=Label" access="write" dataStability="inherited"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ <runnableItems xsi:type="am:LabelAccess" data="ThrottlePosition?type=Label" access="write" dataStability="inherited"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ <runnableItems xsi:type="am:LabelAccess" data="TotalFuelMassPerStroke?type=Label" access="write" dataStability="inherited"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ <runnableItems xsi:type="am:LabelAccess" data="TransientFuelMassPerStroke?type=Label" access="write" dataStability="inherited"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </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"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ <runnableItems xsi:type="am:LabelAccess" data="VotedVehicleSpeed?type=Label" access="write" dataStability="inherited"/>
+ </runnables>
+ <runnables name="VehicleStateMonitor" tags="SwcBrakeForceCalculation?type=Tag" callback="false" service="false">
+ <runnableItems xsi:type="am:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ <runnableItems xsi:type="am:LabelAccess" data="MonitoredVehicleState?type=Label" access="write" dataStability="inherited"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </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"/>
+ </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:RunnableInstructions">
+ <default xsi:type="am:InstructionsDeviation">
+ <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>
+ </default>
+ </runnableItems>
+ <runnableItems xsi:type="am:LabelAccess" data="VotedWheelSpeed?type=Label" access="write" dataStability="inherited"/>
+ </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>
+ <coreTypes name="Default" bitWidth="0" instructionsPerCycle="1.0"/>
+ <system name="Democar">
+ <ecus name="ECU_1">
+ <microcontrollers name="Processor_1">
+ <memories name="Mem_1">
+ <ports xsi:type="am:ComplexPort" name="Mem_1_port" master="false" bitWidth="16" baseAddress="0" addressRange="0" direction="R" writeCycles="10" readCycles="10" schedValue="0"/>
+ </memories>
+ <cores name="Core_1" coreType="Default?type=CoreType" lockstepGroup="0">
+ <prescaler name="Core_1_prescaler" clockRatio="0.0" quartz="QuartzOscillator_1?type=Quartz"/>
+ </cores>
+ </microcontrollers>
+ </ecus>
+ <quartzes name="QuartzOscillator_1" type="STATIC">
+ <frequency unit="MHz" value="200.0"/>
+ </quartzes>
+ </system>
+ </hwModel>
+ <osModel>
+ <operatingSystems name="OperatingSystem">
+ <taskSchedulers name="Task_Scheduler_Core_1">
+ <schedulingAlgorithm xsi:type="am:OSEK"/>
+ </taskSchedulers>
+ <osDataConsistency/>
+ </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>
+ <mappingModel>
+ <schedulerAllocation scheduler="Task_Scheduler_Core_1?type=TaskScheduler" responsibility="Core_1?type=Core" executingCore="Core_1?type=Core"/>
+ <taskAllocation task="Task_10MS?type=Task" scheduler="Task_Scheduler_Core_1?type=TaskScheduler"/>
+ </mappingModel>
+</am:Amalthea>
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/plugin.xml b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/plugin.xml
new file mode 100644
index 0000000..df854ed
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/plugin.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+ <extension
+ id="application"
+ point="org.eclipse.core.runtime.applications">
+ <application
+ visible="true">
+ <run
+ class="com.bosch.m2m.app4mc.transformation.application.Application">
+ </run>
+ </application>
+ </extension>
+
+ <extension
+ id="product"
+ point="org.eclipse.core.runtime.products">
+ <product
+ application="org.eclipse.app4mc.transformation.application.application"
+ name="APP4MCTransformation">
+ <property
+ name="appName"
+ value="APP4MCTransformation">
+ </property>
+ </product>
+ </extension>
+
+</plugin>
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
new file mode 100644
index 0000000..a47033c
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/pom.xml
@@ -0,0 +1,83 @@
+<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>./com.bosch.m2m.simulation.build</relativePath>
+ <groupId>m2m</groupId>
+ <artifactId>com.bosch.m2m.simulation.build</artifactId>
+ <version>1.0.0.qualifier</version>
+ </parent>
+
+ <artifactId>com.bosch.m2m.app4mc.simulation</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>
+ <groupId>m2m</groupId>
+</project>
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/src/com/bosch/m2m/app4mc/transformation/application/Application.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/src/com/bosch/m2m/app4mc/transformation/application/Application.java
new file mode 100644
index 0000000..ae98be3
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/src/com/bosch/m2m/app4mc/transformation/application/Application.java
@@ -0,0 +1,95 @@
+
+
+package com.bosch.m2m.app4mc.transformation.application;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.Properties;
+
+import org.apache.log4j.FileAppender;
+import org.apache.log4j.Level;
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
+import org.apache.log4j.PatternLayout;
+import org.eclipse.equinox.app.IApplication;
+import org.eclipse.equinox.app.IApplicationContext;
+
+/**
+ * This class controls all aspects of the application's execution
+ */
+public class Application implements IApplication {
+
+ @Override
+ public Object start(IApplicationContext context) throws Exception {
+
+ Properties inputParameters = getInputParameters(context);
+
+ if(inputParameters!=null){
+
+ Logger logger = getLogger(inputParameters);
+
+ logger.info("Starting Model transformation ...");
+
+ ExecuteTransformation.start( logger, inputParameters);
+
+ logger.removeAllAppenders();
+ }else{
+ System.out.println("ERROR !! Unable to start model to model transformation as required parameters are not set in input properties file");
+
+ return new Integer(-1);
+ }
+
+ return IApplication.EXIT_OK;
+ }
+
+ private Logger getLogger(Properties inputParameters) {
+
+ String logFilePath = inputParameters.getProperty("log_file");
+
+ org.apache.log4j.Logger logger =LogManager.getLogger("com.bosch.m2m.app4mc.simulation");
+
+ logger.setLevel(Level.INFO);
+ try {
+ logger.removeAllAppenders();
+ /*- If required use the following options in pattern layout %d %-5p %t %c (%F:%L) %m" */
+ logger.addAppender(new FileAppender(new PatternLayout("%d{yyyy-MM-dd_HH_mm_ss} - %-5p: %m%n"), logFilePath,false));
+
+ } catch (IOException e) {
+
+ System.out.println("invalid log file path "+logFilePath+" specified in the input.properties file ");
+ e.printStackTrace();
+ }
+
+ return logger;
+ }
+
+ private Properties getInputParameters(IApplicationContext context) throws IOException, FileNotFoundException {
+
+ String property = System.getProperty("user.dir");
+
+ System.out.println(property);
+ String[] args = (String[]) context.getArguments().get("application.args");
+
+ if(args !=null && args.length>0){
+
+ String inputPropsFile= args[1];
+
+ File file = new File(inputPropsFile);
+
+ Properties properties = new Properties();
+
+ properties.load(new FileInputStream(file));
+
+ return properties;
+ }
+
+ return null;
+ }
+
+ @Override
+ public void stop() {
+ // nothing to do
+ }
+}
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/src/com/bosch/m2m/app4mc/transformation/application/ExecuteTransformation.xtend b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/src/com/bosch/m2m/app4mc/transformation/application/ExecuteTransformation.xtend
new file mode 100644
index 0000000..458f97f
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/src/com/bosch/m2m/app4mc/transformation/application/ExecuteTransformation.xtend
@@ -0,0 +1,77 @@
+package com.bosch.m2m.app4mc.transformation.application
+
+import com.google.inject.Guice
+import com.google.inject.Injector
+import java.util.Properties
+import org.apache.log4j.Logger
+import org.eclipse.app4mc.transformation.extensions.CustomObjectsStore
+import org.eclipse.app4mc.transformation.extensions.base.templates.RootTransformer
+
+class ExecuteTransformation {
+
+ def static void start(Logger logger, Properties properties) {
+
+
+
+ var module= ExtensionExecution.getInjectionModuleFromExtension(logger);
+
+
+ if(module == null){
+
+ var msg= "org.eclipse.app4mc.transformation.extensions.module extension is not defined by any plugin.\n Without this extension M2M or M2T can't be proceeded"
+
+ logger.error(msg, new NullPointerException(msg))
+
+ }
+
+
+ val injector=Guice::createInjector(module)
+
+
+
+ /*-- Injection of created objects into Google Guice -- */
+
+ injectPreCreatedObjects(injector, properties)
+
+ /*------------------------------------------------------- */
+
+ val mainGenerator=injector.getInstance(typeof(RootTransformer));
+
+
+ /*- M2M transformation */
+ var m2mConfig= ExtensionExecution.getM2MExtension(logger);
+
+ if(m2mConfig !=null){
+
+ m2mConfig.properties = properties
+
+ mainGenerator.m2mTransformation(m2mConfig.inputResourceSet,m2mConfig.ouputResourceSet)
+ }
+
+
+ /*- M2T transformation */
+ var m2tConfig= ExtensionExecution.getM2TFromExtension(logger);
+
+
+ if(m2tConfig!=null){
+
+ m2tConfig.properties = properties
+
+ mainGenerator.m2tTransformation(m2tConfig.inputResourceSet)
+ }
+
+
+ }
+
+ protected def static void injectPreCreatedObjects(Injector injector, Object... inputObjs) {
+
+ val customObjectsStore = injector.getInstance(CustomObjectsStore)
+
+ for (element : inputObjs) {
+ customObjectsStore.injectMembers(element.class,element)
+ }
+ }
+
+
+
+}
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/src/com/bosch/m2m/app4mc/transformation/application/ExtensionExecution.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/src/com/bosch/m2m/app4mc/transformation/application/ExtensionExecution.java
new file mode 100644
index 0000000..a40dca6
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.application/src/com/bosch/m2m/app4mc/transformation/application/ExtensionExecution.java
@@ -0,0 +1,195 @@
+package com.bosch.m2m.app4mc.transformation.application;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import org.apache.log4j.Logger;
+import org.eclipse.app4mc.transformation.extensions.AbstractM2MInjectorModule;
+import org.eclipse.app4mc.transformation.extensions.executiontype.IModelToModelTransformation;
+import org.eclipse.app4mc.transformation.extensions.executiontype.IModelToTextTransformation;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+
+public class ExtensionExecution {
+
+
+
+ public static IModelToTextTransformation getM2TFromExtension(Logger logger) throws CoreException {
+
+ final IExtensionRegistry registry = Platform.getExtensionRegistry();
+
+ final IExtensionPoint extensionPoint = registry
+ .getExtensionPoint("org.eclipse.app4mc.transformation.extensions.m2t");
+
+ final IConfigurationElement[] extensions = extensionPoint.getConfigurationElements();
+
+ Map<String, IModelToTextTransformation> id_obj_Map = new LinkedHashMap<String, IModelToTextTransformation>();
+
+ for (final IConfigurationElement iConfigurationElement : extensions) {
+
+ final String id = iConfigurationElement.getAttribute("id");
+
+ final String isEnabled = iConfigurationElement.getAttribute("enabled");
+
+ if (Boolean.parseBoolean(isEnabled)) {
+
+ final Object module = iConfigurationElement.createExecutableExtension("class");
+
+ id_obj_Map.put(id, (IModelToTextTransformation) module);
+
+ }
+
+ }
+
+ if (id_obj_Map.size() > 1) {
+
+ String enabledIds = "--- "+id_obj_Map.keySet().stream().filter(s->(s!=null && !s.isEmpty())).collect(Collectors.joining(","+System.getProperty("line.separator")+"--- "));
+
+ logger.error(
+ "Multiple M2T configurations are enabled. Based on the standard - only one configuration for M2T transofrmation - should be enabled for a specific product"
+ + System.getProperty("line.separator")+"Below are the M2T configuration ids which are enabled : "+ System.getProperty("line.separator")+enabledIds);
+
+ String firstM2T_Id = id_obj_Map.keySet().iterator().next();
+
+ logger.warn("** M2T configuration id : \"" + firstM2T_Id + "\" is enabled");
+
+ return id_obj_Map.get(firstM2T_Id);
+
+ } else if (id_obj_Map.size() == 1) {
+
+ String id = id_obj_Map.keySet().iterator().next();
+
+ logger.info("** M2T Configuration id : \"" + id + "\" is enabled");
+
+ return id_obj_Map.get(id);
+ }
+
+
+ /*- default case */
+ return null;
+
+ }
+
+
+
+ public static IModelToModelTransformation getM2MExtension(Logger logger) throws CoreException {
+
+ final IExtensionRegistry registry = Platform.getExtensionRegistry();
+
+ final IExtensionPoint extensionPoint = registry
+ .getExtensionPoint("org.eclipse.app4mc.transformation.extensions.m2m");
+
+ final IConfigurationElement[] extensions = extensionPoint.getConfigurationElements();
+
+ Map<String, IModelToModelTransformation> id_Obj_Map = new LinkedHashMap<String, IModelToModelTransformation>();
+
+ for (final IConfigurationElement iConfigurationElement : extensions) {
+
+ final String id = iConfigurationElement.getAttribute("id");
+
+ final String isEnabled = iConfigurationElement.getAttribute("enabled");
+
+ if (Boolean.parseBoolean(isEnabled)) {
+
+ final Object module = iConfigurationElement.createExecutableExtension("class");
+
+ id_Obj_Map.put(id, (IModelToModelTransformation) module);
+
+ }
+
+ }
+
+ if (id_Obj_Map.size() > 1) {
+
+ String enabledIds = "--- "+id_Obj_Map.keySet().stream().filter(s->(s!=null && !s.isEmpty())).collect(Collectors.joining(","+System.getProperty("line.separator")+"--- "));
+
+ logger.error(
+ "Multiple M2M configurations are enabled. Based on the standard only one M2M configurations should be enabled for a specific product"
+ + System.getProperty("line.separator")+"Below are the M2M module ids which are enabled : "+ System.getProperty("line.separator")+enabledIds);
+
+ String firstM2M_moduleId = id_Obj_Map.keySet().iterator().next();
+
+ logger.warn("** M2M configuration id : \"" + firstM2M_moduleId + "\" is enabled");
+
+ return id_Obj_Map.get(firstM2M_moduleId);
+
+ } else if (id_Obj_Map.size() == 1) {
+
+ String id = id_Obj_Map.keySet().iterator().next();
+
+ logger.info("** M2M configuration id : \"" + id + "\" is enabled");
+
+ return id_Obj_Map.get(id);
+ }
+
+
+ /*- default case */
+ return null;
+
+ }
+
+
+ public static AbstractM2MInjectorModule getInjectionModuleFromExtension(Logger logger) throws CoreException {
+
+ final IExtensionRegistry registry = Platform.getExtensionRegistry();
+
+ final IExtensionPoint extensionPoint = registry
+ .getExtensionPoint("org.eclipse.app4mc.transformation.extensions.module");
+
+ final IConfigurationElement[] extensions = extensionPoint.getConfigurationElements();
+
+ Map<String, AbstractM2MInjectorModule> id_Module_Map = new LinkedHashMap<String, AbstractM2MInjectorModule>();
+
+ for (final IConfigurationElement iConfigurationElement : extensions) {
+
+ final String id = iConfigurationElement.getAttribute("id");
+
+ final String isEnabled = iConfigurationElement.getAttribute("enabled");
+
+ if (Boolean.parseBoolean(isEnabled)) {
+
+ final Object module = iConfigurationElement.createExecutableExtension("class");
+
+ id_Module_Map.put(id, (AbstractM2MInjectorModule) module);
+
+ }
+
+ }
+
+ if (id_Module_Map.size() > 1) {
+
+ String enabledIds = "--- "+id_Module_Map.keySet().stream().filter(s->(s!=null && !s.isEmpty())).collect(Collectors.joining(","+System.getProperty("line.separator")+"--- "));
+
+ logger.error(
+ "Multiple M2M injector modules are enabled. Based on the standard configuration for M2M transofrmation - only one module should be enabled for a specific product"
+ + System.getProperty("line.separator")+"Below are the M2M module ids which are enabled : "+ System.getProperty("line.separator")+enabledIds);
+
+ String firstM2M_moduleId = id_Module_Map.keySet().iterator().next();
+
+ logger.warn("** M2M injector module of id : \"" + firstM2M_moduleId + "\" is enabled");
+
+ return id_Module_Map.get(firstM2M_moduleId);
+
+ } else if (id_Module_Map.size() == 1) {
+
+ String id = id_Module_Map.keySet().iterator().next();
+
+ logger.info("** M2M injector module of id : \"" + id + "\" is enabled");
+
+ return id_Module_Map.get(id);
+
+
+ }else{
+ logger.info("** Default M2M injector module is enabled");
+ }
+
+
+ /*- default case */
+ return null;
+
+ }
+}
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/.classpath b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/.classpath
new file mode 100644
index 0000000..428337e
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/.classpath
@@ -0,0 +1,8 @@
+<?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="src" path="xtend-gen"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
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
new file mode 100644
index 0000000..d3fb94c
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/.gitignore
@@ -0,0 +1,3 @@
+/bin/
+/target/
+/xtend-gen/
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/.project b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/.project
new file mode 100644
index 0000000..d8f4d34
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.app4mc.transformation.extensions</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <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>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ </natures>
+</projectDescription>
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/.settings/org.eclipse.jdt.core.prefs b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.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/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
new file mode 100644
index 0000000..ee615b0
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Extensions
+Bundle-SymbolicName: org.eclipse.app4mc.transformation.extensions;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: BOSCH
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: com.google.inject;bundle-version="3.0.0";visibility:=reexport,
+ org.apache.log4j;bundle-version="1.2.15",
+ org.eclipse.core.runtime,
+ org.eclipse.emf.ecore,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.xtext.xbase.lib;visibility:=reexport
+Export-Package: org.eclipse.app4mc.transformation.extensions,
+ org.eclipse.app4mc.transformation.extensions.base.templates,
+ org.eclipse.app4mc.transformation.extensions.executiontype
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/build.properties b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/build.properties
new file mode 100644
index 0000000..e9863e2
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/plugin.xml b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/plugin.xml
new file mode 100644
index 0000000..7ae7ea6
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/plugin.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension-point id="org.eclipse.app4mc.transformation.extensions.module" name="extensions.module" schema="schema/org.eclipse.app4mc.transformation.extensions.module.exsd"/>
+ <extension-point id="org.eclipse.app4mc.transformation.extensions.m2t" name="extensions.m2t" schema="schema/org.eclipse.app4mc.transformation.extensions.m2t.exsd"/>
+ <extension-point id="org.eclipse.app4mc.transformation.extensions.m2m" name="extensions.m2m" schema="schema/org.eclipse.app4mc.transformation.extensions.m2m.exsd"/>
+
+</plugin>
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
new file mode 100644
index 0000000..979c4ee
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/pom.xml
@@ -0,0 +1,83 @@
+<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>./com.bosch.m2m.simulation.build</relativePath>
+ <groupId>m2m</groupId>
+ <artifactId>com.bosch.m2m.simulation.build</artifactId>
+ <version>1.0.0.qualifier</version>
+ </parent>
+
+ <artifactId>org.eclipse.app4mc.transformation.extensions</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>
+ <groupId>m2m</groupId>
+</project>
\ No newline at end of file
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/schema/org.eclipse.app4mc.transformation.extensions.m2m.exsd b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/schema/org.eclipse.app4mc.transformation.extensions.m2m.exsd
new file mode 100644
index 0000000..22bae05
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/schema/org.eclipse.app4mc.transformation.extensions.m2m.exsd
@@ -0,0 +1,119 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="com.bosch.m2m.app4mc.simulation.extensions" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="com.bosch.m2m.app4mc.simulation.extensions" id="com.bosch.m2m.app4mc.simulation.extensions.m2m" name="extensions.m2m"/>
+ </appinfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <choice>
+ <element ref="m2m"/>
+ </choice>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="m2m">
+ <complexType>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="identifier"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn=":com.bosch.m2m.app4mc.simulation.extensions.executiontype.IModelToModelTransformation"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="enabled" type="boolean">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="apiinfo"/>
+ </appinfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="implementation"/>
+ </appinfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/schema/org.eclipse.app4mc.transformation.extensions.m2t.exsd b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/schema/org.eclipse.app4mc.transformation.extensions.m2t.exsd
new file mode 100644
index 0000000..b28d170
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/schema/org.eclipse.app4mc.transformation.extensions.m2t.exsd
@@ -0,0 +1,119 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="com.bosch.m2m.app4mc.simulation.extensions" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="com.bosch.m2m.app4mc.simulation.extensions" id="com.bosch.m2m.app4mc.simulation.extensions.m2t" name="extensions.m2t"/>
+ </appinfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <choice>
+ <element ref="m2t"/>
+ </choice>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="m2t">
+ <complexType>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="identifier"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn=":com.bosch.m2m.app4mc.simulation.extensions.executiontype.IModelToTextTransformation"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="enabled" type="boolean" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="apiinfo"/>
+ </appinfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="implementation"/>
+ </appinfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/schema/org.eclipse.app4mc.transformation.extensions.module.exsd b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/schema/org.eclipse.app4mc.transformation.extensions.module.exsd
new file mode 100644
index 0000000..4860fa3
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/schema/org.eclipse.app4mc.transformation.extensions.module.exsd
@@ -0,0 +1,119 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="com.bosch.m2m.app4mc.simulation.extensions" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="com.bosch.m2m.app4mc.simulation.extensions" id="com.bosch.m2m.app4mc.simulation.extensions.module" name="extensions.module"/>
+ </appinfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <choice>
+ <element ref="module"/>
+ </choice>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="module">
+ <complexType>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="identifier"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn="com.bosch.m2m.app4mc.simulation.extensions.AbstractM2MInjectorModule:"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="enabled" type="boolean" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="apiinfo"/>
+ </appinfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="implementation"/>
+ </appinfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/src/org/eclipse/app4mc/transformation/extensions/AbstractM2MInjectorModule.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/src/org/eclipse/app4mc/transformation/extensions/AbstractM2MInjectorModule.java
new file mode 100644
index 0000000..ad3df4b
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/src/org/eclipse/app4mc/transformation/extensions/AbstractM2MInjectorModule.java
@@ -0,0 +1,21 @@
+package org.eclipse.app4mc.transformation.extensions;
+
+import com.google.inject.AbstractModule;
+
+public abstract class AbstractM2MInjectorModule extends AbstractModule {
+
+
+ protected void initializeBaseConfiguration(){
+ bind(CustomObjectsStore.class).toInstance(new CustomObjectsStore ());
+ }
+
+
+ @Override
+ protected void configure() {
+ initializeBaseConfiguration();
+ }
+
+
+
+
+}
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/src/org/eclipse/app4mc/transformation/extensions/CustomObjectsStore.xtend b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/src/org/eclipse/app4mc/transformation/extensions/CustomObjectsStore.xtend
new file mode 100644
index 0000000..fbff5b5
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/src/org/eclipse/app4mc/transformation/extensions/CustomObjectsStore.xtend
@@ -0,0 +1,22 @@
+package org.eclipse.app4mc.transformation.extensions
+
+import java.util.HashMap
+
+class CustomObjectsStore {
+
+ private var map= new HashMap ();
+
+
+ public def <T> T getInstance(Object cls) {
+
+ val value = map.get(cls);
+
+ return value as T
+ }
+
+ public def <T> void injectMembers(Object cls, T instance) {
+ map.put(cls, instance);
+
+ }
+
+}
\ 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
new file mode 100644
index 0000000..ec6dd0d
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/src/org/eclipse/app4mc/transformation/extensions/base/templates/AbstractTransformer.xtend
@@ -0,0 +1,69 @@
+package org.eclipse.app4mc.transformation.extensions.base.templates
+
+import com.google.inject.Inject
+import java.util.Properties
+import org.apache.log4j.LogManager
+import org.apache.log4j.Logger
+import org.eclipse.app4mc.transformation.extensions.CustomObjectsStore
+
+public abstract class AbstractTransformer {
+
+
+ @Inject public CustomObjectsStore customObjsStore
+
+
+ private Logger logger
+
+ private Properties properties
+
+ /**
+ * Provides Log4J logger which can be used by the corresponding Transformer classes.
+ * Note: Root Logger is initialized during the startup and the corresponding Appenders are hooked to it accordingly.
+ * In case, if user specific appenders are to be attached to the logger, this method should be overridden and new Appenders should be attached to the logger
+ *
+ */
+ protected def Logger getLogger() {
+ if (logger == null) {
+ logger = LogManager.getLogger("com.bosch.m2m.app4mc.simulation");
+ }
+ return logger
+ }
+
+
+ protected def String getProperty(String propKey){
+
+ if(properties==null){
+
+ if(customObjsStore !=null){
+ properties = customObjsStore.getInstance(Properties)
+ if(properties == null){
+ throw new NullPointerException("Properties object not set in CustomObjectsStore : Verify the custom Google Guice Module configuration ")
+ }
+
+ }else{
+ throw new NullPointerException("CustomObjectsStore object not binded: Verify the custom Google Guice Module configuration ")
+ }
+ }
+
+ val value = properties.get(propKey)
+
+ if(value == null){
+ throw new NullPointerException("Request input key : \""+ propKey + "\" not supplied in the input properties file")
+ }
+
+ return value.toString
+
+ }
+
+
+
+/* public def doGenerate() '''
+
+ « val instance = customObjsStore.getInstance(Properties)»
+ «instance.get("log_file")»
+ «getLogger.warn("logging info about transformation of :"+this.class.name) »
+ ----------> «this.class.name»
+ ===============> «properties.get("log_file")»
+ '''
+*/
+}
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/src/org/eclipse/app4mc/transformation/extensions/base/templates/RootTransformer.xtend b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/src/org/eclipse/app4mc/transformation/extensions/base/templates/RootTransformer.xtend
new file mode 100644
index 0000000..b779e11
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/src/org/eclipse/app4mc/transformation/extensions/base/templates/RootTransformer.xtend
@@ -0,0 +1,16 @@
+package org.eclipse.app4mc.transformation.extensions.base.templates
+
+import org.eclipse.emf.ecore.resource.ResourceSet
+
+public class RootTransformer extends AbstractTransformer{
+
+
+
+ public def void m2mTransformation(ResourceSet inputResourceSet, ResourceSet outputResourceSet){
+
+ }
+
+ public def void m2tTransformation(ResourceSet inputResourceSet){
+
+ }
+}
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/src/org/eclipse/app4mc/transformation/extensions/executiontype/IModelToModelTransformation.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/src/org/eclipse/app4mc/transformation/extensions/executiontype/IModelToModelTransformation.java
new file mode 100644
index 0000000..5d9b43d
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/src/org/eclipse/app4mc/transformation/extensions/executiontype/IModelToModelTransformation.java
@@ -0,0 +1,16 @@
+package org.eclipse.app4mc.transformation.extensions.executiontype;
+
+import java.util.Properties;
+
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+public interface IModelToModelTransformation {
+
+
+ public ResourceSet getInputResourceSet();
+
+ public ResourceSet getOuputResourceSet();
+
+ public void setProperties(Properties parameters);
+
+}
diff --git a/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/src/org/eclipse/app4mc/transformation/extensions/executiontype/IModelToTextTransformation.java b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/src/org/eclipse/app4mc/transformation/extensions/executiontype/IModelToTextTransformation.java
new file mode 100644
index 0000000..74db5cf
--- /dev/null
+++ b/eclipse-tools/model-transformation/plugins/org.eclipse.app4mc.transformation.extensions/src/org/eclipse/app4mc/transformation/extensions/executiontype/IModelToTextTransformation.java
@@ -0,0 +1,13 @@
+package org.eclipse.app4mc.transformation.extensions.executiontype;
+
+import java.util.Properties;
+
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+public interface IModelToTextTransformation {
+
+ public ResourceSet getInputResourceSet();
+
+
+ public void setProperties(Properties parameters);
+}
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/.gitignore b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/.gitignore
new file mode 100644
index 0000000..24d6437
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/.gitignore
@@ -0,0 +1 @@
+/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
new file mode 100644
index 0000000..bbe6f6b
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/.project
@@ -0,0 +1,22 @@
+<?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
new file mode 100644
index 0000000..d4b56df
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/META-INF/MANIFEST.MF
@@ -0,0 +1,6 @@
+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
new file mode 100644
index 0000000..6172014
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/build.properties
@@ -0,0 +1,3 @@
+bin.includes = META-INF/,\
+ epl-v10.html
+src.includes = epl-v10.html
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/epl-v10.html b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/epl-v10.html
new file mode 100644
index 0000000..0beaf86
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<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>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<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, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">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, in
+source code and object code form.</p>
+
+<p class="list">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 and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<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>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<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. 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.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</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
new file mode 100644
index 0000000..b25d2cc
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.build/pom.xml
@@ -0,0 +1,202 @@
+<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
new file mode 100644
index 0000000..24d6437
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/.project b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/.project
new file mode 100644
index 0000000..7a354e4
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/.project
@@ -0,0 +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>
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
new file mode 100644
index 0000000..f5e92c9
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/artifacts.jar
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
new file mode 100644
index 0000000..04780f3
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/category.xml
@@ -0,0 +1,10 @@
+<?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
new file mode 100644
index 0000000..c45a41d
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/content.jar
Binary files differ
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/epl-v10.html b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/epl-v10.html
new file mode 100644
index 0000000..0beaf86
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<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>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<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, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">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, in
+source code and object code form.</p>
+
+<p class="list">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 and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<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>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<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. 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.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
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
new file mode 100644
index 0000000..2e9ed7c
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/features/org.eclipse.app4mc.sca2amalthea.feature.sdk_1.0.0.201708181120.jar
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
new file mode 100644
index 0000000..65d1d95
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/features/org.eclipse.app4mc.sca2amalthea.feature_1.0.0.201708181120.jar
Binary files differ
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/index.html b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/index.html
new file mode 100644
index 0000000..485c676
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/index.html
@@ -0,0 +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>
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
new file mode 100644
index 0000000..430489c
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.exporter_1.0.0.201708181120.jar
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
new file mode 100644
index 0000000..a20f8f4
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.ir.loader_1.0.0.201708181120.jar
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
new file mode 100644
index 0000000..9dc3fff
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.ir_0.1.0.201708181120.jar
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
new file mode 100644
index 0000000..20b1e80
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.llvm_1.0.0.201708181120.jar
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
new file mode 100644
index 0000000..468843c
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.scairmodelenricher_1.0.0.201708181120.jar
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
new file mode 100644
index 0000000..9e4edd1
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.serialization_1.0.0.201708181120.jar
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
new file mode 100644
index 0000000..3cb4bf4
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.ui_1.0.0.201708181120.jar
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
new file mode 100644
index 0000000..79e2b0c
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/plugins/org.eclipse.app4mc.sca2amalthea.utils_1.0.0.201708181120.jar
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
new file mode 100644
index 0000000..56d78cd
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/pom.xml
@@ -0,0 +1,91 @@
+<?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
new file mode 100644
index 0000000..a3feb82
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/site.xml
@@ -0,0 +1,11 @@
+<?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
new file mode 100644
index 0000000..bb3363d
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/siteTemplate/index.html
@@ -0,0 +1,25 @@
+<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/org.eclipse.app4mc.sca2amalthea.updatesite/web/site.css b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/web/site.css
new file mode 100644
index 0000000..425134e
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/web/site.css
@@ -0,0 +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>
diff --git a/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/web/site.xsl b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/web/site.xsl
new file mode 100644
index 0000000..4a2d095
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/org.eclipse.app4mc.sca2amalthea.updatesite/web/site.xsl
@@ -0,0 +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>
diff --git a/eclipse-tools/sca2amalthea/build/readme.txt b/eclipse-tools/sca2amalthea/build/readme.txt
new file mode 100644
index 0000000..c7b9f56
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/build/readme.txt
@@ -0,0 +1 @@
+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
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/.project b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/.project
new file mode 100644
index 0000000..84ec890
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.app4mc.sca2amalthea.feature.sdk</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/.settings/org.eclipse.jdt.core.prefs b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..295926d
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.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/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/build.properties b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/build.properties
new file mode 100644
index 0000000..375ab7e
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/build.properties
@@ -0,0 +1,3 @@
+bin.includes = feature.xml,\
+ epl-v10.html
+src.includes = epl-v10.html
diff --git a/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/epl-v10.html b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/epl-v10.html
new file mode 100644
index 0000000..0beaf86
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<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>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<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, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">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, in
+source code and object code form.</p>
+
+<p class="list">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 and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<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>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<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. 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.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
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
new file mode 100644
index 0000000..9f82127
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/feature.xml
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.app4mc.sca2amalthea.feature.sdk"
+ label="SCA2AMALTHEA SDK"
+ version="1.0.0.qualifier"
+ provider-name="Eclipse.org">
+
+ <description url="http://www.example.com/description">
+ [Enter Feature Description here.]
+ </description>
+
+ <copyright url="http://www.example.com/copyright">
+ [Enter Copyright Description here.]
+ </copyright>
+
+ <license url="http://www.example.com/license">
+ [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>
+
+ <plugin
+ id="org.eclipse.app4mc.sca2amalthea.exporter"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca2amalthea.ir"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca2amalthea.ir.loader"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca2amalthea.llvm"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca2amalthea.scairmodelenricher"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca2amalthea.serialization"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca2amalthea.utils"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca2amalthea.ui"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca.amalthea.loader"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca.amalthea.model.utils"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca.logging"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca.scheduling.loader"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca.ui"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca.util"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca2amalthea.docu"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"/>
+
+</feature>
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
new file mode 100644
index 0000000..a7c65f0
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature.sdk/pom.xml
@@ -0,0 +1,14 @@
+<?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
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/.project b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/.project
new file mode 100644
index 0000000..ffa1a98
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.app4mc.sca2amalthea.feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/.settings/org.eclipse.jdt.core.prefs b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..295926d
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.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/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/build.properties b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/build.properties
new file mode 100644
index 0000000..375ab7e
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/build.properties
@@ -0,0 +1,3 @@
+bin.includes = feature.xml,\
+ epl-v10.html
+src.includes = epl-v10.html
diff --git a/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/epl-v10.html b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/epl-v10.html
new file mode 100644
index 0000000..0beaf86
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<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>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<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, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">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, in
+source code and object code form.</p>
+
+<p class="list">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 and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<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>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<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. 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.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
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
new file mode 100644
index 0000000..3cb5967
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/feature.xml
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.app4mc.sca2amalthea.feature"
+ label="SCA2AMALTHEA Runtime"
+ version="1.0.0.qualifier"
+ provider-name="Eclipse.org">
+
+ <description url="http://www.example.com/description">
+ [Enter Feature Description here.]
+ </description>
+
+ <copyright url="http://www.example.com/copyright">
+ [Enter Copyright Description here.]
+ </copyright>
+
+ <license url="http://www.example.com/license">
+ [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>
+
+ <plugin
+ id="org.eclipse.app4mc.sca2amalthea.exporter"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca2amalthea.ir"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca2amalthea.ir.loader"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca2amalthea.llvm"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca2amalthea.scairmodelenricher"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca2amalthea.serialization"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca2amalthea.utils"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca2amalthea.ui"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca.amalthea.loader"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca.amalthea.model.utils"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca.logging"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca.scheduling.loader"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca.ui"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca.util"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.app4mc.sca2amalthea.docu"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"/>
+
+</feature>
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
new file mode 100644
index 0000000..afcce51
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/features/org.eclipse.app4mc.sca2amalthea.feature/pom.xml
@@ -0,0 +1,14 @@
+<?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/features/readme.txt b/eclipse-tools/sca2amalthea/features/readme.txt
new file mode 100644
index 0000000..a7aa295
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/features/readme.txt
@@ -0,0 +1,5 @@
+Please name feature projects (i.e. their directory) after their feature id:
+
+org.eclipse.app4mc.<featurename>
+
+Place plugins under the sources folder.
\ No newline at end of file
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/.classpath b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/.classpath
new file mode 100644
index 0000000..b862a29
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.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/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/.gitignore
new file mode 100644
index 0000000..24d6437
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/.project b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/.project
new file mode 100644
index 0000000..1e006fd
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/.project
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.app4mc.sca.amalthea.loader</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>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</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/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/.settings/org.eclipse.jdt.core.prefs b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..295926d
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.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/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
new file mode 100644
index 0000000..e86fa6c
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Amalthea Loader
+Bundle-SymbolicName: org.eclipse.app4mc.sca.amalthea.loader
+Bundle-Version: 1.0.0.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
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
new file mode 100644
index 0000000..cf1db2e
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/bin/.gitignore
@@ -0,0 +1 @@
+/org/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/build.properties b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/build.properties
new file mode 100644
index 0000000..4fd3534
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ epl-v10.html
+src.includes = epl-v10.html
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/epl-v10.html b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/epl-v10.html
new file mode 100644
index 0000000..0beaf86
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<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>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<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, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">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, in
+source code and object code form.</p>
+
+<p class="list">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 and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<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>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<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. 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.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
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
new file mode 100644
index 0000000..0de10d5
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/pom.xml
@@ -0,0 +1,82 @@
+<?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
new file mode 100644
index 0000000..98278ee
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/src/org/eclipse/app4mc/sca/amalthea/loader/AMALTHEAResourceLoader.java
@@ -0,0 +1,90 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2017 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 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.sca.amalthea.loader;
+
+import java.io.IOException;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.amalthea.model.AmaltheaFactory;
+import org.eclipse.app4mc.amalthea.model.AmaltheaPackage;
+import org.eclipse.app4mc.amalthea.model.SWModel;
+import org.eclipse.app4mc.amalthea.sphinx.AmaltheaResourceFactory;
+import org.eclipse.app4mc.sca.logging.manager.Logmanager;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+
+/**
+ * Extension when loading moel from resource
+ */
+public class AMALTHEAResourceLoader {
+
+ /**
+ * @param filePath URI of the amalthea file
+ * @return object of type Resource which contains the parsed information of the provided amalthea file
+ */
+ public Resource loadAmaltheaResource(final URI filePath) {
+ final ResourceSet resourceSet = new ResourceSetImpl();
+
+
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("amxmi", new AmaltheaResourceFactory());
+ resourceSet.getPackageRegistry().put(AmaltheaPackage.eNS_URI, AmaltheaPackage.eINSTANCE);
+ final Resource res = resourceSet.createResource(filePath);
+ try {
+ res.load(null);
+ }
+ catch (IOException e) {
+ Logmanager.getInstance().logException(this.getClass(), e, "org.eclipse.app4mc.amalthea.loader");
+ }
+ return res;
+
+ }
+
+ /**
+ * @param filePath URI of the amalthea file
+ * @return AMALTHEA intermediate model
+ */
+ public Amalthea getAmaltheaModelFromResource(final URI filePath) {
+
+ final Resource r = loadAmaltheaResource(filePath);
+ EList<EObject> contents = r.getContents();
+ if (contents != null) {
+ for (EObject content : contents) {
+ if (content instanceof Amalthea) {
+ return (Amalthea) content;
+ }
+ }
+
+ /*
+ * Extension to support resources without AMALTHEA central model element in resource. - Situation: The Amalthea
+ * central model element could not been found. - Approach: Search for SwModel instead. It can be assumed, that the
+ * AMALTHEA model builder has created with the SwModel as root element. - Solution: Return baked Amaltha Model
+ * with parsed SwModel else null
+ */
+ for (EObject content : contents) {
+ if (content instanceof SWModel) {
+ Amalthea amaltheaModel = AmaltheaFactory.eINSTANCE.createAmalthea();
+ amaltheaModel.setSwModel((SWModel) content);
+ return amaltheaModel;
+ }
+ }
+ }
+ return null;
+ }
+}
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
new file mode 100644
index 0000000..a0d2dd7
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.loader/src/org/eclipse/app4mc/sca/amalthea/serializer/AMALTHEAResourceSerializer.java
@@ -0,0 +1,79 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2017 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 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.sca.amalthea.serializer;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.amalthea.sphinx.AmaltheaResourceFactory;
+import org.eclipse.app4mc.sca.logging.manager.Logmanager;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+/**
+ * Class that serializes the amalthea model to the given file
+ */
+public class AMALTHEAResourceSerializer {
+
+ private static final String EXT = "amxmi";
+
+ /**
+ * @param filename filepath without extension
+ * @param amaltheaModel {@link AMALTHEA}
+ */
+ public void saveAmaltheaModel(final String filename, final Amalthea amaltheaModel) {
+ if ((null != amaltheaModel) && !amaltheaModel.eContents().isEmpty()) {
+ saveModelFile(filename, amaltheaModel);
+ }
+ }
+
+ private void saveModelFile(final String filename, final EObject content) {
+ saveModelFile(filename, new BasicEList<EObject>() {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ {
+ add(content);
+ }
+ });
+ }
+
+ /**
+ * @param filename
+ * @param amaltheaModel
+ */
+ private void saveModelFile(final String filename, final List<EObject> content) {
+ final String fileNamewithExt = filename.concat(".").concat(EXT);
+ final URI tmpUri = URI.createFileURI(fileNamewithExt);
+ final ResourceSet resourceSet = new ResourceSetImpl();
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(EXT, new AmaltheaResourceFactory());
+
+ final Resource outResource = resourceSet.createResource(tmpUri);
+ outResource.getContents().addAll(content);
+ try {
+ outResource.save(null);
+ }
+ catch (IOException e) {
+ Logmanager.getInstance().logException(this.getClass(), e, "org.eclipse.app4mc.amalthea.loader");
+ }
+ }
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/.classpath b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/.classpath
new file mode 100644
index 0000000..b862a29
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.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/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/.gitignore
new file mode 100644
index 0000000..24d6437
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/.project b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/.project
new file mode 100644
index 0000000..377ee81
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/.project
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.app4mc.sca.amalthea.model.utils</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>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</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/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/.settings/org.eclipse.jdt.core.prefs b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..295926d
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.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/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
new file mode 100644
index 0000000..fba8065
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+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-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
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
new file mode 100644
index 0000000..cf1db2e
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/bin/.gitignore
@@ -0,0 +1 @@
+/org/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/build.properties b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/build.properties
new file mode 100644
index 0000000..4fd3534
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ epl-v10.html
+src.includes = epl-v10.html
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/epl-v10.html b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/epl-v10.html
new file mode 100644
index 0000000..0beaf86
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<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>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<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, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">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, in
+source code and object code form.</p>
+
+<p class="list">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 and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<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>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<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. 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.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
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
new file mode 100644
index 0000000..123d869
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/pom.xml
@@ -0,0 +1,84 @@
+<?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
new file mode 100644
index 0000000..5d879cb
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/Activator.java
@@ -0,0 +1,68 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2017 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 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.sca.amalthea.model.utils;
+
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends Plugin {
+
+ /**
+ * The plug-in ID
+ */
+ public static final String PLUGIN_ID = "org.eclipse.app4mc.amalthea.model.utils"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ // Intentionally left blank
+ }
+
+ /*
+ * (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/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
new file mode 100644
index 0000000..f0c9d1a
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/helper/CustomPropertiesUtil.java
@@ -0,0 +1,76 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2017 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 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.sca.amalthea.model.utils.helper;
+
+import org.eclipse.app4mc.amalthea.model.AmaltheaFactory;
+import org.eclipse.app4mc.amalthea.model.IAnnotatable;
+import org.eclipse.app4mc.amalthea.model.StringObject;
+
+/**
+ * This class contains Source Code to add custom properties to the AMALTHEA Model
+ */
+public final class CustomPropertiesUtil {
+
+ /**
+ * Constant for srcline property
+ */
+ public static final String SRC_LINE = "srcline";
+ /**
+ * Constant for srccol property
+ */
+ public static final String SRC_COL = "srccol";
+
+ /**
+ * Private constructor
+ */
+ private CustomPropertiesUtil() {
+ // Intentionally left blank
+ }
+
+ /**
+ * Creates string objects out of the value provided and returns
+ *
+ * @param value The value for which the string object has to be created
+ * @return {@link StringObject}
+ */
+ private static StringObject getCustomStringObject(final String value) {
+ StringObject srcValue = AmaltheaFactory.eINSTANCE.createStringObject();
+ srcValue.setValue(value);
+ return srcValue;
+ }
+
+ /**
+ * @param amBaseObject
+ * @param key
+ * @param value
+ */
+ public static void addToCustomProperties(final IAnnotatable amBaseObject, final String key, final String value) {
+ amBaseObject.getCustomProperties().put(key, getCustomStringObject(value));
+ }
+
+ /**
+ * @param amBaseObject
+ * @param srcLine
+ * @param srcCol
+ */
+ public static void addSourceLineInformation(final IAnnotatable amBaseObject, final String srcLine,
+ final String srcCol) {
+ if ((srcLine != null) && !srcLine.isEmpty()) {
+ addToCustomProperties(amBaseObject, CustomPropertiesUtil.SRC_LINE, srcLine);
+ }
+ if ((srcCol != null) && !srcCol.isEmpty()) {
+ addToCustomProperties(amBaseObject, CustomPropertiesUtil.SRC_COL, srcCol);
+ }
+ }
+}
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
new file mode 100644
index 0000000..65ade17
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/helper/ModelAccess.java
@@ -0,0 +1,87 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2017 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 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.sca.amalthea.model.utils.helper;
+
+import java.util.HashSet;
+import java.util.Set;
+
+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.ISR;
+import org.eclipse.app4mc.amalthea.model.Process;
+import org.eclipse.app4mc.amalthea.model.Runnable;
+import org.eclipse.app4mc.amalthea.model.Task;
+import org.eclipse.app4mc.amalthea.model.TaskRunnableCall;
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * This class contains static model access helper
+ */
+public class ModelAccess {
+
+ /**
+ * @param amaltheaModel to be accessed
+ * @return all runnables that are directly called from a Task or an ISR
+ */
+ public static Set<Runnable> getRunnablesFromTaskAndIsr(final Amalthea amaltheaModel) {
+ Set<Runnable> calledRunnables = new HashSet<>();
+ for (Task task : amaltheaModel.getSwModel().getTasks()) {
+ Set<Runnable> runnablesFromTask = getRunnablesFromTask(task);
+ calledRunnables.addAll(runnablesFromTask);
+ }
+
+ for (ISR isr : amaltheaModel.getSwModel().getIsrs()) {
+ Set<Runnable> runnablesFromIsr = getRunnablesFromTask(isr);
+ calledRunnables.addAll(runnablesFromIsr);
+ }
+ return calledRunnables;
+ }
+
+ /**
+ * @param process from which the runnables are taken
+ * @return all runnables that are called by the given Task or ISR
+ */
+ public static Set<Runnable> getRunnablesFromTask(final Process process) {
+ Set<Runnable> calledRunnables = new HashSet<>();
+ for (GraphEntryBase entry : process.getCallGraph().getGraphEntries()) {
+ if (!(entry instanceof CallSequence)) {
+ continue;
+ }
+ for (CallSequenceItem item : ((CallSequence) entry).getCalls()) {
+ if (item instanceof TaskRunnableCall) {
+ calledRunnables.add(((TaskRunnableCall) item).getRunnable());
+ }
+ }
+ }
+ return calledRunnables;
+ }
+
+ /**
+ * @param runnables to be searched for
+ * @param name of the runnable
+ * @return runnable instance of the given name
+ */
+ public static Runnable getRunnable(final EList<Runnable> runnables, final String name) {
+ for (Runnable runnable : runnables) {
+ if (name.equals(runnable.getName())) {
+ return runnable;
+ }
+ }
+ return null;
+ }
+
+
+}
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
new file mode 100644
index 0000000..c51a39e
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/manipulator/FunctionPointerRunnableConverter.java
@@ -0,0 +1,102 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2017 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 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.sca.amalthea.model.utils.manipulator;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+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;
+import org.eclipse.app4mc.sca.amalthea.model.utils.helper.ModelAccess;
+import org.eclipse.app4mc.sca.logging.manager.LogFactory.Severity;
+import org.eclipse.app4mc.sca.logging.util.SCALogConstants;
+import org.eclipse.app4mc.sca.logging.util.LogUtil;
+import org.eclipse.emf.common.util.EList;
+
+
+/**
+ * This class does a simple function pointer resolution on the existing AMALTHEA model. Each function pointer access
+ * that ends with "-FPTR" is transformed into a runnable call.
+ */
+public class FunctionPointerRunnableConverter implements IModelManipulator {
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void manipulateModel(final Amalthea amaltheaModel) {
+ String patternString = "(.*)-FPTR";
+ Pattern pattern = Pattern.compile(patternString);
+
+ 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;
+ if (labelAccess.getData() != null) {
+ Matcher matcher = pattern.matcher(labelAccess.getData().getName());
+ if ((labelAccess.getAccess() == LabelAccessEnum.READ) && matcher.matches()) {
+ String runnableName = matcher.group(1);
+ Runnable fpRunnable = ModelAccess.getRunnable(runnables, runnableName);
+ if (fpRunnable != null) {
+ LogUtil.log(SCALogConstants.TOOL_ID, Severity.DEBUG,
+ "Add runnable call from function pointer access to: " + runnable.getName() + ", calls: " +
+ fpRunnable.getName(),
+ this.getClass(), Activator.PLUGIN_ID);
+ RunnableCall runnableCall = AmaltheaFactory.eINSTANCE.createRunnableCall();
+ runnableCall.setRunnable(fpRunnable);
+ runnable.getRunnableItems().add((i + 1), runnableCall);
+ if (labelAccess.getCustomProperties() != null) {
+ String srcline = "";
+ if (labelAccess.getCustomProperties().containsKey(CustomPropertiesUtil.SRC_LINE)) {
+ srcline =
+ ((StringObject) runnable.getCustomProperties().get(CustomPropertiesUtil.SRC_LINE)).getValue();
+ }
+ String srccol = "";
+ if (labelAccess.getCustomProperties().containsKey(CustomPropertiesUtil.SRC_COL)) {
+ srccol =
+ ((StringObject) runnable.getCustomProperties().get(CustomPropertiesUtil.SRC_COL)).getValue();
+ }
+ CustomPropertiesUtil.addSourceLineInformation(runnableCall, srcline, srccol);
+ }
+ }
+ }
+ }
+ else {
+ LogUtil.log(SCALogConstants.TOOL_ID, Severity.DEBUG,
+ "No Label Available for a label access in the runnable: " + runnable.getName(), this.getClass(),
+ Activator.PLUGIN_ID);
+ }
+ }
+ }
+ }
+ }
+ catch (Exception e) {
+ LogUtil.logException(SCALogConstants.TOOL_ID, e.getClass(), e, Activator.PLUGIN_ID);
+ }
+ }
+
+
+}
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
new file mode 100644
index 0000000..3171f28
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/manipulator/IModelManipulator.java
@@ -0,0 +1,30 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2017 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 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.sca.amalthea.model.utils.manipulator;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;;
+
+/**
+ * This interface is the base for all instances that want to manipulate an AMALTHEA model.
+ */
+public interface IModelManipulator {
+
+ /**
+ * Within this methode an AMALTHEA model is changed according to the implementing instances
+ *
+ * @param amaltheaModel model that is to be changed
+ */
+ public void manipulateModel(Amalthea amaltheaModel);
+
+}
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
new file mode 100644
index 0000000..2013ba4
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.amalthea.model.utils/src/org/eclipse/app4mc/sca/amalthea/model/utils/manipulator/StructMemberRemover.java
@@ -0,0 +1,209 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2017 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 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.sca.amalthea.model.utils.manipulator;
+
+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;
+import org.eclipse.app4mc.sca.logging.util.LogUtil;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+
+
+/**
+ *
+ */
+public class StructMemberRemover implements IModelManipulator {
+
+ private final String FUNCTION_STATIC_VARIABLES_MARKER = "PLAT4MC_FS";
+ private final String FILE_STATIC_VARIABLES_MARKER = "PLAT4MC_CS";
+
+ private Amalthea amaltheaModel;
+ private String inFile;
+
+
+ /**
+ *
+ */
+ public StructMemberRemover() {
+ super();
+ }
+
+ /**
+ * @param inFile
+ * @param outFile
+ */
+ public StructMemberRemover(final String inFile) {
+ super();
+ this.inFile = inFile;
+ AMALTHEAResourceLoader arl = new AMALTHEAResourceLoader();
+ URI createFileURI = URI.createFileURI(this.inFile);
+ this.amaltheaModel = arl.getAmaltheaModelFromResource(createFileURI);
+ }
+
+ /**
+ * @param amaltheaModel
+ */
+ public StructMemberRemover(final Amalthea amaltheaModel) {
+ this.amaltheaModel = amaltheaModel;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void manipulateModel(final Amalthea amaltheaModel) {
+ manipulateGivenModel(amaltheaModel);
+ }
+
+ /**
+ *
+ */
+ public void manipulateModel() {
+ manipulateGivenModel(this.amaltheaModel);
+ }
+
+ private void manipulateGivenModel(final Amalthea amaltheaModel) {
+ removeStructMembersInLabelAccess(amaltheaModel);
+ deleteLabelsInComponentModel(amaltheaModel);
+ deleteLabelWithStructMembers(amaltheaModel);
+
+ }
+
+ /**
+ * Delete the labels with struct members information from the label list
+ *
+ * @param amaltheaModel
+ */
+ private void deleteLabelWithStructMembers(final Amalthea amaltheaModel) {
+ EList<Label> labels = amaltheaModel.getSwModel().getLabels();
+ EList<Label> labelsToBeRemoved = new BasicEList<Label>();
+ if ((labels != null) && !labels.isEmpty()) {
+ for (Label label : labels) {
+ String labelName = label.getName();
+ if (containsStructMember(labelName)) {
+ labelsToBeRemoved.add(label);
+ }
+ }
+ labels.removeAll(labelsToBeRemoved);
+ }
+ }
+
+ /**
+ * Returns true if the labelname doesn't contain struct member information or if it is the name a static variable
+ * (global or inside a function)
+ *
+ * @param labelName label name
+ * @return true if if the labelname doesn't contain struct member information or if it is the name a static variable
+ * (global or inside a function)
+ */
+ public boolean containsStructMember(final String labelName) {
+ return (labelName.contains(".") && !labelName.contains(this.FUNCTION_STATIC_VARIABLES_MARKER) &&
+ !labelName.contains(this.FILE_STATIC_VARIABLES_MARKER));
+ }
+
+ /**
+ * Remove the member access information from the label accesses inside runnables
+ *
+ * @param amaltheaModel
+ */
+ private void removeStructMembersInLabelAccess(final Amalthea amaltheaModel) {
+ 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;
+ String labelName = labelAccess.getData().getName();
+ if (containsStructMember(labelName)) {
+ String mainLabelName = removeMemberInformation(labelName);
+ labelAccess.setData(getLabel(amaltheaModel, mainLabelName));
+ }
+ }
+ }
+ }
+ }
+ }
+ catch (Exception e) {
+ LogUtil.logException(SCALogConstants.TOOL_ID, e.getClass(), e, Activator.PLUGIN_ID);
+ }
+ }
+
+
+ /**
+ * @return the amaltheaModel
+ */
+ public Amalthea getAmaltheaModel() {
+ return this.amaltheaModel;
+ }
+
+ /**
+ * Get a defined Label from the AMALTHEA model
+ *
+ * @param amaltheaModel AMALTHEA model
+ * @param mainLabelName name of the label to be returned
+ * @return
+ */
+ private Label getLabel(final Amalthea amaltheaModel, final String mainLabelName) {
+ EList<Label> labels = amaltheaModel.getSwModel().getLabels();
+
+ for (Label label : labels) {
+ if (label.getName().equals(mainLabelName)) {
+ return label;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Removes the member's name and returns the label which represents the whole structure
+ *
+ * @param labelName label name containing the members information
+ * @return
+ */
+ private String removeMemberInformation(final String labelName) {
+ int startPositionOfFirstMember = labelName.indexOf(".");
+ StringBuilder sb = new StringBuilder(labelName.substring(0, startPositionOfFirstMember));
+ int postionOfHypen = labelName.indexOf('-');
+ if (postionOfHypen > 0) {
+ sb.append(labelName.substring(postionOfHypen));
+ }
+ return sb.toString();
+ }
+
+ private void deleteLabelsInComponentModel(final Amalthea amalthea) {
+ for (Component c : amalthea.getComponentsModel().getComponents()) {
+ EList<Label> labels = c.getLabels();
+ EList<Label> labelsToBeRemoved = new BasicEList<Label>();
+ if ((labels != null) && !labels.isEmpty()) {
+ for (Label label : labels) {
+ String labelName = label.getName();
+ if (containsStructMember(labelName)) {
+ labelsToBeRemoved.add(label);
+ }
+ }
+ labels.removeAll(labelsToBeRemoved);
+ }
+ }
+ }
+}
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/.classpath b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/.classpath
new file mode 100644
index 0000000..b862a29
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.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/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/.gitignore b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/.gitignore
new file mode 100644
index 0000000..24d6437
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/.project b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/.project
new file mode 100644
index 0000000..fc8a465
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/.project
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.app4mc.sca.logging</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>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</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/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/.settings/org.eclipse.jdt.core.prefs b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..295926d
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.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/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
new file mode 100644
index 0000000..ee27ff6
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Logging
+Bundle-SymbolicName: org.eclipse.app4mc.sca.logging;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: Eclipse.org
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.emf.ecore,
+ org.apache.log4j,
+ org.eclipse.equinox.registry,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources
+Export-Package: org.eclipse.app4mc.sca.logging.console.loggers,
+ org.eclipse.app4mc.sca.logging.exception,
+ org.eclipse.app4mc.sca.logging.impl,
+ org.eclipse.app4mc.sca.logging.loggers;uses:="org.eclipse.app4mc.logging.impl,org.eclipse.app4mc.logging.util",
+ org.eclipse.app4mc.sca.logging.manager;
+ uses:="org.eclipse.app4mc.logging.impl,
+ org.eclipse.app4mc.logging.notification,
+ org.eclipse.app4mc.logging.util,
+ org.eclipse.app4mc.logging.console.loggers",
+ org.eclipse.app4mc.sca.logging.notification,
+ org.eclipse.app4mc.sca.logging.util
+Bundle-ActivationPolicy: lazy
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
new file mode 100644
index 0000000..cf1db2e
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/bin/.gitignore
@@ -0,0 +1 @@
+/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
new file mode 100644
index 0000000..f003c8d
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/build.properties
@@ -0,0 +1,12 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ cmdlogger.properties,\
+ logger.properties,\
+ epl-v10.html,\
+ build.properties
+src.includes = epl-v10.html,\
+ logger.properties,\
+ build.properties,\
+ cmdlogger.properties
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/cmdlogger.properties b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/cmdlogger.properties
new file mode 100644
index 0000000..d019129
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/cmdlogger.properties
@@ -0,0 +1,9 @@
+log4j.rootLogger=debug
+log4j.category.org.eclipse.app4mc.logging.console.loggers.CommandLineLogger = ERROR, stdout
+
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+
+# Pattern to output the caller's file name and line number.
+log4j.appender.stdout.layout.ConversionPattern=%5p %d{dd MMM yyyy HH:mm:ss,SSS} [%t] (%F:%L) - %m%n
+
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/epl-v10.html b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/epl-v10.html
new file mode 100644
index 0000000..0beaf86
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<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>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<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, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">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, in
+source code and object code form.</p>
+
+<p class="list">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 and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<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>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<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. 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.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/logger.properties b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/logger.properties
new file mode 100644
index 0000000..22faad5
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/logger.properties
@@ -0,0 +1,20 @@
+log4j.rootLogger=DEBUG
+log4j.category.org.eclipse.app4mc.logging.console.loggers.CommandLineLogger = DEBUG, ERROR, WARN, INFO, stdout
+log4j.category.org.eclipse.app4mc.logging.loggers.TextFileLogger = DEBUG, ERROR, WARN, INFO, R
+
+
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+
+# Pattern to output the caller's file name and line number.
+log4j.appender.stdout.layout.ConversionPattern=%5p %d{dd MMM yyyy HH:mm:ss,SSS}[%t] (%F:%L) - %m%n
+
+log4j.appender.R=org.apache.log4j.RollingFileAppender
+log4j.appender.R.File=${user.home}/sca.log
+
+log4j.appender.R.MaxFileSize=100KB
+# Keep one backup file
+log4j.appender.R.MaxBackupIndex=1
+
+log4j.appender.R.layout=org.apache.log4j.PatternLayout
+log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
\ No newline at end of file
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
new file mode 100644
index 0000000..9aefc73
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/pom.xml
@@ -0,0 +1,83 @@
+<?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
new file mode 100644
index 0000000..3efd02a
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/console/loggers/CommandLineLogger.java
@@ -0,0 +1,138 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2017 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 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.sca.logging.console.loggers;
+
+import org.apache.log4j.ConsoleAppender;
+import org.apache.log4j.Logger;
+import org.apache.log4j.PatternLayout;
+import org.eclipse.app4mc.sca.logging.impl.IConsoleLogger;
+import org.eclipse.app4mc.sca.logging.util.LogInformation;
+
+
+/**
+ * Logs the information into the command line.
+ */
+public final class CommandLineLogger implements IConsoleLogger {
+
+ /**
+ * Logger instance
+ */
+ private final Logger logger;
+
+ private static CommandLineLogger instance = null;
+
+ /**
+ * Private constructor
+ */
+ private CommandLineLogger() {
+ this.logger = Logger.getLogger("org.eclipse.app4mc.logging.console.loggers.CommandLineLogger");
+ }
+
+ /**
+ * Returns the singleton instance of the command line logger
+ *
+ * @return {@link CommandLineLogger}
+ */
+ public static synchronized CommandLineLogger getInstance() {
+ if (instance == null) {
+ instance = new CommandLineLogger();
+ }
+ return instance;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void log(final LogInformation logInfo) {
+ if (isEnabled(logInfo)) {
+ configureLogger();
+ switch (logInfo.getSeverity()) {
+ case DEBUG:
+ this.logger.debug(logInfo.getMessage());
+ break;
+ case ERROR:
+ case FATAL:
+ this.logger.error(logInfo.getMessage());
+ break;
+ case WARNING:
+ this.logger.warn(logInfo.getMessage());
+ break;
+ case INFO:
+ this.logger.info(logInfo.getMessage());
+ break;
+ default:
+ break;
+ }
+ }
+ }
+
+ /**
+ * Configures the logger with specific property
+ */
+ private void configureLogger() {
+ if (!this.logger.getAllAppenders().hasMoreElements()) {
+ PatternLayout layout = new PatternLayout("%5p %d{dd MMM yyyy HH:mm:ss,SSS} [%t] (%F:%L) - %m%n");
+ ConsoleAppender consoleAppender = new ConsoleAppender(layout, "System.out");
+ consoleAppender.activateOptions();
+ this.logger.addAppender(consoleAppender);
+ }
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void clear() {
+ // Nothing to implement now
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void logException(final LogInformation logInfo) {
+ configureLogger();
+ switch (logInfo.getSeverity()) {
+ case DEBUG:
+ this.logger.debug(logInfo.getException().getMessage(), logInfo.getException());
+ break;
+ case ERROR:
+ this.logger.error(logInfo.getException().getMessage(), logInfo.getException());
+ break;
+ case INFO:
+ this.logger.info(logInfo.getException().getMessage(), logInfo.getException());
+ break;
+ default:
+ break;
+ }
+
+ }
+
+ /**
+ * @return the logger
+ */
+ public Logger getLogger() {
+ return this.logger;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void closeLogger() {
+ // Now nothing
+ }
+}
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
new file mode 100644
index 0000000..4e2434a
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/exception/App4mcLoggerException.java
@@ -0,0 +1,70 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2017 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 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.sca.logging.exception;
+
+
+/**
+ * Custom exception for the amalthea app4mc logging
+ */
+public class App4mcLoggerException extends RuntimeException {
+
+ private static final long serialVersionUID = 1997753363232807009L;
+
+ /**
+ * Constructor
+ */
+ public App4mcLoggerException() {
+ // Do nothing
+ }
+
+ /**
+ * @param message String
+ */
+ public App4mcLoggerException(final String message) {
+ super(message);
+ }
+
+ /**
+ * Constructor
+ *
+ * @param cause {@link Throwable}
+ */
+ public App4mcLoggerException(final Throwable cause) {
+ super(cause);
+ }
+
+ /**
+ * Constructor
+ *
+ * @param message The message to be displayed
+ * @param cause {@link Throwable}
+ */
+ public App4mcLoggerException(final String message, final Throwable cause) {
+ super(message, cause);
+ }
+
+
+ /**
+ * Constructor
+ *
+ * @param message The message to be displayed
+ * @param cause {@link Throwable}
+ * @param enableSuppression whether or not suppression is enabled or disabled
+ * @param writableStackTrace Decides whether the stack trace has to be printed
+ */
+ public App4mcLoggerException(final String message, final Throwable cause, final boolean enableSuppression,
+ final boolean writableStackTrace) {
+ super(message, cause, enableSuppression, writableStackTrace);
+ }
+}
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
new file mode 100644
index 0000000..e0760eb
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/CollectiveLogger.java
@@ -0,0 +1,86 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2017 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 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.sca.logging.impl;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.app4mc.sca.logging.exception.App4mcLoggerException;
+import org.eclipse.app4mc.sca.logging.util.App4mcLogUtil;
+import org.eclipse.app4mc.sca.logging.util.LogInformation;
+
+
+/**
+ * Utility class which collects several loggers if user you wants to have multple or use case specific ones
+ */
+public class CollectiveLogger implements ILogger {
+
+ /**
+ * List of loggers to which the given information has to be logged
+ */
+ protected final List<ILogger> loggers = new ArrayList<ILogger>();
+
+ /**
+ * @param logger - The Logger instance to be added
+ */
+ public void add(final ILogger logger) {
+ this.loggers.add(logger);
+ }
+
+
+ /**
+ * @param loggerCollection - The logger instances to be added
+ */
+ public void addAll(final Collection<? extends ILogger> loggerCollection) {
+ this.loggers.addAll(loggerCollection);
+ }
+
+
+ /**
+ * @return the number of logger instances
+ */
+ public int size() {
+ return this.loggers.size();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void log(final LogInformation logInfo) {
+ this.loggers.forEach(logger -> {
+ logger.log(logInfo);
+ });
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void closeLogger() {
+ // Now nothing
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean isEnabled(final LogInformation logInfo) throws App4mcLoggerException {
+ return App4mcLogUtil.isInDebugMode(logInfo);
+ }
+
+}
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
new file mode 100644
index 0000000..bba2157
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/IConfiguration.java
@@ -0,0 +1,33 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2017 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 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.sca.logging.impl;
+
+import org.eclipse.app4mc.sca.logging.util.LogInformation;
+
+
+/**
+ * Interface to be implemented by the configurators. Every class registering as a configurator to the log manager should
+ * implement this inferface. The configurators should make sure that log manager can get the relevant log information on
+ * passing the message id. The information would be returns as {@link LogInformation}
+ */
+public interface IConfiguration {
+
+ /**
+ * Returns the log information corresponding to the given message id
+ *
+ * @param messageId The id of the log record
+ * @return Returns the log information @LogInformation
+ */
+ public LogInformation getLogMetaData(String messageId);
+}
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
new file mode 100644
index 0000000..7be7fdc
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/IConsoleLogger.java
@@ -0,0 +1,52 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2017 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 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.sca.logging.impl;
+
+import org.eclipse.app4mc.sca.logging.exception.App4mcLoggerException;
+import org.eclipse.app4mc.sca.logging.util.App4mcLogUtil;
+import org.eclipse.app4mc.sca.logging.util.LogInformation;
+
+
+/**
+ */
+public interface IConsoleLogger extends ILogger {
+
+ /**
+ * Logs the exception to the console. This can be command promt or eclipse console
+ *
+ * @param logInfo {@link LogInformation}
+ */
+ public void logException(LogInformation logInfo);
+
+ /**
+ * Clears the console to which the message has been logged
+ */
+ public void clear();
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ default void closeLogger() {
+ // Now nothing
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ default boolean isEnabled(final LogInformation logInfo) throws App4mcLoggerException {
+ return App4mcLogUtil.isInDebugMode(logInfo);
+ }
+}
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
new file mode 100644
index 0000000..5643f2f
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/IExternalLogger.java
@@ -0,0 +1,59 @@
+package org.eclipse.app4mc.sca.logging.impl;
+
+import java.util.List;
+
+import org.eclipse.app4mc.sca.logging.exception.App4mcLoggerException;
+import org.eclipse.app4mc.sca.logging.manager.LogFactory.LoggerType;
+import org.eclipse.app4mc.sca.logging.util.App4mcLogUtil;
+import org.eclipse.app4mc.sca.logging.util.LogInformation;
+
+/**
+ * *******************************************************************************
+ * Copyright (c) 2017 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 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
+ *
+ * *******************************************************************************
+ */
+
+/**
+ * The interface for the UI specific logging mechanism
+ */
+public interface IExternalLogger extends ILogger {
+
+ /**
+ * Logs the given list of log information
+ *
+ * @param logInfoList {@link LogInformation}
+ */
+ public void log(final List<LogInformation> logInfoList);
+
+ /**
+ * Mentions the type of the logger
+ *
+ * @return {@link LoggerType}
+ */
+ public String getName();
+
+ /**
+ * Validates the given log information and returns the state
+ *
+ * @param logInfo The log information to be validated
+ * @return true if the log info contains relevant data to log into the this external logger
+ * @throws App4mcLoggerException If the validation fails
+ */
+ public boolean validate(LogInformation logInfo) throws App4mcLoggerException;
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ default boolean isEnabled(final LogInformation logInfo) throws App4mcLoggerException {
+ return App4mcLogUtil.isInDebugMode(logInfo);
+ }
+}
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
new file mode 100644
index 0000000..e4e2967
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/ILogger.java
@@ -0,0 +1,42 @@
+package org.eclipse.app4mc.sca.logging.impl;
+
+import org.eclipse.app4mc.sca.logging.exception.App4mcLoggerException;
+import org.eclipse.app4mc.sca.logging.util.LogInformation;
+
+/**
+ * *******************************************************************************
+ * Copyright (c) 2017 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 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
+ *
+ * *******************************************************************************
+ */
+
+/**
+ */
+public interface ILogger {
+
+ /**
+ * @param logInfo {@link LogInformation}
+ */
+ public void log(final LogInformation logInfo);
+
+ /**
+ * Closes the logger opened
+ */
+ public void closeLogger();
+
+ /**
+ * Validates the given log information and returns the state
+ *
+ * @param logInfo The log information to be validated
+ * @return true if the log info contains relevant data to log into the this external logger
+ * @throws App4mcLoggerException If the validation fails
+ */
+ public boolean isEnabled(final LogInformation logInfo) throws App4mcLoggerException;
+}
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
new file mode 100644
index 0000000..ba9faf0
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/impl/ITextLogger.java
@@ -0,0 +1,74 @@
+package org.eclipse.app4mc.sca.logging.impl;
+
+import org.eclipse.app4mc.sca.logging.exception.App4mcLoggerException;
+import org.eclipse.app4mc.sca.logging.util.LogInformation;
+
+/**
+ * *******************************************************************************
+ * Copyright (c) 2017 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 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
+ *
+ * *******************************************************************************
+ */
+
+
+/**
+ */
+public interface ITextLogger extends ILogger {
+
+ /**
+ * @param logInfo to be logged
+ */
+ default void error(final LogInformation logInfo) {
+ log(logInfo);
+ }
+
+ /**
+ * @param logInfo to be logged
+ */
+ default void debug(final LogInformation logInfo) {
+ log(logInfo);
+ }
+
+ /**
+ * @param logInfo to be logged
+ */
+ default void info(final LogInformation logInfo) {
+ log(logInfo);
+ }
+
+ /**
+ * @param logInfo to be logged
+ */
+ default void warn(final LogInformation logInfo) {
+ log(logInfo);
+ }
+
+ /**
+ * Clears the logger
+ */
+ public void clear();
+
+ /**
+ * Validates the given log information and returns the state
+ *
+ * @param logInfo The log information to be validated
+ * @return true if the log info contains relevant data to log into the this external logger
+ * @throws App4mcLoggerException If the validation fails
+ */
+ public boolean validate(LogInformation logInfo) throws App4mcLoggerException;
+
+ /**
+ * Closes the logger associated with the given log file. The log file parameter should be the abosulute path of the
+ * log file. The abosulute path is used to store the loggers created for a given file
+ *
+ * @param logFile the absolute path of the log file whose logger has to be closed
+ */
+ public void closeLogger(final String logFile);
+}
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
new file mode 100644
index 0000000..b22cec4
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/loggers/TextFileLogger.java
@@ -0,0 +1,223 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2017 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 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.sca.logging.loggers;
+
+import java.io.IOException;
+import java.net.URL;
+
+import org.apache.log4j.FileAppender;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.log4j.PatternLayout;
+import org.apache.log4j.PropertyConfigurator;
+import org.eclipse.app4mc.sca.logging.exception.App4mcLoggerException;
+import org.eclipse.app4mc.sca.logging.impl.ITextLogger;
+import org.eclipse.app4mc.sca.logging.manager.Logmanager;
+import org.eclipse.app4mc.sca.logging.util.SCALogConstants;
+import org.eclipse.app4mc.sca.logging.util.App4mcLogUtil;
+import org.eclipse.app4mc.sca.logging.util.LogInformation;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Platform;
+
+
+/**
+ */
+public final class TextFileLogger implements ITextLogger {
+
+ private static TextFileLogger instance = null;
+
+ private static Logger logger;
+
+ private FileAppender customAppender;
+
+ private boolean isValidLogFile = false;
+
+ /**
+ * Private constructor
+ */
+ private TextFileLogger() {
+
+ }
+
+ /**
+ * Returns the singleton instance of the command line logger
+ *
+ * @return {@link TextFileLogger}
+ */
+ public static synchronized TextFileLogger getInstance() {
+ if (instance == null) {
+ instance = new TextFileLogger();
+ }
+ return instance;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void log(final LogInformation logInfo) {
+ if (isEnabled(logInfo)) {
+ this.isValidLogFile = validate(logInfo);
+ configureLogger(logInfo);
+ switch (logInfo.getSeverity()) {
+ case DEBUG:
+ debug(logInfo);
+ break;
+ case ERROR:
+ case FATAL:
+ error(logInfo);
+ break;
+ case INFO:
+ case SYSTEM:
+ case METRIC:
+ info(logInfo);
+ break;
+ case WARNING:
+ warn(logInfo);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void closeLogger() {
+ if (logger != null) {
+ logger.removeAllAppenders();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void clear() {
+ // Nothing right now
+ }
+
+ /**
+ * Configures the logger with specific property
+ */
+ private void configureLogger(final LogInformation logInfo) {
+ try {
+ if (this.isValidLogFile) {
+ synchronized (this) {
+ logger = Logger.getLogger(logInfo.getLogFilePath());
+ }
+ if (!logger.getAllAppenders().hasMoreElements()) {
+ Logger.getRootLogger().getLoggerRepository().resetConfiguration();
+ PatternLayout layout = getLayout(logInfo);
+ this.customAppender = new FileAppender(layout, logInfo.getLogFilePath(), true);
+ this.customAppender.activateOptions();
+ logger.addAppender(this.customAppender);
+ }
+ }
+ else {
+ synchronized (this) {
+ logger = Logger.getLogger("org.eclipse.app4mc.logging.loggers.TextFileLogger");
+ }
+ logger.setLevel(Level.OFF);
+ URL confURL = Platform.getBundle(SCALogConstants.PLUGIN_ID).getEntry(SCALogConstants.LOGGER_PROPERTIES);
+ PropertyConfigurator.configure(FileLocator.toFileURL(confURL).getFile());
+ }
+ }
+ catch (IOException e) {
+ Logmanager.getInstance().logException(this.getClass(), e, SCALogConstants.PLUGIN_ID);
+ }
+ }
+
+ /**
+ * Returns the relevant layout for the given file in the log info.
+ *
+ * @param logInfo {@link LogInformation}
+ * @return {@link PatternLayout}
+ */
+ private PatternLayout getLayout(final LogInformation logInfo) {
+ PatternLayout layout = new PatternLayout("%d{ISO8601} - [%-5p] - %c %x - %m%n");
+ if (logInfo.getLogFilePath().endsWith(SCALogConstants.CSV_EXTENSION)) {
+ layout = new PatternLayout("%m%n");
+ }
+ return layout;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void error(final LogInformation logInfo) {
+ logger.setLevel(Level.ERROR);
+ logger.error(logInfo.getMessage());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void debug(final LogInformation logInfo) {
+ logger.setLevel(Level.DEBUG);
+ logger.debug(logInfo.getMessage());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void info(final LogInformation logInfo) {
+ logger.setLevel(Level.INFO);
+ logger.info(logInfo.getMessage());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void warn(final LogInformation logInfo) {
+ logger.setLevel(Level.WARN);
+ logger.warn(logInfo.getMessage());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean validate(final LogInformation logInfo) throws App4mcLoggerException {
+ if ((logInfo.getLogFilePath() != null) && !logInfo.getLogFilePath().isEmpty() &&
+ ((logInfo.getLogFilePath().endsWith(SCALogConstants.LOG_EXTENSION) ||
+ logInfo.getLogFilePath().endsWith(SCALogConstants.CSV_EXTENSION)))) {
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean isEnabled(final LogInformation logInfo) throws App4mcLoggerException {
+ return App4mcLogUtil.isInDebugMode(logInfo);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void closeLogger(final String logFile) {
+ // TODO Auto-generated method stub
+
+ }
+}
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
new file mode 100644
index 0000000..7ba0f67
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/manager/LogFactory.java
@@ -0,0 +1,157 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2017 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 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.sca.logging.manager;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.app4mc.sca.logging.console.loggers.CommandLineLogger;
+import org.eclipse.app4mc.sca.logging.impl.ILogger;
+import org.eclipse.app4mc.sca.logging.loggers.TextFileLogger;
+
+
+/**
+ * Factory class that manages the instance of all types of loggers
+ *
+ */
+public class LogFactory {
+
+ private static Map<LoggerType, ILogger> instance;
+
+
+ public enum Severity {
+ /**
+ * Error Severity
+ */
+ ERROR,
+ /**
+ * Warning Severity
+ */
+ WARNING,
+ /**
+ * Info Severity
+ */
+ INFO,
+ /**
+ * Debug Severity
+ */
+ DEBUG,
+ /**
+ * System Severity
+ */
+ SYSTEM,
+ /**
+ * Fatal Severity
+ */
+ FATAL,
+ /**
+ * Metric Severiry
+ */
+ METRIC,
+ /**
+ * UNKNOWN
+ */
+ UNKNOWN
+ }
+
+
+ public enum Priority {
+ /**
+ * Priority Major
+ */
+ MAJOR,
+ /**
+ * Priority Minor
+ */
+ MINOR,
+ /**
+ * Priority Critical
+ */
+ CRITICAL,
+ /**
+ * Priority Blocker
+ */
+ BLOCKER,
+ /**
+ * Priority Trivial
+ */
+ TRIVIAL
+ }
+
+ public enum LoggerType {
+ /**
+ * Eclipse console logger
+ */
+ ECLIPSE_CONSOLE,
+ /**
+ * General text logger
+ */
+ TEXT_FILE,
+ /**
+ * Command line logger
+ */
+ CMD_LINE,
+ /**
+ * Error log view
+ */
+ ERROR_LOG,
+ /**
+ * Problems log view
+ */
+ PROBLEMS_LOG,
+
+ }
+
+ /**
+ * Return the singleton instance of different type of loggers
+ *
+ * @param type The type of the logger {@link LoggerType}
+ * @return {@link ILogger}
+ */
+ public static synchronized ILogger getLogger(final LoggerType type) {
+ if (instance == null) {
+ init();
+ }
+ return instance.get(type);
+ }
+
+ /**
+ * Initializes all the non UI loggers which are implemented as part of this plugin
+ */
+ private static void init() {
+ instance = new HashMap<>();
+ instance.put(LoggerType.CMD_LINE, CommandLineLogger.getInstance());
+ instance.put(LoggerType.TEXT_FILE, TextFileLogger.getInstance());
+ }
+
+
+ /**
+ * @return the logFactory
+ */
+ public static Map<LoggerType, ILogger> getLogFactory() {
+ return instance;
+ }
+
+
+ /**
+ * @param type The logger type
+ * @param logger {@link ILogger}
+ */
+ public static void addToLogFactory(final LoggerType type, final ILogger logger) {
+ if (instance == null) {
+ init();
+ }
+ instance.put(type, logger);
+ }
+}
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
new file mode 100644
index 0000000..67fbd18
--- /dev/null
+++ b/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.logging/src/org/eclipse/app4mc/sca/logging/manager/Logmanager.java
@@ -0,0 +1,557 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2017 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 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.sca.logging.manager;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.CopyOnWriteArraySet;
+
+import org.eclipse.app4mc.sca.logging.exception.App4mcLoggerException;
+import org.eclipse.app4mc.sca.logging.impl.IConfiguration;
+import org.eclipse.app4mc.sca.logging.impl.IConsoleLogger;
+import org.eclipse.app4mc.sca.logging.impl.IExternalLogger;
+import org.eclipse.app4mc.sca.logging.impl.ILogger;
+import org.eclipse.app4mc.sca.logging.impl.ITextLogger;
+import org.eclipse.app4mc.sca.logging.manager.LogFactory.LoggerType;
+import org.eclipse.app4mc.sca.logging.manager.LogFactory.Severity;
+import org.eclipse.app4mc.sca.logging.notification.ILogNotificationListener;
+import org.eclipse.app4mc.sca.logging.notification.LogNotificationEvent;
+import org.eclipse.app4mc.sca.logging.util.App4mcLogUtil;
+import org.eclipse.app4mc.sca.logging.util.LogInformation;
+import org.eclipse.app4mc.sca.logging.util.SCALogConstants;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+
+
+/**
+ * <p>
+ * The class which manages all the logging functionality of the SCA2Amalthea component. The class determines if the
+ * product build is a standalone and if so the logging would be handled in house.
+ * </p>
+ */
+public final class Logmanager {
+
+ private static volatile Logmanager instance = null;
+
+ private boolean debugMode;
+
+ private final Map<String, IExternalLogger> externalLoggers = new HashMap<>();
+
+ private final CopyOnWriteArraySet<ILogNotificationListener> notificationListeners =
+ new CopyOnWriteArraySet<ILogNotificationListener>();
+
+ private final CopyOnWriteArraySet<IConfiguration> configurations = new CopyOnWriteArraySet<IConfiguration>();
+
+ /**
+ * Registration of external UI loggers.
+ *
+ * @param logger {@link IExternalLogger}
+ */
+ public void registerAsExternalLogger(final IExternalLogger logger) {
+ this.externalLoggers.put(logger.getName(), logger);
+ }
+
+ /**
+ * Registration of notification listener.
+ *
+ * @param listener {@link ILogNotificationListener}
+ */
+ public void registerAsListener(final ILogNotificationListener listener) {
+ this.notificationListeners.add(listener);
+ }
+
+ /**
+ * Registers the given configuration into the list of configurations that the log manager would consider. If there are
+ * no configurations registered then the tool would abort if the logging is requested from the locomo tool.
+ *
+ * @param configuration {@link IConfiguration}
+ */
+ public void registerAsConfiguration(final IConfiguration configuration) {
+ this.configurations.add(configuration);
+ }
+
+ /**
+ * Private constructor
+ */
+ private Logmanager() {
+ // Private constructor
+ }
+
+ /**
+ * @param logInfo The log information to be validated
+ * @param type The logger type
+ * @throws App4mcLoggerException App4mcLoggerException
+ */
+ private void validateParameters(final LogInformation logInfo, final LoggerType type) throws App4mcLoggerException {
+ if (logInfo.getSeverity() == null) {
+ throw new App4mcLoggerException(SCALogConstants.SEVERITY_NULL_MSG);
+ }
+ if ((logInfo.getMessage() == null) || (logInfo.getMessageId() == null)) {
+ throw new App4mcLoggerException(SCALogConstants.LOG_MESSAGE_NULL_MSG);
+ }
+ if (logInfo.getClass() == null) {
+ throw new App4mcLoggerException(SCALogConstants.CLASS_INFO_NULL_MSG);
+ }
+ validateErrorLogParameters(logInfo, type);
+ validateProblemsLogParameters(logInfo, type);