]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/GenBuild/org/tianocore/build/global/SurfaceAreaParser.java
Change to new XML Schema.
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / global / SurfaceAreaParser.java
CommitLineData
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
7Copyright (c) 2006, Intel Corporation\r
8All rights reserved. This program and the accompanying materials\r
9are licensed and made available under the terms and conditions of the BSD License\r
10which accompanies this distribution. The full text of the license may be found at\r
11http://opensource.org/licenses/bsd-license.php\r
12\r
13THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
14WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
15**/\r
16package org.tianocore.build.global;\r
17\r
18import java.io.File;\r
19import java.util.HashMap;\r
20import java.util.Map;\r
21\r
22import org.apache.tools.ant.BuildException;\r
23import org.apache.xmlbeans.XmlObject;\r
24import org.tianocore.LibraryModuleBuildDescriptionDocument;\r
25import org.tianocore.LibraryModuleSurfaceAreaDocument;\r
26import org.tianocore.ModuleBuildDescriptionDocument;\r
27import 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
35public 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
250258de 86 msaMap.put("PackageDependencies", doc.getModuleSurfaceArea().getPackageDependencies());\r
878ddf1f 87 msaMap.put("Protocols", doc.getModuleSurfaceArea().getProtocols());\r
88\r
89 msaMap.put("Events", doc.getModuleSurfaceArea().getEvents());\r
90 msaMap.put("Hobs", doc.getModuleSurfaceArea().getHobs());\r
91 msaMap.put("PPIs", doc.getModuleSurfaceArea().getPPIs());\r
92 msaMap.put("Variables", doc.getModuleSurfaceArea().getVariables());\r
93 msaMap.put("BootModes", doc.getModuleSurfaceArea().getBootModes());\r
94\r
ad82307c 95 msaMap.put("SystemTables", doc.getModuleSurfaceArea().getSystemTables());\r
878ddf1f 96 msaMap.put("DataHubs", doc.getModuleSurfaceArea().getDataHubs());\r
97 msaMap.put("Formsets", doc.getModuleSurfaceArea().getFormsets());\r
98 msaMap.put("Guids", doc.getModuleSurfaceArea().getGuids());\r
99 msaMap.put("Externs", doc.getModuleSurfaceArea().getExterns());\r
100\r
ad82307c 101 msaMap.put("PcdCoded", doc.getModuleSurfaceArea().getPcdCoded());\r
102 msaMap.put("BuildOptions", doc.getModuleSurfaceArea().getBuildOptions());\r
878ddf1f 103 }\r
104\r
105 /**\r
106 Parse MBD.\r
107 \r
108 @param doc top level surface area XML document\r
109 @param msaMap the map to store the result\r
110 **/\r
111 private void parseFile(ModuleBuildDescriptionDocument doc, Map<String, XmlObject> mbdMap) {\r
112 mbdMap.put("MbdHeader", doc.getModuleBuildDescription().getMbdHeader());\r
113 mbdMap.put("Libraries", doc.getModuleBuildDescription().getLibraries());\r
114 mbdMap.put("SourceFiles", doc.getModuleBuildDescription()\r
115 .getSourceFiles());\r
116 mbdMap.put("Includes", doc.getModuleBuildDescription().getIncludes());\r
117 mbdMap.put("Protocols", doc.getModuleBuildDescription().getProtocols());\r
118\r
119 mbdMap.put("Events", doc.getModuleBuildDescription().getEvents());\r
120 mbdMap.put("Hobs", doc.getModuleBuildDescription().getHobs());\r
121 mbdMap.put("PPIs", doc.getModuleBuildDescription().getPPIs());\r
122 mbdMap.put("Variables", doc.getModuleBuildDescription().getVariables());\r
123 mbdMap.put("BootModes", doc.getModuleBuildDescription().getBootModes());\r
124\r
125 mbdMap.put("SystemTables", doc.getModuleBuildDescription()\r
126 .getSystemTables());\r
127 mbdMap.put("DataHubs", doc.getModuleBuildDescription().getDataHubs());\r
128 mbdMap.put("Formsets", doc.getModuleBuildDescription().getFormsets());\r
129 mbdMap.put("Guids", doc.getModuleBuildDescription().getGuids());\r
130 mbdMap.put("Externs", doc.getModuleBuildDescription().getExterns());\r
131\r
878ddf1f 132 mbdMap.put("BuildOptions", doc.getModuleBuildDescription()\r
133 .getBuildOptions());\r
134 }\r
135 /**\r
136 Parse Library MSA.\r
137\r
138 @param doc top level surface area XML document\r
139 @param msaMap the map to store the result\r
140 **/\r
141 private void parseFile(LibraryModuleSurfaceAreaDocument doc, Map<String, XmlObject> msaMap) {\r
142 msaMap.put("MsaLibHeader", doc.getLibraryModuleSurfaceArea()\r
143 .getMsaLibHeader());\r
144 msaMap.put("LibraryClassDefinitions", doc.getLibraryModuleSurfaceArea()\r
145 .getLibraryClassDefinitions());\r
146 msaMap.put("SourceFiles", doc.getLibraryModuleSurfaceArea()\r
147 .getSourceFiles());\r
148 msaMap.put("Includes", doc.getLibraryModuleSurfaceArea().getIncludes());\r
149 msaMap.put("Protocols", doc.getLibraryModuleSurfaceArea()\r
150 .getProtocols());\r
151\r
152 msaMap.put("Events", doc.getLibraryModuleSurfaceArea().getEvents());\r
153 msaMap.put("Hobs", doc.getLibraryModuleSurfaceArea().getHobs());\r
154 msaMap.put("PPIs", doc.getLibraryModuleSurfaceArea().getPPIs());\r
155 msaMap.put("Variables", doc.getLibraryModuleSurfaceArea()\r
156 .getVariables());\r
157 msaMap.put("BootModes", doc.getLibraryModuleSurfaceArea()\r
158 .getBootModes());\r
159\r
160 msaMap.put("SystemTables", doc.getLibraryModuleSurfaceArea()\r
161 .getSystemTables());\r
162 msaMap.put("DataHubs", doc.getLibraryModuleSurfaceArea().getDataHubs());\r
163 msaMap.put("Formsets", doc.getLibraryModuleSurfaceArea().getFormsets());\r
164 msaMap.put("Guids", doc.getLibraryModuleSurfaceArea().getGuids());\r
165 msaMap.put("Externs", doc.getLibraryModuleSurfaceArea().getExterns());\r
166\r
ad82307c 167 msaMap.put("PcdCoded", doc.getLibraryModuleSurfaceArea().getPcdCoded());\r
878ddf1f 168 msaMap.put("BuildOptions", doc.getLibraryModuleSurfaceArea()\r
169 .getBuildOptions());\r
170 }\r
171\r
172 /**\r
173 Parse Library MBD.\r
174\r
175 @param doc top level surface area XML document\r
176 @param msaMap the map to store the result\r
177 **/\r
178 private void parseFile(LibraryModuleBuildDescriptionDocument doc, Map<String, XmlObject> mbdMap) {\r
179 mbdMap.put("MbdLibHeader", doc.getLibraryModuleBuildDescription()\r
180 .getMbdLibHeader());\r
181 mbdMap.put("Libraries", doc.getLibraryModuleBuildDescription()\r
182 .getLibraries());\r
183 mbdMap.put("SourceFiles", doc.getLibraryModuleBuildDescription()\r
184 .getSourceFiles());\r
185 mbdMap.put("Includes", doc.getLibraryModuleBuildDescription()\r
186 .getIncludes());\r
187 mbdMap.put("Protocols", doc.getLibraryModuleBuildDescription()\r
188 .getProtocols());\r
189\r
190 mbdMap\r
191 .put("Events", doc.getLibraryModuleBuildDescription()\r
192 .getEvents());\r
193 mbdMap.put("Hobs", doc.getLibraryModuleBuildDescription().getHobs());\r
194 mbdMap.put("PPIs", doc.getLibraryModuleBuildDescription().getPPIs());\r
195 mbdMap.put("Variables", doc.getLibraryModuleBuildDescription()\r
196 .getVariables());\r
197 mbdMap.put("BootModes", doc.getLibraryModuleBuildDescription()\r
198 .getBootModes());\r
199\r
200 mbdMap.put("SystemTables", doc.getLibraryModuleBuildDescription()\r
201 .getSystemTables());\r
202 mbdMap.put("DataHubs", doc.getLibraryModuleBuildDescription()\r
203 .getDataHubs());\r
204 mbdMap.put("Formsets", doc.getLibraryModuleBuildDescription()\r
205 .getFormsets());\r
206 mbdMap.put("Guids", doc.getLibraryModuleBuildDescription().getGuids());\r
207 mbdMap.put("Externs", doc.getLibraryModuleBuildDescription()\r
208 .getExterns());\r
209\r
878ddf1f 210 mbdMap.put("BuildOptions", doc.getLibraryModuleBuildDescription()\r
211 .getBuildOptions());\r
212 }\r
213}\r