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