Package at.bestsolution.efxclipse.tooling.efxbean.generator

Source Code of at.bestsolution.efxclipse.tooling.efxbean.generator.FXBeanGenerator

package at.bestsolution.efxclipse.tooling.efxbean.generator;

import at.bestsolution.efxclipse.tooling.efxbean.fXBean.Bean;
import at.bestsolution.efxclipse.tooling.efxbean.fXBean.BeanPropertyDecl;
import at.bestsolution.efxclipse.tooling.efxbean.fXBean.FXBeanUnit;
import at.bestsolution.efxclipse.tooling.efxbean.fXBean.MapTypeDef;
import at.bestsolution.efxclipse.tooling.efxbean.fXBean.Multiplicity;
import at.bestsolution.efxclipse.tooling.efxbean.fXBean.PackageDeclaration;
import at.bestsolution.efxclipse.tooling.efxbean.fXBean.TypeDef;
import at.bestsolution.efxclipse.tooling.efxbean.fXBean.ValueListTypeDef;
import com.google.common.base.Objects;
import java.util.Arrays;
import java.util.List;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.xtend2.lib.StringConcatenation;
import org.eclipse.xtext.common.types.JvmType;
import org.eclipse.xtext.common.types.JvmTypeReference;
import org.eclipse.xtext.generator.IFileSystemAccess;
import org.eclipse.xtext.generator.IGenerator;
import org.eclipse.xtext.xbase.compiler.ImportManager;
import org.eclipse.xtext.xbase.lib.Functions.Function1;
import org.eclipse.xtext.xbase.lib.IterableExtensions;
import org.eclipse.xtext.xbase.lib.StringExtensions;

@SuppressWarnings("all")
public class FXBeanGenerator implements IGenerator {
  private ImportManager manager;
 
  public void doGenerate(final Resource resource, final IFileSystemAccess fsa) {
    EList<EObject> _contents = resource.getContents();
    EObject _get = _contents.get(0);
    final FXBeanUnit u = ((FXBeanUnit) _get);
    {
      PackageDeclaration _package = u.getPackage();
      String _name = _package.getName();
      String _replace = _name.replace(".", "/");
      String _plus = (_replace + "/");
      Bean _bean = u.getBean();
      String _name_1 = _bean.getName();
      String _plus_1 = (_plus + _name_1);
      final String filePath = (_plus_1 + ".java");
      ImportManager _importManager = new ImportManager(true);
      this.manager = _importManager;
      CharSequence _generateBeanFile = this.generateBeanFile(u);
      fsa.generateFile(filePath, _generateBeanFile);
    }
    Bean _bean = u.getBean();
    boolean _isReflective = _bean.isReflective();
    if (_isReflective) {
      ImportManager _importManager = new ImportManager(true);
      this.manager = _importManager;
      PackageDeclaration _package = u.getPackage();
      String _name = _package.getName();
      String _replace = _name.replace(".", "/");
      String _plus = (_replace + "/reflective/");
      Bean _bean_1 = u.getBean();
      String _name_1 = _bean_1.getName();
      String _plus_1 = (_plus + _name_1);
      final String filePath = (_plus_1 + "Access.java");
      CharSequence _generateReflectiveAccessFile = this.generateReflectiveAccessFile(u);
      fsa.generateFile(filePath, _generateReflectiveAccessFile);
    }
  }
 
  public CharSequence generateReflectiveAccessFile(final FXBeanUnit u) {
    StringConcatenation _builder = new StringConcatenation();
    _builder.append("package ");
    PackageDeclaration _package = u.getPackage();
    String _name = _package.getName();
    _builder.append(_name, "");
    _builder.append(".reflective;");
    _builder.newLineIfNotEmpty();
    _builder.newLine();
    _builder.append("import at.bestsolution.efxclipse.runtime.model.*;");
    _builder.newLine();
    _builder.append("import javafx.collections.*;");
    _builder.newLine();
    _builder.append("import java.util.List;");
    _builder.newLine();
    _builder.append("import java.util.ArrayList;");
    _builder.newLine();
    _builder.append("import ");
    PackageDeclaration _package_1 = u.getPackage();
    String _name_1 = _package_1.getName();
    _builder.append(_name_1, "");
    _builder.append(".");
    Bean _bean = u.getBean();
    String _name_2 = _bean.getName();
    _builder.append(_name_2, "");
    _builder.append(";");
    _builder.newLineIfNotEmpty();
    _builder.newLine();
    final CharSequence c = this.generateReflectiveAccessClassBody(u);
    _builder.newLineIfNotEmpty();
    {
      List<String> _imports = this.manager.getImports();
      for(final String i : _imports) {
        _builder.append("import ");
        _builder.append(i, "");
        _builder.append(";");
        _builder.newLineIfNotEmpty();
      }
    }
    _builder.newLine();
    _builder.append(c, "");
    _builder.newLineIfNotEmpty();
    return _builder;
  }
 
