/******************************************************************************* * Copyright (c) 2008, 2012 Obeo. * 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: * Obeo - initial API and implementation *******************************************************************************/ package org.eclipse.emf.eef.codegen.flow.impl; import java.util.ArrayList; import java.util.List; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.emf.eef.EEFGen.EEFGenModel; import org.eclipse.emf.eef.codegen.flow.Step; import org.eclipse.emf.eef.codegen.flow.var.WorkflowVariable; import org.eclipse.emf.eef.codegen.ui.generators.callback.EEFGenerationCallback; import org.eclipse.emf.eef.codegen.ui.generators.common.GenerationHelper; /** * @author <a href="mailto:goulwen.lefur@obeo.fr">Goulwen Le Fur</a> * */ public class GenerateEEFCode extends Step { private Object eefgenModel; private List<EEFGenerationCallback> callbacks; /** * @param name of the step */ public GenerateEEFCode(String name, Object eefgenModel) { super(name); this.eefgenModel = eefgenModel; callbacks = new ArrayList<EEFGenerationCallback>(1); } /** * {@inheritDoc} * @see org.eclipse.emf.eef.codegen.flow.Step#execute(org.eclipse.core.runtime.IProgressMonitor) */ public IStatus execute(IProgressMonitor monitor) { List<EEFGenModel> eefgenModels = new ArrayList<EEFGenModel>(1); eefgenModels.add(getEEFGenModel()); GenerationHelper generationHelper = new GenerationHelper(eefgenModels, callbacks); generationHelper.generate(monitor); return Status.OK_STATUS; } public void addGenerationCallback(EEFGenerationCallback callback) { callbacks.add(callback); } public EEFGenModel getEEFGenModel() { if (eefgenModel instanceof EEFGenModel) { return (EEFGenModel) eefgenModel; } else if (eefgenModel instanceof WorkflowVariable) { return (EEFGenModel) ((WorkflowVariable)eefgenModel).getValue(); } else { return null; } } }