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

com.reprezen.genflow.rapidml.doc.xtend.XGenerateInterfaceDataModels Maven / Gradle / Ivy

There is a newer version: 1.4.2
Show newest version
/**
 * Copyright © 2013, 2016 Modelsolv, Inc.
 * All Rights Reserved.
 * 
 * NOTICE: All information contained herein is, and remains the property
 * of ModelSolv, Inc. See the file license.html in the root directory of
 * this project for further information.
 */
package com.reprezen.genflow.rapidml.doc.xtend;

import com.reprezen.genflow.api.zenmodel.util.CommonServices;
import com.reprezen.genflow.common.doc.XDocHelper;
import com.reprezen.genflow.common.xtend.XImportHelper;
import com.reprezen.genflow.common.xtend.XParameterHelper;
import com.reprezen.rapidml.Constraint;
import com.reprezen.rapidml.DataModel;
import com.reprezen.rapidml.DataType;
import com.reprezen.rapidml.EnumConstant;
import com.reprezen.rapidml.Enumeration;
import com.reprezen.rapidml.Feature;
import com.reprezen.rapidml.Operation;
import com.reprezen.rapidml.PrimitiveProperty;
import com.reprezen.rapidml.PrimitiveType;
import com.reprezen.rapidml.ReferenceProperty;
import com.reprezen.rapidml.SimpleType;
import com.reprezen.rapidml.SingleValueType;
import com.reprezen.rapidml.Structure;
import com.reprezen.rapidml.UserDefinedType;
import com.reprezen.rapidml.ZenModel;
import java.util.Arrays;
import java.util.Collection;
import java.util.Set;
import org.eclipse.emf.common.util.EList;
import org.eclipse.xtend2.lib.StringConcatenation;
import org.eclipse.xtext.xbase.lib.Extension;

@SuppressWarnings("all")
public class XGenerateInterfaceDataModels {
  @Extension
  private XDocHelper docHelper;
  
  private final CommonServices commonServices = new CommonServices();
  
  private final XParameterHelper paramHelper = new XParameterHelper();
  
  private final XImportHelper importHelper;
  
  public XGenerateInterfaceDataModels(final XImportHelper importHelper, final XDocHelper docHelper) {
    this.importHelper = importHelper;
    this.docHelper = docHelper;
  }
  
  public String generateInterfaceDataModels(final ZenModel model) {
    StringConcatenation _builder = new StringConcatenation();
    {
      EList _dataModels = model.getDataModels();
      for(final DataModel interfaceDataModel : _dataModels) {
        CharSequence _generateInterfaceDataModels = this.generateInterfaceDataModels(interfaceDataModel, false);
        _builder.append(_generateInterfaceDataModels, "");
        _builder.newLineIfNotEmpty();
      }
    }
    {
      Set _keySet = this.importHelper.importedTypes.keySet();
      for(final DataModel interfaceDataModel_1 : _keySet) {
        CharSequence _generateInterfaceDataModels_1 = this.generateInterfaceDataModels(interfaceDataModel_1, true);
        _builder.append(_generateInterfaceDataModels_1, "");
        _builder.newLineIfNotEmpty();
      }
    }
    return _builder.toString();
  }
  
