Browse Source

HMI-Generator added

benjamin.schwertfeger@gmail.com 13 years ago
parent
commit
6aa84ea6ed

+ 4 - 1
plugins/org.yakindu.sct.generator.c/META-INF/MANIFEST.MF

@@ -23,5 +23,8 @@ Require-Bundle: org.yakindu.sct.model.sexec,
  org.eclipse.xtend.util.stdlib;bundle-version="1.0.1",
  org.yakindu.base.types;bundle-version="1.0.0"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Export-Package: org.yakindu.sct.generator.c.templates
+Export-Package: org.yakindu.sct.generator.c,
+ org.yakindu.sct.generator.c.features,
+ org.yakindu.sct.generator.c.templates
 Bundle-Vendor: YAKINDU
+Eclipse-BundleShape: dir

+ 6 - 5
plugins/org.yakindu.sct.generator.core/META-INF/MANIFEST.MF

@@ -8,10 +8,10 @@ Bundle-Vendor: YAKINDU
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime;visibility:=reexport,
  org.yakindu.sct.model.sexec;bundle-version="1.0.0";visibility:=reexport,
- org.eclipse.xpand;bundle-version="1.1.0",
+ org.eclipse.xpand;bundle-version="1.1.0";visibility:=reexport,
  org.eclipse.core.resources;bundle-version="3.7.100";visibility:=reexport,
- org.eclipse.xtend;bundle-version="1.1.0",
- org.eclipse.xtend.typesystem.emf;bundle-version="1.0.1",
+ org.eclipse.xtend;bundle-version="1.1.0";visibility:=reexport,
+ org.eclipse.xtend.typesystem.emf;bundle-version="1.0.1";visibility:=reexport,
  org.yakindu.sct.model.stext;bundle-version="1.0.0",
  org.eclipse.jdt.core,
  org.eclipse.jdt.launching,
@@ -22,8 +22,9 @@ Require-Bundle: org.eclipse.ui,
  org.yakindu.base.types;bundle-version="1.0.0"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
-Export-Package: org.yakindu.sct.generator.core,
+Export-Package: org.yakindu.sct.builder.nature,
+ org.yakindu.sct.generator.core,
  org.yakindu.sct.generator.core.extensions,
  org.yakindu.sct.generator.core.features,
  org.yakindu.sct.generator.core.impl,
- org.yakindu.sct.builder.nature
+ org.yakindu.sct.generator.core.util

+ 7 - 71
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/impl/AbstractSExecModelGenerator.java

@@ -10,31 +10,24 @@
  */
 package org.yakindu.sct.generator.core.impl;
 
-import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.DEBUG_FEATURE;
-import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.DEBUG_FEATURE_DUMP_SEXEC;
 import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.FUNCTION_INLINING_FEATURE;
 import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.FUNCTION_INLINING_FEATURE_INLINE_CHOICES;
+import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.FUNCTION_INLINING_FEATURE_INLINE_ENTER_REGION;
 import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.FUNCTION_INLINING_FEATURE_INLINE_ENTER_SEQUENCES;
-import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.FUNCTION_INLINING_FEATURE_INLINE_ENTRY_ACTIONS;
 import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.FUNCTION_INLINING_FEATURE_INLINE_ENTRIES;
+import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.FUNCTION_INLINING_FEATURE_INLINE_ENTRY_ACTIONS;
 import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.FUNCTION_INLINING_FEATURE_INLINE_EXIT_ACTIONS;
+import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.FUNCTION_INLINING_FEATURE_INLINE_EXIT_REGION;
 import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.FUNCTION_INLINING_FEATURE_INLINE_EXIT_SEQUENCES;
 import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.FUNCTION_INLINING_FEATURE_INLINE_REACTIONS;
-import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.FUNCTION_INLINING_FEATURE_INLINE_ENTER_REGION;
-import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.FUNCTION_INLINING_FEATURE_INLINE_EXIT_REGION;
-import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.OUTLET_FEATURE;
-import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.OUTLET_FEATURE_TARGET_PROJECT;
+import static org.yakindu.sct.generator.core.util.GeneratorUtils.getBoolValue;
 
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.util.Collections;
 
 import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
@@ -47,12 +40,12 @@ import org.eclipse.ui.console.MessageConsole;
 import org.eclipse.ui.console.MessageConsoleStream;
 import org.eclipse.xpand2.output.Output;
 import org.yakindu.sct.generator.core.ISCTGenerator;
+import org.yakindu.sct.generator.core.util.GeneratorUtils;
 import org.yakindu.sct.model.sexec.ExecutionFlow;
 import org.yakindu.sct.model.sexec.transformation.FlowOptimizer;
 import org.yakindu.sct.model.sexec.transformation.ModelSequencer;
 import org.yakindu.sct.model.sexec.transformation.SequencerModule;
 import org.yakindu.sct.model.sgen.FeatureConfiguration;