  public CharSequence generateReflectiveAccessClassBody(final FXBeanUnit u) {
    StringConcatenation _builder = new StringConcatenation();
    _builder.append("public class ");
    Bean _bean = u.getBean();
    String _name = _bean.getName();
    _builder.append(_name, "");
    _builder.append("Access {");
    _builder.newLineIfNotEmpty();
    {
      Bean _bean_1 = u.getBean();
      EList<BeanPropertyDecl> _properties = _bean_1.getProperties();
      for(final BeanPropertyDecl p : _properties) {
        {
          TypeDef _type = p.getType();
          if ((_type instanceof ValueListTypeDef)) {
            {
              ValueListTypeDef _valDef = this.valDef(p);
              Multiplicity _multi = _valDef.getMulti();
              boolean _notEquals = (!Objects.equal(_multi, null));
              if (_notEquals) {
                _builder.append("\t");
                _builder.append("public static final EFXListProperty<");
                Bean _bean_2 = u.getBean();
                String _name_1 = _bean_2.getName();
                _builder.append(_name_1, "  ");
                _builder.append(",ObservableList<");
                ValueListTypeDef _valDef_1 = this.valDef(p);
                JvmTypeReference _singleType = _valDef_1.getSingleType();
                String _shortName = this.shortName(_singleType);
                _builder.append(_shortName, "  ");
                _builder.append(">,");
                ValueListTypeDef _valDef_2 = this.valDef(p);
                JvmTypeReference _singleType_1 = _valDef_2.getSingleType();
                String _shortName_1 = this.shortName(_singleType_1);
                _builder.append(_shortName_1, "  ");
                _builder.append("> ");
                String _name_2 = p.getName();
                String _upperCase = _name_2.toUpperCase();
                _builder.append(_upperCase, "  ");
                _builder.append(" = new EFXListProperty<");
                Bean _bean_3 = u.getBean();
                String _name_3 = _bean_3.getName();
                _builder.append(_name_3, "  ");
                _builder.append(",ObservableList<");
                ValueListTypeDef _valDef_3 = this.valDef(p);
                JvmTypeReference _singleType_2 = _valDef_3.getSingleType();
                String _shortName_2 = this.shortName(_singleType_2);
                _builder.append(_shortName_2, "  ");
                _builder.append(">,");
                ValueListTypeDef _valDef_4 = this.valDef(p);
                JvmTypeReference _singleType_3 = _valDef_4.getSingleType();
                String _shortName_3 = this.shortName(_singleType_3);
                _builder.append(_shortName_3, "  ");
                _builder.append(">(\"");
                String _name_4 = p.getName();
                _builder.append(_name_4, "  ");
                _builder.append("\",ObservableList.class,");
                ValueListTypeDef _valDef_5 = this.valDef(p);
                JvmTypeReference _singleType_4 = _valDef_5.getSingleType();
                String _shortName_4 = this.shortName(_singleType_4);
                _builder.append(_shortName_4, "  ");
                _builder.append(".class,");
                boolean _isReadonly = p.isReadonly();
                _builder.append(_isReadonly, "  ");
                _builder.append(",");
                boolean _isLazy = p.isLazy();
                _builder.append(_isLazy, "  ");
                _builder.append(");");
                _builder.newLineIfNotEmpty();
              } else {
                _builder.append("\t");
                _builder.append("public static final EFXProperty<");
                Bean _bean_4 = u.getBean();
                String _name_5 = _bean_4.getName();
                _builder.append(_name_5, "  ");
                _builder.append(",");
                ValueListTypeDef _valDef_6 = this.valDef(p);
                JvmTypeReference _singleType_5 = _valDef_6.getSingleType();
                String _objectShortType = this.objectShortType(_singleType_5);
                _builder.append(_objectShortType, "  ");
                _builder.append("> ");
                String _name_6 = p.getName();
                String _upperCase_1 = _name_6.toUpperCase();
                _builder.append(_upperCase_1, "  ");
                _builder.append(" = new EFXProperty<");
                Bean _bean_5 = u.getBean();
                String _name_7 = _bean_5.getName();
                _builder.append(_name_7, "  ");
                _builder.append(",");
                ValueListTypeDef _valDef_7 = this.valDef(p);
                JvmTypeReference _singleType_6 = _valDef_7.getSingleType();
                String _objectShortType_1 = this.objectShortType(_singleType_6);
                _builder.append(_objectShortType_1, "  ");
                _builder.append(">(\"");
                String _name_8 = p.getName();
                _builder.append(_name_8, "  ");
                _builder.append("\",");
                ValueListTypeDef _valDef_8 = this.valDef(p);
                JvmTypeReference _singleType_7 = _valDef_8.getSingleType();
                String _shortName_5 = this.shortName(_singleType_7);
                _builder.append(_shortName_5, "  ");
                _builder.append(".class,");
                boolean _isReadonly_1 = p.isReadonly();
                _builder.append(_isReadonly_1, "  ");
                _builder.append(",");
                boolean _isLazy_1 = p.isLazy();
                _builder.append(_isLazy_1, "  ");
                _builder.append(");");
                _builder.newLineIfNotEmpty();
              }
            }
          } else {
            _builder.append("\t");
            _builder.append("public static final EFXMapProperty<?,?,");
            MapTypeDef _mapDef = this.mapDef(p);
            JvmTypeReference _keyType = _mapDef.getKeyType();
            String _shortName_6 = this.shortName(_keyType);
            _builder.append(_shortName_6, "  ");
            _builder.append(",");
            MapTypeDef _mapDef_1 = this.mapDef(p);
            JvmTypeReference _valueType = _mapDef_1.getValueType();
            String _shortName_7 = this.shortName(_valueType);
            _builder.append(_shortName_7, "  ");
            _builder.append("> ");
            String _name_9 = p.getName();
            String _upperCase_2 = _name_9.toUpperCase();
            _builder.append(_upperCase_2, "  ");
            _builder.append(" = new EFXMapProperty<?,?,");
            MapTypeDef _mapDef_2 = this.mapDef(p);
            JvmTypeReference _keyType_1 = _mapDef_2.getKeyType();
            String _shortName_8 = this.shortName(_keyType_1);
            _builder.append(_shortName_8, "  ");
            _builder.append(",");
            MapTypeDef _mapDef_3 = this.mapDef(p);
            JvmTypeReference _valueType_1 = _mapDef_3.getValueType();
            String _shortName_9 = this.shortName(_valueType_1);
            _builder.append(_shortName_9, "  ");
            _builder.append(">(\"");
            String _name_10 = p.getName();
            _builder.append(_name_10, "  ");
            _builder.append("\");");
            _builder.newLineIfNotEmpty();
          }
        }
      }
    }
    _builder.append("\t");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("public static final EFXBeanClass<");
    Bean _bean_6 = u.getBean();
    String _name_11 = _bean_6.getName();
    _builder.append(_name_11, "  ");
    _builder.append("> CLAZZ;");
    _builder.newLineIfNotEmpty();
    _builder.append("\t");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("static {");
    _builder.newLine();
    _builder.append("\t\t");
    _builder.append("List<EFXFeature<");
    Bean _bean_7 = u.getBean();
    String _name_12 = _bean_7.getName();
    _builder.append(_name_12, "    ");
    _builder.append(",?>> features = new ArrayList<EFXFeature<");
    Bean _bean_8 = u.getBean();
    String _name_13 = _bean_8.getName();
    _builder.append(_name_13, "    ");
    _builder.append(",?>>();");
    _builder.newLineIfNotEmpty();
    {
      Bean _bean_9 = u.getBean();
      EList<BeanPropertyDecl> _properties_1 = _bean_9.getProperties();
      for(final BeanPropertyDecl p_1 : _properties_1) {
        _builder.append("\t\t");
        _builder.append("features.add(");
        String _name_14 = p_1.getName();
        String _upperCase_3 = _name_14.toUpperCase();
        _builder.append(_upperCase_3, "    ");
        _builder.append(");");
        _builder.newLineIfNotEmpty();
      }
    }
    _builder.append("\t\t");
    _builder.append("CLAZZ = new EFXBeanClass<");
    Bean _bean_10 = u.getBean();
    String _name_15 = _bean_10.getName();
    _builder.append(_name_15, "    ");
    _builder.append(">(features);");
    _builder.newLineIfNotEmpty();
    _builder.append("\t");
    _builder.append("}");
    _builder.newLine();
    _builder.append("\t");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("public static void set(");
    Bean _bean_11 = u.getBean();
    String _name_16 = _bean_11.getName();
    _builder.append(_name_16, "  ");
    _builder.append(" bean, EFXProperty<");
    Bean _bean_12 = u.getBean();
    String _name_17 = _bean_12.getName();
    _builder.append(_name_17, "  ");
    _builder.append(",?> feature, Object value) {");
    _builder.newLineIfNotEmpty();
    _builder.append("\t\t");
    _builder.append("switch( feature.name ) {");
    _builder.newLine();
    {
      Bean _bean_13 = u.getBean();
      EList<BeanPropertyDecl> _properties_2 = _bean_13.getProperties();
      final Function1<BeanPropertyDecl,Boolean> _function = new Function1<BeanPropertyDecl,Boolean>() {
          public Boolean apply(final BeanPropertyDecl p) {
            boolean _isReadonly = p.isReadonly();
            boolean _not = (!_isReadonly);
            return Boolean.valueOf(_not);
          }
        };
      Iterable<BeanPropertyDecl> _filter = IterableExtensions.<BeanPropertyDecl>filter(_properties_2, _function);
      for(final BeanPropertyDecl p_2 : _filter) {
        {
          TypeDef _type_1 = p_2.getType();
          if ((_type_1 instanceof ValueListTypeDef)) {
            {
              TypeDef _type_2 = p_2.getType();
              JvmTypeReference _singleType_8 = ((ValueListTypeDef) _type_2).getSingleType();
              boolean _isPrimitiveType = this.isPrimitiveType(_singleType_8);
              if (_isPrimitiveType) {
                {
                  TypeDef _type_3 = p_2.getType();
                  JvmTypeReference _singleType_9 = ((ValueListTypeDef) _type_3).getSingleType();
                  String _qualifiedName = _singleType_9.getQualifiedName();
                  boolean _equals = _qualifiedName.equals("int");
                  if (_equals) {
                    _builder.append("\t\t\t");
                    _builder.append("case \"");
                    String _name_18 = p_2.getName();
                    _builder.append(_name_18, "      ");
                    _builder.append("\" : bean.set");
                    String _name_19 = p_2.getName();
                    String _firstUpper = StringExtensions.toFirstUpper(_name_19);
                    _builder.append(_firstUpper, "      ");
                    _builder.append("(((Number)value).intValue()); return;");
                    _builder.newLineIfNotEmpty();
                  } else {
                    _builder.append("\t\t\t");
                    _builder.append("case \"");
                    String _name_20 = p_2.getName();
                    _builder.append(_name_20, "      ");
                    _builder.append("\" : bean.set");
                    String _name_21 = p_2.getName();
                    String _firstUpper_1 = StringExtensions.toFirstUpper(_name_21);
                    _builder.append(_firstUpper_1, "      ");
                    _builder.append("(((Number)value).doubleValue()); return;");
                    _builder.newLineIfNotEmpty();
                  }
                }
              } else {
                _builder.append("\t\t\t");
                _builder.append("case \"");
                String _name_22 = p_2.getName();
                _builder.append(_name_22, "      ");
                _builder.append("\" : bean.set");
                String _name_23 = p_2.getName();
                String _firstUpper_2 = StringExtensions.toFirstUpper(_name_23);
                _builder.append(_firstUpper_2, "      ");
                _builder.append("((");
                TypeDef _type_4 = p_2.getType();
                JvmTypeReference _singleType_10 = ((ValueListTypeDef) _type_4).getSingleType();
                String _shortName_10 = this.shortName(_singleType_10);
                _builder.append(_shortName_10, "      ");
                _builder.append(")value); return;");
                _builder.newLineIfNotEmpty();
              }
            }
          }
        }
      }
    }
    _builder.append("\t\t\t");
    _builder.append("default: throw new IllegalArgumentException(\"Unknown feature \'\"+feature.name+\"\'\");");
    _builder.newLine();
    _builder.append("\t\t");
    _builder.append("}");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("}");
    _builder.newLine();
    _builder.append("\t");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("public static <R> R get(");
    Bean _bean_14 = u.getBean();
    String _name_24 = _bean_14.getName();
    _builder.append(_name_24, "  ");
    _builder.append(" bean, EFXProperty<");
    Bean _bean_15 = u.getBean();
    String _name_25 = _bean_15.getName();
    _builder.append(_name_25, "  ");
    _builder.append(",?> feature) {");
    _builder.newLineIfNotEmpty();
    _builder.append("\t\t");
    _builder.append("switch( feature.name ) {");
    _builder.newLine();
    {
      Bean _bean_16 = u.getBean();
      EList<BeanPropertyDecl> _properties_3 = _bean_16.getProperties();
      final Function1<BeanPropertyDecl,Boolean> _function_1 = new Function1<BeanPropertyDecl,Boolean>() {
          public Boolean apply(final BeanPropertyDecl p) {
            boolean _isReadonly = p.isReadonly();
            boolean _not = (!_isReadonly);
            return Boolean.valueOf(_not);
          }
        };
      Iterable<BeanPropertyDecl> _filter_1 = IterableExtensions.<BeanPropertyDecl>filter(_properties_3, _function_1);
      for(final BeanPropertyDecl p_3 : _filter_1) {
        {
          TypeDef _type_5 = p_3.getType();
          JvmTypeReference _singleType_11 = ((ValueListTypeDef) _type_5).getSingleType();
          boolean _isPrimitiveType_1 = this.isPrimitiveType(_singleType_11);
          if (_isPrimitiveType_1) {
            {
              TypeDef _type_6 = p_3.getType();
              JvmTypeReference _singleType_12 = ((ValueListTypeDef) _type_6).getSingleType();
              String _qualifiedName_1 = _singleType_12.getQualifiedName();
              boolean _equals_1 = _qualifiedName_1.equals("int");
              if (_equals_1) {
                _builder.append("\t\t\t");
                _builder.append("case \"");
                String _name_26 = p_3.getName();
                _builder.append(_name_26, "      ");
                _builder.append("\" : return (R)Integer.valueOf(bean.get");
                String _name_27 = p_3.getName();
                String _firstUpper_3 = StringExtensions.toFirstUpper(_name_27);
                _builder.append(_firstUpper_3, "      ");
                _builder.append("());");
                _builder.newLineIfNotEmpty();
              } else {
                _builder.append("\t\t\t");
                _builder.append("case \"");
                String _name_28 = p_3.getName();
                _builder.append(_name_28, "      ");
                _builder.append("\" : return (R)Double.valueOf(bean.set");
                String _name_29 = p_3.getName();
                String _firstUpper_4 = StringExtensions.toFirstUpper(_name_29);
                _builder.append(_firstUpper_4, "      ");
                _builder.append("());");
                _builder.newLineIfNotEmpty();
              }
            }
          } else {
            _builder.append("\t\t\t");
            _builder.append("case \"");
            String _name_30 = p_3.getName();
            _builder.append(_name_30, "      ");
            _builder.append("\" : return (R)bean.get");
            String _name_31 = p_3.getName();
            String _firstUpper_5 = StringExtensions.toFirstUpper(_name_31);
            _builder.append(_firstUpper_5, "      ");
            _builder.append("();");
            _builder.newLineIfNotEmpty();
          }
        }
      }
    }
    _builder.append("\t\t\t");
    _builder.append("default: throw new IllegalArgumentException(\"Unknown feature \'\"+feature.name+\"\'\");");
    _builder.newLine();
    _builder.append("\t\t");
    _builder.append("}");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("}");
    _builder.newLine();
    _builder.append("}");
    _builder.newLine();
    return _builder;
  }
 