  private CharSequence generateInterfaceDataModels(final DataModel dataModel, final boolean imported) {
    CharSequence _xblockexpression = null;
    {
      final String alias = this.importHelper.getAlias(dataModel);
      String _xifexpression = null;
      if ((alias != null)) {
        StringConcatenation _builder = new StringConcatenation();
        _builder.append(" ");
        _builder.append("[alias ");
        _builder.append(alias, " ");
        _builder.append("]");
        _xifexpression = _builder.toString();
      }
      final String aliasNote = _xifexpression;
      StringConcatenation _builder_1 = new StringConcatenation();
      _builder_1.append("");
      _builder_1.newLineIfNotEmpty();
      _builder_1.append("
"); _builder_1.newLine(); _builder_1.append(" "); _builder_1.append("
"); _builder_1.newLine(); _builder_1.append(" "); _builder_1.append("

"); String _nameOrTitle = this.docHelper.nameOrTitle(dataModel); _builder_1.append(_nameOrTitle, " "); _builder_1.append("

"); _builder_1.newLineIfNotEmpty(); _builder_1.append(" "); _builder_1.append("

"); String _modelFullQualifiedName = this.importHelper.getModelFullQualifiedName(dataModel); _builder_1.append(_modelFullQualifiedName, " "); _builder_1.append(aliasNote, " "); _builder_1.append("

"); _builder_1.newLineIfNotEmpty(); _builder_1.append(" "); _builder_1.append("
"); _builder_1.newLine(); _builder_1.append(" "); _builder_1.append("
"); _builder_1.newLine(); _builder_1.append(" "); CharSequence _generateDocItem = this.docHelper.generateDocItem(dataModel); _builder_1.append(_generateDocItem, " "); _builder_1.newLineIfNotEmpty(); { Collection _xifexpression_1 = null; if (imported) { _xifexpression_1 = this.importHelper.importedTypes.get(dataModel); } else { _xifexpression_1 = dataModel.getOwnedDataTypes(); } for(final DataType dataType : _xifexpression_1) { _builder_1.append(" "); String _generateType = this.generateType(dataType); _builder_1.append(_generateType, " "); _builder_1.newLineIfNotEmpty(); } } _builder_1.append(" "); _builder_1.append("
"); _builder_1.newLine(); _builder_1.append("
"); _builder_1.newLine(); _xblockexpression = _builder_1; } return _xblockexpression; } /** * Generate complex type */ private String _generateType(final Structure dataType) { StringConcatenation _builder = new StringConcatenation(); _builder.append(""); _builder.newLineIfNotEmpty(); _builder.append("
"); _builder.newLine(); _builder.append(" "); _builder.append("
"); _builder.newLine(); _builder.append(" "); _builder.append("

"); _builder.newLine(); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(""); String _name_1 = dataType.getName(); _builder.append(_name_1, " "); _builder.append(" "); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("

"); _builder.newLine(); _builder.append(" "); _builder.append("
"); _builder.newLine(); _builder.append(" "); _builder.append("
"); _builder.newLine(); _builder.append(" "); CharSequence _generateDocItem = this.docHelper.generateDocItem(dataType); _builder.append(_generateDocItem, " "); _builder.newLineIfNotEmpty(); { EList _ownedFeatures = dataType.getOwnedFeatures(); boolean _isEmpty = _ownedFeatures.isEmpty(); boolean _not = (!_isEmpty); if (_not) { _builder.append(" "); _builder.append("

Properties

"); _builder.newLine(); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLine(); { EList _ownedFeatures_1 = dataType.getOwnedFeatures(); for(final Feature feature : _ownedFeatures_1) { _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append(""); _builder.newLine(); } } _builder.append(" "); _builder.append("
NameTypeDocumentation
"); String _name_2 = feature.getName(); _builder.append(_name_2, " "); _builder.append(""); CharSequence _generatePropertyType = this.generatePropertyType(feature); _builder.append(_generatePropertyType, " "); _builder.append(""); String _generateDoc = this.docHelper.generateDoc(feature); _builder.append(_generateDoc, " "); _builder.append("
"); _builder.newLine(); } } { EList _ownedOperations = dataType.getOwnedOperations(); boolean _isEmpty_1 = _ownedOperations.isEmpty(); boolean _not_1 = (!_isEmpty_1); if (_not_1) { _builder.append(" "); _builder.append("

Operations

"); _builder.newLine(); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLine(); { EList _ownedOperations_1 = dataType.getOwnedOperations(); for(final Operation operation : _ownedOperations_1) { _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLine(); } } _builder.append(" "); _builder.append("
NameDocumentation
"); String _name_3 = operation.getName(); _builder.append(_name_3, " "); _builder.append(""); String _generateDoc_1 = this.docHelper.generateDoc(operation); _builder.append(_generateDoc_1, " "); _builder.append("
"); _builder.newLine(); } } { EList _ownedElements = dataType.getOwnedElements(); boolean _isEmpty_2 = _ownedElements.isEmpty(); boolean _not_2 = (!_isEmpty_2); if (_not_2) { _builder.append(" "); _builder.append("

Owned Elements

"); _builder.newLine(); { EList _ownedElements_1 = dataType.getOwnedElements(); for(final Structure ownedDataType : _ownedElements_1) { _builder.append(" "); String _generateType = this.generateType(ownedDataType); _builder.append(_generateType, " "); _builder.newLineIfNotEmpty(); } } } } _builder.append(" "); _builder.append("
"); _builder.newLine(); _builder.append("
"); _builder.newLine(); return _builder.toString(); } /** * Generate enumeration. */ private String _generateType(final Enumeration dataType) { StringConcatenation _builder = new StringConcatenation(); _builder.append(""); _builder.newLineIfNotEmpty(); _builder.append("
"); _builder.newLine(); _builder.append(" "); _builder.append("
"); _builder.newLine(); _builder.append(" "); _builder.append("

"); _builder.newLine(); _builder.append(" "); _builder.append(" "); PrimitiveType _baseType = dataType.getBaseType(); String _name_1 = _baseType.getName(); _builder.append(_name_1, " "); _builder.append(" Enumeration"); String _name_2 = dataType.getName(); _builder.append(_name_2, " "); _builder.append(" "); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("

"); _builder.newLine(); _builder.append(" "); _builder.append("
"); _builder.newLine(); _builder.append(" "); _builder.append("
"); _builder.newLine(); _builder.append(" "); CharSequence _generateDocItem = this.docHelper.generateDocItem(dataType); _builder.append(_generateDocItem, " "); _builder.newLineIfNotEmpty(); { EList _enumConstants = dataType.getEnumConstants(); boolean _isEmpty = _enumConstants.isEmpty(); boolean _not = (!_isEmpty); if (_not) { _builder.append(" "); _builder.append("

Enumeration Constants

"); _builder.newLine(); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLine(); { EList _enumConstants_1 = dataType.getEnumConstants(); for(final EnumConstant enumConstant : _enumConstants_1) { _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append(" "); _builder.append(""); _builder.newLine(); } } _builder.append(" "); _builder.append(" "); _builder.append("
NameValueDocumentation
"); String _name_3 = enumConstant.getName(); _builder.append(_name_3, " "); _builder.append(""); { String _literalValue = enumConstant.getLiteralValue(); boolean _tripleNotEquals = (_literalValue != null); if (_tripleNotEquals) { String _literalValue_1 = enumConstant.getLiteralValue(); _builder.append(_literalValue_1, " "); } else { int _integerValue = enumConstant.getIntegerValue(); _builder.append(_integerValue, " "); } } _builder.append(""); String _generateDoc = this.docHelper.generateDoc(enumConstant); _builder.append(_generateDoc, " "); _builder.append("
"); _builder.newLine(); } } _builder.append(" "); _builder.append("
"); _builder.newLine(); _builder.append("
"); _builder.newLine(); return _builder.toString(); } private String _generateType(final UserDefinedType dataType) { StringConcatenation _builder = new StringConcatenation(); _builder.append(""); _builder.newLineIfNotEmpty(); _builder.append("
"); _builder.newLine(); _builder.append("
"); _builder.newLine(); _builder.append(" "); _builder.append("

"); _builder.newLine(); _builder.append(" "); _builder.append(""); String _name_1 = dataType.getName(); _builder.append(_name_1, " "); _builder.append(""); _builder.newLineIfNotEmpty(); _builder.append("\t "); _builder.append(" "); SimpleType _baseType_1 = dataType.getBaseType(); String _name_2 = _baseType_1.getName(); _builder.append(_name_2, "\t "); _builder.append(" "); _builder.newLineIfNotEmpty(); _builder.append("\t "); _builder.append("

"); _builder.newLine(); _builder.append("\t "); _builder.append("
"); _builder.newLine(); _builder.append("\t "); _builder.append("
"); _builder.newLine(); _builder.append(" "); CharSequence _generateDocItem = this.docHelper.generateDocItem(dataType); _builder.append(_generateDocItem, " "); _builder.newLineIfNotEmpty(); _builder.append("\t"); EList _allConstraints = dataType.getAllConstraints(); CharSequence _generateConstraints = this.docHelper.generateConstraints(_allConstraints); _builder.append(_generateConstraints, "\t"); _builder.newLineIfNotEmpty(); _builder.append("\t "); _builder.append("
"); _builder.newLine(); _builder.append("\t "); _builder.append("
"); _builder.newLine(); return _builder.toString(); } /** * Generates property type for ReferenceProperty and PrimitiveProperty */ private CharSequence _generatePropertyType(final ReferenceProperty property) { StringConcatenation _builder = new StringConcatenation(); { boolean _isContainment = property.isContainment(); if (_isContainment) { _builder.append("containing"); _builder.newLine(); } } { boolean _isContainer = property.isContainer(); if (_isContainer) { _builder.append("container"); _builder.newLine(); } } _builder.append(""); String _generateFeatureType = this.generateFeatureType(property); _builder.append(_generateFeatureType, ""); _builder.append(""); _builder.newLineIfNotEmpty(); { ReferenceProperty _inverse = property.getInverse(); boolean _tripleNotEquals = (_inverse != null); if (_tripleNotEquals) { _builder.append("
inverse of "); ReferenceProperty _inverse_1 = property.getInverse(); String _name = _inverse_1.getName(); _builder.append(_name, ""); _builder.append(""); _builder.newLineIfNotEmpty(); } } return _builder; } private CharSequence _generatePropertyType(final PrimitiveProperty property) { StringConcatenation _builder = new StringConcatenation(); { boolean _or = false; SingleValueType _type = property.getType(); if ((_type instanceof Enumeration)) { _or = true; } else { SingleValueType _type_1 = property.getType(); _or = (_type_1 instanceof UserDefinedType); } if (_or) { _builder.append(""); String _generateFeatureType = this.generateFeatureType(property); _builder.append(_generateFeatureType, ""); _builder.append(""); _builder.newLineIfNotEmpty(); } else { String _generateFeatureType_1 = this.generateFeatureType(property); _builder.append(_generateFeatureType_1, ""); _builder.newLineIfNotEmpty(); } } EList _allConstraints = property.getAllConstraints(); CharSequence _generateInlineConstraints = this.docHelper.generateInlineConstraints(_allConstraints); _builder.append(_generateInlineConstraints, ""); _builder.newLineIfNotEmpty(); return _builder; } private String generateFeatureType(final Feature feature) { StringConcatenation _builder = new StringConcatenation(); String _featureType = this.paramHelper.featureType(feature, this.importHelper); _builder.append(_featureType, ""); _builder.newLineIfNotEmpty(); { int[] _cardinality = feature.getCardinality(); boolean _tripleNotEquals = (_cardinality != null); if (_tripleNotEquals) { String _prettyPrintedMultiplicity = this.commonServices.getPrettyPrintedMultiplicity(feature); _builder.append(_prettyPrintedMultiplicity, ""); } } _builder.newLineIfNotEmpty(); return _builder.toString(); } private String generateType(final DataType dataType) { if (dataType instanceof UserDefinedType) { return _generateType((UserDefinedType)dataType); } else if (dataType instanceof Enumeration) { return _generateType((Enumeration)dataType); } else if (dataType instanceof Structure) { return _generateType((Structure)dataType); } else { throw new IllegalArgumentException("Unhandled parameter types: " + Arrays.asList(dataType).toString()); } } private CharSequence generatePropertyType(final Feature property) { if (property instanceof PrimitiveProperty) { return _generatePropertyType((PrimitiveProperty)property); } else if (property instanceof ReferenceProperty) { return _generatePropertyType((ReferenceProperty)property); } else { throw new IllegalArgumentException("Unhandled parameter types: " + Arrays.asList(property).toString()); } } }