Browse Source

Merge pull request #385 from Yakindu/issue_379

SetDefaultValue provides the FeatureType (fixes #379).
Markus Mühlbrandt 9 years ago
parent
commit
28af1a4b0c

+ 3 - 1
plugins/org.yakindu.sct.generator.c/src/org/yakindu/sct/generator/c/features/CDefaultFeatureValueProvider.java

@@ -18,6 +18,7 @@ import org.eclipse.emf.ecore.EObject;
 import org.eclipse.xtext.xbase.lib.StringExtensions;
 import org.yakindu.sct.generator.core.features.AbstractDefaultFeatureValueProvider;
 import org.yakindu.sct.model.sgen.FeatureParameterValue;
+import org.yakindu.sct.model.sgen.FeatureType;
 import org.yakindu.sct.model.sgen.FeatureTypeLibrary;
 import org.yakindu.sct.model.sgen.GeneratorEntry;
 import org.yakindu.sct.model.sgraph.Statechart;
@@ -41,7 +42,8 @@ public class CDefaultFeatureValueProvider extends AbstractDefaultFeatureValuePro
 	}
 
 	@Override
-	protected void setDefaultValue(FeatureParameterValue parameterValue, EObject contextElement) {
+	protected void setDefaultValue(FeatureType featureType, FeatureParameterValue parameterValue,
+			EObject contextElement) {
 
 		GeneratorEntry entry = (GeneratorEntry) contextElement;
 		Statechart statechart = (Statechart) entry.getElementRef();

+ 6 - 4
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/features/AbstractDefaultFeatureValueProvider.java

@@ -34,13 +34,14 @@ public abstract class AbstractDefaultFeatureValueProvider implements IDefaultFea
 
 	protected static final SGenFactory factory = SGenFactory.eINSTANCE;
 
-	protected abstract void setDefaultValue(FeatureParameterValue parameterValue, EObject contextElement);
+	protected abstract void setDefaultValue(FeatureType featureType, FeatureParameterValue parameterValue,
+			EObject contextElement);
 
 	public final FeatureConfiguration createDefaultFeatureConfiguration(FeatureType type, EObject contextElement) {
 		FeatureConfiguration config = createConfiguration(type);
 		EList<FeatureParameter> parameters = type.getParameters();
 		for (FeatureParameter parameter : parameters) {
-			FeatureParameterValue parameterValue = createParameterValue(parameter, contextElement);
+			FeatureParameterValue parameterValue = createParameterValue(type, parameter, contextElement);
 			if (parameterValue != null && parameterValue.getExpression() != null) {
 				config.getParameterValues().add(parameterValue);
 			}
@@ -48,10 +49,11 @@ public abstract class AbstractDefaultFeatureValueProvider implements IDefaultFea
 		return config;
 	}
 
-	protected FeatureParameterValue createParameterValue(FeatureParameter parameter, EObject contextElement) {
+	protected FeatureParameterValue createParameterValue(FeatureType featureType, FeatureParameter parameter,
+			EObject contextElement) {
 		FeatureParameterValue parameterValue = factory.createFeatureParameterValue();
 		parameterValue.setParameter(parameter);
-		setDefaultValue(parameterValue, contextElement);
+		setDefaultValue(featureType, parameterValue, contextElement);
 		return parameterValue;
 	}
 

+ 7 - 6
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/features/impl/CoreLibraryDefaultFeatureValueProvider.java

@@ -21,6 +21,7 @@ import org.eclipse.core.runtime.Status;
 import org.eclipse.emf.ecore.EObject;
 import org.yakindu.sct.generator.core.features.AbstractDefaultFeatureValueProvider;
 import org.yakindu.sct.model.sgen.FeatureParameterValue;
+import org.yakindu.sct.model.sgen.FeatureType;
 import org.yakindu.sct.model.sgen.FeatureTypeLibrary;
 
 /**
@@ -35,15 +36,14 @@ public class CoreLibraryDefaultFeatureValueProvider extends AbstractDefaultFeatu
 	}
 
 	@Override
-	protected void setDefaultValue(FeatureParameterValue parameterValue, EObject contextElement) {
+	protected void setDefaultValue(FeatureType featureType, FeatureParameterValue parameterValue,
+			EObject contextElement) {
 		String parameterName = parameterValue.getParameter().getName();
 		if (OUTLET_FEATURE_TARGET_FOLDER.equals(parameterName)) {
 			parameterValue.setValue("src-gen");
-		} 
-		else if (OUTLET_FEATURE_LIBRARY_TARGET_FOLDER.equals(parameterName)){
+		} else if (OUTLET_FEATURE_LIBRARY_TARGET_FOLDER.equals(parameterName)) {
 			parameterValue.setValue("src");
-		}
-		else if (OUTLET_FEATURE_TARGET_PROJECT.equals(parameterName)) {
+		} else if (OUTLET_FEATURE_TARGET_PROJECT.equals(parameterName)) {
 			parameterValue.setValue(getProject(contextElement).getName());
 		} else if (LICENSE_TEXT.equals(parameterName)) {
 			parameterValue.setValue("Enter license text here");
@@ -57,7 +57,8 @@ public class CoreLibraryDefaultFeatureValueProvider extends AbstractDefaultFeatu
 		if (OUTLET_FEATURE_TARGET_PROJECT.equals(parameterName) && projectExists(parameterValue.getStringValue())
 				&& !projectOpened(parameterValue.getStringValue()))
 			return error(String.format("The Project %s is not open.", parameterValue.getExpression()));
-		if (OUTLET_FEATURE_TARGET_FOLDER.equals(parameterName) || OUTLET_FEATURE_LIBRARY_TARGET_FOLDER.equals(parameterName)) {
+		if (OUTLET_FEATURE_TARGET_FOLDER.equals(parameterName)
+				|| OUTLET_FEATURE_LIBRARY_TARGET_FOLDER.equals(parameterName)) {
 			FeatureParameterValue targetProjectParam = parameterValue.getFeatureConfiguration()
 					.getParameterValue(OUTLET_FEATURE_TARGET_PROJECT);
 			String targetProjectName = targetProjectParam != null ? targetProjectParam.getStringValue() : null;

+ 6 - 8
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/features/impl/GenericJavaLibraryDefaultValueProvider.java

@@ -22,15 +22,14 @@ import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.jdt.core.JavaModelException;
 import org.yakindu.sct.generator.core.features.AbstractDefaultFeatureValueProvider;
 import org.yakindu.sct.model.sgen.FeatureParameterValue;
+import org.yakindu.sct.model.sgen.FeatureType;
 import org.yakindu.sct.model.sgen.FeatureTypeLibrary;
 
-
 /**
  * 
  * @author holger willebrandt - Initial contribution and API
  */
-public class GenericJavaLibraryDefaultValueProvider extends
-		AbstractDefaultFeatureValueProvider {
+public class GenericJavaLibraryDefaultValueProvider extends AbstractDefaultFeatureValueProvider {
 
 	// (ID.)+ID
 	private static final String GENERATOR_CLASS_REGEX = "([a-zA-Z_][a-zA-Z0-9_]*\\.)+[a-zA-Z_][a-zA-Z0-9_]*"; //$NON-NLS-1$
@@ -40,7 +39,7 @@ public class GenericJavaLibraryDefaultValueProvider extends
 	}
 
 	@Override
-	protected void setDefaultValue(FeatureParameterValue parameterValue,
+	protected void setDefaultValue(FeatureType featureType, FeatureParameterValue parameterValue,
 			EObject contextElement) {
 		String parameterName = parameterValue.getParameter().getName();
 		if (GENERATOR_PROJECT.equals(parameterName)) {
@@ -58,15 +57,14 @@ public class GenericJavaLibraryDefaultValueProvider extends
 		}
 		IJavaProject ijp = JavaCore.create(this.getProject(parameterValue));
 		try {
-			if(ijp.findType(value) == null && GENERATOR_CLASS.equals(parameterName)){
+			if (ijp.findType(value) == null && GENERATOR_CLASS.equals(parameterName)) {
 				return error("Generator class does not exist.");
 			}
 		} catch (JavaModelException e) {
 			// Stacktrace
 			e.printStackTrace();
-		}			
-		if (GENERATOR_CLASS.equals(parameterName)
-				&& !value.matches(GENERATOR_CLASS_REGEX)) {
+		}
+		if (GENERATOR_CLASS.equals(parameterName) && !value.matches(GENERATOR_CLASS_REGEX)) {
 			return error("Generator class must be a full qualified class name");
 		}
 		return Status.OK_STATUS;

+ 7 - 6
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/features/impl/SCTBaseLibaryDefaultFeatureValueProvider.java

@@ -19,27 +19,28 @@ import org.eclipse.emf.ecore.EObject;
 import org.yakindu.sct.generator.core.features.AbstractDefaultFeatureValueProvider;
 import org.yakindu.sct.model.sgen.BoolLiteral;
 import org.yakindu.sct.model.sgen.FeatureParameterValue;
+import org.yakindu.sct.model.sgen.FeatureType;
 import org.yakindu.sct.model.sgen.FeatureTypeLibrary;
 
 /**
  * 
  * @author oliver bohl - Initial contribution
  */
-public class SCTBaseLibaryDefaultFeatureValueProvider extends
-AbstractDefaultFeatureValueProvider{
+public class SCTBaseLibaryDefaultFeatureValueProvider extends AbstractDefaultFeatureValueProvider {
 
 	public boolean isProviderFor(FeatureTypeLibrary library) {
 		return LIBRARY_NAME.equals(library.getName());
-	}	
-	
+	}
+
 	@Override
-	protected void setDefaultValue(FeatureParameterValue parameterValue, EObject contextElement) {
+	protected void setDefaultValue(FeatureType featureType, FeatureParameterValue parameterValue,
+			EObject contextElement) {
 		String parameterName = parameterValue.getParameter().getName();
 		if (DEBUG_FEATURE_DUMP_SEXEC.equals(parameterName)) {
 			parameterValue.setValue(false);
 		}
 	}
-	
+
 	public IStatus validateParameterValue(FeatureParameterValue parameterValue) {
 		String parameterName = parameterValue.getParameter().getName();
 		if (DEBUG_FEATURE_DUMP_SEXEC.equals(parameterName)

+ 6 - 9
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/features/impl/XpandLibraryDefaultFeatureValueProvider.java

@@ -19,14 +19,14 @@ import org.eclipse.core.runtime.Status;
 import org.eclipse.emf.ecore.EObject;
 import org.yakindu.sct.generator.core.features.AbstractDefaultFeatureValueProvider;
 import org.yakindu.sct.model.sgen.FeatureParameterValue;
+import org.yakindu.sct.model.sgen.FeatureType;
 import org.yakindu.sct.model.sgen.FeatureTypeLibrary;
 
 /**
  * 
  * @author holger willebrandt - Initial contribution and API
  */
-public class XpandLibraryDefaultFeatureValueProvider extends
-		AbstractDefaultFeatureValueProvider {
+public class XpandLibraryDefaultFeatureValueProvider extends AbstractDefaultFeatureValueProvider {
 
 	// (ID::)+ID
 	private static final String XPAND_TEMPLATE_PATH_REGEX = "([a-zA-Z_][a-zA-Z0-9_]*::)+[a-zA-Z_][a-zA-Z0-9_]*"; //$NON-NLS-1$
@@ -36,12 +36,11 @@ public class XpandLibraryDefaultFeatureValueProvider extends
 	}
 
 	@Override
-	protected void setDefaultValue(final FeatureParameterValue parameterValue,
+	protected void setDefaultValue(FeatureType featureType, FeatureParameterValue parameterValue,
 			final EObject contextElement) {
 		String parameterName = parameterValue.getParameter().getName();
 		if (TEMPLATE_FEATURE_TEMPLATE_PATH.equals(parameterName)) {
-			parameterValue
-					.setValue("org::yakindu::sct::generator::xpand::Main::main");
+			parameterValue.setValue("org::yakindu::sct::generator::xpand::Main::main");
 		}
 		if (TEMPLATE_FEATURE_TEMPLATE_PROJECT.equals(parameterName)) {
 			parameterValue.setValue(getProject(contextElement).getName());
@@ -52,12 +51,10 @@ public class XpandLibraryDefaultFeatureValueProvider extends
 		String parameterName = parameterValue.getParameter().getName();
 		String value = parameterValue.getStringValue();
 		if (TEMPLATE_FEATURE_TEMPLATE_PATH.equals(parameterName)
-				&& !parameterValue.getStringValue()
-						.matches(XPAND_TEMPLATE_PATH_REGEX)) {
+				&& !parameterValue.getStringValue().matches(XPAND_TEMPLATE_PATH_REGEX)) {
 			return error("Xpand Template Path Syntax Error");
 		}
-		if (TEMPLATE_FEATURE_TEMPLATE_PROJECT.equals(parameterName)
-				&& !projectExists(value)) {
+		if (TEMPLATE_FEATURE_TEMPLATE_PROJECT.equals(parameterName) && !projectExists(value)) {
 			return error(String.format("The Project %s does not exist", value));
 		}
 		return Status.OK_STATUS;

+ 9 - 16
plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/features/CPPDefaultFeatureValueProvider.java

@@ -20,6 +20,7 @@ import org.yakindu.sct.generator.c.features.ICFeatureConstants;
 import org.yakindu.sct.generator.core.features.AbstractDefaultFeatureValueProvider;
 import org.yakindu.sct.generator.cpp.features.CPPFeatureConstants.Visibility;
 import org.yakindu.sct.model.sgen.FeatureParameterValue;
+import org.yakindu.sct.model.sgen.FeatureType;
 import org.yakindu.sct.model.sgen.FeatureTypeLibrary;
 import org.yakindu.sct.model.sgen.GeneratorEntry;
 import org.yakindu.sct.model.sgraph.Statechart;
@@ -29,8 +30,7 @@ import org.yakindu.sct.model.sgraph.Statechart;
  * @author andreas muelder - Initial contribution and API
  * 
  */
-public class CPPDefaultFeatureValueProvider extends
-		AbstractDefaultFeatureValueProvider {
+public class CPPDefaultFeatureValueProvider extends AbstractDefaultFeatureValueProvider {
 
 	private static final String INVALID_IDENTIFIER_REGEX = "[^a-z&&[^A-Z&&[^0-9]]]";
 	private static final String VALID_IDENTIFIER_REGEX = "[_a-zA-Z][_a-zA-Z0-9]*";
@@ -40,31 +40,25 @@ public class CPPDefaultFeatureValueProvider extends
 	}
 
 	@Override
-	protected void setDefaultValue(FeatureParameterValue parameterValue,
+	protected void setDefaultValue(FeatureType featureType, FeatureParameterValue parameterValue,
 			EObject contextElement) {
 		GeneratorEntry entry = (GeneratorEntry) contextElement;
 		Statechart statechart = (Statechart) entry.getElementRef();
 
-		if (parameterValue.getParameter().getName()
-				.equals(ICFeatureConstants.PARAMETER_NAMING_MODULE_NAME)) {
+		if (parameterValue.getParameter().getName().equals(ICFeatureConstants.PARAMETER_NAMING_MODULE_NAME)) {
 			parameterValue.setValue(asIdentifier(statechart.getName(), "_"));
 		} else if (parameterValue.getParameter().getName()
 				.equals(ICFeatureConstants.PARAMETER_NAMING_STATEMACHINE_PREFIX)) {
-			parameterValue.setValue(StringExtensions.toFirstLower(asIdentifier(
-					statechart.getName(), "_")));
+			parameterValue.setValue(StringExtensions.toFirstLower(asIdentifier(statechart.getName(), "_")));
 		} else if (parameterValue.getParameter().getName()
 				.equals(ICFeatureConstants.PARAMETER_NAMING_MAX_IDENTIFIER_LENGTH)) {
 			parameterValue.setValue("31");
-		} else if (parameterValue.getParameter().getName()
-				.equals(ICFeatureConstants.PARAMETER_NAMING_SEPARATOR)) {
+		} else if (parameterValue.getParameter().getName().equals(ICFeatureConstants.PARAMETER_NAMING_SEPARATOR)) {
 			parameterValue.setValue("_");
-		} else if (parameterValue
-				.getParameter()
-				.getName()
+		} else if (parameterValue.getParameter().getName()
 				.equals(CPPFeatureConstants.PARAMETER_INNER_FUNCTION_VISIBILITY)) {
 			parameterValue.setValue(Visibility.PRIVATE.toString().toLowerCase());
-		} else if (parameterValue.getParameter().getName()
-				.equals(CPPFeatureConstants.PARAMETER_STATIC_OPC)) {
+		} else if (parameterValue.getParameter().getName().equals(CPPFeatureConstants.PARAMETER_STATIC_OPC)) {
 			parameterValue.setValue(false);
 		}
 	}
@@ -75,8 +69,7 @@ public class CPPDefaultFeatureValueProvider extends
 			if (!parameter.getStringValue().matches(VALID_IDENTIFIER_REGEX)) {
 				return error("Invalid module name");
 			}
-		} else if (ICFeatureConstants.PARAMETER_NAMING_STATEMACHINE_PREFIX
-				.equals(parameterName)) {
+		} else if (ICFeatureConstants.PARAMETER_NAMING_STATEMACHINE_PREFIX.equals(parameterName)) {
 			if (!parameter.getStringValue().matches(VALID_IDENTIFIER_REGEX)) {
 				return error("Invalid function prefix name");
 			}

+ 7 - 11
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/features/JavaFeatureValueProvider.java

@@ -21,6 +21,7 @@ import org.eclipse.core.runtime.Status;
 import org.eclipse.emf.ecore.EObject;
 import org.yakindu.sct.generator.core.features.AbstractDefaultFeatureValueProvider;
 import org.yakindu.sct.model.sgen.FeatureParameterValue;
+import org.yakindu.sct.model.sgen.FeatureType;
 import org.yakindu.sct.model.sgen.FeatureTypeLibrary;
 
 /**
@@ -29,19 +30,17 @@ import org.yakindu.sct.model.sgen.FeatureTypeLibrary;
  * @author terfloth - extensions
  * 
  */
-public class JavaFeatureValueProvider extends
-		AbstractDefaultFeatureValueProvider {
+public class JavaFeatureValueProvider extends AbstractDefaultFeatureValueProvider {
 
 	private static final String PACKAGE_NAME_REGEX = "([a-zA-Z_][a-zA-Z0-9_\\.]*)+[a-zA-Z_][a-zA-Z0-9_]*";
 	private static final String SUFFIX_REGEX = "[a-zA-Z0-9_]*";
 
 	@Override
-	protected void setDefaultValue(FeatureParameterValue parameterValue,
+	protected void setDefaultValue(FeatureType featureType, FeatureParameterValue parameterValue,
 			EObject contextElement) {
 		if (parameterValue.getParameter().getName().equals(BASE_PACKAGE)) {
 			parameterValue.setValue("org.yakindu.sct");
-		} else if (parameterValue.getParameter().getName()
-				.equals(IMPLEMENTATION_SUFFIX)) {
+		} else if (parameterValue.getParameter().getName().equals(IMPLEMENTATION_SUFFIX)) {
 			parameterValue.setValue("impl");
 		} else if (parameterValue.getParameter().getName().equals(NAME_PREFIX)) {
 			parameterValue.setValue("Runnable");
@@ -62,12 +61,10 @@ public class JavaFeatureValueProvider extends
 			}
 			// Filter out java keywords
 			for (String keyword : Arrays.asList(JAVA_KEYWORDS)) {
-				Pattern pattern = Pattern.compile("(?:^|\\.)" + keyword
-						+ "(?:$|\\.)");
+				Pattern pattern = Pattern.compile("(?:^|\\.)" + keyword + "(?:$|\\.)");
 				Matcher matcher = pattern.matcher(value.getStringValue());
 				while (matcher.find()) {
-					return error("Java keyword '" + matcher.group()
-							+ "' is not allowed in package names.");
+					return error("Java keyword '" + matcher.group() + "' is not allowed in package names.");
 				}
 			}
 		}
@@ -79,8 +76,7 @@ public class JavaFeatureValueProvider extends
 				Pattern pattern = Pattern.compile("^" + keyword + "$");
 				Matcher matcher = pattern.matcher(value.getStringValue());
 				while (matcher.find()) {
-					return error("Java keyword '" + matcher.group()
-							+ "' is not allowed as suffix.");
+					return error("Java keyword '" + matcher.group() + "' is not allowed as suffix.");
 				}
 			}