Browse Source

Added xtgend generated classes for sexec

Andreas Mülder 13 years ago
parent
commit
b613fdfff8

+ 1 - 1
plugins/org.yakindu.sct.generator.genmodel.ui/.settings/org.eclipse.core.resources.prefs

@@ -1,4 +1,4 @@
-#Thu Nov 24 14:41:09 CET 2011
+#Thu Nov 24 14:46:00 CET 2011
 eclipse.preferences.version=1
 encoding//src/org/yakindu/sct/generator/genmodel/ui/wizard/DefaultTemplate.xpt=ISO-8859-1
 encoding//src/org/yakindu/sct/generator/genmodel/ui/wizard/ProjectTemplate.xtend=UTF-8

+ 455 - 0
plugins/org.yakindu.sct.generator.genmodel.ui/xtend-gen/org/yakindu/sct/generator/genmodel/ui/wizard/ProjectTemplate.java

@@ -0,0 +1,455 @@
+package org.yakindu.sct.generator.genmodel.ui.wizard;
+
+import org.apache.commons.lang.StringEscapeUtils;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.xtend.shared.ui.wizards.EclipseHelper;
+import org.eclipse.xtext.xbase.lib.BooleanExtensions;
+import org.eclipse.xtext.xbase.lib.IntegerExtensions;
+import org.eclipse.xtext.xbase.lib.ObjectExtensions;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+import org.eclipse.xtext.xtend2.lib.StringConcatenation;
+import org.yakindu.sct.generator.genmodel.ui.wizard.ProjectData;
+import org.yakindu.sct.generator.genmodel.ui.wizard.XpandGeneratorProjectWizard;
+
+@SuppressWarnings("all")
+public class ProjectTemplate {
+  
+  public IFile doGenerate(final ProjectData data, final IProgressMonitor monitor) throws CoreException {
+    IFile _xblockexpression = null;
+    {
+      String _targetPackage = this.targetPackage(data);
+      String _asFolder = this.asFolder(_targetPackage);
+      String _operator_plus = StringExtensions.operator_plus("src/", _asFolder);
+      String folderPath = _operator_plus;
+      IProject _project = data.getProject();
+      this.createFolder(folderPath, _project, monitor);
+      IProject _project_1 = data.getProject();
+      Path _path = new Path(folderPath);
+      IFolder _folder = _project_1.getFolder(_path);
+      IFolder generatorFolder = _folder;
+      IProject _project_2 = data.getProject();
+      String _encoding = ResourcesPlugin.getEncoding();
+      StringConcatenation _projectSettings = this.projectSettings(data, _encoding);
+      String _string = _projectSettings.toString();
+      EclipseHelper.createFile(".settings/org.eclipse.core.resources.prefs", _project_2, _string, monitor);
+      IProject _project_3 = data.getProject();
+      StringConcatenation _xpandSettings = this.xpandSettings(data);
+      String _string_1 = _xpandSettings.toString();
+      EclipseHelper.createFile(".settings/org.eclipse.xtend.shared.ui.prefs", _project_3, _string_1, monitor);
+      String _templateName = this.templateName(data);
+      String _operator_plus_1 = StringExtensions.operator_plus(_templateName, ".xpt");
+      String _resource = this.resource("DefaultTemplate.xpt", "iso-8859-1");
+      EclipseHelper.createFile(_operator_plus_1, generatorFolder, _resource, monitor);
+      IFile _xifexpression = null;
+      boolean _isPluginExport = data.isPluginExport();
+      if (_isPluginExport) {
+        IFile _xblockexpression_1 = null;
+        {
+          IProject _project_4 = data.getProject();
+          StringConcatenation _plugin = this.plugin(data);
+          String _string_2 = _plugin.toString();
+          EclipseHelper.createFile("plugin.xml", _project_4, _string_2, monitor);
+          String _generatorClass = data.getGeneratorClass();
+          String _javaFilename = this.javaFilename(_generatorClass);
+          String _operator_plus_2 = StringExtensions.operator_plus("src/", _javaFilename);
+          IProject _project_5 = data.getProject();
+          StringConcatenation _generator = this.generator(data);
+          String _string_3 = _generator.toString();
+          EclipseHelper.createFile(_operator_plus_2, _project_5, _string_3, monitor);
+          boolean _isTypeLibrary = data.isTypeLibrary();
+          if (_isTypeLibrary) {
+            IProject _project_6 = data.getProject();
+            this.createFolder("library", _project_6, monitor);
+          }
+          IProject _project_7 = data.getProject();
+          StringConcatenation _buildProperties = this.buildProperties(data);
+          String _string_4 = _buildProperties.toString();
+          IFile _createFile = EclipseHelper.createFile("build.properties", _project_7, _string_4, monitor);
+          _xblockexpression_1 = (_createFile);
+        }
+        _xifexpression = _xblockexpression_1;
+      }
+      _xblockexpression = (_xifexpression);
+    }
+    return _xblockexpression;
+  }
+  
+  public String templateName(final ProjectData data) {
+    String _xifexpression = null;
+    boolean _isPluginExport = data.isPluginExport();
+    if (_isPluginExport) {
+      String _generatorClass = data.getGeneratorClass();
+      String _simpleName = this.simpleName(_generatorClass);
+      _xifexpression = _simpleName;
+    } else {
+      _xifexpression = "Main";
+    }
+    return _xifexpression;
+  }
+  
+  public String resource(final String name, final String encoding) {
+    String _resourceContents = XpandGeneratorProjectWizard.getResourceContents(name, encoding);
+    return _resourceContents;
+  }
+  
+  public String targetPackage(final ProjectData data) {
+    String _xifexpression = null;
+    boolean _isPluginExport = data.isPluginExport();
+    if (_isPluginExport) {
+      String _generatorClass = data.getGeneratorClass();
+      String _packageName = this.packageName(_generatorClass);
+      _xifexpression = _packageName;
+    } else {
+      _xifexpression = "org.yakindu.sct.generator.xpand";
+    }
+    return _xifexpression;
+  }
+  
+  public String asFolder(final String s) {
+    String _replaceAll = s.replaceAll("\\.", "/");
+    return _replaceAll;
+  }
+  
+  public String javaPathToXpand(final String s) {
+    String _replaceAll = s.replaceAll("\\.", "::");
+    return _replaceAll;
+  }
+  
+  public String simpleName(final String s) {
+    int _lastIndexOf = s.lastIndexOf(".");
+    int _operator_plus = IntegerExtensions.operator_plus(((Integer)_lastIndexOf), ((Integer)1));
+    String _substring = s.substring(_operator_plus);
+    return _substring;
+  }
+  
+  public String packageName(final String s) {
+    int _lastIndexOf = s.lastIndexOf(".");
+    String _substring = s.substring(0, _lastIndexOf);
+    return _substring;
+  }
+  
+  public String providerClass(final ProjectData data) {
+    String _generatorClass = data.getGeneratorClass();
+    String _operator_plus = StringExtensions.operator_plus(_generatorClass, "DefaultValueProvider");
+    return _operator_plus;
+  }
+  
+  public String javaFilename(final String s) {
+    String _replaceAll = s.replaceAll("\\.", "/");
+    String _operator_plus = StringExtensions.operator_plus(_replaceAll, ".java");
+    return _operator_plus;
+  }
+  
+  public Object createFolder(final String folderPath, final IContainer container, final IProgressMonitor monitor) throws CoreException {
+    Path _path = new Path(folderPath);
+    IFolder _folder = container.getFolder(_path);
+    Object _createFolderHierarchy = this.createFolderHierarchy(_folder, monitor);
+    return _createFolderHierarchy;
+  }
+  
+  public Object createFolderHierarchy(final IFolder folder, final IProgressMonitor monitor) throws CoreException {
+    Object _xifexpression = null;
+    boolean _exists = folder.exists();
+    boolean _operator_not = BooleanExtensions.operator_not(_exists);
+    if (_operator_not) {
+      {
+        boolean _operator_and = false;
+        IContainer _parent = folder.getParent();
+        boolean _exists_1 = _parent.exists();
+        boolean _operator_not_1 = BooleanExtensions.operator_not(_exists_1);
+        if (!_operator_not_1) {
+          _operator_and = false;
+        } else {
+          IContainer _parent_1 = folder.getParent();
+          int _type = _parent_1.getType();
+          boolean _operator_equals = ObjectExtensions.operator_equals(((Integer)_type), ((Integer)IResource.FOLDER));
+          _operator_and = BooleanExtensions.operator_and(_operator_not_1, _operator_equals);
+        }
+        if (_operator_and) {
+          IContainer _parent_2 = folder.getParent();
+          this.createFolderHierarchy(((IFolder) _parent_2), monitor);
+        }
+        folder.create(true, true, monitor);
+      }
+    }
+    return _xifexpression;
+  }
+  
+  public String escapeForXml(final String s) {
+    String _escapeXml = StringEscapeUtils.escapeXml(s);
+    return _escapeXml;
+  }
+  
+  public StringConcatenation plugin(final ProjectData data) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
+    _builder.newLine();
+    _builder.append("<?eclipse version=\"3.4\"?>");
+    _builder.newLine();
+    _builder.append("<plugin>");
+    _builder.newLine();
+    _builder.append("   ");
+    _builder.append("<extension");
+    _builder.newLine();
+    _builder.append("         ");
+    _builder.append("point=\"org.yakindu.sct.generator.core.generator\">");
+    _builder.newLine();
+    _builder.append("      ");
+    _builder.append("<SCTGenerator class=\"");
+    String _generatorClass = data.getGeneratorClass();
+    _builder.append(_generatorClass, "      ");
+    _builder.append("\"");
+    _builder.newLineIfNotEmpty();
+    _builder.append("            ");
+    _builder.append("description=\"");
+    String _generatorDescription = data.getGeneratorDescription();
+    String _escapeForXml = this.escapeForXml(_generatorDescription);
+    _builder.append(_escapeForXml, "            ");
+    _builder.append("\"");
+    _builder.newLineIfNotEmpty();
+    _builder.append("            ");
+    _builder.append("id=\"");
+    String _generatorId = data.getGeneratorId();
+    _builder.append(_generatorId, "            ");
+    _builder.append("\"");
+    _builder.newLineIfNotEmpty();
+    _builder.append("            ");
+    _builder.append("name=\"");
+    String _generatorName = data.getGeneratorName();
+    String _escapeForXml_1 = this.escapeForXml(_generatorName);
+    _builder.append(_escapeForXml_1, "            ");
+    _builder.append("\">");
+    _builder.newLineIfNotEmpty();
+    _builder.append("      ");
+    _builder.append("</SCTGenerator>");
+    _builder.newLine();
+    _builder.append("   ");
+    _builder.append("</extension>");
+    _builder.newLine();
+    {
+      boolean _isTypeLibrary = data.isTypeLibrary();
+      if (_isTypeLibrary) {
+        _builder.append("<extension");
+        _builder.newLine();
+        _builder.append("      ");
+        _builder.append("point=\"org.yakindu.sct.generator.core.featuretypes\">");
+        _builder.newLine();
+        _builder.append("   ");
+        _builder.append("<FeatureLibrary generatorId=\"");
+        String _generatorId_1 = data.getGeneratorId();
+        _builder.append(_generatorId_1, "   ");
+        _builder.append("\" ");
+        _builder.newLineIfNotEmpty();
+        _builder.append("   ");
+        _builder.append("defaultProvider=\"");
+        String _providerClass = this.providerClass(data);
+        _builder.append(_providerClass, "   ");
+        _builder.append("\"");
+        _builder.newLineIfNotEmpty();
+        _builder.append("         ");
+        _builder.append("uri=\"platform:/plugin/");
+        IProject _project = data.getProject();
+        String _name = _project.getName();
+        _builder.append(_name, "         ");
+        _builder.append("/library/FeatureTypeLibrary.xmi\">");
+        _builder.newLineIfNotEmpty();
+        _builder.append("   ");
+        _builder.append("</FeatureLibrary>");
+        _builder.newLine();
+        _builder.append("</extension>");
+        _builder.newLine();
+      }
+    }
+    _builder.append("</plugin>");
+    _builder.newLine();
+    return _builder;
+  }
+  
+  public StringConcatenation generator(final ProjectData data) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("package ");
+    String _generatorClass = data.getGeneratorClass();
+    String _packageName = this.packageName(_generatorClass);
+    _builder.append(_packageName, "");
+    _builder.append(";");
+    _builder.newLineIfNotEmpty();
+    _builder.newLine();
+    _builder.append("import org.yakindu.sct.generator.core.impl.AbstractXpandBasedCodeGenerator;");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("/**");
+    _builder.newLine();
+    _builder.append(" ");
+    _builder.append("* Generator using Xpand template \"");
+    String _generatorClass_1 = data.getGeneratorClass();
+    String _javaPathToXpand = this.javaPathToXpand(_generatorClass_1);
+    _builder.append(_javaPathToXpand, " ");
+    _builder.append("::main\"");
+    _builder.newLineIfNotEmpty();
+    _builder.append(" ");
+    _builder.append("*/");
+    _builder.newLine();
+    _builder.append("public class ");
+    String _generatorClass_2 = data.getGeneratorClass();
+    String _simpleName = this.simpleName(_generatorClass_2);
+    _builder.append(_simpleName, "");
+    _builder.append(" extends AbstractXpandBasedCodeGenerator {");
+    _builder.newLineIfNotEmpty();
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("@Override");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("public String getTemplatePath() {");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("return \"");
+    String _generatorClass_3 = data.getGeneratorClass();
+    String _javaPathToXpand_1 = this.javaPathToXpand(_generatorClass_3);
+    _builder.append(_javaPathToXpand_1, "		");
+    _builder.append("::main\";");
+    _builder.newLineIfNotEmpty();
+    _builder.append("\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("}");
+    _builder.newLine();
+    return _builder;
+  }
+  
+  public StringConcatenation defaultProvider(final ProjectData data) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("package ");
+    String _providerClass = this.providerClass(data);
+    String _packageName = this.packageName(_providerClass);
+    _builder.append(_packageName, "");
+    _builder.append(";");
+    _builder.newLineIfNotEmpty();
+    _builder.newLine();
+    _builder.append("import org.yakindu.sct.generator.core.features.AbstractDefaultFeatureValueProvider;");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("/**");
+    _builder.newLine();
+    _builder.append(" ");
+    _builder.append("* Default value proivder for ");
+    String _generatorName = data.getGeneratorName();
+    _builder.append(_generatorName, " ");
+    _builder.append(" feature library");
+    _builder.newLineIfNotEmpty();
+    _builder.append(" ");
+    _builder.append("*/");
+    _builder.newLine();
+    _builder.append("public class ");
+    String _providerClass_1 = this.providerClass(data);
+    String _simpleName = this.simpleName(_providerClass_1);
+    _builder.append(_simpleName, "");
+    _builder.append(" extends AbstractDefaultFeatureValueProvider {");
+    _builder.newLineIfNotEmpty();
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("private static final String LIBRARY_NAME = \"");
+    String _generatorName_1 = data.getGeneratorName();
+    _builder.append(_generatorName_1, "	");
+    _builder.append("\";");
+    _builder.newLineIfNotEmpty();
+    _builder.append("\t");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("@Override");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("protected void setDefaultValue(FeatureParameterValue parameterValue,");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("Statechart statechart) {");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("String parameterName = parameterValue.getParameter().getName();");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("//TODO: set the default values");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("public boolean isProviderFor(FeatureTypeLibrary library) {");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("return library.getName().equals(LIBRARY_NAME);");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("public IStatus validateParameterValue(FeatureParameterValue value) {");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("String name = value.getParameter().getName();");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("//TODO implement validation");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("return Status.OK_STATUS;");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("}");
+    _builder.newLine();
+    return _builder;
+  }
+  
+  public StringConcatenation projectSettings(final ProjectData data, final String encoding) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("eclipse.preferences.version=1");
+    _builder.newLine();
+    _builder.append("encoding/<project>=");
+    _builder.append(encoding, "");
+    _builder.newLineIfNotEmpty();
+    _builder.newLine();
+    return _builder;
+  }
+  
+  public StringConcatenation xpandSettings(final ProjectData data) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("eclipse.preferences.version=1");
+    _builder.newLine();
+    _builder.append("project.specific.metamodel=true");
+    _builder.newLine();
+    _builder.append("metamodelContributor=org.eclipse.xtend.typesystem.emf.ui.EmfMetamodelContributor");
+    _builder.newLine();
+    _builder.newLine();
+    return _builder;
+  }
+  
+  public StringConcatenation buildProperties(final ProjectData data) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("source.. = src/,\\");
+    _builder.newLine();
+    _builder.append("           ");
+    _builder.append("src-gen");
+    _builder.newLine();
+    _builder.append("bin.includes = META-INF/,\\");
+    _builder.newLine();
+    _builder.append("               ");
+    _builder.append(".,\\");
+    _builder.newLine();
+    _builder.append("               ");
+    _builder.append("plugin.xml");
+    _builder.newLine();
+    return _builder;
+  }
+}

+ 22 - 0
plugins/org.yakindu.sct.generator.genmodel/xtend-gen/org/yakindu/sct/generator/genmodel/jvmmodel/SGenJvmModelInferrer.java

@@ -0,0 +1,22 @@
+package org.yakindu.sct.generator.genmodel.jvmmodel;
+
+import com.google.inject.Inject;
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.common.types.JvmDeclaredType;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmModelAssociator;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmModelInferrer;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+
+@SuppressWarnings("all")
+public class SGenJvmModelInferrer implements IJvmModelInferrer {
+  
+  @Inject
+  private IJvmModelAssociator jvmModelAssociator;
+  
+  public List<? extends JvmDeclaredType> inferJvmModel(final EObject sourceObject) {
+    ArrayList<JvmDeclaredType> _newArrayList = CollectionLiterals.<JvmDeclaredType>newArrayList();
+    return _newArrayList;
+  }
+}