  public boolean isPrimitiveType(final JvmTypeReference ref) {
    String _qualifiedName = ref.getQualifiedName();
    final String _switchValue = _qualifiedName;
    boolean _matched = false;
    if (!_matched) {
      if (Objects.equal(_switchValue,"int")) {
        _matched=true;
        return true;
      }
    }
    if (!_matched) {
      if (Objects.equal(_switchValue,"double")) {
        _matched=true;
        return true;
      }
    }
    return false;
  }
 
  public CharSequence generateBeanFile(final FXBeanUnit u) {
    StringConcatenation _builder = new StringConcatenation();
    _builder.append("package ");
    PackageDeclaration _package = u.getPackage();
    String _name = _package.getName();
    _builder.append(_name, "");
    _builder.append(";");
    _builder.newLineIfNotEmpty();
    _builder.newLine();
    _builder.append("import javafx.beans.property.*;");
    _builder.newLine();
    _builder.append("import javafx.collections.*;");
    _builder.newLine();
    _builder.append("import java.util.ArrayList;");
    _builder.newLine();
    _builder.newLine();
    final CharSequence c = this.generateClassBody(u);
    _builder.newLineIfNotEmpty();
    {
      List<String> _imports = this.manager.getImports();
      for(final String i : _imports) {
        _builder.append("import ");
        _builder.append(i, "");
        _builder.append(";");
        _builder.newLineIfNotEmpty();
      }
    }
    _builder.newLine();
    _builder.append(c, "");
    _builder.newLineIfNotEmpty();
    return _builder;
  }
 
