]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdFileContents.java
1. Add scroll bars to Package Library Class Declarations editor.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / packaging / ui / SpdFileContents.java
CommitLineData
a13899c5 1/** @file\r
2 Java class SpdFileContents is used to parse spd xml file.\r
3 \r
4Copyright (c) 2006, Intel Corporation\r
5All rights reserved. This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12**/\r
13package org.tianocore.frameworkwizard.packaging.ui;\r
14\r
15import java.io.File;\r
16import java.io.IOException;\r
17import java.util.ArrayList;\r
18import java.util.List;\r
19import java.util.ListIterator;\r
20import java.util.Vector;\r
21\r
a13899c5 22\r
23import org.apache.xmlbeans.XmlObject;\r
24import org.apache.xmlbeans.XmlOptions;\r
25import org.apache.xmlbeans.XmlCursor;\r
26\r
a13899c5 27import org.tianocore.GuidDeclarationsDocument;\r
28\r
29import org.tianocore.LibraryClassDeclarationsDocument;\r
30\r
31import org.tianocore.ModuleTypeDef;\r
32import org.tianocore.MsaFilesDocument;\r
33import org.tianocore.PackageDefinitionsDocument;\r
34import org.tianocore.PackageHeadersDocument;\r
35import org.tianocore.PackageSurfaceAreaDocument;\r
36import org.tianocore.PcdDataTypes;\r
37import org.tianocore.PcdDeclarationsDocument;\r
a13899c5 38import org.tianocore.PpiDeclarationsDocument;\r
39import org.tianocore.ProtocolDeclarationsDocument;\r
40import org.tianocore.SpdHeaderDocument;\r
41import org.tianocore.GuidDeclarationsDocument.GuidDeclarations;\r
a13899c5 42\r
43/**\r
44 This class processes spd file contents such as add remove xml elements.\r
45 \r
46 @since PackageEditor 1.0\r
47**/\r
48\r
49public class SpdFileContents {\r
50\r
51 private File file = null;\r
52\r
53 private PackageSurfaceAreaDocument psad = null;\r
54\r
55 private PackageSurfaceAreaDocument.PackageSurfaceArea psaRoot = null;\r
56\r
57 private SpdHeaderDocument.SpdHeader spdHdr = null;\r
58 \r
59 private PackageDefinitionsDocument.PackageDefinitions spdPkgDefs = null;\r
60 \r
61 private LibraryClassDeclarationsDocument.LibraryClassDeclarations spdLibClassDeclarations = null;\r
62\r
63 private MsaFilesDocument.MsaFiles spdMsaFiles = null;\r
64\r
65 private PackageHeadersDocument.PackageHeaders spdModHdrs = null;\r
66\r
67 private GuidDeclarationsDocument.GuidDeclarations spdGuidDeclarations = null;\r
68\r
69 private ProtocolDeclarationsDocument.ProtocolDeclarations spdProtocolDeclarations = null;\r
70\r
71 private PpiDeclarationsDocument.PpiDeclarations spdPpiDeclarations = null;\r
72\r
73 private PcdDeclarationsDocument.PcdDeclarations spdPcdDefinitions = null;\r
74\r
75 /**\r
76 Constructor to create a new spd file\r
77 **/\r
78 public SpdFileContents() {\r
79\r
80 psad = PackageSurfaceAreaDocument.Factory.newInstance();\r
81 psaRoot = psad.addNewPackageSurfaceArea();\r
82\r
83 }\r
84\r
85 /**\r
86 Constructor for existing document object\r
87 @param psa\r
88 **/\r
89 public SpdFileContents(PackageSurfaceAreaDocument.PackageSurfaceArea psa) {\r
90 psaRoot = psa;\r
91 spdHdr = psaRoot.getSpdHeader();\r
92 spdPkgDefs = psaRoot.getPackageDefinitions();\r
93 }\r
94 /**\r
95 Constructor based on an existing spd file\r
96 \r
97 @param f Existing spd file\r
98 **/\r
99 public SpdFileContents(File f) {\r
100 try {\r
101 psad = PackageSurfaceAreaDocument.Factory.parse(f);\r
102 psaRoot = psad.getPackageSurfaceArea();\r
103 file = f;\r
104 } catch (Exception e) {\r
105 System.out.println(e.toString());\r
106 }\r
107 }\r
108\r
109 /**\r
110 Remove existing pcd definitions elements using XmlCursor\r
111 **/\r
112 public void removeSpdPcdDefinition() {\r
113 XmlObject o = psaRoot.getPcdDeclarations();\r
114 if (o == null)\r
115 return;\r
116 XmlCursor cursor = o.newCursor();\r
117 cursor.removeXml();\r
118 spdPcdDefinitions = null;\r
119 cursor.dispose();\r
120 }\r
121 \r
122 public void removeSpdPcdDefinition(int i){\r
123 XmlObject o = psaRoot.getPcdDeclarations();\r
124 if (o == null)\r
125 return;\r
126 XmlCursor cursor = o.newCursor();\r
127 if (cursor.toFirstChild()) {\r
128 for (int j = 0; j < i; ++j) {\r
129 cursor.toNextSibling();\r
130 }\r
131 cursor.removeXml();\r
af25df16 132 if (getSpdPcdDefinitionCount() == 0) {\r
133 cursor.toParent();\r
134 cursor.removeXml();\r
135 }\r
a13899c5 136 } \r
137 cursor.dispose();\r
138 }\r
139\r
140 /**\r
141 Remove existing ppi declarations using XmlCursor\r
142 **/\r
143 public void removeSpdPpiDeclaration() {\r
144 XmlObject o = psaRoot.getPpiDeclarations();\r
145 if (o == null)\r
146 return;\r
147 XmlCursor cursor = o.newCursor();\r
148 cursor.removeXml();\r
149 spdPpiDeclarations = null;\r
150 cursor.dispose();\r
151 }\r
152\r
153 public void removeSpdPpiDeclaration(int i){\r
154 XmlObject o = psaRoot.getPpiDeclarations();\r
155 if (o == null)\r
156 return;\r
157 XmlCursor cursor = o.newCursor();\r
158 if (cursor.toFirstChild()) {\r
159 for (int j = 0; j < i; ++j) {\r
160 cursor.toNextSibling();\r
161 }\r
162 cursor.removeXml();\r
af25df16 163 if (getSpdPpiDeclarationCount() == 0){\r
164 cursor.toParent();\r
165 cursor.removeXml();\r
166 }\r
a13899c5 167 } \r
168 cursor.dispose();\r
169 }\r
170 /**\r
171 Remove existing protocols declarations using XmlCursor\r
172 **/\r
173 public void removeSpdProtocolDeclaration() {\r
174 XmlObject o = psaRoot.getProtocolDeclarations();\r
175 if (o == null)\r
176 return;\r
177 XmlCursor cursor = o.newCursor();\r
178 cursor.removeXml();\r
179 spdProtocolDeclarations = null;\r
180 cursor.dispose();\r
181 }\r
182 \r
183 public void removeSpdProtocolDeclaration(int i) {\r
184 XmlObject o = psaRoot.getProtocolDeclarations();\r
185 if (o == null)\r
186 return;\r
187 XmlCursor cursor = o.newCursor();\r
188 if (cursor.toFirstChild()) {\r
189 for (int j = 0; j < i; ++j) {\r
190 cursor.toNextSibling();\r
191 }\r
192 cursor.removeXml();\r
af25df16 193 if (getSpdProtocolDeclarationCount() == 0) {\r
194 cursor.toParent();\r
195 cursor.removeXml();\r
196 }\r
a13899c5 197 }\r
198 cursor.dispose();\r
199 }\r
200 /**\r
201 Remove existing GUID declarations using XmlCursor\r
202 **/\r
203 public void removeSpdGuidDeclaration() {\r
204 XmlObject o = psaRoot.getGuidDeclarations();\r
205 if (o == null)\r
206 return;\r
207 XmlCursor cursor = o.newCursor();\r
208 cursor.removeXml();\r
209 spdGuidDeclarations = null; \r
210 cursor.dispose();\r
211 }\r
212 \r
213 public void removeSpdGuidDeclaration(int i) {\r
214 XmlObject o = psaRoot.getGuidDeclarations();\r
215 if (o == null)\r
216 return;\r
217 XmlCursor cursor = o.newCursor();\r
218 if (cursor.toFirstChild()) {\r
219 for (int j = 0; j < i; ++j) {\r
220 cursor.toNextSibling();\r
221 }\r
222 cursor.removeXml();\r
af25df16 223 if (getSpdGuidDeclarationCount() == 0) {\r
224 cursor.toParent();\r
225 cursor.removeXml();\r
226 }\r
a13899c5 227 } \r
228 cursor.dispose();\r
229 }\r
230\r
231 /**\r
232 Remove existing spd package include files using XmlCursor\r
233 **/\r
234 public void removeSpdPkgHeader() {\r
235 XmlObject o = psaRoot.getPackageHeaders();\r
236 if (o == null)\r
237 return;\r
238 XmlCursor cursor = o.newCursor();\r
239 cursor.removeXml();\r
240 spdModHdrs = null;\r
241 cursor.dispose();\r
242 }\r
243 \r
244 public void removeSpdPkgHeader(int i){\r
245 XmlObject o = psaRoot.getPackageHeaders();\r
246 if (o == null)\r
247 return;\r
248 XmlCursor cursor = o.newCursor();\r
249 if (cursor.toFirstChild()) {\r
250 for (int j = 0; j < i; ++j) {\r
251 cursor.toNextSibling();\r
252 }\r
253 cursor.removeXml();\r
af25df16 254 if (getSpdPackageHeaderCount() == 0) {\r
255 cursor.toParent();\r
256 cursor.removeXml();\r
257 }\r
a13899c5 258 } \r
259 cursor.dispose();\r
260 }\r
261\r
262 /**\r
263 Remove existing msa files using XmlCursor\r
264 **/\r
265 public void removeSpdMsaFile() {\r
266 XmlObject o = psaRoot.getMsaFiles();\r
267 if (o == null)\r
268 return;\r
269 XmlCursor cursor = o.newCursor();\r
270 cursor.removeXml();\r
271 spdMsaFiles = null;\r
272 cursor.dispose();\r
273 }\r
274 \r
275 public void removeSpdMsaFile(int i){\r
276 XmlObject o = psaRoot.getMsaFiles();\r
277 if (o == null)\r
278 return;\r
279 XmlCursor cursor = o.newCursor();\r
280 if (cursor.toFirstChild()) {\r
281 for (int j = 0; j < i; ++j) {\r
282 cursor.toNextSibling();\r
283 }\r
284 cursor.removeXml();\r
af25df16 285 if (getSpdMsaFileCount() == 0) {\r
286 cursor.toParent();\r
287 cursor.removeXml();\r
288 }\r
a13899c5 289 }\r
290 cursor.dispose();\r
291 }\r
292\r
293 /**\r
294 Remove existing library class declarations using XmlCursor\r
295 **/\r
296 public void removeSpdLibClass() {\r
297 XmlObject o = psaRoot.getLibraryClassDeclarations();\r
298 if (o == null)\r
299 return;\r
300 XmlCursor cursor = o.newCursor();\r
301 cursor.removeXml();\r
302 spdLibClassDeclarations = null;\r
303 cursor.dispose();\r
304 }\r
305 \r
306 public void removeSpdLibClass(int i) {\r
307 XmlObject o = psaRoot.getLibraryClassDeclarations();\r
308 if (o == null)\r
309 return;\r
310 XmlCursor cursor = o.newCursor();\r
311 if (cursor.toFirstChild()) {\r
312 for (int j = 0; j < i; ++j) {\r
313 cursor.toNextSibling();\r
314 }\r
315 cursor.removeXml();\r
af25df16 316 if (getSpdLibClassDeclarationCount() == 0) {\r
317 cursor.toParent();\r
318 cursor.removeXml();\r
319 }\r
a13899c5 320 }\r
321 cursor.dispose();\r
322 }\r
323 \r
324 public void updateSpdLibClass(int i, String lib, String hdr, String hlp, String clsUsage, String instanceVer, String hdrAttribArch, String hdrAttribModType) {\r
325 XmlObject o = psaRoot.getLibraryClassDeclarations();\r
326 if (o == null)\r
327 return;\r
328 \r
329 XmlCursor cursor = o.newCursor();\r
330 if (cursor.toFirstChild()) {\r
331 for (int j = 0; j < i; ++j) {\r
332 cursor.toNextSibling();\r
333 }\r
334 LibraryClassDeclarationsDocument.LibraryClassDeclarations.LibraryClass lc = (LibraryClassDeclarationsDocument.LibraryClassDeclarations.LibraryClass)cursor.getObject();\r
335 lc.setName(lib);\r
336 lc.setIncludeHeader(hdr);\r
337 lc.setHelpText(hlp);\r
338 if (clsUsage != null) {\r
97796eaa 339 lc.setRecommendedInstanceGuid(clsUsage);\r
340 if (instanceVer != null){\r
a13899c5 341 lc.setRecommendedInstanceVersion(instanceVer);\r
97796eaa 342 } else {\r
322b7723 343 if (lc.isSetRecommendedInstanceVersion()) {\r
344 lc.unsetRecommendedInstanceVersion();\r
345 }\r
97796eaa 346 }\r
347 } else {\r
322b7723 348 if (lc.isSetRecommendedInstanceGuid()) {\r
349 lc.unsetRecommendedInstanceGuid();\r
350 }\r
d129bd96 351 if (lc.isSetRecommendedInstanceVersion()) {\r
352 lc.unsetRecommendedInstanceVersion();\r
353 }\r
a13899c5 354 }\r
97796eaa 355\r
a13899c5 356 if (stringToList(hdrAttribArch) != null){\r
97796eaa 357 lc.setSupArchList(stringToList(hdrAttribArch));\r
358 } else {\r
322b7723 359 if (lc.isSetSupArchList()) {\r
360 lc.unsetSupArchList();\r
361 }\r
a13899c5 362 }\r
363 if (stringToList(hdrAttribModType) != null){\r
97796eaa 364 lc.setSupModuleList(stringToList(hdrAttribModType));\r
365 } else {\r
322b7723 366 if (lc.isSetSupModuleList()) {\r
367 lc.unsetSupModuleList();\r
368 }\r
a13899c5 369 }\r
370 }\r
371 \r
372 cursor.dispose();\r
373 }\r
374 \r
375 public void updateSpdMsaFile(int i, String msaFile, String mName, String v, String g){\r
376 XmlObject o = psaRoot.getMsaFiles();\r
377 if (o == null)\r
378 return;\r
379 \r
380 XmlCursor cursor = o.newCursor();\r
381 if (cursor.toFirstChild()) {\r
382 for (int j = 0; j < i; ++j) {\r
383 cursor.toNextSibling();\r
384 }\r
385 cursor.setTextValue(msaFile);\r
386\r
387 }\r
388 \r
389 cursor.dispose();\r
390 }\r
391\r
392 public void updateSpdGuidDecl(int i, String name, String cName, String guid, String hlp, String archList, \r
393 String modTypeList, String guidTypeList){\r
394 XmlObject o = psaRoot.getGuidDeclarations();\r
395 if (o == null){\r
396 return;\r
397 }\r
398 \r
399 XmlCursor cursor = o.newCursor();\r
400 if (cursor.toFirstChild()) {\r
401 for (int j = 0; j < i; ++j) {\r
402 cursor.toNextSibling();\r
403 }\r
404 GuidDeclarationsDocument.GuidDeclarations.Entry e = (GuidDeclarationsDocument.GuidDeclarations.Entry)cursor.getObject();\r
405 e.setName(name);\r
406 e.setCName(cName);\r
407 e.setGuidValue(guid);\r
408 e.setHelpText(hlp);\r
ce73a791 409 if (stringToList(guidTypeList) != null) {\r
322b7723 410 e.setGuidTypeList(stringToList(guidTypeList));\r
a13899c5 411 }\r
ce73a791 412 else{\r
322b7723 413 if (e.isSetGuidTypeList()) {\r
97796eaa 414 e.unsetGuidTypeList();\r
322b7723 415 }\r
ce73a791 416 }\r
a13899c5 417 if (stringToList(archList) != null){\r
418 e.setSupArchList(stringToList(archList));\r
419 }\r
ce73a791 420 else{\r
322b7723 421 if (e.isSetSupArchList()) {\r
97796eaa 422 e.unsetSupArchList();\r
322b7723 423 }\r
ce73a791 424 }\r
a13899c5 425 if (stringToList(modTypeList) != null) {\r
426 e.setSupModuleList(stringToList(modTypeList));\r
427 }\r
ce73a791 428 else{\r
322b7723 429 if (e.isSetSupModuleList()) {\r
97796eaa 430 e.unsetSupModuleList();\r
322b7723 431 }\r
ce73a791 432 }\r
a13899c5 433 \r
434 }\r
435 cursor.dispose();\r
436 }\r
437 \r
438 public void updateSpdPpiDecl(int i, String name, String cName, String guid, String hlp, String archList, \r
1be13d3f 439 String modTypeList, String guidTypeList){\r
a13899c5 440 XmlObject o = psaRoot.getPpiDeclarations();\r
441 if (o == null){\r
442 return;\r
443 }\r
444 \r
445 XmlCursor cursor = o.newCursor();\r
446 if (cursor.toFirstChild()) {\r
447 for (int j = 0; j < i; ++j) {\r
448 cursor.toNextSibling();\r
449 }\r
450 PpiDeclarationsDocument.PpiDeclarations.Entry e = (PpiDeclarationsDocument.PpiDeclarations.Entry)cursor.getObject();\r
451 e.setName(name);\r
452 e.setCName(cName);\r
453 e.setGuidValue(guid);\r
454 e.setHelpText(hlp);\r
1be13d3f 455 if (stringToList(guidTypeList) != null) {\r
456 e.setGuidTypeList(stringToList(guidTypeList));\r
457 }\r
458 else{\r
459 if (e.isSetGuidTypeList()) {\r
460 e.unsetGuidTypeList();\r
461 }\r
462 }\r
a13899c5 463 if (stringToList(archList) != null){\r
464 e.setSupArchList(stringToList(archList));\r
465 }\r
ce73a791 466 else{\r
322b7723 467 if (e.isSetSupArchList()) {\r
97796eaa 468 e.unsetSupArchList();\r
322b7723 469 }\r
ce73a791 470 }\r
a13899c5 471 if (stringToList(modTypeList) != null) {\r
472 e.setSupModuleList(stringToList(modTypeList));\r
473 }\r
ce73a791 474 else{\r
322b7723 475 if (e.isSetSupModuleList()) {\r
97796eaa 476 e.unsetSupModuleList();\r
322b7723 477 }\r
ce73a791 478 }\r
a13899c5 479 }\r
480 cursor.dispose();\r
481 }\r
482 \r
483 public void updateSpdProtocolDecl(int i, String name, String cName, String guid, String hlp, String archList, \r
1be13d3f 484 String modTypeList, String guidTypeList){\r
a13899c5 485 XmlObject o = psaRoot.getProtocolDeclarations();\r
486 if (o == null){\r
487 return;\r
488 }\r
489 \r
490 XmlCursor cursor = o.newCursor();\r
491 if (cursor.toFirstChild()) {\r
492 for (int j = 0; j < i; ++j) {\r
493 cursor.toNextSibling();\r
494 }\r
495 ProtocolDeclarationsDocument.ProtocolDeclarations.Entry e = (ProtocolDeclarationsDocument.ProtocolDeclarations.Entry)cursor.getObject();\r
496 e.setName(name);\r
497 e.setCName(cName);\r
498 e.setGuidValue(guid);\r
499 e.setHelpText(hlp);\r
1be13d3f 500 if (stringToList(guidTypeList) != null) {\r
501 e.setGuidTypeList(stringToList(guidTypeList));\r
502 }\r
503 else{\r
504 if (e.isSetGuidTypeList()) {\r
505 e.unsetGuidTypeList();\r
506 }\r
507 }\r
a13899c5 508 if (stringToList(archList) != null){\r
509 e.setSupArchList(stringToList(archList));\r
510 }\r
ce73a791 511 else{\r
322b7723 512 if (e.isSetSupArchList()) {\r
97796eaa 513 e.unsetSupArchList();\r
322b7723 514 }\r
ce73a791 515 }\r
a13899c5 516 if (stringToList(modTypeList) != null) {\r
517 e.setSupModuleList(stringToList(modTypeList));\r
518 }\r
ce73a791 519 else{\r
322b7723 520 if (e.isSetSupModuleList()) {\r
97796eaa 521 e.unsetSupModuleList();\r
322b7723 522 }\r
ce73a791 523 }\r
a13899c5 524 }\r
525 cursor.dispose();\r
526 }\r
527 \r
528 public void updateSpdPkgHdr(int i, String pkgName, String hdrName){\r
529 XmlObject o = psaRoot.getPackageHeaders();\r
530 if (o == null){\r
531 return;\r
532 }\r
533 \r
534 XmlCursor cursor = o.newCursor();\r
535 if (cursor.toFirstChild()) {\r
536 for (int j = 0; j < i; ++j) {\r
537 cursor.toNextSibling();\r
538 }\r
539 \r
540 PackageHeadersDocument.PackageHeaders.IncludePkgHeader iph = (PackageHeadersDocument.PackageHeaders.IncludePkgHeader)cursor.getObject();\r
541 iph.setModuleType(ModuleTypeDef.Enum.forString(pkgName));\r
542 iph.setStringValue(hdrName);\r
543 }\r
544 cursor.dispose();\r
545 }\r
546 \r
547 public void updateSpdPcdDefinition(int i, String cName, String token, String dataType, String pcdItemTypes, \r
548 String spaceGuid, String defaultString, String help, String archList, String modTypeList){\r
549 XmlObject o = psaRoot.getPcdDeclarations();\r
550 if (o == null)\r
551 return;\r
552 XmlCursor cursor = o.newCursor();\r
553 if (cursor.toFirstChild()) {\r
554 for (int j = 0; j < i; ++j) {\r
555 cursor.toNextSibling();\r
556 }\r
557 PcdDeclarationsDocument.PcdDeclarations.PcdEntry e = (PcdDeclarationsDocument.PcdDeclarations.PcdEntry)cursor.getObject();\r
558 e.setCName(cName);\r
559 e.setToken(token);\r
560 e.setDatumType(PcdDataTypes.Enum.forString(dataType));\r
561 if (pcdItemTypes != null && pcdItemTypes.length() > 0) {\r
562 String usage[] = pcdItemTypes.split("( )+");\r
563 List<String> l = new ArrayList<String>();\r
564 for (int k = 0; k < usage.length; ++k) {\r
565 l.add(usage[k]); \r
566 }\r
567 e.setValidUsage(l);\r
568 }\r
569 \r
570 e.setTokenSpaceGuidCName(spaceGuid);\r
571 e.setDefaultValue(defaultString);\r
572 e.setHelpText(help);\r
209abc92 573 if (stringToList(archList) != null){\r
a13899c5 574 e.setSupArchList(stringToList(archList));\r
575 }\r
209abc92 576 else{\r
577 if (e.isSetSupArchList()) {\r
578 e.unsetSupArchList();\r
579 }\r
580 }\r
581 if (stringToList(modTypeList) != null) {\r
a13899c5 582 e.setSupModuleList(stringToList(modTypeList));\r
583 }\r
209abc92 584 else{\r
585 if (e.isSetSupModuleList()) {\r
586 e.unsetSupModuleList();\r
587 }\r
588 }\r
589 \r
a13899c5 590 } \r
591 cursor.dispose();\r
592 }\r
593 /**\r
594 Get spd file header contents into String array\r
595 \r
596 @param s Caller allocated String array\r
597 **/\r
598 public void getSpdHdrDetails(String[] s) {\r
599 if (getSpdHdr() == null) {\r
600 spdHdr = psaRoot.addNewSpdHeader();\r
601 }\r
602 s[0] = getSpdHdrPkgName();\r
603 s[1] = getSpdHdr().getGuidValue();\r
604 s[2] = getSpdHdrVer();\r
605// s[3] = getSpdHdr().getAbstract();\r
606 s[4] = getSpdHdr().getDescription();\r
607 s[5] = getSpdHdr().getCopyright();\r
608 s[6] = getSpdHdrLicense();\r
609 \r
610 }\r
611\r
612 /**\r
613 Get the number of library class declarations from the size of List\r
614 \r
615 @return int\r
616 **/\r
617 public int getSpdLibClassDeclarationCount() {\r
618 if (psaRoot.getLibraryClassDeclarations() == null\r
619 || psaRoot.getLibraryClassDeclarations().getLibraryClassList() == null) {\r
620 return 0;\r
621 }\r
622 return psaRoot.getLibraryClassDeclarations().getLibraryClassList().size();\r
623 }\r
624\r
625 /**\r
626 Get available library class declaration into String array\r
627 @param libClass Caller allocated two-dimentional String array\r
628 **/\r
629 public void getSpdLibClassDeclarations(String[][] libClass) {\r
630 if (psaRoot.getLibraryClassDeclarations() == null){\r
631 return;\r
632 }\r
633 \r
634 List<LibraryClassDeclarationsDocument.LibraryClassDeclarations.LibraryClass> l = psaRoot.getLibraryClassDeclarations().getLibraryClassList();\r
635 int i = 0;\r
636 ListIterator li = l.listIterator();\r
637 while (li.hasNext()) {\r
638 LibraryClassDeclarationsDocument.LibraryClassDeclarations.LibraryClass lc = (LibraryClassDeclarationsDocument.LibraryClassDeclarations.LibraryClass) li.next();\r
639 if (lc != null) {\r
640 libClass[i][0] = lc.getName();\r
641 libClass[i][1] = lc.getIncludeHeader();\r
642 libClass[i][2] = lc.getHelpText();\r
2f8a7517 643// LAH added logic so you cannot set the version unless the GUID is defined.\r
97796eaa 644/* LAH do not set now\r
2f8a7517 645 if (lc.getRecommendedInstanceGuid() != null) {\r
646 libClass[i][3] = lc.getRecommendedInstanceGuid();\r
647 if (lc.getRecommendedInstanceVersion() != null) {\r
648 libClass[i][4] = lc.getRecommendedInstanceVersion();\r
649 }\r
650 }\r
97796eaa 651*/\r
a13899c5 652 if (lc.getSupArchList() != null) {\r
653 libClass[i][5] = listToString(lc.getSupArchList());\r
654 }\r
655 if (lc.getSupModuleList() != null) {\r
656 libClass[i][6] = listToString(lc.getSupModuleList());\r
657 }\r
658 \r
659 }\r
660 \r
661 i++;\r
662 }\r
663\r
664 }\r
665 \r
666 /**\r
667 Get the number of Msa files from the size of List\r
668 \r
669 @return int\r
670 **/\r
671 public int getSpdMsaFileCount() {\r
672 if (psaRoot.getMsaFiles() == null || psaRoot.getMsaFiles().getFilenameList() == null) {\r
673 return 0;\r
674 }\r
675 return psaRoot.getMsaFiles().getFilenameList().size();\r
676 }\r
677 \r
678 /**\r
679 Get available Msa file into String array\r
680 \r
681 @param msaFile Caller allocated two-dimentional String array\r
682 **/\r
683 public void getSpdMsaFiles(String[][] msaFile) {\r
684 if (psaRoot.getMsaFiles() == null) {\r
685 return;\r
686 }\r
687 List<String> l = psaRoot.getMsaFiles().getFilenameList();\r
688 int i = 0;\r
689 ListIterator li = l.listIterator();\r
690 while (li.hasNext()) {\r
691 msaFile[i][0] = (String)li.next();\r
692\r
693 i++;\r
694 }\r
695 }\r
696\r
697 /**\r
698 Get the number of include header files in PackageHeaders from the size of List\r
699 \r
700 @return int\r
701 **/\r
702 public int getSpdPackageHeaderCount() {\r
703 if (psaRoot.getPackageHeaders() == null || psaRoot.getPackageHeaders().getIncludePkgHeaderList() == null) {\r
704 return 0;\r
705 }\r
706 return psaRoot.getPackageHeaders().getIncludePkgHeaderList().size();\r
707 }\r
708\r
709 /**\r
710 Get available package header contents into String array\r
711 \r
712 @param pkgHeader Caller allocated two-dimentional String array\r
713 **/\r
714 public void getSpdPackageHeaders(String[][] pkgHeader) {\r
715 if (psaRoot.getPackageHeaders() == null) {\r
716 return;\r
717 }\r
718 \r
719 List<PackageHeadersDocument.PackageHeaders.IncludePkgHeader> l = psaRoot.getPackageHeaders().getIncludePkgHeaderList();\r
720 int i = 0;\r
721 ListIterator li = l.listIterator();\r
722 while (li.hasNext()) {\r
723 PackageHeadersDocument.PackageHeaders.IncludePkgHeader ih = (PackageHeadersDocument.PackageHeaders.IncludePkgHeader) li.next();\r
724 if (ih.getModuleType() != null) {\r
725 pkgHeader[i][0] = ih.getModuleType().toString();\r
726 }\r
727\r
728 pkgHeader[i][1] = ih.getStringValue();\r
729 i++;\r
730 }\r
731 }\r
732\r
733 /**\r
734 Get the number of GUID declarations from the size of List\r
735 \r
736 @return int\r
737 **/\r
738 public int getSpdGuidDeclarationCount() {\r
739 if (psaRoot.getGuidDeclarations() == null || psaRoot.getGuidDeclarations().getEntryList() == null) {\r
740 return 0;\r
741 }\r
742 return psaRoot.getGuidDeclarations().getEntryList().size();\r
743 }\r
744\r
745 /**\r
746 Get available Guid declaration contents into String array\r
747 \r
748 @param guid Caller allocated two-dimentional String array\r
749 **/\r
750 public void getSpdGuidDeclarations(String[][] guid) {\r
751 if (psaRoot.getGuidDeclarations() == null) {\r
752 return;\r
753 }\r
754 \r
755 List<GuidDeclarationsDocument.GuidDeclarations.Entry> l = psaRoot.getGuidDeclarations().getEntryList();\r
756 int i = 0;\r
757 ListIterator li = l.listIterator();\r
758 while (li.hasNext()) {\r
759 GuidDeclarationsDocument.GuidDeclarations.Entry e = (GuidDeclarationsDocument.GuidDeclarations.Entry) li\r
760 .next();\r
761 guid[i][0] = e.getName();\r
762 guid[i][1] = e.getCName();\r
763 if (e.getGuidValue() != null) {\r
764 guid[i][2] = e.getGuidValue();\r
765 }\r
766 guid[i][3] = e.getHelpText();\r
767 guid[i][4] = listToString(e.getSupArchList());\r
768 guid[i][5] = listToString(e.getSupModuleList());\r
769 guid[i][6] = listToString(e.getGuidTypeList());\r
770 i++;\r
771 }\r
772 }\r
773\r
774 /**\r
775 Get the number of protocol declarations from the size of List\r
776 \r
777 @return int\r
778 **/\r
779 public int getSpdProtocolDeclarationCount() {\r
780 if (psaRoot.getProtocolDeclarations() == null || psaRoot.getProtocolDeclarations().getEntryList() == null) {\r
781 return 0;\r
782 }\r
783 return psaRoot.getProtocolDeclarations().getEntryList().size();\r
784 }\r
785\r
786 /**\r
787 Get available protocol declaration contents into String array\r
788 \r
789 @param protocol Caller allocated two-dimentional String array\r
790 **/\r
791 public void getSpdProtocolDeclarations(String[][] protocol) {\r
792 if (psaRoot.getProtocolDeclarations() == null) {\r
793 return;\r
794 }\r
795 \r
796 List<ProtocolDeclarationsDocument.ProtocolDeclarations.Entry> l = psaRoot.getProtocolDeclarations()\r
797 .getEntryList();\r
798 int i = 0;\r
799 ListIterator li = l.listIterator();\r
800 while (li.hasNext()) {\r
801 ProtocolDeclarationsDocument.ProtocolDeclarations.Entry e = (ProtocolDeclarationsDocument.ProtocolDeclarations.Entry) li\r
802 .next();\r
803 protocol[i][0] = e.getName();\r
804 protocol[i][1] = e.getCName();\r
805 if (e.getGuidValue() != null) {\r
806 protocol[i][2] = e.getGuidValue();\r
807 }\r
808 protocol[i][3] = e.getHelpText();\r
809 protocol[i][4] = listToString(e.getSupArchList());\r
810 protocol[i][5] = listToString(e.getSupModuleList());\r
1be13d3f 811 protocol[i][6] = listToString(e.getGuidTypeList());\r
a13899c5 812 i++;\r
813 }\r
814 }\r
815\r
816 /**\r
817 Get the number of Ppi declarations from the size of List\r
818 \r
819 @return int\r
820 **/\r
821 public int getSpdPpiDeclarationCount() {\r
822 if (psaRoot.getPpiDeclarations() == null || psaRoot.getPpiDeclarations().getEntryList() == null) {\r
823 return 0;\r
824 }\r
825 return psaRoot.getPpiDeclarations().getEntryList().size();\r
826 }\r
827\r
828 /**\r
829 Get available Ppi declaration contents into String array\r
830 \r
831 @param ppi Caller allocated two-dimentional String array\r
832 **/\r
833 public void getSpdPpiDeclarations(String[][] ppi) {\r
834 if (psaRoot.getPpiDeclarations() == null) {\r
835 return;\r
836 }\r
837 \r
838 List<PpiDeclarationsDocument.PpiDeclarations.Entry> l = psaRoot.getPpiDeclarations().getEntryList();\r
839 int i = 0;\r
840 ListIterator li = l.listIterator();\r
841 while (li.hasNext()) {\r
842 PpiDeclarationsDocument.PpiDeclarations.Entry e = (PpiDeclarationsDocument.PpiDeclarations.Entry) li.next();\r
843 ppi[i][0] = e.getName();\r
844 ppi[i][1] = e.getCName();\r
845 if (e.getGuidValue() != null) {\r
846 ppi[i][2] = e.getGuidValue();\r
847 }\r
848 ppi[i][3] = e.getHelpText();\r
849 ppi[i][4] = listToString(e.getSupArchList());\r
850 ppi[i][5] = listToString(e.getSupModuleList());\r
1be13d3f 851 ppi[i][6] = listToString(e.getGuidTypeList());\r
a13899c5 852 i++;\r
853 }\r
854 }\r
855\r
856 /**\r
857 Get the number of Pcd definitions from the size of List\r
858 \r
859 @return int\r
860 **/\r
861 public int getSpdPcdDefinitionCount() {\r
862 if (psaRoot.getPcdDeclarations() == null || psaRoot.getPcdDeclarations().getPcdEntryList() == null) {\r
863 return 0;\r
864 }\r
865 return psaRoot.getPcdDeclarations().getPcdEntryList().size();\r
866 }\r
867\r
868 /**\r
869 Get available Pcd definition contents into String array\r
870 \r
871 @param pcd Caller allocated two-dimentional String array\r
872 **/\r
873 public void getSpdPcdDefinitions(String[][] pcd, String pcdUsage[][]) {\r
874 if (psaRoot.getPcdDeclarations() == null) {\r
875 return;\r
876 }\r
877 \r
878 List<PcdDeclarationsDocument.PcdDeclarations.PcdEntry> l = psaRoot.getPcdDeclarations().getPcdEntryList();\r
879 int i = 0;\r
880 while (i < l.size()) {\r
881 PcdDeclarationsDocument.PcdDeclarations.PcdEntry e = (PcdDeclarationsDocument.PcdDeclarations.PcdEntry)l.get(i);\r
882 pcd[i][0] = e.getCName();\r
883 pcd[i][1] = e.getToken() + ""; \r
884 pcd[i][2] = e.getTokenSpaceGuidCName();\r
885 if (e.getDatumType() != null) {\r
886 pcd[i][3] = e.getDatumType().toString();\r
887 }\r
888 pcd[i][4] = e.getDefaultValue()+"";\r
889 pcd[i][5] = e.getHelpText();\r
890 String archList = listToString(e.getSupArchList());\r
891 if (archList != null) {\r
892 pcd[i][6] = archList;\r
893 }\r
894 String modTypeList = listToString(e.getSupModuleList());\r
895 if (modTypeList != null) {\r
896 pcd[i][7] = modTypeList;\r
897 }\r
898 \r
899 int j = 0;\r
900 while (j < e.getValidUsage().size() && j < 5) {\r
901 pcdUsage[i][j] = (String)e.getValidUsage().get(j);\r
902 ++j;\r
903 }\r
904 i++;\r
905 }\r
906 }\r
907\r
908 /**\r
909 Save the processed xml contents to file\r
910 \r
911 @param spdFile The file to save xml contents\r
912 @throws IOException Exceptions during file operation\r
913 **/\r
914 public void saveAs(File spdFile) throws IOException {\r
915\r
916 XmlOptions options = new XmlOptions();\r
917\r
918 options.setCharacterEncoding("UTF-8");\r
919 options.setSavePrettyPrint();\r
920 options.setSavePrettyPrintIndent(2);\r
921 try {\r
922 psad.save(spdFile, options);\r
923 } catch (IOException e) {\r
924 e.printStackTrace();\r
925 }\r
926\r
927 }\r
928\r
929 /**\r
930 Generate SpdHeader contents using parameters passed in.\r
931 \r
932 @param pkgName PackageName \r
933 @param pkgGuid Guid\r
934 @param pkgVer Version\r
935 @param pkgAbs Abstract\r
936 @param pkgDes Description\r
937 @param pkgCpRight Copyright\r
938 @param pkgLicense License\r
939 @param pkgCreateDate Created\r
940 @param pkgUpdateDate Updated\r
941 @param pkgURL URL\r
942 @param pkgType PackageType\r
943 @param pkgRdOnly ReadOnly\r
944 @param pkgRePkg RePackage\r
945 @param pkgSpec Reserved\r
946 @param pkgOutDir Reserved\r
947 **/\r
948 public void genSpdHeader(String pkgName, String pkgGuid, String pkgVer, String pkgAbs, String pkgDes,\r
949 String pkgCpRight, String pkgLicense, String pkgCreateDate, String pkgUpdateDate,\r
950 String pkgURL, String pkgType, String pkgRdOnly, String pkgRePkg, String pkgSpec,\r
951 String pkgOutDir) {\r
952 if (getSpdHdr() == null) {\r
953 spdHdr = psaRoot.addNewSpdHeader();\r
954 }\r
955\r
956 setSpdHdrPkgName(pkgName);\r
957 setSpdHdrGuidValue(pkgGuid);\r
958 setSpdHdrVer(pkgVer);\r
959 setSpdHdrAbs(pkgAbs);\r
960 setSpdHdrDescription(pkgDes);\r
961 setSpdHdrCopyright(pkgCpRight);\r
962 setSpdHdrLicense(pkgLicense);\r
963 \r
964\r
965 setSpdHdrSpec(pkgSpec);\r
966 }\r
967\r
968 /**\r
969 Generate library class declaration element using parameters passed in\r
970 \r
971 @param libClassBaseName LibraryClass element value\r
972 @param libClassUsage Reserved\r
973 @param incHdrFileName IncludeHeader element value\r
974 @param incHdrAttribGuid Reserved\r
975 @param incHdrAttribArch Reserved\r
976 @param incHdrAttribPath Reserved\r
977 @param incHdrAttribClass Reserved\r
978 @param incHdrAttribVer Reserved\r
979 @param incHdrAttribOverrideID Reserved\r
980 @param incHdrAttribModuleType Reserved\r
981 **/\r
982 public void genSpdLibClassDeclarations(String libClassBaseName, String instanceUsage, String incHdrFileName,\r
983 String help, String incHdrAttribArch, String incHdrAttribPath,\r
984 String incHdrAttribClass, String incHdrAttribVer,\r
985 String incHdrAttribOverrideID, String incHdrAttribModuleType) {\r
986 if (getSpdLibClassDeclarations() == null) {\r
987 spdLibClassDeclarations = psaRoot.addNewLibraryClassDeclarations();\r
988 }\r
989 //\r
990 // add contents under LibraryClassDeclarations tag \r
991 //\r
992 setSpdLibClassDeclaration(libClassBaseName, instanceUsage, incHdrFileName, help, incHdrAttribArch,\r
993 incHdrAttribPath, incHdrAttribClass, incHdrAttribVer, incHdrAttribOverrideID,\r
994 incHdrAttribModuleType, spdLibClassDeclarations);\r
995 }\r
996\r
997 /**\r
998 Set library class declaration contents under parent tag\r
999 \r
1000 @param clsName LibraryClass element value\r
1001 @param clsUsage Reserved\r
1002 @param hdrFile IncludeHeader element value\r
1003 @param hdrAttribGuid Reserved\r
1004 @param hdrAttribArch Reserved\r
1005 @param hdrAttribPath Reserved\r
1006 @param hdrAttribClass Reserved\r
1007 @param hdrAttribVer Reserved\r
1008 @param hdrAttribOverID Reserved\r
1009 @param hdrAttribModType Reserved\r
1010 @param parent The tag under which library class declaration goes to\r
1011 **/\r
1012 public void setSpdLibClassDeclaration(String clsName, String clsUsage, String hdrFile, String help,\r
1013 String hdrAttribArch, String hdrAttribPath, String hdrAttribClass,\r
1014 String instanceVer, String hdrAttribOverID, String hdrAttribModType,\r
1015 XmlObject parent) {\r
1016\r
1017 setSpdLibraryClass(clsName, hdrFile, help, clsUsage, instanceVer, hdrAttribArch, hdrAttribModType, parent);\r
1018\r
1019 }\r
1020\r
1021 /**\r
1022 Set the contents of LibraryClass under parent element\r
1023 \r
1024 @param clsName LibraryClass element value \r
1025 @param clsUsage Reserved\r
1026 @param parent The tag under which library class declaration goes to\r
1027 **/\r
1028 public void setSpdLibraryClass(String clsName, String clsIncludeFile, String help, String clsUsage, String instanceVer, String hdrAttribArch, String hdrAttribModType, XmlObject parent) {\r
1029 LibraryClassDeclarationsDocument.LibraryClassDeclarations.LibraryClass lc = ((LibraryClassDeclarationsDocument.LibraryClassDeclarations) parent).addNewLibraryClass();\r
1030 lc.setName(clsName);\r
1031 lc.setIncludeHeader(clsIncludeFile);\r
1032 lc.setHelpText(help);\r
2f8a7517 1033// LAH added logic so you cannot set the version unless the GUID is defined.\r
d129bd96 1034\r
2f8a7517 1035 if (clsUsage != null) {\r
1036 lc.setRecommendedInstanceGuid(clsUsage);\r
1037 if (instanceVer != null) {\r
1038 lc.setRecommendedInstanceVersion(instanceVer);\r
1039 }\r
1040 }\r
d129bd96 1041 else {\r
1042 if (lc.isSetRecommendedInstanceGuid()) {\r
1043 lc.unsetRecommendedInstanceGuid();\r
1044 }\r
1045 if (lc.isSetRecommendedInstanceVersion()) {\r
1046 lc.unsetRecommendedInstanceVersion();\r
1047 }\r
1048 }\r
1049\r
a13899c5 1050 if (hdrAttribArch != null) {\r
1051 lc.setSupArchList(stringToList(hdrAttribArch));\r
322b7723 1052 } else {\r
1053 if (lc.isSetSupArchList()) {\r
1054 lc.unsetSupArchList();\r
1055 }\r
a13899c5 1056 }\r
322b7723 1057\r
a13899c5 1058 if (hdrAttribModType != null) {\r
97796eaa 1059 lc.setSupModuleList(stringToList(hdrAttribModType));\r
1060 } else {\r
322b7723 1061 if (lc.isSetSupModuleList()) {\r
1062 lc.unsetSupModuleList();\r
1063 }\r
a13899c5 1064 }\r
1065 \r
1066 }\r
1067\r
1068 /**\r
1069 Set contents of IncludeHeader under parent element\r
1070 \r
1071 @param modType Reserved\r
1072 @param hdrFile IncludeHeader element value\r
1073 @param hdrAttribGuid Reserved\r
1074 @param hdrAttribArch Reserved\r
1075 @param hdrAttribPath Reserved\r
1076 @param hdrAttribClass Reserved\r
1077 @param hdrAttribVer Reserved\r
1078 @param hdrAttribOverID Reserved\r
1079 @param parent The tag under which library class declaration goes to\r
1080 **/\r
1081 public void setSpdIncludeHeader(String modType, String hdrFile, String hdrAttribGuid, String hdrAttribArch,\r
1082 String hdrAttribPath, String hdrAttribClass, String hdrAttribVer,\r
1083 String hdrAttribOverID, XmlObject parent) {\r
1084 \r
1085 if (parent instanceof LibraryClassDeclarationsDocument.LibraryClassDeclarations) {\r
1086 } else if (parent instanceof PackageHeadersDocument.PackageHeaders) {\r
1087 PackageHeadersDocument.PackageHeaders.IncludePkgHeader ih = null;\r
1088 ih = ((PackageHeadersDocument.PackageHeaders) parent).addNewIncludePkgHeader();\r
1089 ih.setStringValue(hdrFile);\r
1090 ih.setModuleType(ModuleTypeDef.Enum.forString(modType));\r
1091 } else {\r
1092 return;\r
1093 }\r
1094\r
1095 if (hdrAttribGuid != null) {\r
1096 }\r
1097 if (hdrAttribPath != null) {\r
1098 }\r
1099 if (hdrAttribClass != null) {\r
1100 }\r
1101 if (hdrAttribVer != null) {\r
1102 }\r
1103 if (hdrAttribOverID != null) {\r
1104 }\r
1105\r
1106 }\r
1107\r
1108 /**\r
1109 Generate MsaFile element.\r
1110 \r
1111 @param msaFileName MsaFile element value\r
1112 @param archType Reserved\r
1113 **/\r
1114 public void genSpdMsaFiles(String msaFileName, String moduleName, String ver, String guid) {\r
1115 if (getSpdMsaFiles() == null) {\r
1116 spdMsaFiles = psaRoot.addNewMsaFiles();\r
1117 }\r
1118 setSpdMsaFile(msaFileName, moduleName, ver, guid, spdMsaFiles);\r
1119 \r
1120 }\r
1121\r
1122 /**\r
1123 Set MsaFile contents under parent element.\r
1124 \r
1125 @param msaFileName MsaFile element value\r
1126 @param parent Element under which MsaFile goes to\r
1127 **/\r
1128 public void setSpdMsaFile(String msaFileName, String moduleName, String ver, String guid, XmlObject parent) {\r
1129 MsaFilesDocument.MsaFiles f = (MsaFilesDocument.MsaFiles)parent;\r
1130 f.addNewFilename().setStringValue(msaFileName);\r
1131// f.setFilename(msaFileName);\r
1132// f.setModuleName(moduleName);\r
1133// f.setModuleVersion(ver);\r
1134// f.setModuleGuid(guid);\r
1135 }\r
1136\r
1137 /**\r
1138 Generate PackageHeader element using parameters passed in.\r
1139 \r
1140 @param ModHdrModType ModuleType attribute of IncludeHeader element\r
1141 @param hdrFile IncludeHeader element value\r
1142 @param hdrAttribGuid Reserved\r
1143 @param hdrAttribArch Reserved\r
1144 @param hdrAttribPath Reserved\r
1145 @param hdrAttribClass Reserved\r
1146 @param hdrAttribVer Reserved\r
1147 @param hdrAttribOverID Reserved\r
1148 **/\r
1149 public void genSpdModuleHeaders(String ModHdrModType, String hdrFile, String hdrAttribGuid, String hdrAttribArch,\r
1150 String hdrAttribPath, String hdrAttribClass, String hdrAttribVer,\r
1151 String hdrAttribOverID) {\r
1152 if (getSpdModHdrs() == null) {\r
1153 spdModHdrs = psaRoot.addNewPackageHeaders();\r
1154 }\r
1155\r
1156 //\r
1157 // add IncludeHeader under PackageHeaders element\r
1158 //\r
1159 setSpdIncludeHeader(ModHdrModType, hdrFile, hdrAttribGuid, hdrAttribArch, hdrAttribPath, hdrAttribClass,\r
1160 hdrAttribVer, hdrAttribOverID, spdModHdrs);\r
1161 }\r
1162\r
1163 /**\r
1164 Generate GUID declaration element using parameters passed in.\r
1165 \r
1166 @param guidDeclEntryName Name attribute of Entry element\r
1167 @param guidDeclCName CName element value\r
1168 @param guidDeclGuid Guid element value\r
1169 @param guidDeclFeatureFlag Reserved\r
1170 **/\r
1171 public void genSpdGuidDeclarations(String guidDeclEntryName, String guidDeclCName, String guidDeclGuid,\r
1172 String guidDeclHelp, Vector<String> archList, Vector<String> modTypeList,\r
1173 Vector<String> guidTypeList) {\r
1174 if (getSpdGuidDeclarations() == null) {\r
1175 spdGuidDeclarations = psaRoot.addNewGuidDeclarations();\r
1176 }\r
1177\r
1178 setSpdEntry(guidDeclEntryName, guidDeclCName, guidDeclGuid, guidDeclHelp, archList, modTypeList, guidTypeList, spdGuidDeclarations);\r
1179 }\r
1180\r
1181 /**\r
1182 Generate protocol declaration element using parameters passed in.\r
1183 \r
1184 @param protocolDeclEntryName Name attribute of Entry element\r
1185 @param protocolDeclCName CName element value\r
1186 @param protocolDeclGuid Guid element value\r
1187 @param protocolDeclFeatureFlag Reserved\r
1188 **/\r
1189 public void genSpdProtocolDeclarations(String protocolDeclEntryName, String protocolDeclCName,\r
1190 String protocolDeclGuid, String protocolDeclFeatureFlag,\r
1be13d3f 1191 Vector<String> archList, Vector<String> modTypeList, Vector<String> guidTypeList) {\r
a13899c5 1192 if (getSpdProtocolDeclarations() == null) {\r
1193 spdProtocolDeclarations = psaRoot.addNewProtocolDeclarations();\r
1194 }\r
1195\r
1196 setSpdEntry(protocolDeclEntryName, protocolDeclCName, protocolDeclGuid, protocolDeclFeatureFlag,\r
1be13d3f 1197 archList, modTypeList, guidTypeList, spdProtocolDeclarations);\r
a13899c5 1198 }\r
1199\r
1200 /**\r
1201 Generate PPI declaration element using parameters passed in.\r
1202 \r
1203 @param ppiDeclEntryName Name attribute of Entry element\r
1204 @param ppiDeclCName CName element value\r
1205 @param ppiDeclGuid Guid element value\r
1206 @param ppiDeclFeatureFlag Reserved\r
1207 **/\r
1208 public void genSpdPpiDeclarations(String ppiDeclEntryName, String ppiDeclCName, String ppiDeclGuid,\r
1be13d3f 1209 String ppiDeclFeatureFlag, Vector<String> archList, Vector<String> modTypeList, Vector<String> guidTypeList) {\r
a13899c5 1210 if (getSpdPpiDeclarations() == null) {\r
1211 spdPpiDeclarations = psaRoot.addNewPpiDeclarations();\r
1212 }\r
1213\r
1be13d3f 1214 setSpdEntry(ppiDeclEntryName, ppiDeclCName, ppiDeclGuid, ppiDeclFeatureFlag, archList, modTypeList, guidTypeList, spdPpiDeclarations);\r
a13899c5 1215 }\r
1216\r
1217 /**\r
1218 Set Entry contents using parameters passed in\r
1219 \r
1220 @param entryName Name attribute of Entry element\r
1221 @param cName CName element value\r
1222 @param guid Guid element value\r
1223 @param featureFlag Reserved\r
1224 @param parent The tag under which Entry element goes to\r
1225 **/\r
1226 public void setSpdEntry(String entryName, String cName, String guid, String help, \r
1227 Vector<String> archList, Vector<String> modTypeList,\r
1228 Vector<String> guidTypeList, XmlObject parent) {\r
1229\r
1230 if (parent instanceof GuidDeclarationsDocument.GuidDeclarations) {\r
1231 GuidDeclarationsDocument.GuidDeclarations.Entry e = ((GuidDeclarations) parent).addNewEntry();\r
1232 e.setName(entryName);\r
1233 e.setCName(cName);\r
1234 e.setGuidValue(guid);\r
1235 e.setHelpText(help);\r
2c85fbc8 1236 if (guidTypeList != null) {\r
1237 e.setGuidTypeList(guidTypeList);\r
1238 }\r
1239 else{\r
1240 if (e.isSetGuidTypeList()) {\r
1241 e.unsetGuidTypeList();\r
1242 }\r
1243 }\r
1244 if (archList != null) {\r
1245 e.setSupArchList(archList);\r
1246 }\r
1247 else {\r
1248 if (e.isSetSupArchList()) {\r
1249 e.unsetSupArchList();\r
1250 }\r
1251 }\r
1252 if (modTypeList != null){\r
1253 e.setSupModuleList(modTypeList);\r
1254 }\r
1255 else {\r
1256 if (e.isSetSupModuleList()) {\r
1257 e.unsetSupModuleList();\r
1258 }\r
1259 }\r
1260\r
a13899c5 1261 return;\r
1262 }\r
1263 if (parent instanceof ProtocolDeclarationsDocument.ProtocolDeclarations) {\r
1264 ProtocolDeclarationsDocument.ProtocolDeclarations.Entry pe = ((ProtocolDeclarationsDocument.ProtocolDeclarations) parent)\r
1265 .addNewEntry();\r
1266 pe.setName(entryName);\r
1267 pe.setCName(cName);\r
1268 pe.setGuidValue(guid);\r
1269 pe.setHelpText(help);\r
1be13d3f 1270 if (guidTypeList != null) {\r
1271 pe.setGuidTypeList(guidTypeList);\r
1272 }\r
1273 else{\r
1274 if (pe.isSetGuidTypeList()) {\r
1275 pe.unsetGuidTypeList();\r
1276 }\r
1277 }\r
2c85fbc8 1278 if (archList != null) {\r
1279 pe.setSupArchList(archList);\r
1280 }\r
1281 else {\r
1282 if (pe.isSetSupArchList()) {\r
1283 pe.unsetSupArchList();\r
1284 }\r
1285 }\r
1286 if (modTypeList != null){\r
1287 pe.setSupModuleList(modTypeList);\r
1288 }\r
1289 else {\r
1290 if (pe.isSetSupModuleList()) {\r
1291 pe.unsetSupModuleList();\r
1292 }\r
1293 }\r
1294\r
a13899c5 1295 return;\r
1296 }\r
1297 if (parent instanceof PpiDeclarationsDocument.PpiDeclarations) {\r
1298 PpiDeclarationsDocument.PpiDeclarations.Entry ppe = ((PpiDeclarationsDocument.PpiDeclarations) parent)\r
1299 .addNewEntry();\r
1300 ppe.setName(entryName);\r
1301 ppe.setCName(cName);\r
1302 ppe.setGuidValue(guid);\r
1303 ppe.setHelpText(help);\r
1be13d3f 1304 if (guidTypeList != null) {\r
1305 ppe.setGuidTypeList(guidTypeList);\r
1306 }\r
1307 else{\r
1308 if (ppe.isSetGuidTypeList()) {\r
1309 ppe.unsetGuidTypeList();\r
1310 }\r
1311 }\r
2c85fbc8 1312 if (archList != null) {\r
1313 ppe.setSupArchList(archList);\r
1314 }\r
1315 else {\r
1316 if (ppe.isSetSupArchList()) {\r
1317 ppe.unsetSupArchList();\r
1318 }\r
1319 }\r
1320 if (modTypeList != null){\r
1321 ppe.setSupModuleList(modTypeList);\r
1322 }\r
1323 else {\r
1324 if (ppe.isSetSupModuleList()) {\r
1325 ppe.unsetSupModuleList();\r
1326 }\r
1327 }\r
1328\r
a13899c5 1329 return;\r
1330 }\r
1331\r
1332 return;\r
1333\r
1334 }\r
1335\r
1336 /**\r
1337 Generate Pcd definition using parameters passed in\r
1338 \r
1339 @param pcdItemTypes ItemType attribute of PcdEntry element\r
1340 @param cName C_Name element value\r
1341 @param token Token element value\r
1342 @param dataType DatumType element value\r
1343 @param skuEnable Reserved\r
1344 @param sku Reserved\r
1345 @param maxSku Reserved\r
1346 @param hiiEnable Reserved\r
1347 @param varGuid Reserved\r
1348 @param varName Reserved\r
1349 @param defaultString DefaultString element value\r
1350 **/\r
1351 public void genSpdPcdDefinitions(String cName, String token, String dataType, String pcdItemTypes, \r
1352 String spaceGuid, String defaultString, String help, String archList,\r
1353 String modTypeList) {\r
1354 if (getSpdPcdDefinitions() == null) {\r
1355 spdPcdDefinitions = psaRoot.addNewPcdDeclarations();\r
1356 }\r
1357\r
1358 setSpdPcdEntry(pcdItemTypes, cName, token, dataType, spaceGuid, help,\r
1359 defaultString, archList, modTypeList, spdPcdDefinitions);\r
1360 }\r
1361\r
1362 /**\r
1363 Set Pcd entry contents under parent tag\r
1364 \r
1365 @param pcdItemTypes ItemType attribute of PcdEntry element\r
1366 @param cName C_Name element value\r
1367 @param token Token element value\r
1368 @param dataType DatumType element value\r
1369 @param spaceGuid Reserved\r
1370 @param help Reserved\r
1371 @param defaultString DefaultString element value\r
1372 @param parent Tag under which PcdEntry goes to\r
1373 **/\r
1374 public void setSpdPcdEntry(String pcdItemTypes, String cName, String token, String dataType, String spaceGuid, String help,\r
1375 String defaultString, String archList, String modTypeList, XmlObject parent) {\r
1376\r
1377 PcdDeclarationsDocument.PcdDeclarations.PcdEntry pe = ((PcdDeclarationsDocument.PcdDeclarations) parent).addNewPcdEntry();\r
1378 \r
1379 //ToDo: maybe multiple types in, need parse pcdItemTypes.\r
1380 String usage[] = pcdItemTypes.split("( )+");\r
1381 List<String> l = new ArrayList<String>();\r
1382 for (int i = 0; i < usage.length; ++i) {\r
1383 l.add(usage[i]); \r
1384 }\r
1385 pe.setValidUsage(l);\r
1386 pe.setCName(cName);\r
1387 pe.setToken(token);\r
1388 pe.setDatumType(PcdDataTypes.Enum.forString(dataType));\r
1389 pe.setDefaultValue(defaultString);\r
1390 pe.setTokenSpaceGuidCName(spaceGuid);\r
1391 pe.setHelpText(help);\r
1392 if (archList != null){\r
97796eaa 1393 pe.setSupArchList(stringToList(archList));\r
1394 } else {\r
322b7723 1395 if (pe.isSetSupArchList()) {\r
1396 pe.unsetSupArchList();\r
1397 }\r
a13899c5 1398 }\r
1399 if (modTypeList != null){\r
97796eaa 1400 pe.setSupModuleList(stringToList(modTypeList));\r
1401 } else {\r
322b7723 1402 if (pe.isSetSupModuleList()) {\r
1403 pe.unsetSupModuleList();\r
1404 }\r
a13899c5 1405 }\r
1406 }\r
1407\r
1408 /**\r
1409 Get PpiDeclarations element\r
1410 \r
1411 @return PpiDeclarationsDocument.PpiDeclarations\r
1412 **/\r
1413 public PpiDeclarationsDocument.PpiDeclarations getSpdPpiDeclarations() {\r
1414 if (spdPpiDeclarations == null) {\r
1415 spdPpiDeclarations = psaRoot.getPpiDeclarations();\r
1416 }\r
1417 return spdPpiDeclarations;\r
1418 }\r
1419\r
1420 /**\r
1421 Get ProtocolDeclarations element\r
1422 \r
1423 @return ProtocolDeclarationsDocument.ProtocolDeclarations\r
1424 **/\r
1425 public ProtocolDeclarationsDocument.ProtocolDeclarations getSpdProtocolDeclarations() {\r
1426 if (spdProtocolDeclarations == null) {\r
1427 spdProtocolDeclarations = psaRoot.getProtocolDeclarations();\r
1428 }\r
1429 return spdProtocolDeclarations;\r
1430 }\r
1431\r
1432 /**\r
1433 Get GuidDeclarations element\r
1434 \r
1435 @return GuidDeclarationsDocument.GuidDeclarations\r
1436 **/\r
1437 public GuidDeclarationsDocument.GuidDeclarations getSpdGuidDeclarations() {\r
1438 if (spdGuidDeclarations == null) {\r
1439 spdGuidDeclarations = psaRoot.getGuidDeclarations();\r
1440 }\r
1441 return spdGuidDeclarations;\r
1442 }\r
1443\r
1444 /**\r
1445 Get PcdDefinitions element\r
1446 \r
1447 @return PcdDefinitionsDocument.PcdDefinitions\r
1448 **/\r
1449 public PcdDeclarationsDocument.PcdDeclarations getSpdPcdDefinitions() {\r
1450 if (spdPcdDefinitions == null) {\r
1451 spdPcdDefinitions = psaRoot.getPcdDeclarations();\r
1452 }\r
1453 return spdPcdDefinitions;\r
1454 }\r
1455\r
1456 /**\r
1457 Get PackageHeaders element\r
1458 \r
1459 @return PackageHeadersDocument.PackageHeaders\r
1460 **/\r
1461 public PackageHeadersDocument.PackageHeaders getSpdModHdrs() {\r
1462 if (spdModHdrs == null) {\r
1463 spdModHdrs = psaRoot.getPackageHeaders();\r
1464 }\r
1465 return spdModHdrs;\r
1466 }\r
1467\r
1468 /**\r
1469 Get MsaFiles element\r
1470 \r
1471 @return MsaFilesDocument.MsaFiles\r
1472 **/\r
1473 public MsaFilesDocument.MsaFiles getSpdMsaFiles() {\r
1474 if (spdMsaFiles == null) {\r
1475 spdMsaFiles = psaRoot.getMsaFiles();\r
1476 }\r
1477 return spdMsaFiles;\r
1478 }\r
1479\r
1480 /**\r
1481 Get LibraryClassDeclarations element\r
1482 \r
1483 @return LibraryClassDeclarationsDocument.LibraryClassDeclarations\r
1484 **/\r
1485 public LibraryClassDeclarationsDocument.LibraryClassDeclarations getSpdLibClassDeclarations() {\r
1486 if (spdLibClassDeclarations == null) {\r
1487 spdLibClassDeclarations = psaRoot.getLibraryClassDeclarations();\r
1488 }\r
1489 return spdLibClassDeclarations;\r
1490 }\r
1491\r
1492 public PackageDefinitionsDocument.PackageDefinitions getSpdPkgDefs() {\r
1493 if (spdPkgDefs == null) {\r
1494 spdPkgDefs = psaRoot.addNewPackageDefinitions();\r
1495 }\r
1496 return spdPkgDefs;\r
1497 }\r
1498 /**\r
1499 Get SpdHeader element\r
1500 \r
1501 @return SpdHeaderDocument.SpdHeader\r
1502 **/\r
1503 public SpdHeaderDocument.SpdHeader getSpdHdr() {\r
1504 if (spdHdr == null) {\r
1505 spdHdr = psaRoot.addNewSpdHeader();\r
1506 }\r
1507 return spdHdr;\r
1508 }\r
1509\r
1510 /**\r
1511 Set value to Guid element\r
1512 \r
1513 @param guid The value set to Guid element\r
1514 **/\r
1515 public void setSpdHdrGuidValue(String guid) {\r
1516 getSpdHdr().setGuidValue(guid);\r
1517 }\r
1518\r
1519 /**\r
1520 Get Version element under SpdHdr\r
1521 \r
1522 @return String\r
1523 **/\r
1524 public String getSpdHdrVer() {\r
1525 return getSpdHdr().getVersion();\r
1526 }\r
1527\r
1528 /**\r
1529 Set value to Version element\r
1530 \r
1531 @param ver The value set to Version element\r
1532 **/\r
1533 public void setSpdHdrVer(String ver) {\r
1534 getSpdHdr().setVersion(ver);\r
1535 }\r
1536\r
1537 public String getSpdHdrAbs(){\r
1538 return getSpdHdr().getAbstract();\r
1539 \r
1540 }\r
1541 \r
1542 /**\r
1543 Set value to Abstract element\r
1544 \r
1545 @param abs The value set to Abstract element\r
1546 **/\r
1547 public void setSpdHdrAbs(String abs) {\r
1548\r
1549 getSpdHdr().setAbstract(abs);\r
1550 }\r
1551 \r
1552 public String getSpdHdrDescription(){\r
1553 return getSpdHdr().getDescription(); \r
1554 }\r
1555 /**\r
1556 Set value to Description element\r
1557 \r
1558 @param des The value set to Description element\r
1559 **/\r
1560 public void setSpdHdrDescription(String des) {\r
1561 getSpdHdr().setDescription(des);\r
1562 }\r
1563 \r
1564 public String getSpdHdrCopyright(){\r
1565 return getSpdHdr().getCopyright();\r
1566 }\r
1567 /**\r
1568 Set value to Copyright element\r
1569 \r
1570 @param cpRit The value set to Copyright element\r
1571 **/\r
1572 public void setSpdHdrCopyright(String cpRit) {\r
1573\r
1574 getSpdHdr().setCopyright(cpRit);\r
1575\r
1576 }\r
1577 /**\r
1578 Get License element under SpdHdr\r
1579 \r
1580 @return String\r
1581 **/\r
1582 public String getSpdHdrLicense() {\r
1583 if (getSpdHdr().getLicense() != null) {\r
1584 return getSpdHdr().getLicense().getStringValue();\r
1585 }\r
1586 return null;\r
1587 }\r
1588\r
1589 /**\r
1590 Set value to License element\r
1591 \r
1592 @param license The value set to License element\r
1593 **/\r
1594 public void setSpdHdrLicense(String license) {\r
1595 if (getSpdHdr().getLicense() == null){\r
1596 getSpdHdr().addNewLicense().setStringValue(license);\r
1597 }\r
1598 else {\r
1599 getSpdHdr().getLicense().setStringValue(license);\r
1600 }\r
1601 }\r
1602 \r
1603 public String getSpdHdrUrl(){\r
1604 if (getSpdHdr().getLicense() != null) {\r
1605 return getSpdHdr().getLicense().getURL();\r
1606 }\r
1607 return null;\r
1608 }\r
1609 \r
1610 public void setSpdHdrUrl(String url){\r
1611 getSpdHdr().getLicense().setURL(url);\r
1612 }\r
1613\r
1614 /**\r
1615 Get PackageName element under SpdHdr\r
1616 \r
1617 @return String\r
1618 **/\r
1619 public String getSpdHdrPkgName() {\r
1620 \r
1621 return getSpdHdr().getPackageName();\r
1622 }\r
1623\r
1624 /**\r
1625 Set value to PackageName element\r
1626 \r
1627 @param pkgName The value set to PackageName element\r
1628 **/\r
1629 public void setSpdHdrPkgName(String pkgName) {\r
1630 getSpdHdr().setPackageName(pkgName);\r
1631 }\r
1632\r
1633 public String getSpdHdrGuidValue(){\r
1634 return getSpdHdr().getGuidValue();\r
1635 }\r
1636 \r
1637 /**\r
1638 Reserved method\r
1639 \r
1640 @return SpecificationDocument.Specification\r
1641 **/\r
1642 public String getSpdHdrSpec() {\r
c06e8657 1643 return "FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052";\r
a13899c5 1644// return getSpdHdr().getSpecification();\r
1645 }\r
1646\r
1647 /**\r
1648 Reserved method\r
1649 \r
1650 @param spec \r
1651 **/\r
1652 public void setSpdHdrSpec(String spec) {\r
c06e8657 1653 spec = "FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052";\r
a13899c5 1654 getSpdHdr().setSpecification(spec);\r
1655 \r
1656 }\r
1657\r
1658 public String getSpdPkgDefsRdOnly(){\r
1659 return getSpdPkgDefs().getReadOnly() + "";\r
1660 }\r
1661 /**\r
1662 Set value to ReadOnly element\r
1663 \r
1664 @param rdOnly The value set to ReadOnly element\r
1665 **/\r
1666 public void setSpdPkgDefsRdOnly(String rdOnly) {\r
1667\r
1668 getSpdPkgDefs().setReadOnly(new Boolean(rdOnly));\r
1669 }\r
1670\r
1671 public String getSpdPkgDefsRePkg(){\r
1672 return getSpdPkgDefs().getRePackage() + "";\r
1673 }\r
1674 /**\r
1675 Set value to RePackage element\r
1676 \r
1677 @param rePkg The value set to RePackage element\r
1678 **/\r
1679 public void setSpdPkgDefsRePkg(String rePkg) {\r
1680\r
1681 getSpdPkgDefs().setRePackage(new Boolean(rePkg));\r
1682 }\r
1683\r
1684 /**\r
1685 Set value to URL element\r
1686 \r
1687 @param url The value set to URL element\r
1688 **/\r
1689// public void setSpdHdrURL(String url) {\r
1690// getSpdHdr().setURL(url);\r
1691// }\r
1692\r
1693 /**\r
1694 Get xml file\r
1695 \r
1696 @return File\r
1697 **/\r
1698 public File getFile() {\r
1699 return file;\r
1700 }\r
1701\r
1702 /**\r
1703 Set file\r
1704 \r
1705 @param file File with xml format\r
1706 **/\r
1707 public void setFile(File file) {\r
1708 this.file = file;\r
1709 }\r
1710 \r
1711 private List<String> stringToList(String s){\r
ce73a791 1712 if (s == null || s.length() == 0) {\r
a13899c5 1713 return null;\r
1714 }\r
ce73a791 1715 Vector<String> al = new Vector<String>();\r
a13899c5 1716 String[] sArray = s.split(" ");\r
1717 for(int i = 0; i < sArray.length; ++i){\r
1718 al.add(sArray[i]);\r
1719 }\r
1720 return al; \r
1721 }\r
1722 \r
ce73a791 1723 private String listToString(List l) {\r
a13899c5 1724 if (l == null) {\r
1725 return null;\r
1726 }\r
1727 String s = " ";\r
1728 ListIterator li = l.listIterator();\r
1729 while(li.hasNext()) {\r
1730 s += li.next();\r
1731 s += " ";\r
1732 }\r
1733 return s.trim();\r
1734 }\r
1735\r
1736}\r