/**
 * 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.entity.xtext.GenerateEntity

import org.eclipse.emf.mwe.utils.*
import org.eclipse.xtext.generator.*
import org.eclipse.xtext.ui.generator.*
import org.eclipse.xtext.generator.parser.antlr.*
import org.eclipse.xtext.resource.XtextResourceSet

var fileExtensions = "entity"
var projectName = "org.eclipse.osbp.dsl.entity.xtext"
var grammarURI = "platform:/resource/${projectName}/src/org/eclipse/osbp/dsl/entity/xtext/Entity.xtext"
var runtimeProject = "../${projectName}"
var backtrack = false
var memoize = false 

Workflow {
	bean = org.eclipse.emf.ecore.xcore.XcoreStandaloneSetup : xcore {}
	bean = org.eclipse.xtext.mwe.Reader {
		register = xcore
	}
	bean = org.eclipse.osbp.dsl.mwe.SemanticModelSetupComponent {
		ePackage = org.eclipse.osbp.dsl.mwe.PackageMapping {
			nsURI = "http://osbp.eclipse.org/dsl/common/types/v1"
			packageClass = "org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage"
			factoryClass = "org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesFactoryImpl"
		}

		ePackage = org.eclipse.osbp.dsl.mwe.PackageMapping {
			nsURI = "http://osbp.eclipse.org/dsl/entity/v1"
			packageClass = "org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage"
			factoryClass = "org.eclipse.osbp.dsl.semantic.entity.impl.EntityFactoryImplCustom"
		}
	}

	bean = StandaloneSetup {
		resourceSet = org.eclipse.xtext.resource.XtextResourceSet : theResourceSet {}

		scanClassPath = true
		platformUri = "${runtimeProject}/.."
		registerGenModelFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel"
		registerEcoreFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.ecore"
		registerEcoreFile = "platform:/resource/org.eclipse.xtext.xbase/model/XAnnotations.ecore"
		registerEcoreFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xtype.ecore"
		registerEcoreFile = "platform:/resource/org.eclipse.emf.ecore.xcore/model/Xcore.ecore"
		registerGenModelFile = "platform:/resource/org.eclipse.emf.ecore.xcore/model/Xcore.genmodel"
		registerGenModelFile = "platform:/resource/org.eclipse.osbp.dsl.common.xtext/model/types.xcore"
		registerEcoreFile = "platform:/resource/org.eclipse.osbp.dsl.common.xtext/model/types.xcore"
		registerGeneratedEPackage = "org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage"
		registerGenModelFile = "platform:/resource/org.eclipse.osbp.dsl.entity.xtext/model/entity.xcore"
		registerEcoreFile = "platform:/resource/org.eclipse.osbp.dsl.entity.xtext/model/entity.xcore"
		registerGeneratedEPackage = "org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage"
	}

	component = DirectoryCleaner {
		directory = "${runtimeProject}/src-gen"
	}

	component = DirectoryCleaner {
		directory = "${runtimeProject}.ui/src-gen"
	}

	component = Generator {
		encoding = "UTF-8"
		pathRtProject = runtimeProject
		pathUiProject = "${runtimeProject}.ui"
		pathTestProject = "${runtimeProject}.tests"
		projectNameRt = projectName
		projectNameUi = "${projectName}.ui"
		language = {
			forcedResourceSet = theResourceSet
			uri = grammarURI
			loadedResource = "platform:/resource/org.eclipse.osbp.dsl.common.xtext/model/types.xcore"
			loadedResource = "platform:/resource/org.eclipse.osbp.dsl.entity.xtext/model/entity.xcore"
			fileExtensions = fileExtensions
			fragment = grammarAccess.GrammarAccessFragment {}
			fragment = serializer.SerializerFragment {
			// generateDebugData = true
			}
			fragment = resourceFactory.ResourceFactoryFragment {
				fileExtensions = fileExtensions
			}
			fragment = XtextAntlrGeneratorFragment {
				options = {
					classSplitting = true
					fieldsPerClass = "150"
					methodsPerClass = "300"
				}
			}
			fragment = DebugAntlrGeneratorFragment {
				options = auto-inject {}
			}
			fragment = validation.JavaValidatorFragment {}
			fragment = generator.GeneratorFragment {}
			fragment = scoping.ImportNamespacesScopingFragment {}
			fragment = builder.BuilderIntegrationFragment {}
			fragment = quickfix.QuickfixProviderFragment {}
			fragment = labeling.LabelProviderFragment {
				generateStub = false
			}
			fragment = outline.OutlineTreeProviderFragment {}
			fragment = outline.QuickOutlineFragment {}
			fragment = compare.CompareFragment {
				fileExtensions = fileExtensions
			}
			fragment = contentAssist.JavaBasedContentAssistFragment {}
			fragment = parser.antlr.XtextAntlrUiGeneratorFragment {
				options = {
					classSplitting = true
					fieldsPerClass = "100"
					methodsPerClass = "200"
				}
			}
			fragment = refactoring.RefactorElementNameFragment {
				useJdtRefactoring = true
			}
			fragment = types.TypesGeneratorFragment {}
			fragment = xbase.XbaseGeneratorFragment {
				generateXtendInferrer = true
			}
			fragment = templates.CodetemplatesGeneratorFragment {}
		}
	}
}
