]>
Commit | Line | Data |
---|---|---|
878ddf1f | 1 | /** @file\r |
2 | SurfaceAreaParser class.\r | |
3 | \r | |
4 | SurfaceAreaParser class is used to parse module surface area include both \r | |
5 | driver and library. \r | |
6 | \r | |
7 | Copyright (c) 2006, Intel Corporation\r | |
8 | All rights reserved. This program and the accompanying materials\r | |
9 | are licensed and made available under the terms and conditions of the BSD License\r | |
10 | which accompanies this distribution. The full text of the license may be found at\r | |
11 | http://opensource.org/licenses/bsd-license.php\r | |
12 | \r | |
13 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r | |
14 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r | |
15 | **/\r | |
16 | package org.tianocore.build.global;\r | |
17 | \r | |
18 | import java.io.File;\r | |
19 | import java.util.HashMap;\r | |
20 | import java.util.Map;\r | |
21 | \r | |
22 | import org.apache.tools.ant.BuildException;\r | |
23 | import org.apache.xmlbeans.XmlObject;\r | |
24 | import org.tianocore.LibraryModuleBuildDescriptionDocument;\r | |
25 | import org.tianocore.LibraryModuleSurfaceAreaDocument;\r | |
26 | import org.tianocore.ModuleBuildDescriptionDocument;\r | |
27 | import org.tianocore.ModuleSurfaceAreaDocument;\r | |
28 | \r | |
29 | /**\r | |
30 | This class is used to parse module surface area (MSA & MBD) include both \r | |
31 | driver and library. \r | |
32 | \r | |
33 | @since GenBuild 1.0\r | |
34 | **/\r | |
35 | public class SurfaceAreaParser {\r | |
36 | \r | |
37 | /**\r | |
38 | Using XmlBeans to parse and valid surface area file. \r | |
39 | \r | |
40 | @param surfaceAreaFile the surface area file to parse\r | |
41 | @return top level elements and its value mapping information\r | |
42 | @throws BuildException\r | |
43 | If surface area is not well-formed or invalid\r | |
44 | **/\r | |
45 | public Map<String, XmlObject> parseFile(File surfaceAreaFile) throws BuildException {\r | |
46 | Map<String, XmlObject> map = new HashMap<String, XmlObject>();\r | |
47 | try {\r | |
48 | XmlObject sadoc = XmlObject.Factory.parse(surfaceAreaFile);\r | |
49 | // Validate File if they obey XML Schema\r | |
50 | \r | |
51 | if ( ! sadoc.validate()){\r | |
52 | throw new BuildException("Surface Area file [" + surfaceAreaFile.getPath() + "] is invalid.");\r | |
53 | }\r | |
54 | if (sadoc instanceof ModuleSurfaceAreaDocument){\r | |
55 | parseFile((ModuleSurfaceAreaDocument) sadoc, map);\r | |
56 | }\r | |
57 | else if(sadoc instanceof ModuleBuildDescriptionDocument){\r | |
58 | parseFile((ModuleBuildDescriptionDocument) sadoc, map);\r | |
59 | }\r | |
60 | else if(sadoc instanceof LibraryModuleSurfaceAreaDocument){\r | |
61 | parseFile((LibraryModuleSurfaceAreaDocument) sadoc, map);\r | |
62 | }\r | |
63 | else if(sadoc instanceof LibraryModuleBuildDescriptionDocument){\r | |
64 | parseFile((LibraryModuleBuildDescriptionDocument) sadoc, map);\r | |
65 | }\r | |
66 | }\r | |
67 | catch (Exception ex){\r | |
68 | throw new BuildException(ex.getMessage());\r | |
69 | }\r | |
70 | return map;\r | |
71 | }\r | |
72 | \r | |
73 | \r | |
74 | /**\r | |
75 | Parse MSA.\r | |
76 | \r | |
77 | @param doc top level surface area XML document\r | |
78 | @param msaMap the map to store the result\r | |
79 | **/\r | |
80 | private void parseFile(ModuleSurfaceAreaDocument doc, Map<String, XmlObject> msaMap) {\r | |
81 | msaMap.put("MsaHeader", doc.getModuleSurfaceArea().getMsaHeader());\r | |
82 | msaMap.put("LibraryClassDefinitions", doc.getModuleSurfaceArea()\r | |
83 | .getLibraryClassDefinitions());\r | |
84 | msaMap.put("SourceFiles", doc.getModuleSurfaceArea().getSourceFiles());\r | |
85 | msaMap.put("Includes", doc.getModuleSurfaceArea().getIncludes());\r | |
86 | msaMap.put("Protocols", doc.getModuleSurfaceArea().getProtocols());\r | |
87 | \r | |
88 | msaMap.put("Events", doc.getModuleSurfaceArea().getEvents());\r | |
89 | msaMap.put("Hobs", doc.getModuleSurfaceArea().getHobs());\r | |
90 | msaMap.put("PPIs", doc.getModuleSurfaceArea().getPPIs());\r | |
91 | msaMap.put("Variables", doc.getModuleSurfaceArea().getVariables());\r | |
92 | msaMap.put("BootModes", doc.getModuleSurfaceArea().getBootModes());\r | |
93 | \r | |
94 | msaMap\r | |
95 | .put("SystemTables", doc.getModuleSurfaceArea()\r | |
96 | .getSystemTables());\r | |
97 | msaMap.put("DataHubs", doc.getModuleSurfaceArea().getDataHubs());\r | |
98 | msaMap.put("Formsets", doc.getModuleSurfaceArea().getFormsets());\r | |
99 | msaMap.put("Guids", doc.getModuleSurfaceArea().getGuids());\r | |
100 | msaMap.put("Externs", doc.getModuleSurfaceArea().getExterns());\r | |
101 | \r | |
102 | msaMap.put("PCDs", doc.getModuleSurfaceArea().getPCDs());\r | |
103 | msaMap\r | |
104 | .put("BuildOptions", doc.getModuleSurfaceArea()\r | |
105 | .getBuildOptions());\r | |
106 | }\r | |
107 | \r | |
108 | /**\r | |
109 | Parse MBD.\r | |
110 | \r | |
111 | @param doc top level surface area XML document\r | |
112 | @param msaMap the map to store the result\r | |
113 | **/\r | |
114 | private void parseFile(ModuleBuildDescriptionDocument doc, Map<String, XmlObject> mbdMap) {\r | |
115 | mbdMap.put("MbdHeader", doc.getModuleBuildDescription().getMbdHeader());\r | |
116 | mbdMap.put("Libraries", doc.getModuleBuildDescription().getLibraries());\r | |
117 | mbdMap.put("SourceFiles", doc.getModuleBuildDescription()\r | |
118 | .getSourceFiles());\r | |
119 | mbdMap.put("Includes", doc.getModuleBuildDescription().getIncludes());\r | |
120 | mbdMap.put("Protocols", doc.getModuleBuildDescription().getProtocols());\r | |
121 | \r | |
122 | mbdMap.put("Events", doc.getModuleBuildDescription().getEvents());\r | |
123 | mbdMap.put("Hobs", doc.getModuleBuildDescription().getHobs());\r | |
124 | mbdMap.put("PPIs", doc.getModuleBuildDescription().getPPIs());\r | |
125 | mbdMap.put("Variables", doc.getModuleBuildDescription().getVariables());\r | |
126 | mbdMap.put("BootModes", doc.getModuleBuildDescription().getBootModes());\r | |
127 | \r | |
128 | mbdMap.put("SystemTables", doc.getModuleBuildDescription()\r | |
129 | .getSystemTables());\r | |
130 | mbdMap.put("DataHubs", doc.getModuleBuildDescription().getDataHubs());\r | |
131 | mbdMap.put("Formsets", doc.getModuleBuildDescription().getFormsets());\r | |
132 | mbdMap.put("Guids", doc.getModuleBuildDescription().getGuids());\r | |
133 | mbdMap.put("Externs", doc.getModuleBuildDescription().getExterns());\r | |
134 | \r | |
135 | mbdMap.put("PCDs", doc.getModuleBuildDescription().getPCDs());\r | |
136 | mbdMap.put("BuildOptions", doc.getModuleBuildDescription()\r | |
137 | .getBuildOptions());\r | |
138 | }\r | |
139 | /**\r | |
140 | Parse Library MSA.\r | |
141 | \r | |
142 | @param doc top level surface area XML document\r | |
143 | @param msaMap the map to store the result\r | |
144 | **/\r | |
145 | private void parseFile(LibraryModuleSurfaceAreaDocument doc, Map<String, XmlObject> msaMap) {\r | |
146 | msaMap.put("MsaLibHeader", doc.getLibraryModuleSurfaceArea()\r | |
147 | .getMsaLibHeader());\r | |
148 | msaMap.put("LibraryClassDefinitions", doc.getLibraryModuleSurfaceArea()\r | |
149 | .getLibraryClassDefinitions());\r | |
150 | msaMap.put("SourceFiles", doc.getLibraryModuleSurfaceArea()\r | |
151 | .getSourceFiles());\r | |
152 | msaMap.put("Includes", doc.getLibraryModuleSurfaceArea().getIncludes());\r | |
153 | msaMap.put("Protocols", doc.getLibraryModuleSurfaceArea()\r | |
154 | .getProtocols());\r | |
155 | \r | |
156 | msaMap.put("Events", doc.getLibraryModuleSurfaceArea().getEvents());\r | |
157 | msaMap.put("Hobs", doc.getLibraryModuleSurfaceArea().getHobs());\r | |
158 | msaMap.put("PPIs", doc.getLibraryModuleSurfaceArea().getPPIs());\r | |
159 | msaMap.put("Variables", doc.getLibraryModuleSurfaceArea()\r | |
160 | .getVariables());\r | |
161 | msaMap.put("BootModes", doc.getLibraryModuleSurfaceArea()\r | |
162 | .getBootModes());\r | |
163 | \r | |
164 | msaMap.put("SystemTables", doc.getLibraryModuleSurfaceArea()\r | |
165 | .getSystemTables());\r | |
166 | msaMap.put("DataHubs", doc.getLibraryModuleSurfaceArea().getDataHubs());\r | |
167 | msaMap.put("Formsets", doc.getLibraryModuleSurfaceArea().getFormsets());\r | |
168 | msaMap.put("Guids", doc.getLibraryModuleSurfaceArea().getGuids());\r | |
169 | msaMap.put("Externs", doc.getLibraryModuleSurfaceArea().getExterns());\r | |
170 | \r | |
171 | msaMap.put("PCDs", doc.getLibraryModuleSurfaceArea().getPCDs());\r | |
172 | msaMap.put("BuildOptions", doc.getLibraryModuleSurfaceArea()\r | |
173 | .getBuildOptions());\r | |
174 | }\r | |
175 | \r | |
176 | /**\r | |
177 | Parse Library MBD.\r | |
178 | \r | |
179 | @param doc top level surface area XML document\r | |
180 | @param msaMap the map to store the result\r | |
181 | **/\r | |
182 | private void parseFile(LibraryModuleBuildDescriptionDocument doc, Map<String, XmlObject> mbdMap) {\r | |
183 | mbdMap.put("MbdLibHeader", doc.getLibraryModuleBuildDescription()\r | |
184 | .getMbdLibHeader());\r | |
185 | mbdMap.put("Libraries", doc.getLibraryModuleBuildDescription()\r | |
186 | .getLibraries());\r | |
187 | mbdMap.put("SourceFiles", doc.getLibraryModuleBuildDescription()\r | |
188 | .getSourceFiles());\r | |
189 | mbdMap.put("Includes", doc.getLibraryModuleBuildDescription()\r | |
190 | .getIncludes());\r | |
191 | mbdMap.put("Protocols", doc.getLibraryModuleBuildDescription()\r | |
192 | .getProtocols());\r | |
193 | \r | |
194 | mbdMap\r | |
195 | .put("Events", doc.getLibraryModuleBuildDescription()\r | |
196 | .getEvents());\r | |
197 | mbdMap.put("Hobs", doc.getLibraryModuleBuildDescription().getHobs());\r | |
198 | mbdMap.put("PPIs", doc.getLibraryModuleBuildDescription().getPPIs());\r | |
199 | mbdMap.put("Variables", doc.getLibraryModuleBuildDescription()\r | |
200 | .getVariables());\r | |
201 | mbdMap.put("BootModes", doc.getLibraryModuleBuildDescription()\r | |
202 | .getBootModes());\r | |
203 | \r | |
204 | mbdMap.put("SystemTables", doc.getLibraryModuleBuildDescription()\r | |
205 | .getSystemTables());\r | |
206 | mbdMap.put("DataHubs", doc.getLibraryModuleBuildDescription()\r | |
207 | .getDataHubs());\r | |
208 | mbdMap.put("Formsets", doc.getLibraryModuleBuildDescription()\r | |
209 | .getFormsets());\r | |
210 | mbdMap.put("Guids", doc.getLibraryModuleBuildDescription().getGuids());\r | |
211 | mbdMap.put("Externs", doc.getLibraryModuleBuildDescription()\r | |
212 | .getExterns());\r | |
213 | \r | |
214 | mbdMap.put("PCDs", doc.getLibraryModuleBuildDescription().getPCDs());\r | |
215 | mbdMap.put("BuildOptions", doc.getLibraryModuleBuildDescription()\r | |
216 | .getBuildOptions());\r | |
217 | }\r | |
218 | }\r |