blob: fc4a162e50f10171433f9a54bb1204dcf2a6c79a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014 Bosch Software Innovations GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Eclipse Distribution License v1.0 which accompany this distribution.
*
* The Eclipse Public License is available at
* http://www.eclipse.org/legal/epl-v10.html
* The Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Bosch Software Innovations GmbH - Please refer to git log
*
*******************************************************************************/
package org.eclipse.vorto.codegen.internal.handler;
import static org.eclipse.vorto.codegen.internal.extensioninterface.PopulateGeneratorsMenu.GENERATE_ALL;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;
import org.eclipse.vorto.api.common.project.FunctionBlockProjectFactory;
import org.eclipse.vorto.api.common.project.IProjectSelectionFactory;
import org.eclipse.vorto.api.common.project.IoTModelProject;
import org.eclipse.vorto.codegen.api.ICodeGenerator;
import org.eclipse.vorto.functionblock.FunctionblockModel;
public class EvaluateContributionsHandler extends AbstractHandler {
private static final String GENERATOR_ID = ICodeGenerator.GENERATOR_ID;
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
IExtensionRegistry extensionRegistry = Platform.getExtensionRegistry();
final String generatorIdentifier = event
.getParameter("org.eclipse.vorto.codegen.generator.commandParameter");
evaluate(extensionRegistry, generatorIdentifier);
return null;
}
private void evaluate(IExtensionRegistry registry, String generatorName) {
final IConfigurationElement[] configElements = getUserSelectedGenerators(
registry, generatorName);
final FunctionblockModel model = getSelectedFbDesignProject()
.getFunctionBlockModel();
GenerateService.runGenerateCodeInBackground(configElements, model);
}
private IConfigurationElement[] getUserSelectedGenerators(
IExtensionRegistry registry, String generatorIdentifier) {
IConfigurationElement[] configurationElements;
if (GENERATE_ALL.equals(generatorIdentifier)) {
configurationElements = registry
.getConfigurationElementsFor(GENERATOR_ID);
} else {
IExtension extension = registry.getExtension(
ICodeGenerator.GENERATOR_ID, generatorIdentifier);
configurationElements = extension.getConfigurationElements();
}
return configurationElements;
}
private IoTModelProject getSelectedFbDesignProject() {
try {
FunctionBlockProjectFactory factory = FunctionBlockProjectFactory
.getInstance();
IProject projectFromSelection = IProjectSelectionFactory
.getInstance().getProjectFromSelection();
if (projectFromSelection != null)
return factory.getProject(projectFromSelection,
IoTModelProject.class);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}