merge of localization branch into HEAD. mh and zap
[mir.git] / source / mir / producer / reader / ScriptedProducerNodeTool.java
1 package mir.producer.reader;
2
3 import java.util.*;
4
5 public class ScriptedProducerNodeTool {
6
7   public static Object getOrMakeMapValueForKey(Map aMap, Object aKey, Object aDefaultValue) {
8     if (aMap.containsKey(aKey))
9       return aMap.get(aKey);
10     else {
11       aMap.put(aKey, aDefaultValue);
12       return aDefaultValue;
13     }
14   }
15
16   public static Stack getRunTimeStack(Map aProductionMap, String aDefinitionName) {
17     Map runtimeData = (Map) getOrMakeMapValueForKey(aProductionMap, ScriptedProducerNodeDefinition.SCRIPTED_PRODUCERNODE_RUNTIMEDATA_KEY, new HashMap());
18     runtimeData = (Map) getOrMakeMapValueForKey(runtimeData, aDefinitionName, new HashMap());
19     return (Stack) getOrMakeMapValueForKey(runtimeData, ScriptedProducerNodeDefinition.SCRIPTED_PRODUCERNODE_RUNTIMESTACK_KEY, new Stack());
20   }
21
22   public static void pushNodeParameterValues(Map aProductionMap, String aDefinitionName, Map aNodeParameterValues) {
23     Stack runtimeStack = getRunTimeStack(aProductionMap, aDefinitionName);
24     runtimeStack.push(aNodeParameterValues);
25   }
26
27   public static void popNodeParameterValues(Map aProductionMap, String aDefinitionName) {
28     Stack runtimeStack = getRunTimeStack(aProductionMap, aDefinitionName);
29     runtimeStack.pop();
30   }
31
32   public static Map saveMapValues(Map aMap, Set aKeys) {
33     Map result = new HashMap();
34     Iterator i = aKeys.iterator();
35
36     while (i.hasNext()) {
37       Object key = i.next();
38       if (aMap.containsKey(key))
39         result.put(key, aMap.get(key));
40     }
41
42     return result;
43   }
44
45   public static void restoreMapValues(Map aMap, Set aKeys, Map aSavedValues) {
46     Iterator i = aKeys.iterator();
47
48     while (i.hasNext()) {
49       Object key = i.next();
50       if (aSavedValues.containsKey(key))
51         aMap.put(key, aSavedValues.get(key));
52       else
53         aMap.remove(key);
54     }
55   }
56 }