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