All pastes #454832 Raw Edit

Someone

public java v1 · immutable
·published 2007-04-23 21:00 UTC
rendered paste body
package de.upb.swtpra06.nde17.model.util;import java.util.HashMap;import java.util.Iterator;import de.upb.swtpra06.nde17.DeploymentPlugin;import de.upb.swtpra06.visual.AbstractVisualModelElement;import de.upb.swtpra06.visual.KeyToParameterValue;import de.upb.swtpra06.visual.KeyToPluginSpecificMap;import de.upb.swtpra06.visual.ParameterValue;import de.upb.swtpra06.visual.PluginSpecificMap;import de.upb.swtpra06.visual.VisualFactory;/** * This class should help to simplify the interaction with the PluginSpecificMap * of an AbstractVisualModelElement. The PluginSpecificMap contains a bunch of * multiple nested list, with isn't easy to handle. * The PluginSpecificMapHelper provides simple set and get methodes to interact  * with the PluginSpecificMap. * The {@link DeploymentPlugin#PLUGIN_ID toplevel-key} is hardcoded. */public class PluginSpecificMapHelper {	/** Key used for the ComponentInstance description */	public final static String COMPONENT_INSTANCE__DESCRIPTION = "component_instance__description";	/** Key used for the Node description */	public final static String NODE__DESCRIPTION = "node__description";	/** Key used for the Bus description */	public final static String BUS__DESCRIPTION = "bus__description";	/** Key used for the PortInstance description */	public final static String PORT_INSTANCE__DESCRIPTION = "port_instance__description";		private static HashMap defaults = null;		static {		defaults = new HashMap();				defaults.put(COMPONENT_INSTANCE__DESCRIPTION, "Description of a Component Instance.");		defaults.put(NODE__DESCRIPTION, "Description of a Node.");		defaults.put(BUS__DESCRIPTION, "Description of a Bus.");        defaults.put(PORT_INSTANCE__DESCRIPTION, "Description of a Port Instance.");	}	/**	 * Gets the value from the PluginSpecificMap of the given AbstractVisualModelElement.	 * If no value is currently mapped to the given key the default value is taken from a	 * defaults-map. This defaultvalue will be mapped to given key and than returned.	 * @param element the lookup will be done in the PluginSpecificMap of this element	 * @param key the key to be looked up	 * @return value for this key of the PluginSpecificMap from element	 */	public static String get(AbstractVisualModelElement element, String key) {		Iterator itPluginKeyToMap = element.getPluginSpecificParameter().iterator();				while (itPluginKeyToMap.hasNext()) {			KeyToPluginSpecificMap pluginKeyToMap = (KeyToPluginSpecificMap)itPluginKeyToMap.next();						if (pluginKeyToMap.getKey().equals(DeploymentPlugin.PLUGIN_ID)) {				PluginSpecificMap pluginMap = pluginKeyToMap.getValue();				Iterator itKeyToParam = pluginMap.getParameter().iterator();								while (itKeyToParam.hasNext()) {					KeyToParameterValue keyToParam = (KeyToParameterValue)itKeyToParam.next();										if (keyToParam.getKey().equals(key))						return keyToParam.getValue().getValue();				}			}		}				// Requested value was not found, so set default and return it.			if (!defaults.containsKey(key))			throw new IllegalArgumentException("No defaultvalue is mapped to given Key '" + key + "'");				String value = (String)defaults.get(key);		set(element, key, value);		return value;	}		/**	 * Sets the value from the PluginSpecificMap of the given AbstractVisualModelElement.	 * @param element the set will be done in the PluginSpecificMap of this element	 * @param key the key to set to	 * @param value the value to set	 */	public static void set(AbstractVisualModelElement element, String key, String value) {		VisualFactory vf = VisualFactory.eINSTANCE;		Iterator itKeyToPluginMap = element.getPluginSpecificParameter().iterator();					while (itKeyToPluginMap.hasNext()) {			KeyToPluginSpecificMap keyToPluginMap = (KeyToPluginSpecificMap)itKeyToPluginMap.next();						if (keyToPluginMap.getKey().equals(DeploymentPlugin.PLUGIN_ID)) {				PluginSpecificMap pluginMap = keyToPluginMap.getValue();				Iterator itKeyToParam = pluginMap.getParameter().iterator();								while (itKeyToParam.hasNext()) {					KeyToParameterValue keyToParam = (KeyToParameterValue)itKeyToParam.next();										if (keyToParam.getKey().equals(key)) {						keyToParam.getValue().setValue(value);						return;					}				}								ParameterValue param = vf.createParameterValue();				KeyToParameterValue keyToParam = vf.createKeyToParameterValue();								param.setValue(value);				keyToParam.setKey(key);				keyToParam.setValue(param);								pluginMap.getParameter().add(keyToParam);				return;			}						ParameterValue param = vf.createParameterValue();			KeyToParameterValue keyToParam = vf.createKeyToParameterValue();			PluginSpecificMap pluginMap = vf.createPluginSpecificMap();						param.setValue(value);			keyToParam.setKey(key);			keyToParam.setValue(param);						pluginMap.getParameter().add(keyToParam);			keyToPluginMap.setKey(DeploymentPlugin.PLUGIN_ID);			keyToPluginMap.setValue(pluginMap);			return;		}			ParameterValue param = vf.createParameterValue();		KeyToParameterValue keyToParam = vf.createKeyToParameterValue();		PluginSpecificMap pluginMap = vf.createPluginSpecificMap();		KeyToPluginSpecificMap keyToPluginMap = vf.createKeyToPluginSpecificMap();				param.setValue(value);		keyToParam.setKey(key);		keyToParam.setValue(param);				pluginMap.getParameter().add(keyToParam);		keyToPluginMap.setKey(DeploymentPlugin.PLUGIN_ID);		keyToPluginMap.setValue(pluginMap);				element.getPluginSpecificParameter().add(keyToPluginMap);	}}