  public CharSequence generateClassBody(final FXBeanUnit u) {
    StringConcatenation _builder = new StringConcatenation();
    _builder.append("public class ");
    Bean _bean = u.getBean();
    String _name = _bean.getName();
    _builder.append(_name, "");
    _builder.append(" {");
    _builder.newLineIfNotEmpty();
    {
      Bean _bean_1 = u.getBean();
      EList<BeanPropertyDecl> _properties = _bean_1.getProperties();
      for(final BeanPropertyDecl p : _properties) {
        _builder.append("\t");
        _builder.append("private ");
        {
          boolean _isLazy = p.isLazy();
          boolean _not = (!_isLazy);
          if (_not) {
            _builder.append("final ");
          }
        }
        TypeDef _type = p.getType();
        String _propertyDefinition = this.propertyDefinition(_type);
        _builder.append(_propertyDefinition, "  ");
        _builder.append(" ");
        String _name_1 = p.getName();
        _builder.append(_name_1, "  ");
        _builder.append("Property ");
        {
          boolean _isLazy_1 = p.isLazy();
          boolean _not_1 = (!_isLazy_1);
          if (_not_1) {
            _builder.append(" = ");
            TypeDef _type_1 = p.getType();
            String _propertyCreate = this.propertyCreate(_type_1);
            _builder.append(_propertyCreate, "  ");
          }
        }
        _builder.append(";");
        _builder.newLineIfNotEmpty();
      }
    }
    _builder.append("\t");
    _builder.newLine();
    {
      Bean _bean_2 = u.getBean();
      EList<BeanPropertyDecl> _properties_1 = _bean_2.getProperties();
      for(final BeanPropertyDecl p_1 : _properties_1) {
        _builder.append("\t");
        TypeDef _type_2 = p_1.getType();
        CharSequence _accessMethods = this.accessMethods(_type_2);
        _builder.append(_accessMethods, "  ");
        _builder.newLineIfNotEmpty();
        _builder.newLine();
      }
    }
    _builder.append("}");
    _builder.newLine();
    return _builder;
  }
 
