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

com.reprezen.genflow.rapidml.doc.xtend.XGenerateInterfaceDataModels.xtend 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.DataModel
import com.reprezen.rapidml.Enumeration
import com.reprezen.rapidml.Feature
import com.reprezen.rapidml.PrimitiveProperty
import com.reprezen.rapidml.ReferenceProperty
import com.reprezen.rapidml.Structure
import com.reprezen.rapidml.UserDefinedType
import com.reprezen.rapidml.ZenModel

class XGenerateInterfaceDataModels {
	extension XDocHelper docHelper
	val commonServices = new CommonServices
	val paramHelper = new XParameterHelper
	val XImportHelper importHelper

	new(XImportHelper importHelper, XDocHelper docHelper) {
		this.importHelper = importHelper
		this.docHelper = docHelper
	}

	def String generateInterfaceDataModels(ZenModel model) {
		'''
			«FOR interfaceDataModel : model.dataModels»
				«generateInterfaceDataModels(interfaceDataModel, false)»
			«ENDFOR»
			«FOR interfaceDataModel : importHelper.importedTypes.keySet»
				«generateInterfaceDataModels(interfaceDataModel, true)»
			«ENDFOR»
		'''
	}

	def private generateInterfaceDataModels(DataModel dataModel, boolean imported) {
		val alias = importHelper.getAlias(dataModel)
		val aliasNote = if (alias !== null) ''' [alias «alias»]'''
		'''
			
			

«dataModel.nameOrTitle»

«importHelper.getModelFullQualifiedName(dataModel)»«aliasNote»

«dataModel.generateDocItem» «FOR dataType : if (imported) importHelper.importedTypes.get(dataModel) else dataModel.ownedDataTypes» «generateType(dataType)» «ENDFOR»
''' } /** * Generate complex type */ def dispatch private String generateType(Structure dataType) { '''

«dataType.name»

«dataType.generateDocItem» «IF !dataType.ownedFeatures.empty»

Properties

«FOR feature : dataType.ownedFeatures» «ENDFOR»
Name Type Documentation
«feature.name» «generatePropertyType(feature)» «feature.generateDoc»
«ENDIF» «IF !dataType.ownedOperations.empty»

Operations

«FOR operation : dataType.ownedOperations» «ENDFOR»
Name Documentation
«operation.name» «operation.generateDoc»
«ENDIF» «IF !dataType.ownedElements.empty»

Owned Elements

«FOR ownedDataType : dataType.ownedElements» «generateType(ownedDataType)» «ENDFOR» «ENDIF»
''' } /** * Generate enumeration. */ def dispatch private String generateType(Enumeration dataType) { '''

«dataType.baseType.name» Enumeration«dataType. name»

«dataType.generateDocItem» «IF !dataType.enumConstants.empty»

Enumeration Constants

«FOR enumConstant : dataType.enumConstants» «ENDFOR»
Name Value Documentation
«enumConstant.name» «IF enumConstant.literalValue !== null»«enumConstant.literalValue»«ELSE»«enumConstant. integerValue»«ENDIF» «enumConstant.generateDoc»
«ENDIF»
''' } def dispatch private String generateType(UserDefinedType dataType) { '''

«dataType.name» «dataType. baseType.name»

«dataType.generateDocItem» «dataType.allConstraints.generateConstraints»
''' } /** * Generates property type for ReferenceProperty and PrimitiveProperty */ def dispatch private generatePropertyType(ReferenceProperty property) { ''' «IF property.containment» containing «ENDIF» «IF property.container» container «ENDIF» «generateFeatureType(property)» «IF property.inverse !== null»
inverse of «property.inverse.name» «ENDIF» ''' } def dispatch private generatePropertyType(PrimitiveProperty property) { ''' «IF property.type instanceof Enumeration || property.type instanceof UserDefinedType» «generateFeatureType(property)» «ELSE» «generateFeatureType(property)» «ENDIF» «property.allConstraints.generateInlineConstraints» ''' } def private String generateFeatureType(Feature feature) { ''' «paramHelper.featureType(feature, importHelper)» «IF feature.cardinality !== null»«commonServices.getPrettyPrintedMultiplicity(feature)»«ENDIF» ''' } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy