/*
 * <copyright>
 *
 * Copyright (c) 2009 Marc Schlienger (http://www.innoq.com/blog/mrs) and others.
 * All rights reserved.  
 * This program and the accompanying materials are made available under the terms of 
 * the Eclipse Public License v1.0 available at http://www.eclipse.org/legal/epl-v10.html
 *
 * </copyright>
 */
package com.csg.cs.log.ifms.generator.oaw;

import java.io.File;

import org.openarchitectureware.type.emf.EmfMetaModel;
import org.openarchitectureware.xtend.XtendFacade;

public class XtendCaller {
	private XtendFacade facade;

	public XtendCaller(final String extension){
		this( extension, null, null);
	}
	
	public XtendCaller(final String extension, final String mmPkg){
		this(extension, new String[]{mmPkg}, null);
	}
	
	public XtendCaller(final String extension, final String[] mmPkgs,
			final File[] mmFiles) {
		facade = XtendFacade.create(extension);

		if (mmPkgs != null) {
			for (String pkg : mmPkgs) {
				EmfMetaModel metamodel = new EmfMetaModel();
				metamodel.setMetaModelPackage(pkg);
				facade.registerMetaModel(metamodel);
			}
		}
		
		if (mmFiles != null) {
			for (File file : mmFiles) {
				EmfMetaModel metamodel = new EmfMetaModel();
				metamodel.setMetaModelFile(file.getPath());
				facade.registerMetaModel(metamodel);
			}
		}
	}

	public XtendCaller(final String extension, final File metaModelFile) {
		facade = XtendFacade.create(extension);
	}

	public Object call(String ext, Object... params) {
		return facade.call(ext, params);
	}
}