-import org.yakindu.sct.model.sgen.FeatureParameterValue;
 import org.yakindu.sct.model.sgen.GeneratorEntry;
 import org.yakindu.sct.model.sgraph.Statechart;
 
@@ -156,15 +149,6 @@ public abstract class AbstractSExecModelGenerator implements ISCTGenerator {
 		return flow;
 	}
 
-	boolean getBoolValue(FeatureConfiguration conf, String param,
-			boolean defaultValue) {
-		if (conf != null && conf.getParameterValue(param) != null) {
-			return conf.getParameterValue(param).getBooleanValue();
-		}
-
-		return defaultValue;
-	}
-
 	protected final void writeToConsole(Throwable t) {
 		PrintWriter printWriter = new PrintWriter(error);
 		t.printStackTrace(printWriter);
@@ -191,22 +175,8 @@ public abstract class AbstractSExecModelGenerator implements ISCTGenerator {
 		return myConsole;
 	}
 
-	protected final void refreshTargetProject(GeneratorEntry entry) {
-		try {
-			IProject project = getTargetProject(entry);
-			project.refreshLocal(IResource.DEPTH_INFINITE,
-					new NullProgressMonitor());
-		} catch (CoreException e) {
-			e.printStackTrace();
-		}
-	};
-
 	protected final IProject getTargetProject(GeneratorEntry entry) {
-		FeatureConfiguration outletConfig = getOutletFeatureConfiguration(entry);
-		String projectName = outletConfig.getParameterValue(
-				OUTLET_FEATURE_TARGET_PROJECT).getStringValue();
-		IProject project = ResourcesPlugin.getWorkspace().getRoot()
-				.getProject(projectName);
+		IProject project = GeneratorUtils.getTargetProject(entry);
 		if (!project.exists()) {
 			createProject(project, entry);
 		}
@@ -218,41 +188,7 @@ public abstract class AbstractSExecModelGenerator implements ISCTGenerator {
 	 * may override if they want to contribute generatorspecific project setup
 	 */
 	protected void createProject(IProject project, GeneratorEntry entry) {
-		try {
-			NullProgressMonitor monitor = new NullProgressMonitor();
-			project.create(monitor);
-			project.open(monitor);
-		} catch (CoreException e) {
-			e.printStackTrace();
-		}
-	}
-
-	protected FeatureConfiguration getOutletFeatureConfiguration(
-			GeneratorEntry entry) {
-		FeatureConfiguration outletConfig = entry
-				.getFeatureConfiguration(OUTLET_FEATURE);
-		return outletConfig;
-	}
-
-	protected boolean isDumpSexec(GeneratorEntry entry) {
-		FeatureParameterValue dumpSexec = getFeatureParameter(entry,
-				DEBUG_FEATURE, DEBUG_FEATURE_DUMP_SEXEC);
-		if (dumpSexec == null) {
-			return false;
-		}
-		return dumpSexec.getBooleanValue();
-	}
-
-	protected FeatureParameterValue getFeatureParameter(GeneratorEntry entry,
-			String featureName, String paramName) {
-		FeatureConfiguration feature = entry
-				.getFeatureConfiguration(featureName);
-
-		if (feature != null) {
-			return feature.getParameterValue(paramName);
-		}
-
-		return null;
+		GeneratorUtils.createEmptyProject(project);
 	}
 
 	protected void dumpSexec(GeneratorEntry entry, ExecutionFlow flow,

+ 3 - 0
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/impl/AbstractXpandBasedCodeGenerator.java

@@ -11,6 +11,9 @@
 package org.yakindu.sct.generator.core.impl;
 
 import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.OUTLET_FEATURE_TARGET_FOLDER;
+import static org.yakindu.sct.generator.core.util.GeneratorUtils.getOutletFeatureConfiguration;
+import static org.yakindu.sct.generator.core.util.GeneratorUtils.isDumpSexec;
+import static org.yakindu.sct.generator.core.util.GeneratorUtils.refreshTargetProject;
 
 import java.io.File;
 import java.util.Collections;

+ 4 - 9
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/impl/GenericJavaBasedGenerator.java

@@ -22,7 +22,7 @@ import org.eclipse.core.runtime.Path;
 import org.eclipse.emf.common.util.URI;
 import org.yakindu.sct.generator.core.AbstractWorkspaceGenerator;
 import org.yakindu.sct.generator.core.IGeneratorBridge;
-import org.yakindu.sct.generator.core.features.ICoreFeatureConstants;
+import org.yakindu.sct.generator.core.util.GeneratorUtils;
 import org.yakindu.sct.model.sexec.ExecutionFlow;
 import org.yakindu.sct.model.sgen.FeatureConfiguration;
 import org.yakindu.sct.model.sgen.FeatureParameterValue;
@@ -47,12 +47,12 @@ public class GenericJavaBasedGenerator extends AbstractSExecModelGenerator {
 
 		public FeatureParameterValue getFeatureParameter(GeneratorEntry entry,
 				String featureName, String paramName) {
-			return GenericJavaBasedGenerator.this.getFeatureParameter(entry,
+			return GeneratorUtils.getFeatureParameter(entry,
 					featureName, paramName);
 		}
 
 		public void refreshTargetProject(GeneratorEntry entry) {
-			GenericJavaBasedGenerator.this.refreshTargetProject(entry);
+			GeneratorUtils.refreshTargetProject(entry);
 		}
 
 		public File getTargetProject(GeneratorEntry entry) {
@@ -62,12 +62,7 @@ public class GenericJavaBasedGenerator extends AbstractSExecModelGenerator {
 		}
 
 		public File getTargetFolder(GeneratorEntry entry) {
-			String targetFolder = getOutletFeatureConfiguration(entry)
-					.getParameterValue(
-							ICoreFeatureConstants.OUTLET_FEATURE_TARGET_FOLDER)
-					.getStringValue();
-			return new File(getTargetProject(entry).getPath() + File.separator
-					+ targetFolder);
+			return GeneratorUtils.getTargetFolder(entry);
 		}
 	};
 

+ 108 - 0
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/util/GeneratorUtils.java

@@ -0,0 +1,108 @@
+package org.yakindu.sct.generator.core.util;
+
+import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.DEBUG_FEATURE;
+import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.DEBUG_FEATURE_DUMP_SEXEC;
+import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.OUTLET_FEATURE;
+import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.OUTLET_FEATURE_TARGET_PROJECT;
+
+import java.io.File;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.yakindu.sct.generator.core.features.ICoreFeatureConstants;
+import org.yakindu.sct.model.sgen.FeatureConfiguration;
+import org.yakindu.sct.model.sgen.FeatureParameterValue;
+import org.yakindu.sct.model.sgen.GeneratorEntry;
+
+public class GeneratorUtils {
+
+	public static boolean getBoolValue(FeatureConfiguration conf, String param,
+			boolean defaultValue) {
+		if (conf != null && conf.getParameterValue(param) != null) {
+			return conf.getParameterValue(param).getBooleanValue();
+		}
+
+		return defaultValue;
+	}
+
+	public static final void refreshTargetProject(GeneratorEntry entry) {
+		try {
+			IProject project = getTargetProject(entry);
+			project.refreshLocal(IResource.DEPTH_INFINITE,
+					new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * Create an empty project if this project does not exist.
+	 * 
+	 * @param project
+	 * @return true, iff the project was created. false if it already exists.
+	 */
+	public static boolean createEmptyProject(IProject project) {
+		if (!project.exists()) {
+
+		}
+		return false;
+	}
+
+	/**
+	 * Returns an IProject for the configured target project. The
+	 * {@link IProject} is returned even if the project does not exist yet.
+	 * 
+	 * @param entry
+	 * @return
+	 */
+	public static final IProject getTargetProject(GeneratorEntry entry) {
+		FeatureConfiguration outletConfig = getOutletFeatureConfiguration(entry);
+		String projectName = outletConfig.getParameterValue(
+				OUTLET_FEATURE_TARGET_PROJECT).getStringValue();
+		IProject project = ResourcesPlugin.getWorkspace().getRoot()
+				.getProject(projectName);
+
+		return project;
+	}
+
+	public static File getTargetFolder(GeneratorEntry entry) {
+		String targetFolder = getOutletFeatureConfiguration(entry)
+				.getParameterValue(
+						ICoreFeatureConstants.OUTLET_FEATURE_TARGET_FOLDER)
+				.getStringValue();
+		return new File(getTargetProject(entry).getLocation().toFile()
+				.getPath()
+				+ File.separator + targetFolder);
+	}
+
+	public static FeatureConfiguration getOutletFeatureConfiguration(
+			GeneratorEntry entry) {
+		FeatureConfiguration outletConfig = entry
+				.getFeatureConfiguration(OUTLET_FEATURE);
+		return outletConfig;
+	}
+
+	public static boolean isDumpSexec(GeneratorEntry entry) {
+		FeatureParameterValue dumpSexec = getFeatureParameter(entry,
+				DEBUG_FEATURE, DEBUG_FEATURE_DUMP_SEXEC);
+		if (dumpSexec == null) {
+			return false;
+		}
+		return dumpSexec.getBooleanValue();
+	}
+
+	public static FeatureParameterValue getFeatureParameter(
+			GeneratorEntry entry, String featureName, String paramName) {
+		FeatureConfiguration feature = entry
+				.getFeatureConfiguration(featureName);
+
+		if (feature != null) {
+			return feature.getParameterValue(paramName);
+		}
+
+		return null;
+	}
+}

+ 1 - 0
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/JavaSCTGenerator.java

@@ -11,6 +11,7 @@
 package org.yakindu.sct.generator.java;
 
 import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.OUTLET_FEATURE_TARGET_FOLDER;
+import static org.yakindu.sct.generator.core.util.GeneratorUtils.getOutletFeatureConfiguration;
 
 import java.util.ArrayList;
 import java.util.HashSet;