]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/GenBuild/org/tianocore/build/global/PropertyManager.java
Report error messages more precise.
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / global / PropertyManager.java
CommitLineData
471e8e4c 1package org.tianocore.build.global;\r
2\r
3import java.util.HashMap;\r
4import java.util.Hashtable;\r
5import java.util.Iterator;\r
6import java.util.Set;\r
7import java.util.Stack;\r
8\r
9import org.apache.tools.ant.Project;\r
10import org.apache.tools.ant.PropertyHelper;\r
11\r
12public class PropertyManager {\r
13 private static Stack<HashMap<String, String>> propertyTableStack = new Stack<HashMap<String, String>>();\r
14 private static HashMap<String, String> orgPropertyTable = null;\r
15 private static HashMap<String, String> oldPropertyTable = null;\r
16 private static HashMap<String, String> bakPropertyTable = null;\r
17 private static Project prj = null;\r
18\r
19 public static void save() {\r
20 if (orgPropertyTable == null) {\r
21 Hashtable prjProperties = prj.getProperties();\r
22 orgPropertyTable = new HashMap<String, String>();\r
23\r
24 Set keys = prjProperties.keySet();\r
25 Iterator iter = keys.iterator();\r
26 while (iter.hasNext()) {\r
27 String item = (String)iter.next();\r
28 orgPropertyTable.put(item, (String)prjProperties.get(item));\r
29 }\r
30 }\r
31\r
32 if (bakPropertyTable != null) {\r
33 propertyTableStack.push(bakPropertyTable);\r
34 oldPropertyTable = bakPropertyTable;\r
35 } else {\r
36 oldPropertyTable = orgPropertyTable;\r
37 }\r
38 bakPropertyTable = new HashMap<String, String>();\r
39 }\r
40\r
41 public static void restore() {\r
42 if (bakPropertyTable == null) {\r
43 return;\r
44 }\r
45 Set keys = bakPropertyTable.keySet();\r
46\r
47 Iterator iter = keys.iterator();\r
48 while (iter.hasNext()) {\r
49 String name = (String)iter.next();\r
50 String value = (String)bakPropertyTable.get(name);\r
51 setProperty(prj, name, value);\r
52 }\r
53\r
54 if (propertyTableStack.size() > 0) {\r
55 bakPropertyTable = (HashMap<String, String>)propertyTableStack.pop();\r
56 } else {\r
57 bakPropertyTable = null;\r
58 }\r
59\r
60 if (propertyTableStack.size() == 0) {\r
61 oldPropertyTable = orgPropertyTable;\r
62 } else {\r
63 oldPropertyTable = (HashMap<String, String>)propertyTableStack.peek();\r
64 }\r
65 }\r
66\r
67 public static void setProject(Project prj) {\r
68 PropertyManager.prj = prj;\r
69 }\r
70\r
71 public static void setProperty(String name, String value) {\r
72 if (prj == null) {\r
73 return;\r
74 }\r
75\r
76 setProperty(prj, name, value);\r
77\r
78 if (oldPropertyTable == null || bakPropertyTable == null) {\r
79 return;\r
80 }\r
81\r
82 String oldValue = oldPropertyTable.get(name);\r
83 if (oldValue == null) {\r
84 oldValue = value;\r
85 }\r
86 bakPropertyTable.put(name, oldValue);\r
87 }\r
88\r
89 public static void setProperty(Project project, String name, String value) {\r
90 if (project == null) {\r
91 if (prj == null) {\r
92 return;\r
93 }\r
94 project = prj;\r
95 }\r
96\r
97 PropertyHelper.getPropertyHelper(project).setProperty(null, name, value, false);\r
98 }\r
99}\r
100\r