All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.pelle.mango.dsl.generator.client.ModuleGenerator Maven / Gradle / Ivy

package io.pelle.mango.dsl.generator.client;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.inject.Inject;
import io.pelle.mango.client.base.module.BaseModule;
import io.pelle.mango.client.base.module.IModule;
import io.pelle.mango.dsl.generator.client.ClientNameUtils;
import io.pelle.mango.dsl.generator.client.ClientTypeUtils;
import io.pelle.mango.dsl.mango.ModuleDefinition;
import io.pelle.mango.dsl.mango.ModuleDefinitionParameter;
import io.pelle.mango.dsl.mango.SimpleTypes;
import org.eclipse.emf.common.util.EList;
import org.eclipse.xtend2.lib.StringConcatenation;
import org.eclipse.xtext.xbase.lib.Extension;
import org.eclipse.xtext.xbase.lib.StringExtensions;

@SuppressWarnings("all")
public class ModuleGenerator {
  @Inject
  @Extension
  private ClientNameUtils _clientNameUtils;
  
  @Inject
  @Extension
  private ClientTypeUtils _clientTypeUtils;
  
  public CharSequence compileBaseModuleDefinition(final ModuleDefinition moduleDefinition) {
    StringConcatenation _builder = new StringConcatenation();
    _builder.append("package ");
    String _packageName = this._clientNameUtils.getPackageName(moduleDefinition);
    _builder.append(_packageName, "");
    _builder.append(";");
    _builder.newLineIfNotEmpty();
    _builder.newLine();
    _builder.append("public abstract class ");
    String _baseModuleDefinitionName = this._clientNameUtils.baseModuleDefinitionName(moduleDefinition);
    _builder.append(_baseModuleDefinitionName, "");
    _builder.append(" extends ");
    String _name = BaseModule.class.getName();
    _builder.append(_name, "");
    _builder.append(" {");
    _builder.newLineIfNotEmpty();
    _builder.newLine();
    _builder.append("\t");
    _builder.append("public static final String MODULE_ID = \"");
    String _name_1 = moduleDefinition.getName();
    _builder.append(_name_1, "\t");
    _builder.append("\";");
    _builder.newLineIfNotEmpty();
    _builder.newLine();
    _builder.append("\t");
    _builder.append("public ");
    String _baseModuleDefinitionName_1 = this._clientNameUtils.baseModuleDefinitionName(moduleDefinition);
    _builder.append(_baseModuleDefinitionName_1, "\t");
    _builder.append("(String moduleUrl, ");
    String _name_2 = AsyncCallback.class.getName();
    _builder.append(_name_2, "\t");
    _builder.append("<");
    String _name_3 = IModule.class.getName();
    _builder.append(_name_3, "\t");
    _builder.append("> moduleCallback, java.util.Map parameters) {");
    _builder.newLineIfNotEmpty();
    _builder.append("\t\t");
    _builder.append("super(MODULE_ID, moduleUrl, moduleCallback, parameters);");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("}");
    _builder.newLine();
    _builder.newLine();
    {
      EList _moduleDefinitionParameters = moduleDefinition.getModuleDefinitionParameters();
      for(final ModuleDefinitionParameter moduleDefinitionParameter : _moduleDefinitionParameters) {
        _builder.append("\t");
        _builder.newLine();
        _builder.append("\t");
        _builder.append("public static final String ");
        String _name_4 = moduleDefinitionParameter.getName();
        String _upperCase = _name_4.toUpperCase();
        _builder.append(_upperCase, "\t");
        _builder.append("_PARAMETER_ID = \"");
        String _name_5 = moduleDefinitionParameter.getName();
        _builder.append(_name_5, "\t");
        _builder.append("\";");
        _builder.newLineIfNotEmpty();
        _builder.append("\t");
        _builder.newLine();
        _builder.append("\t");
        _builder.append("public ");
        SimpleTypes _type = moduleDefinitionParameter.getType();
        String _type_1 = this._clientTypeUtils.getType(_type);
        _builder.append(_type_1, "\t");
        _builder.append(" get");
        String _name_6 = moduleDefinitionParameter.getName();
        String _firstUpper = StringExtensions.toFirstUpper(_name_6);
        _builder.append(_firstUpper, "\t");
        _builder.append("() {");
        _builder.newLineIfNotEmpty();
        _builder.newLine();
        _builder.append("\t");
        _builder.append("\t");
        _builder.append("if (getParameters().containsKey(\"");
        String _name_7 = moduleDefinitionParameter.getName();
        _builder.append(_name_7, "\t\t");
        _builder.append("\"))");
        _builder.newLineIfNotEmpty();
        _builder.append("\t");
        _builder.append("\t");
        _builder.append("{");
        _builder.newLine();
        _builder.append("\t");
        _builder.append("\t\t");
        _builder.append("Object parameterValue = parameters.get(\"");
        String _name_8 = moduleDefinitionParameter.getName();
        _builder.append(_name_8, "\t\t\t");
        _builder.append("\");");
        _builder.newLineIfNotEmpty();
        _builder.append("\t");
        _builder.append("\t");
        _builder.newLine();
        _builder.append("\t");
        _builder.append("\t\t");
        _builder.append("if (parameterValue instanceof ");
        SimpleTypes _type_2 = moduleDefinitionParameter.getType();
        String _type_3 = this._clientTypeUtils.getType(_type_2);
        _builder.append(_type_3, "\t\t\t");
        _builder.append(")");
        _builder.newLineIfNotEmpty();
        _builder.append("\t");
        _builder.append("\t\t");
        _builder.append("{");
        _builder.newLine();
        _builder.append("\t");
        _builder.append("\t\t\t");
        _builder.append("return (");
        SimpleTypes _type_4 = moduleDefinitionParameter.getType();
        String _type_5 = this._clientTypeUtils.getType(_type_4);
        _builder.append(_type_5, "\t\t\t\t");
        _builder.append(") parameterValue;");
        _builder.newLineIfNotEmpty();
        _builder.append("\t");
        _builder.append("\t\t");
        _builder.append("}");
        _builder.newLine();
        _builder.append("\t");
        _builder.append("\t\t");
        _builder.newLine();
        _builder.append("\t");
        _builder.append("\t\t");
        _builder.newLine();
        _builder.append("\t");
        _builder.append("\t\t");
        _builder.append("if (parameterValue instanceof java.lang.String)");
        _builder.newLine();
        _builder.append("\t");
        _builder.append("\t\t");
        _builder.append("{");
        _builder.newLine();
        _builder.append("\t");
        _builder.append("\t\t\t");
        _builder.append("return ");
        SimpleTypes _type_6 = moduleDefinitionParameter.getType();
        String _parseSimpleTypeFromString = this._clientTypeUtils.parseSimpleTypeFromString(_type_6, "parameterValue.toString()");
        _builder.append(_parseSimpleTypeFromString, "\t\t\t\t");
        _builder.append(";");
        _builder.newLineIfNotEmpty();
        _builder.append("\t");
        _builder.append("\t\t");
        _builder.append("}");
        _builder.newLine();
        _builder.append("\t");
        _builder.append("\t\t");
        _builder.newLine();
        _builder.append("\t");
        _builder.append("\t\t");
        _builder.append("throw new RuntimeException(\"parameter value type mismatch, expected \'");
        SimpleTypes _type_7 = moduleDefinitionParameter.getType();
        String _type_8 = this._clientTypeUtils.getType(_type_7);
        _builder.append(_type_8, "\t\t\t");
        _builder.append("\' but got \'\" + parameterValue.getClass().getName() + \"\'\");");
        _builder.newLineIfNotEmpty();
        _builder.append("\t");
        _builder.append("\t");
        _builder.append("}");
        _builder.newLine();
        _builder.append("\t");
        _builder.append("\t");
        _builder.append("else");
        _builder.newLine();
        _builder.append("\t");
        _builder.append("\t");
        _builder.append("{");
        _builder.newLine();
        _builder.append("\t");
        _builder.append("\t\t");
        _builder.append("return null;");
        _builder.newLine();
        _builder.append("\t");
        _builder.append("\t");
        _builder.append("}");
        _builder.newLine();
        _builder.append("\t");
        _builder.append("}");
        _builder.newLine();
        _builder.append("\t");
        _builder.newLine();
        _builder.append("\t");
        _builder.append("public boolean has");
        String _name_9 = moduleDefinitionParameter.getName();
        String _firstUpper_1 = StringExtensions.toFirstUpper(_name_9);
        _builder.append(_firstUpper_1, "\t");
        _builder.append("() {");
        _builder.newLineIfNotEmpty();
        _builder.append("\t");
        _builder.append("\t");
        _builder.append("return getParameters().containsKey(\"");
        String _name_10 = moduleDefinitionParameter.getName();
        _builder.append(_name_10, "\t\t");
        _builder.append("\");");
        _builder.newLineIfNotEmpty();
        _builder.append("\t");
        _builder.append("}");
        _builder.newLine();
        _builder.newLine();
      }
    }
    _builder.newLine();
    _builder.append("\t");
    _builder.append("public static java.util.Map getParameterMap(");
    CharSequence _moduleDefinitionParameters_1 = this.moduleDefinitionParameters(moduleDefinition);
    _builder.append(_moduleDefinitionParameters_1, "\t");
    _builder.append(") {");
    _builder.newLineIfNotEmpty();
    _builder.append("\t");
    _builder.newLine();
    _builder.append("\t\t");
    _builder.append("java.util.Map parameterMap = new java.util.HashMap();");
    _builder.newLine();
    _builder.newLine();
    {
      EList _moduleDefinitionParameters_2 = moduleDefinition.getModuleDefinitionParameters();
      for(final ModuleDefinitionParameter moduleDefinitionParameter_1 : _moduleDefinitionParameters_2) {
        _builder.append("\t\t");
        _builder.append("parameterMap.put(");
        String _name_11 = moduleDefinitionParameter_1.getName();
        String _upperCase_1 = _name_11.toUpperCase();
        _builder.append(_upperCase_1, "\t\t");
        _builder.append("_PARAMETER_ID, ");
        String _name_12 = moduleDefinitionParameter_1.getName();
        String _firstLower = StringExtensions.toFirstLower(_name_12);
        _builder.append(_firstLower, "\t\t");
        _builder.append(");");
        _builder.newLineIfNotEmpty();
      }
    }
    _builder.append("\t\t");
    _builder.newLine();
    _builder.append("\t\t");
    _builder.append("return parameterMap;");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("}");
    _builder.newLine();
    _builder.newLine();
    _builder.append("\t");
    _builder.append("public boolean hasParameter(String parameterName) {");
    _builder.newLine();
    _builder.append("\t\t");
    _builder.append("return getParameters().containsKey(parameterName);");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("}");
    _builder.newLine();
    _builder.newLine();
    _builder.append("}");
    _builder.newLine();
    return _builder;
  }
  
  public CharSequence moduleDefinitionParameters(final ModuleDefinition moduleDefinition) {
    StringConcatenation _builder = new StringConcatenation();
    {
      EList _moduleDefinitionParameters = moduleDefinition.getModuleDefinitionParameters();
      boolean _hasElements = false;
      for(final ModuleDefinitionParameter moduleDefinitionParameter : _moduleDefinitionParameters) {
        if (!_hasElements) {
          _hasElements = true;
        } else {
          _builder.appendImmediate(", ", "");
        }
        SimpleTypes _type = moduleDefinitionParameter.getType();
        String _type_1 = this._clientTypeUtils.getType(_type);
        _builder.append(_type_1, "");
        _builder.append(" ");
        String _name = moduleDefinitionParameter.getName();
        String _firstLower = StringExtensions.toFirstLower(_name);
        _builder.append(_firstLower, "");
        _builder.newLineIfNotEmpty();
      }
    }
    return _builder;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy