]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/SaveFile.java
1. Fix bug for wrong Variable name in msa file
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / common / SaveFile.java
CommitLineData
a13899c5 1/** @file\r
2 \r
3 The file provides interface to save xml file.\r
4 \r
5 Copyright (c) 2006, Intel Corporation\r
6 All rights reserved. This program and the accompanying materials\r
7 are licensed and made available under the terms and conditions of the BSD License\r
8 which accompanies this distribution. The full text of the license may be found at\r
9 http://opensource.org/licenses/bsd-license.php\r
10 \r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13 \r
14 **/\r
15package org.tianocore.frameworkwizard.common;\r
16\r
17import java.io.File;\r
18\r
19import org.apache.xmlbeans.XmlCursor;\r
f9334421 20import org.apache.xmlbeans.XmlObject;\r
a13899c5 21import org.apache.xmlbeans.XmlOptions;\r
22import org.tianocore.FrameworkDatabaseDocument;\r
23import org.tianocore.ModuleSurfaceAreaDocument;\r
24import org.tianocore.PackageSurfaceAreaDocument;\r
25import org.tianocore.PlatformSurfaceAreaDocument;\r
26import org.tianocore.FrameworkDatabaseDocument.FrameworkDatabase;\r
27import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r
28import org.tianocore.PackageSurfaceAreaDocument.PackageSurfaceArea;\r
29import org.tianocore.PlatformSurfaceAreaDocument.PlatformSurfaceArea;\r
30\r
31public class SaveFile {\r
32\r
33 /**\r
34 \r
35 @param args\r
36 \r
37 **/\r
38 public static void main(String[] args) {\r
2003a22e 39 \r
40 }\r
41 \r
42 private static void createDirectory(String path) throws Exception {\r
43 File f = new File(path);\r
44 path = f.getParent();\r
45 FileOperation.newFolder(path);\r
a13899c5 46 }\r
47\r
48 /**\r
49 Save file as msa\r
50 \r
51 **/\r
52 public static void saveMsaFile(String path, ModuleSurfaceArea msa) throws Exception {\r
2003a22e 53 //\r
54 // Create the file's directory first\r
55 //\r
56 createDirectory(path);\r
57 \r
f9334421 58 //\r
59 // Remove all empty top level elements\r
60 //\r
61 XmlObject o = msa.getLibraryClassDefinitions();\r
62 if (o != null) {\r
63 if (msa.getLibraryClassDefinitions().getLibraryClassList().size() <= 0) {\r
64 XmlCursor xmlCursor = o.newCursor();\r
65 xmlCursor.removeXml();\r
66 xmlCursor.dispose();\r
67 }\r
68 }\r
69\r
70 o = msa.getSourceFiles();\r
71 if (o != null) {\r
72 if (msa.getSourceFiles().getFilenameList().size() <= 0) {\r
73 XmlCursor xmlCursor = o.newCursor();\r
74 xmlCursor.removeXml();\r
75 xmlCursor.dispose();\r
76 }\r
77 }\r
78\r
79 o = msa.getPackageDependencies();\r
80 if (o != null) {\r
81 if (msa.getPackageDependencies().getPackageList().size() <= 0) {\r
82 XmlCursor xmlCursor = o.newCursor();\r
83 xmlCursor.removeXml();\r
84 xmlCursor.dispose();\r
85 }\r
86 }\r
87\r
88 o = msa.getProtocols();\r
89 if (o != null) {\r
90 if (msa.getProtocols().getProtocolList().size() <= 0\r
91 && msa.getProtocols().getProtocolNotifyList().size() <= 0) {\r
92 XmlCursor xmlCursor = o.newCursor();\r
93 xmlCursor.removeXml();\r
94 xmlCursor.dispose();\r
95 }\r
96 }\r
97\r
98 o = msa.getEvents();\r
99 if (o != null) {\r
100 if (msa.getEvents().getCreateEvents() != null || msa.getEvents().getSignalEvents() != null) {\r
101 if (msa.getEvents().getCreateEvents() != null && msa.getEvents().getCreateEvents().getEventTypesList().size() <= 0) {\r
102 XmlCursor xmlCursor = o.newCursor();\r
103 xmlCursor.removeXml();\r
104 xmlCursor.dispose();\r
105 }\r
106 if (msa.getEvents().getSignalEvents() != null && msa.getEvents().getSignalEvents().getEventTypesList().size() <= 0) {\r
107 XmlCursor xmlCursor = o.newCursor();\r
108 xmlCursor.removeXml();\r
109 xmlCursor.dispose(); \r
110 }\r
111 } else {\r
112 XmlCursor xmlCursor = o.newCursor();\r
113 xmlCursor.removeXml();\r
114 xmlCursor.dispose();\r
115 }\r
116 }\r
117\r
118 o = msa.getHobs();\r
119 if (o != null) {\r
120 if (msa.getHobs().getHobTypesList().size() <= 0) {\r
121 XmlCursor xmlCursor = o.newCursor();\r
122 xmlCursor.removeXml();\r
123 xmlCursor.dispose();\r
124 }\r
125 }\r
126\r
127 o = msa.getPPIs();\r
128 if (o != null) {\r
129 if (msa.getPPIs().getPpiList().size() <= 0 && msa.getPPIs().getPpiNotifyList().size() <= 0) {\r
130 XmlCursor xmlCursor = o.newCursor();\r
131 xmlCursor.removeXml();\r
132 xmlCursor.dispose();\r
133 }\r
134 }\r
135\r
136 o = msa.getVariables();\r
137 if (o != null) {\r
138 if (msa.getVariables().getVariableList().size() <= 0) {\r
139 XmlCursor xmlCursor = o.newCursor();\r
140 xmlCursor.removeXml();\r
141 xmlCursor.dispose();\r
142 }\r
143 }\r
144\r
145 o = msa.getBootModes();\r
146 if (o != null) {\r
147 if (msa.getBootModes().getBootModeList().size() <= 0) {\r
148 XmlCursor xmlCursor = o.newCursor();\r
149 xmlCursor.removeXml();\r
150 xmlCursor.dispose();\r
151 }\r
152 }\r
153\r
154 o = msa.getSystemTables();\r
155 if (o != null) {\r
156 if (msa.getSystemTables().getSystemTableCNamesList().size() <= 0) {\r
157 XmlCursor xmlCursor = o.newCursor();\r
158 xmlCursor.removeXml();\r
159 xmlCursor.dispose();\r
160 }\r
161 }\r
162\r
163 o = msa.getDataHubs();\r
164 if (o != null) {\r
165 if (msa.getDataHubs().getDataHubRecordList().size() <= 0) {\r
166 XmlCursor xmlCursor = o.newCursor();\r
167 xmlCursor.removeXml();\r
168 xmlCursor.dispose();\r
169 }\r
170 }\r
171\r
172 o = msa.getHiiPackages();\r
173 if (o != null) {\r
174 if (msa.getHiiPackages().getHiiPackageList().size() <= 0) {\r
175 XmlCursor xmlCursor = o.newCursor();\r
176 xmlCursor.removeXml();\r
177 xmlCursor.dispose();\r
178 }\r
179 }\r
180\r
181 o = msa.getGuids();\r
182 if (o != null) {\r
183 if (msa.getGuids().getGuidCNamesList().size() <= 0) {\r
184 XmlCursor xmlCursor = o.newCursor();\r
185 xmlCursor.removeXml();\r
186 xmlCursor.dispose();\r
187 }\r
188 }\r
189\r
190 o = msa.getExterns();\r
191 if (o != null) {\r
192 if (msa.getExterns().getExternList().size() <= 0 && msa.getExterns().getSpecificationList().size() <= 0\r
193 && msa.getExterns().getPcdIsDriver() == null) {\r
194 XmlCursor xmlCursor = o.newCursor();\r
195 xmlCursor.removeXml();\r
196 xmlCursor.dispose();\r
197 }\r
198 }\r
199\r
200 o = msa.getPcdCoded();\r
201 if (o != null) {\r
202 if (msa.getPcdCoded().getPcdEntryList().size() <= 0) {\r
203 XmlCursor xmlCursor = o.newCursor();\r
204 xmlCursor.removeXml();\r
205 xmlCursor.dispose();\r
206 }\r
207 }\r
208\r
a13899c5 209 ModuleSurfaceAreaDocument msaDoc = ModuleSurfaceAreaDocument.Factory.newInstance();\r
210 File f = new File(path);\r
211\r
212 //\r
213 //Init namespace\r
214 //\r
215 XmlCursor cursor = XmlConfig.setupXmlCursor(msa.newCursor());\r
216\r
217 //\r
218 //Config file format\r
219 //\r
220 XmlOptions options = XmlConfig.setupXmlOptions();\r
221\r
222 //\r
223 //Create finial doc\r
224 //\r
225 msaDoc.addNewModuleSurfaceArea();\r
226 msaDoc.setModuleSurfaceArea((ModuleSurfaceArea) cursor.getObject());\r
227 //\r
228 //Save the file\r
229 //\r
230 msaDoc.save(f, options);\r
43dc3851 231 cursor.dispose();\r
a13899c5 232 }\r
233\r
234 /**\r
235 Save file as spd\r
236 \r
237 **/\r
238 public static void saveSpdFile(String path, PackageSurfaceArea spd) throws Exception {\r
2003a22e 239 //\r
240 // Create the file's directory first\r
241 //\r
242 createDirectory(path);\r
243 \r
a13899c5 244 PackageSurfaceAreaDocument spdDoc = PackageSurfaceAreaDocument.Factory.newInstance();\r
245 File f = new File(path);\r
246\r
247 //\r
248 //Init namespace\r
249 //\r
250 XmlCursor cursor = XmlConfig.setupXmlCursor(spd.newCursor());\r
251\r
252 //\r
253 //Config file format\r
254 //\r
255 XmlOptions options = XmlConfig.setupXmlOptions();\r
256\r
257 //\r
258 //Create finial doc\r
259 //\r
260 spdDoc.addNewPackageSurfaceArea();\r
261 spdDoc.setPackageSurfaceArea((PackageSurfaceArea) cursor.getObject());\r
262 //\r
263 //Save the file\r
264 //\r
265 spdDoc.save(f, options);\r
43dc3851 266 cursor.dispose();\r
a13899c5 267 }\r
268\r
269 /**\r
270 Save file as fpd\r
271 \r
272 **/\r
273 public static void saveFpdFile(String path, PlatformSurfaceArea fpd) throws Exception {\r
2003a22e 274 //\r
275 // Create the file's directory first\r
276 //\r
277 createDirectory(path);\r
278 \r
a13899c5 279 PlatformSurfaceAreaDocument fpdDoc = PlatformSurfaceAreaDocument.Factory.newInstance();\r
280 File f = new File(path);\r
281\r
282 //\r
283 //Init namespace\r
284 //\r
285 XmlCursor cursor = XmlConfig.setupXmlCursor(fpd.newCursor());\r
286\r
287 //\r
288 //Config file format\r
289 //\r
290 XmlOptions options = XmlConfig.setupXmlOptions();\r
291\r
292 //\r
293 //Create finial doc\r
294 //\r
295 fpdDoc.addNewPlatformSurfaceArea();\r
296 fpdDoc.setPlatformSurfaceArea((PlatformSurfaceArea) cursor.getObject());\r
297 //\r
298 //Save the file\r
299 //\r
300 fpdDoc.save(f, options);\r
43dc3851 301 cursor.dispose();\r
a13899c5 302 }\r
303\r
304 /**\r
305 Save file as framework db\r
306 \r
307 **/\r
308 public static void saveDbFile(String path, FrameworkDatabase db) throws Exception {\r
309 FrameworkDatabaseDocument dbDoc = FrameworkDatabaseDocument.Factory.newInstance();\r
310 File f = new File(path);\r
311\r
312 //\r
313 //Init namespace\r
314 //\r
315 XmlCursor cursor = XmlConfig.setupXmlCursor(db.newCursor());\r
316\r
317 //\r
318 //Config file format\r
319 //\r
320 XmlOptions options = XmlConfig.setupXmlOptions();\r
321\r
322 //\r
323 //Create finial doc\r
324 //\r
325 dbDoc.addNewFrameworkDatabase();\r
326 dbDoc.setFrameworkDatabase((FrameworkDatabase) cursor.getObject());\r
f9334421 327\r
a13899c5 328 //\r
329 //Save the file\r
330 //\r
331 dbDoc.save(f, options);\r
43dc3851 332 cursor.dispose();\r
a13899c5 333 }\r
334}\r