]> git.proxmox.com Git - mirror_edk2.git/blob - Tools/Source/GenBuild/org/tianocore/build/global/SurfaceAreaParser.java
a2780e626c6086344ee002444c4aacf30aeb29ad
[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.put("SystemTables", doc.getModuleSurfaceArea().getSystemTables());
95 msaMap.put("DataHubs", doc.getModuleSurfaceArea().getDataHubs());
96 msaMap.put("Formsets", doc.getModuleSurfaceArea().getFormsets());
97 msaMap.put("Guids", doc.getModuleSurfaceArea().getGuids());
98 msaMap.put("Externs", doc.getModuleSurfaceArea().getExterns());
99
100 msaMap.put("PcdCoded", doc.getModuleSurfaceArea().getPcdCoded());
101 msaMap.put("BuildOptions", doc.getModuleSurfaceArea().getBuildOptions());
102 }
103
104 /**
105 Parse MBD.
106
107 @param doc top level surface area XML document
108 @param msaMap the map to store the result
109 **/
110 private void parseFile(ModuleBuildDescriptionDocument doc, Map<String, XmlObject> mbdMap) {
111 mbdMap.put("MbdHeader", doc.getModuleBuildDescription().getMbdHeader());
112 mbdMap.put("Libraries", doc.getModuleBuildDescription().getLibraries());
113 mbdMap.put("SourceFiles", doc.getModuleBuildDescription()
114 .getSourceFiles());
115 mbdMap.put("Includes", doc.getModuleBuildDescription().getIncludes());
116 mbdMap.put("Protocols", doc.getModuleBuildDescription().getProtocols());
117
118 mbdMap.put("Events", doc.getModuleBuildDescription().getEvents());
119 mbdMap.put("Hobs", doc.getModuleBuildDescription().getHobs());
120 mbdMap.put("PPIs", doc.getModuleBuildDescription().getPPIs());
121 mbdMap.put("Variables", doc.getModuleBuildDescription().getVariables());
122 mbdMap.put("BootModes", doc.getModuleBuildDescription().getBootModes());
123
124 mbdMap.put("SystemTables", doc.getModuleBuildDescription()
125 .getSystemTables());
126 mbdMap.put("DataHubs", doc.getModuleBuildDescription().getDataHubs());
127 mbdMap.put("Formsets", doc.getModuleBuildDescription().getFormsets());
128 mbdMap.put("Guids", doc.getModuleBuildDescription().getGuids());
129 mbdMap.put("Externs", doc.getModuleBuildDescription().getExterns());
130
131 mbdMap.put("BuildOptions", doc.getModuleBuildDescription()
132 .getBuildOptions());
133 }
134 /**
135 Parse Library MSA.
136
137 @param doc top level surface area XML document
138 @param msaMap the map to store the result
139 **/
140 private void parseFile(LibraryModuleSurfaceAreaDocument doc, Map<String, XmlObject> msaMap) {
141 msaMap.put("MsaLibHeader", doc.getLibraryModuleSurfaceArea()
142 .getMsaLibHeader());
143 msaMap.put("LibraryClassDefinitions", doc.getLibraryModuleSurfaceArea()
144 .getLibraryClassDefinitions());
145 msaMap.put("SourceFiles", doc.getLibraryModuleSurfaceArea()
146 .getSourceFiles());
147 msaMap.put("Includes", doc.getLibraryModuleSurfaceArea().getIncludes());
148 msaMap.put("Protocols", doc.getLibraryModuleSurfaceArea()
149 .getProtocols());
150
151 msaMap.put("Events", doc.getLibraryModuleSurfaceArea().getEvents());
152 msaMap.put("Hobs", doc.getLibraryModuleSurfaceArea().getHobs());
153 msaMap.put("PPIs", doc.getLibraryModuleSurfaceArea().getPPIs());
154 msaMap.put("Variables", doc.getLibraryModuleSurfaceArea()
155 .getVariables());
156 msaMap.put("BootModes", doc.getLibraryModuleSurfaceArea()
157 .getBootModes());
158
159 msaMap.put("SystemTables", doc.getLibraryModuleSurfaceArea()
160 .getSystemTables());
161 msaMap.put("DataHubs", doc.getLibraryModuleSurfaceArea().getDataHubs());
162 msaMap.put("Formsets", doc.getLibraryModuleSurfaceArea().getFormsets());
163 msaMap.put("Guids", doc.getLibraryModuleSurfaceArea().getGuids());
164 msaMap.put("Externs", doc.getLibraryModuleSurfaceArea().getExterns());
165
166 msaMap.put("PcdCoded", doc.getLibraryModuleSurfaceArea().getPcdCoded());
167 msaMap.put("BuildOptions", doc.getLibraryModuleSurfaceArea()
168 .getBuildOptions());
169 }
170
171 /**
172 Parse Library MBD.
173
174 @param doc top level surface area XML document
175 @param msaMap the map to store the result
176 **/
177 private void parseFile(LibraryModuleBuildDescriptionDocument doc, Map<String, XmlObject> mbdMap) {
178 mbdMap.put("MbdLibHeader", doc.getLibraryModuleBuildDescription()
179 .getMbdLibHeader());
180 mbdMap.put("Libraries", doc.getLibraryModuleBuildDescription()
181 .getLibraries());
182 mbdMap.put("SourceFiles", doc.getLibraryModuleBuildDescription()
183 .getSourceFiles());
184 mbdMap.put("Includes", doc.getLibraryModuleBuildDescription()
185 .getIncludes());
186 mbdMap.put("Protocols", doc.getLibraryModuleBuildDescription()
187 .getProtocols());
188
189 mbdMap
190 .put("Events", doc.getLibraryModuleBuildDescription()
191 .getEvents());
192 mbdMap.put("Hobs", doc.getLibraryModuleBuildDescription().getHobs());
193 mbdMap.put("PPIs", doc.getLibraryModuleBuildDescription().getPPIs());
194 mbdMap.put("Variables", doc.getLibraryModuleBuildDescription()
195 .getVariables());
196 mbdMap.put("BootModes", doc.getLibraryModuleBuildDescription()
197 .getBootModes());
198
199 mbdMap.put("SystemTables", doc.getLibraryModuleBuildDescription()
200 .getSystemTables());
201 mbdMap.put("DataHubs", doc.getLibraryModuleBuildDescription()
202 .getDataHubs());
203 mbdMap.put("Formsets", doc.getLibraryModuleBuildDescription()
204 .getFormsets());
205 mbdMap.put("Guids", doc.getLibraryModuleBuildDescription().getGuids());
206 mbdMap.put("Externs", doc.getLibraryModuleBuildDescription()
207 .getExterns());
208
209 mbdMap.put("BuildOptions", doc.getLibraryModuleBuildDescription()
210 .getBuildOptions());
211 }
212 }