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