  protected CharSequence _accessMethods(final ValueListTypeDef p) {
    StringConcatenation _builder = new StringConcatenation();
    _builder.append("// -------------------------------");
    _builder.newLine();
    _builder.append("// Property: ");
    BeanPropertyDecl _property = this.property(p);
    String _name = _property.getName();
    _builder.append(_name, "");
    _builder.append("; lazy: ");
    BeanPropertyDecl _property_1 = this.property(p);
    boolean _isLazy = _property_1.isLazy();
    _builder.append(_isLazy, "");
    _builder.append("; readonly: ");
    BeanPropertyDecl _property_2 = this.property(p);
    boolean _isReadonly = _property_2.isReadonly();
    _builder.append(_isReadonly, "");
    _builder.newLineIfNotEmpty();
    _builder.append("// -------------------------------");
    _builder.newLine();
    _builder.append("public ");
    String _apiPropertyDefinition = this.apiPropertyDefinition(p);
    _builder.append(_apiPropertyDefinition, "");
    _builder.append(" ");
    BeanPropertyDecl _property_3 = this.property(p);
    String _name_1 = _property_3.getName();
    _builder.append(_name_1, "");
    _builder.append("Property() {");
    _builder.newLineIfNotEmpty();
    {
      BeanPropertyDecl _property_4 = this.property(p);
      boolean _isLazy_1 = _property_4.isLazy();
      if (_isLazy_1) {
        _builder.append("\t");
        _builder.append("if( this.");
        BeanPropertyDecl _property_5 = this.property(p);
        String _name_2 = _property_5.getName();
        _builder.append(_name_2, "  ");
        _builder.append("Property == null ) {");
        _builder.newLineIfNotEmpty();
        _builder.append("\t");
        _builder.append("\t");
        _builder.append("this.");
        BeanPropertyDecl _property_6 = this.property(p);
        String _name_3 = _property_6.getName();
        _builder.append(_name_3, "    ");
        _builder.append("Property = ");
        String _propertyCreate = this.propertyCreate(p);
        _builder.append(_propertyCreate, "    ");
        _builder.append(";");
        _builder.newLineIfNotEmpty();
        _builder.append("\t");
        _builder.append("}");
        _builder.newLine();
      }
    }
    _builder.append("\t");
    _builder.append("return this.");
    BeanPropertyDecl _property_7 = this.property(p);
    String _name_4 = _property_7.getName();
    _builder.append(_name_4, "  ");
    _builder.append("Property;");
    _builder.newLineIfNotEmpty();
    _builder.append("}");
    _builder.newLine();
    _builder.newLine();
    {
      BeanPropertyDecl _property_8 = this.property(p);
      boolean _isReadonly_1 = _property_8.isReadonly();
      boolean _not = (!_isReadonly_1);
      if (_not) {
        _builder.append("public void set");
        BeanPropertyDecl _property_9 = this.property(p);
        String _name_5 = _property_9.getName();
        String _camelCase = this.camelCase(_name_5);
        _builder.append(_camelCase, "");
        _builder.append("(");
        {
          Multiplicity _multi = p.getMulti();
          boolean _notEquals = (!Objects.equal(_multi, null));
          if (_notEquals) {
            _builder.append("ObservableList<");
          }
        }
        JvmTypeReference _singleType = p.getSingleType();
        String _shortName = this.shortName(_singleType);
        _builder.append(_shortName, "");
        {
          Multiplicity _multi_1 = p.getMulti();
          boolean _notEquals_1 = (!Objects.equal(_multi_1, null));
          if (_notEquals_1) {
            _builder.append(">");
          }
        }
        _builder.append(" ");
        BeanPropertyDecl _property_10 = this.property(p);
        String _name_6 = _property_10.getName();
        _builder.append(_name_6, "");
        _builder.append(") {");
        _builder.newLineIfNotEmpty();
        _builder.append("\t");
        _builder.append("this.");
        BeanPropertyDecl _property_11 = this.property(p);
        String _name_7 = _property_11.getName();
        _builder.append(_name_7, "  ");
        _builder.append("Property().set(");
        BeanPropertyDecl _property_12 = this.property(p);
        String _name_8 = _property_12.getName();
        _builder.append(_name_8, "  ");
        _builder.append(");");
        _builder.newLineIfNotEmpty();
        _builder.append("}");
        _builder.newLine();
      }
    }
    _builder.newLine();
    _builder.append("public ");
    {
      Multiplicity _multi_2 = p.getMulti();
      boolean _notEquals_2 = (!Objects.equal(_multi_2, null));
      if (_notEquals_2) {
        _builder.append("ObservableList<");
      }
    }
    JvmTypeReference _singleType_1 = p.getSingleType();
    String _shortName_1 = this.shortName(_singleType_1);
    _builder.append(_shortName_1, "");
    {
      Multiplicity _multi_3 = p.getMulti();
      boolean _notEquals_3 = (!Objects.equal(_multi_3, null));
      if (_notEquals_3) {
        _builder.append(">");
      }
    }
    _builder.append(" get");
    BeanPropertyDecl _property_13 = this.property(p);
    String _name_9 = _property_13.getName();
    String _camelCase_1 = this.camelCase(_name_9);
    _builder.append(_camelCase_1, "");
    _builder.append("() {");
    _builder.newLineIfNotEmpty();
    {
      BeanPropertyDecl _property_14 = this.property(p);
      boolean _isLazy_2 = _property_14.isLazy();
      if (_isLazy_2) {
        _builder.append("\t");
        _builder.append("if( this.");
        BeanPropertyDecl _property_15 = this.property(p);
        String _name_10 = _property_15.getName();
        _builder.append(_name_10, "  ");
        _builder.append("Property == null ) {");
        _builder.newLineIfNotEmpty();
        _builder.append("\t");
        _builder.append("\t");
        _builder.append("return ");
        String _defaultValue = this.defaultValue(p);
        _builder.append(_defaultValue, "    ");
        _builder.append(";");
        _builder.newLineIfNotEmpty();
        _builder.append("\t");
        _builder.append("}");
        _builder.newLine();
      }
    }
    _builder.append("\t");
    _builder.append("return this.");
    BeanPropertyDecl _property_16 = this.property(p);
    String _name_11 = _property_16.getName();
    _builder.append(_name_11, "  ");
    _builder.append("Property.get();");
    _builder.newLineIfNotEmpty();
    _builder.append("}");
    _builder.newLine();
    return _builder;
  }
 
  protected CharSequence _accessMethods(final MapTypeDef p) {
    StringConcatenation _builder = new StringConcatenation();
    return _builder;
  }
 
  protected String _propertyCreate(final ValueListTypeDef p) {
    Multiplicity _multi = p.getMulti();
    boolean _equals = Objects.equal(_multi, null);
    if (_equals) {
      String _propertyDefinition = this.propertyDefinition(p);
      String _plus = ("new " + _propertyDefinition);
      String _plus_1 = (_plus + "(this,\"");
      BeanPropertyDecl _property = this.property(p);
      String _name = _property.getName();
      String _plus_2 = (_plus_1 + _name);
      return (_plus_2 + "\")");
    } else {
      String _propertyDefinition_1 = this.propertyDefinition(p);
      String _plus_3 = ("new " + _propertyDefinition_1);
      String _plus_4 = (_plus_3 + "(this,\"");
      BeanPropertyDecl _property_1 = this.property(p);
      String _name_1 = _property_1.getName();
      String _plus_5 = (_plus_4 + _name_1);
      String _plus_6 = (_plus_5 + "\",FXCollections.observableArrayList(new ArrayList<");
      JvmTypeReference _singleType = p.getSingleType();
      String _shortName = this.shortName(_singleType);
      String _plus_7 = (_plus_6 + _shortName);
      return (_plus_7 + ">()))");
    }
  }
 
  protected String _propertyCreate(final MapTypeDef p) {
    JvmTypeReference _keyType = p.getKeyType();
    String _plus = ("(ObservableMap<" + _keyType);
    String _plus_1 = (_plus + ",");
    JvmTypeReference _valueType = p.getValueType();
    String _plus_2 = (_plus_1 + _valueType);
    return (_plus_2 + ">)FXCollections.observableHashMap()");
  }
 
  protected String _defaultValue(final ValueListTypeDef p) {
    Multiplicity _multi = p.getMulti();
    boolean _equals = Objects.equal(_multi, null);
    if (_equals) {
      JvmTypeReference _singleType = p.getSingleType();
      String _qualifiedName = _singleType.getQualifiedName();
      final String _switchValue = _qualifiedName;
      boolean _matched = false;
      if (!_matched) {
        if (Objects.equal(_switchValue,"int")) {
          _matched=true;
          return "0";
        }
      }
      if (!_matched) {
        if (Objects.equal(_switchValue,"double")) {
          _matched=true;
          return "0.0";
        }
      }
    }
    return "null";
  }
 
  protected String _defaultValue(final MapTypeDef p) {
    return "null";
  }
 
  public String camelCase(final String value) {
    char _charAt = value.charAt(0);
    char _upperCase = Character.toUpperCase(_charAt);
    String _substring = value.substring(1);
    return (Character.valueOf(_upperCase) + _substring);
  }
 
  public Object apiPropertyDefinition(final MapTypeDef t) {
    return null;
  }
 
  public String apiPropertyDefinition(final ValueListTypeDef t) {
    String ro = "";
    BeanPropertyDecl _property = this.property(t);
    boolean _isReadonly = _property.isReadonly();
    if (_isReadonly) {
      ro = "ReadOnly";
    }
    Multiplicity _multi = t.getMulti();
    boolean _notEquals = (!Objects.equal(_multi, null));
    if (_notEquals) {
      String _plus = (ro + "ObjectProperty<ObservableList<");
      JvmTypeReference _singleType = t.getSingleType();
      String _shortName = this.shortName(_singleType);
      String _plus_1 = (_plus + _shortName);
      return (_plus_1 + ">>");
    } else {
      JvmTypeReference _singleType_1 = t.getSingleType();
      String _qualifiedName = _singleType_1.getQualifiedName();
      final String _switchValue = _qualifiedName;
      boolean _matched = false;
      if (!_matched) {
        if (Objects.equal(_switchValue,"java.lang.String")) {
          _matched=true;
          return (ro + "StringProperty");
        }
      }
      if (!_matched) {
        if (Objects.equal(_switchValue,"int")) {
          _matched=true;
          return (ro + "IntegerProperty");
        }
      }
      if (!_matched) {
        if (Objects.equal(_switchValue,"double")) {
          _matched=true;
          return (ro + "DoubleProperty");
        }
      }
      String _plus_2 = (ro + "ObjectProperty<");
      JvmTypeReference _singleType_2 = t.getSingleType();
      String _qualifiedName_1 = _singleType_2.getQualifiedName();
      String _plus_3 = (_plus_2 + _qualifiedName_1);
      return (_plus_3 + ">");
    }
  }
 
