| /** |
| ******************************************************************************** |
| * 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; |
| |
| } |
| } |