Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.reprezen.genflow.rapidml.doc.xtend.XGenerateInterfaceDataModels Maven / Gradle / Ivy
/**
* 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("Name ");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("Type ");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("Documentation ");
_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("");
String _name_2 = feature.getName();
_builder.append(_name_2, " ");
_builder.append(" ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append("");
CharSequence _generatePropertyType = this.generatePropertyType(feature);
_builder.append(_generatePropertyType, " ");
_builder.append(" ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append("");
String _generateDoc = this.docHelper.generateDoc(feature);
_builder.append(_generateDoc, " ");
_builder.append(" ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.newLine();
}
}
_builder.append(" ");
_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("Name ");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("Documentation ");
_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("");
String _name_3 = operation.getName();
_builder.append(_name_3, " ");
_builder.append(" ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append(" ");
_builder.append("");
String _generateDoc_1 = this.docHelper.generateDoc(operation);
_builder.append(_generateDoc_1, " ");
_builder.append(" ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append(" ");
_builder.newLine();
}
}
_builder.append(" ");
_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("Name ");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("Value ");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("Documentation ");
_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("");
String _name_3 = enumConstant.getName();
_builder.append(_name_3, " ");
_builder.append(" ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append(" ");
_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(" ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append(" ");
_builder.append("");
String _generateDoc = this.docHelper.generateDoc(enumConstant);
_builder.append(_generateDoc, " ");
_builder.append(" ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append(" ");
_builder.newLine();
}
}
_builder.append(" ");
_builder.append(" ");
_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("\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());
}
}
}