  protected String _propertyDefinition(final MapTypeDef t) {
    JvmTypeReference _keyType = t.getKeyType();
    String _shortName = this.shortName(_keyType);
    String _plus = ("SimpleObjectProperty<ObservableMap<" + _shortName);
    String _plus_1 = (_plus + ",");
    JvmTypeReference _valueType = t.getValueType();
    String _shortName_1 = this.shortName(_valueType);
    String _plus_2 = (_plus_1 + _shortName_1);
    return (_plus_2 + ">>");
  }
 
  protected String _propertyDefinition(final ValueListTypeDef t) {
    Multiplicity _multi = t.getMulti();
    boolean _equals = Objects.equal(_multi, null);
    if (_equals) {
      JvmTypeReference _singleType = t.getSingleType();
      String _qualifiedName = _singleType.getQualifiedName();
      final String _switchValue = _qualifiedName;
      boolean _matched = false;
      if (!_matched) {
        if (Objects.equal(_switchValue,"java.lang.String")) {
          _matched=true;
          return "SimpleStringProperty";
        }
      }
      if (!_matched) {
        if (Objects.equal(_switchValue,"int")) {
          _matched=true;
          return "SimpleIntegerProperty";
        }
      }
      if (!_matched) {
        if (Objects.equal(_switchValue,"double")) {
          _matched=true;
          return "SimpleDoubleProperty";
        }
      }
      JvmTypeReference _singleType_1 = t.getSingleType();
      String _shortName = this.shortName(_singleType_1);
      String _plus = ("SimpleObjectProperty<" + _shortName);
      return (_plus + ">");
    } else {
      JvmTypeReference _singleType_2 = t.getSingleType();
      String _shortName_1 = this.shortName(_singleType_2);
      String _plus_1 = ("SimpleObjectProperty<ObservableList<" + _shortName_1);
      return (_plus_1 + ">>");
    }
  }
 
  public String objectShortType(final JvmTypeReference r) {
    String _qualifiedName = r.getQualifiedName();
    boolean _equals = _qualifiedName.equals("int");
    if (_equals) {
      return "Integer";
    } else {
      String _qualifiedName_1 = r.getQualifiedName();
      boolean _equals_1 = _qualifiedName_1.equals("double");
      if (_equals_1) {
        return "Double";
      }
    }
    return this.shortName(r);
  }
 
  public BeanPropertyDecl property(final TypeDef t) {
    EObject _eContainer = t.eContainer();
    return ((BeanPropertyDecl) _eContainer);
  }
 
  public MapTypeDef mapDef(final BeanPropertyDecl b) {
    TypeDef _type = b.getType();
    return ((MapTypeDef) _type);
  }
 
  public ValueListTypeDef valDef(final BeanPropertyDecl b) {
    TypeDef _type = b.getType();
    return ((ValueListTypeDef) _type);
  }
 
  public String shortName(final JvmTypeReference r) {
    String _xblockexpression = null;
    {
      StringBuilder _stringBuilder = new StringBuilder();
      final StringBuilder builder = _stringBuilder;
      JvmType _type = r.getType();
      this.manager.appendType(_type, builder);
      String _string = builder.toString();
      _xblockexpression = (_string);
    }
    return _xblockexpression;
  }
 
  public CharSequence accessMethods(final TypeDef p) {
    if (p instanceof MapTypeDef) {
      return _accessMethods((MapTypeDef)p);
    } else if (p instanceof ValueListTypeDef) {
      return _accessMethods((ValueListTypeDef)p);
    } else {
      throw new IllegalArgumentException("Unhandled parameter types: " +
        Arrays.<Object>asList(p).toString());
    }
  }
 
  public String propertyCreate(final TypeDef p) {
    if (p instanceof MapTypeDef) {
      return _propertyCreate((MapTypeDef)p);
    } else if (p instanceof ValueListTypeDef) {
      return _propertyCreate((ValueListTypeDef)p);
    } else {
      throw new IllegalArgumentException("Unhandled parameter types: " +
        Arrays.<Object>asList(p).toString());
    }
  }
 
  public String defaultValue(final TypeDef p) {
    if (p instanceof MapTypeDef) {
      return _defaultValue((MapTypeDef)p);
    } else if (p instanceof ValueListTypeDef) {
      return _defaultValue((ValueListTypeDef)p);
    } else {
      throw new IllegalArgumentException("Unhandled parameter types: " +
        Arrays.<Object>asList(p).toString());
    }
  }
 
  public String propertyDefinition(final TypeDef t) {
    if (t instanceof MapTypeDef) {
      return _propertyDefinition((MapTypeDef)t);
    } else if (t instanceof ValueListTypeDef) {
      return _propertyDefinition((ValueListTypeDef)t);
    } else {
      throw new IllegalArgumentException("Unhandled parameter types: " +
        Arrays.<Object>asList(t).toString());
    }
  }
}
TOP

Related Classes of at.bestsolution.efxclipse.tooling.efxbean.generator.FXBeanGenerator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.