blob: 9a654bf581e39780bad33457aac1a764d37354da [file] [log] [blame]
/**
********************************************************************************
* Copyright (c) 2018-2019 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
package org.eclipse.app4mc.transformation.application.base;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.stream.Collectors;
import org.apache.log4j.Logger;
import org.eclipse.app4mc.transformation.extensions.AbstractTransformationInjectorModule;
import org.eclipse.app4mc.transformation.extensions.executiontype.IModelToModelConfig;
import org.eclipse.app4mc.transformation.extensions.executiontype.IModelToTextConfig;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;
public class ExtensionExecution {
protected static Map<String, TransformationConfig> getEnabledTransformationConfigElementsFromExtensions(
Logger logger) throws CoreException {
final IExtensionRegistry registry = Platform.getExtensionRegistry();
final IExtensionPoint extensionPoint = registry
.getExtensionPoint("org.eclipse.app4mc.transformation.configuration");
final IConfigurationElement[] extensions = extensionPoint.getConfigurationElements();
Map<String, TransformationConfig> id_obj_Map = new LinkedHashMap<String, TransformationConfig>();
for (final IConfigurationElement iConfigurationElement : extensions) {
final String id = iConfigurationElement.getAttribute("id");
final String isEnabled = iConfigurationElement.getAttribute("enabled");
logger.info("Tansformation configuration : \"" + id + "\" isEnabled : " + isEnabled);
if (Boolean.parseBoolean(isEnabled)) {
TransformationConfig config = new TransformationConfig();
final Object module = iConfigurationElement.createExecutableExtension("module_class");
Object m2m = null;
if (iConfigurationElement.getAttribute("m2m_class") != null) {
m2m = iConfigurationElement.createExecutableExtension("m2m_class");
}
Object m2t = null;
if (iConfigurationElement.getAttribute("m2t_class") != null) {
m2t = iConfigurationElement.createExecutableExtension("m2t_class");
}
config.setId(id);
config.setInjectorModule((AbstractTransformationInjectorModule) module);
config.setModel2ModelConfig((IModelToModelConfig) m2m);
// ((IModelToModelConfig) m2m).setLogger(logger);
config.setModel2TextConfig((IModelToTextConfig) m2t);
// ((IModelToTextConfig) m2m).setLogger(logger);
id_obj_Map.put(id, config);
}
}
return id_obj_Map;
}
@Deprecated
protected static IModelToTextConfig getM2TFromExtension(Logger logger) throws CoreException {
final IExtensionRegistry registry = Platform.getExtensionRegistry();
final IExtensionPoint extensionPoint = registry
.getExtensionPoint("org.eclipse.app4mc.transformation.extensions.m2t");
final IConfigurationElement[] extensions = extensionPoint.getConfigurationElements();
Map<String, IModelToTextConfig> id_obj_Map = new LinkedHashMap<String, IModelToTextConfig>();
for (final IConfigurationElement iConfigurationElement : extensions) {
final String id = iConfigurationElement.getAttribute("id");
final String isEnabled = iConfigurationElement.getAttribute("enabled");
if (Boolean.parseBoolean(isEnabled)) {
final Object module = iConfigurationElement.createExecutableExtension("class");
id_obj_Map.put(id, (IModelToTextConfig) module);
}
}
if (id_obj_Map.size() > 1) {
String enabledIds = "--- " + id_obj_Map.keySet().stream().filter(s -> (s != null && !s.isEmpty()))
.collect(Collectors.joining("," + System.getProperty("line.separator") + "--- "));
logger.error(
"Multiple M2T configurations are enabled. Based on the standard - only one configuration for M2T transofrmation - should be enabled for a specific product"
+ System.getProperty("line.separator")
+ "Below are the M2T configuration ids which are enabled : "
+ System.getProperty("line.separator") + enabledIds);
String firstM2T_Id = id_obj_Map.keySet().iterator().next();
logger.warn("** M2T configuration id : \"" + firstM2T_Id + "\" is enabled");
return id_obj_Map.get(firstM2T_Id);
} else if (id_obj_Map.size() == 1) {
String id = id_obj_Map.keySet().iterator().next();
logger.info("** M2T Configuration id : \"" + id + "\" is enabled");
return id_obj_Map.get(id);
}
/*- default case */
return null;
}
@Deprecated
protected static IModelToModelConfig getM2MExtension(Logger logger) throws CoreException {
final IExtensionRegistry registry = Platform.getExtensionRegistry();
final IExtensionPoint extensionPoint = registry
.getExtensionPoint("org.eclipse.app4mc.transformation.extensions.m2m");
final IConfigurationElement[] extensions = extensionPoint.getConfigurationElements();
Map<String, IModelToModelConfig> id_Obj_Map = new LinkedHashMap<String, IModelToModelConfig>();
for (final IConfigurationElement iConfigurationElement : extensions) {
final String id = iConfigurationElement.getAttribute("id");
final String isEnabled = iConfigurationElement.getAttribute("enabled");
if (Boolean.parseBoolean(isEnabled)) {
final Object module = iConfigurationElement.createExecutableExtension("class");
id_Obj_Map.put(id, (IModelToModelConfig) module);
}
}
if (id_Obj_Map.size() > 1) {
String enabledIds = "--- " + id_Obj_Map.keySet().stream().filter(s -> (s != null && !s.isEmpty()))
.collect(Collectors.joining("," + System.getProperty("line.separator") + "--- "));
logger.error(
"Multiple M2M configurations are enabled. Based on the standard only one M2M configurations should be enabled for a specific product"
+ System.getProperty("line.separator") + "Below are the M2M module ids which are enabled : "
+ System.getProperty("line.separator") + enabledIds);
String firstM2M_moduleId = id_Obj_Map.keySet().iterator().next();
logger.warn("** M2M configuration id : \"" + firstM2M_moduleId + "\" is enabled");
return id_Obj_Map.get(firstM2M_moduleId);
} else if (id_Obj_Map.size() == 1) {
String id = id_Obj_Map.keySet().iterator().next();
logger.info("** M2M configuration id : \"" + id + "\" is enabled");
return id_Obj_Map.get(id);
}
/*- default case */
return null;
}
@Deprecated
protected static AbstractTransformationInjectorModule getInjectionModuleFromExtension(Logger logger)
throws CoreException {
final IExtensionRegistry registry = Platform.getExtensionRegistry();
final IExtensionPoint extensionPoint = registry
.getExtensionPoint("org.eclipse.app4mc.transformation.extensions.module");
final IConfigurationElement[] extensions = extensionPoint.getConfigurationElements();
Map<String, AbstractTransformationInjectorModule> id_Module_Map = new LinkedHashMap<String, AbstractTransformationInjectorModule>();
for (final IConfigurationElement iConfigurationElement : extensions) {
final String id = iConfigurationElement.getAttribute("id");
final String isEnabled = iConfigurationElement.getAttribute("enabled");
if (Boolean.parseBoolean(isEnabled)) {
final Object module = iConfigurationElement.createExecutableExtension("class");
id_Module_Map.put(id, (AbstractTransformationInjectorModule) module);
}
}
if (id_Module_Map.size() > 1) {
String enabledIds = "--- " + id_Module_Map.keySet().stream().filter(s -> (s != null && !s.isEmpty()))
.collect(Collectors.joining("," + System.getProperty("line.separator") + "--- "));
logger.error(
"Multiple transformation injector modules are enabled. Based on the standard configuration for M2M transofrmation - only one module should be enabled for a specific product"
+ System.getProperty("line.separator") + "Below are the M2M module ids which are enabled : "
+ System.getProperty("line.separator") + enabledIds);
String firstM2M_moduleId = id_Module_Map.keySet().iterator().next();
logger.warn("** M2M injector module of id : \"" + firstM2M_moduleId + "\" is enabled");
return id_Module_Map.get(firstM2M_moduleId);
} else if (id_Module_Map.size() == 1) {
String id = id_Module_Map.keySet().iterator().next();
logger.info("** M2M injector module of id : \"" + id + "\" is enabled");
return id_Module_Map.get(id);
} else {
logger.info("** Default M2M injector module is enabled");
}
/*- default case */
return null;
}
}