]>
Commit | Line | Data |
---|---|---|
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 | |
15 | package org.tianocore.frameworkwizard.common;\r | |
16 | \r | |
17 | import java.io.File;\r | |
18 | \r | |
19 | import org.apache.xmlbeans.XmlCursor;\r | |
f9334421 | 20 | import org.apache.xmlbeans.XmlObject;\r |
a13899c5 | 21 | import org.apache.xmlbeans.XmlOptions;\r |
22 | import org.tianocore.FrameworkDatabaseDocument;\r | |
23 | import org.tianocore.ModuleSurfaceAreaDocument;\r | |
24 | import org.tianocore.PackageSurfaceAreaDocument;\r | |
25 | import org.tianocore.PlatformSurfaceAreaDocument;\r | |
26 | import org.tianocore.FrameworkDatabaseDocument.FrameworkDatabase;\r | |
27 | import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r | |
28 | import org.tianocore.PackageSurfaceAreaDocument.PackageSurfaceArea;\r | |
29 | import org.tianocore.PlatformSurfaceAreaDocument.PlatformSurfaceArea;\r | |
30 | \r | |
31 | public 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 | |
231 | }\r | |
232 | \r | |
233 | /**\r | |
234 | Save file as spd\r | |
235 | \r | |
236 | **/\r | |
237 | public static void saveSpdFile(String path, PackageSurfaceArea spd) throws Exception {\r | |
2003a22e | 238 | //\r |
239 | // Create the file's directory first\r | |
240 | //\r | |
241 | createDirectory(path);\r | |
242 | \r | |
a13899c5 | 243 | PackageSurfaceAreaDocument spdDoc = PackageSurfaceAreaDocument.Factory.newInstance();\r |
244 | File f = new File(path);\r | |
245 | \r | |
246 | //\r | |
247 | //Init namespace\r | |
248 | //\r | |
249 | XmlCursor cursor = XmlConfig.setupXmlCursor(spd.newCursor());\r | |
250 | \r | |
251 | //\r | |
252 | //Config file format\r | |
253 | //\r | |
254 | XmlOptions options = XmlConfig.setupXmlOptions();\r | |
255 | \r | |
256 | //\r | |
257 | //Create finial doc\r | |
258 | //\r | |
259 | spdDoc.addNewPackageSurfaceArea();\r | |
260 | spdDoc.setPackageSurfaceArea((PackageSurfaceArea) cursor.getObject());\r | |
261 | //\r | |
262 | //Save the file\r | |
263 | //\r | |
264 | spdDoc.save(f, options);\r | |
265 | }\r | |
266 | \r | |
267 | /**\r | |
268 | Save file as fpd\r | |
269 | \r | |
270 | **/\r | |
271 | public static void saveFpdFile(String path, PlatformSurfaceArea fpd) throws Exception {\r | |
2003a22e | 272 | //\r |
273 | // Create the file's directory first\r | |
274 | //\r | |
275 | createDirectory(path);\r | |
276 | \r | |
a13899c5 | 277 | PlatformSurfaceAreaDocument fpdDoc = PlatformSurfaceAreaDocument.Factory.newInstance();\r |
278 | File f = new File(path);\r | |
279 | \r | |
280 | //\r | |
281 | //Init namespace\r | |
282 | //\r | |
283 | XmlCursor cursor = XmlConfig.setupXmlCursor(fpd.newCursor());\r | |
284 | \r | |
285 | //\r | |
286 | //Config file format\r | |
287 | //\r | |
288 | XmlOptions options = XmlConfig.setupXmlOptions();\r | |
289 | \r | |
290 | //\r | |
291 | //Create finial doc\r | |
292 | //\r | |
293 | fpdDoc.addNewPlatformSurfaceArea();\r | |
294 | fpdDoc.setPlatformSurfaceArea((PlatformSurfaceArea) cursor.getObject());\r | |
295 | //\r | |
296 | //Save the file\r | |
297 | //\r | |
298 | fpdDoc.save(f, options);\r | |
299 | }\r | |
300 | \r | |
301 | /**\r | |
302 | Save file as framework db\r | |
303 | \r | |
304 | **/\r | |
305 | public static void saveDbFile(String path, FrameworkDatabase db) throws Exception {\r | |
306 | FrameworkDatabaseDocument dbDoc = FrameworkDatabaseDocument.Factory.newInstance();\r | |
307 | File f = new File(path);\r | |
308 | \r | |
309 | //\r | |
310 | //Init namespace\r | |
311 | //\r | |
312 | XmlCursor cursor = XmlConfig.setupXmlCursor(db.newCursor());\r | |
313 | \r | |
314 | //\r | |
315 | //Config file format\r | |
316 | //\r | |
317 | XmlOptions options = XmlConfig.setupXmlOptions();\r | |
318 | \r | |
319 | //\r | |
320 | //Create finial doc\r | |
321 | //\r | |
322 | dbDoc.addNewFrameworkDatabase();\r | |
323 | dbDoc.setFrameworkDatabase((FrameworkDatabase) cursor.getObject());\r | |
f9334421 | 324 | \r |
a13899c5 | 325 | //\r |
326 | //Save the file\r | |
327 | //\r | |
328 | dbDoc.save(f, options);\r | |
329 | }\r | |
330 | }\r |