/**
 * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *         Florian Pirchner - Initial implementation
 */
module org.eclipse.osbp.dsl.dto.xtext.GenerateDtoGrammar

import org.eclipse.emf.mwe.utils.*
import org.eclipse.xtext.xtext.generator.*
import org.eclipse.xtext.xtext.generator.model.project.*

var rootPath = ".."
var fileHeaderText = "/**
 * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *         Florian Pirchner - Initial implementation
 *
 * generated by Xtext \${version}
 */
"

Workflow {

	component = XtextGenerator {
		configuration = {
			project = StandardProjectConfig {
				baseName = "org.eclipse.osbp.dsl.dto.xtext"
				rootPath = rootPath
				genericIde = {
					enabled = true
					name = "org.eclipse.osbp.dsl.dto.xtext.ide"
				}
				runtimeTest = {
					enabled = true
				}
				eclipsePlugin = {
					enabled = true
				}
				eclipsePluginTest = {
					enabled = false
				}
				createEclipseMetaData = true
			}
			code = {
				encoding = "UTF-8"
				lineDelimiter = "\n"
				fileHeader = fileHeaderText
			}
		}

		language = StandardLanguage {
			name = "org.eclipse.osbp.dsl.dto.xtext.DtoGrammar"
			fileExtensions = "dto"
			
			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.oxtype/model/OXtype.ecore"
			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.oxtype/model/OXtype.genmodel"
			referencedResource = "platform:/resource/org.eclipse.osbp.dsl.common.xtext/model/types.xcore"
			referencedResource = "platform:/resource/org.eclipse.osbp.dsl.entity.xtext/model/entity.xcore"
			referencedResource = "platform:/resource/org.eclipse.osbp.dsl.dto.xtext/model/dto.xcore"

			generateXtendStubs = false
			
			serializer = {
				generateStub = false
			}
			validator = {
			// composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
				inheritImplementation = true
				generateXtendStub = false
			}

			generator = {
				generateStub = false
				generateJavaMain = false
				generateXtendStub = false
			}
			
			scopeProvider = {
				generateStub = true
				generateXtendStub = false
				inheritImplementation=true
			}
			
			labelProvider = {
				generateStub = false
				generateXtendStub = false
			}
			
			outline = {
				generateStub = false
				generateXtendStub = false
			}
			
			quickFixProvider = {
				generateStub = false
				generateXtendStub = false
			}
			
			contentAssist = {
				generateXtendStub=false
			}

		}
	}
}
