/**
 * <copyright>
 *
 * Copyright (c) 2010 E.D.Willink and others.
 * 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:
 *     E.D.Willink - initial API and implementation
 *
 * </copyright>
 *
 * $Id: GenerateOclMetaModel.mwe2,v 1.2 2011/01/24 20:54:28 ewillink Exp $
 * 
 * Run As->MWE2 Workflow to regenerate the pivot model.
 */
module GenerateOclMetaModel

import org.eclipse.ocl.examples.build.utilities.*
import org.eclipse.emf.mwe.utils.*
import org.eclipse.emf.mwe.utils.*
import org.eclipse.emf.ecore.resource.impl.*

var projectName = "org.eclipse.ocl.examples.pivot"

/**
 *	Generate the OCL Meta Model, by converting Pivot.ecore to OclMetaModel.java.
 */
Workflow {
	bean = ResourceSetImpl : resourceSet {}
    bean = ProjectMapSetup { resourceSet = resourceSet }
    bean = UMLStandaloneSetup { resourceSet = resourceSet }
    bean = OCLStandaloneSetup {}
    bean = UMLGenModelSetup { resourceSet = resourceSet }
//    bean = StandaloneSetup { resourceSet = resourceSet
//    	platformUri = ".."
 //   }
    component = OclMetaModelCodeGenerator { resourceSet = resourceSet
    	projectName = "${projectName}"
    	libraryFile = "model/Pivot.ecore"
    	javaFolder = "emf-gen"
    	javaPackageName = "${projectName}"
    	javaClassName = "OclMetaModel"
    }
}

