]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdFileContents.java
Remove extra code in DxeLoadX64.c file.
[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
339 lc.setRecommendedInstanceGuid(clsUsage);\r
340 }\r
341 if (instanceVer != null){\r
342 lc.setRecommendedInstanceVersion(instanceVer);\r
343 }\r
344 if (stringToList(hdrAttribArch) != null){\r
345 lc.setSupArchList(stringToList(hdrAttribArch));\r
346 }\r
347 if (stringToList(hdrAttribModType) != null){\r
348 lc.setSupModuleList(stringToList(hdrAttribModType));\r
349 }\r
350 }\r
351 \r
352 cursor.dispose();\r
353 }\r
354 \r
355 public void updateSpdMsaFile(int i, String msaFile, String mName, String v, String g){\r
356 XmlObject o = psaRoot.getMsaFiles();\r
357 if (o == null)\r
358 return;\r
359 \r
360 XmlCursor cursor = o.newCursor();\r
361 if (cursor.toFirstChild()) {\r
362 for (int j = 0; j < i; ++j) {\r
363 cursor.toNextSibling();\r
364 }\r
365 cursor.setTextValue(msaFile);\r
366\r
367 }\r
368 \r
369 cursor.dispose();\r
370 }\r
371\r
372 public void updateSpdGuidDecl(int i, String name, String cName, String guid, String hlp, String archList, \r
373 String modTypeList, String guidTypeList){\r
374 XmlObject o = psaRoot.getGuidDeclarations();\r
375 if (o == null){\r
376 return;\r
377 }\r
378 \r
379 XmlCursor cursor = o.newCursor();\r
380 if (cursor.toFirstChild()) {\r
381 for (int j = 0; j < i; ++j) {\r
382 cursor.toNextSibling();\r
383 }\r
384 GuidDeclarationsDocument.GuidDeclarations.Entry e = (GuidDeclarationsDocument.GuidDeclarations.Entry)cursor.getObject();\r
385 e.setName(name);\r
386 e.setCName(cName);\r
387 e.setGuidValue(guid);\r
388 e.setHelpText(hlp);\r
ce73a791 389 if (stringToList(guidTypeList) != null) {\r
a13899c5 390 e.setGuidTypeList(stringToList(guidTypeList));\r
391 }\r
ce73a791 392 else{\r
393 e.setGuidTypeList(null);\r
394 }\r
a13899c5 395 if (stringToList(archList) != null){\r
396 e.setSupArchList(stringToList(archList));\r
397 }\r
ce73a791 398 else{\r
399 e.setSupArchList(null);\r
400 }\r
a13899c5 401 if (stringToList(modTypeList) != null) {\r
402 e.setSupModuleList(stringToList(modTypeList));\r
403 }\r
ce73a791 404 else{\r
405 e.setSupModuleList(null);\r
406 }\r
a13899c5 407 \r
408 }\r
409 cursor.dispose();\r
410 }\r
411 \r
412 public void updateSpdPpiDecl(int i, String name, String cName, String guid, String hlp, String archList, \r
413 String modTypeList){\r
414 XmlObject o = psaRoot.getPpiDeclarations();\r
415 if (o == null){\r
416 return;\r
417 }\r
418 \r
419 XmlCursor cursor = o.newCursor();\r
420 if (cursor.toFirstChild()) {\r
421 for (int j = 0; j < i; ++j) {\r
422 cursor.toNextSibling();\r
423 }\r
424 PpiDeclarationsDocument.PpiDeclarations.Entry e = (PpiDeclarationsDocument.PpiDeclarations.Entry)cursor.getObject();\r
425 e.setName(name);\r
426 e.setCName(cName);\r
427 e.setGuidValue(guid);\r
428 e.setHelpText(hlp);\r
429 if (stringToList(archList) != null){\r
430 e.setSupArchList(stringToList(archList));\r
431 }\r
ce73a791 432 else{\r
433 e.setSupArchList(null);\r
434 }\r
a13899c5 435 if (stringToList(modTypeList) != null) {\r
436 e.setSupModuleList(stringToList(modTypeList));\r
437 }\r
ce73a791 438 else{\r
439 e.setSupModuleList(null);\r
440 }\r
a13899c5 441 }\r
442 cursor.dispose();\r
443 }\r
444 \r
445 public void updateSpdProtocolDecl(int i, String name, String cName, String guid, String hlp, String archList, \r
446 String modTypeList){\r
447 XmlObject o = psaRoot.getProtocolDeclarations();\r
448 if (o == null){\r
449 return;\r
450 }\r
451 \r
452 XmlCursor cursor = o.newCursor();\r
453 if (cursor.toFirstChild()) {\r
454 for (int j = 0; j < i; ++j) {\r
455 cursor.toNextSibling();\r
456 }\r
457 ProtocolDeclarationsDocument.ProtocolDeclarations.Entry e = (ProtocolDeclarationsDocument.ProtocolDeclarations.Entry)cursor.getObject();\r
458 e.setName(name);\r
459 e.setCName(cName);\r
460 e.setGuidValue(guid);\r
461 e.setHelpText(hlp);\r
462 if (stringToList(archList) != null){\r
463 e.setSupArchList(stringToList(archList));\r
464 }\r
ce73a791 465 else{\r
466 e.setSupArchList(null);\r
467 }\r
a13899c5 468 if (stringToList(modTypeList) != null) {\r
469 e.setSupModuleList(stringToList(modTypeList));\r
470 }\r
ce73a791 471 else{\r
472 e.setSupModuleList(null);\r
473 }\r
a13899c5 474 }\r
475 cursor.dispose();\r
476 }\r
477 \r
478 public void updateSpdPkgHdr(int i, String pkgName, String hdrName){\r
479 XmlObject o = psaRoot.getPackageHeaders();\r
480 if (o == null){\r
481 return;\r
482 }\r
483 \r
484 XmlCursor cursor = o.newCursor();\r
485 if (cursor.toFirstChild()) {\r
486 for (int j = 0; j < i; ++j) {\r
487 cursor.toNextSibling();\r
488 }\r
489 \r
490 PackageHeadersDocument.PackageHeaders.IncludePkgHeader iph = (PackageHeadersDocument.PackageHeaders.IncludePkgHeader)cursor.getObject();\r
491 iph.setModuleType(ModuleTypeDef.Enum.forString(pkgName));\r
492 iph.setStringValue(hdrName);\r
493 }\r
494 cursor.dispose();\r
495 }\r
496 \r
497 public void updateSpdPcdDefinition(int i, String cName, String token, String dataType, String pcdItemTypes, \r
498 String spaceGuid, String defaultString, String help, String archList, String modTypeList){\r
499 XmlObject o = psaRoot.getPcdDeclarations();\r
500 if (o == null)\r
501 return;\r
502 XmlCursor cursor = o.newCursor();\r
503 if (cursor.toFirstChild()) {\r
504 for (int j = 0; j < i; ++j) {\r
505 cursor.toNextSibling();\r
506 }\r
507 PcdDeclarationsDocument.PcdDeclarations.PcdEntry e = (PcdDeclarationsDocument.PcdDeclarations.PcdEntry)cursor.getObject();\r
508 e.setCName(cName);\r
509 e.setToken(token);\r
510 e.setDatumType(PcdDataTypes.Enum.forString(dataType));\r
511 if (pcdItemTypes != null && pcdItemTypes.length() > 0) {\r
512 String usage[] = pcdItemTypes.split("( )+");\r
513 List<String> l = new ArrayList<String>();\r
514 for (int k = 0; k < usage.length; ++k) {\r
515 l.add(usage[k]); \r
516 }\r
517 e.setValidUsage(l);\r
518 }\r
519 \r
520 e.setTokenSpaceGuidCName(spaceGuid);\r
521 e.setDefaultValue(defaultString);\r
522 e.setHelpText(help);\r
523 if (archList != null && archList.length() > 0){\r
524 e.setSupArchList(stringToList(archList));\r
525 }\r
526 if (modTypeList != null && modTypeList.length() > 0){\r
527 e.setSupModuleList(stringToList(modTypeList));\r
528 }\r
529 } \r
530 cursor.dispose();\r
531 }\r
532 /**\r
533 Get spd file header contents into String array\r
534 \r
535 @param s Caller allocated String array\r
536 **/\r
537 public void getSpdHdrDetails(String[] s) {\r
538 if (getSpdHdr() == null) {\r
539 spdHdr = psaRoot.addNewSpdHeader();\r
540 }\r
541 s[0] = getSpdHdrPkgName();\r
542 s[1] = getSpdHdr().getGuidValue();\r
543 s[2] = getSpdHdrVer();\r
544// s[3] = getSpdHdr().getAbstract();\r
545 s[4] = getSpdHdr().getDescription();\r
546 s[5] = getSpdHdr().getCopyright();\r
547 s[6] = getSpdHdrLicense();\r
548 \r
549 }\r
550\r
551 /**\r
552 Get the number of library class declarations from the size of List\r
553 \r
554 @return int\r
555 **/\r
556 public int getSpdLibClassDeclarationCount() {\r
557 if (psaRoot.getLibraryClassDeclarations() == null\r
558 || psaRoot.getLibraryClassDeclarations().getLibraryClassList() == null) {\r
559 return 0;\r
560 }\r
561 return psaRoot.getLibraryClassDeclarations().getLibraryClassList().size();\r
562 }\r
563\r
564 /**\r
565 Get available library class declaration into String array\r
566 @param libClass Caller allocated two-dimentional String array\r
567 **/\r
568 public void getSpdLibClassDeclarations(String[][] libClass) {\r
569 if (psaRoot.getLibraryClassDeclarations() == null){\r
570 return;\r
571 }\r
572 \r
573 List<LibraryClassDeclarationsDocument.LibraryClassDeclarations.LibraryClass> l = psaRoot.getLibraryClassDeclarations().getLibraryClassList();\r
574 int i = 0;\r
575 ListIterator li = l.listIterator();\r
576 while (li.hasNext()) {\r
577 LibraryClassDeclarationsDocument.LibraryClassDeclarations.LibraryClass lc = (LibraryClassDeclarationsDocument.LibraryClassDeclarations.LibraryClass) li.next();\r
578 if (lc != null) {\r
579 libClass[i][0] = lc.getName();\r
580 libClass[i][1] = lc.getIncludeHeader();\r
581 libClass[i][2] = lc.getHelpText();\r
582 libClass[i][3] = lc.getRecommendedInstanceGuid();\r
583 libClass[i][4] = lc.getRecommendedInstanceVersion();\r
584 if (lc.getSupArchList() != null) {\r
585 libClass[i][5] = listToString(lc.getSupArchList());\r
586 }\r
587 if (lc.getSupModuleList() != null) {\r
588 libClass[i][6] = listToString(lc.getSupModuleList());\r
589 }\r
590 \r
591 }\r
592 \r
593 i++;\r
594 }\r
595\r
596 }\r
597 \r
598 /**\r
599 Get the number of Msa files from the size of List\r
600 \r
601 @return int\r
602 **/\r
603 public int getSpdMsaFileCount() {\r
604 if (psaRoot.getMsaFiles() == null || psaRoot.getMsaFiles().getFilenameList() == null) {\r
605 return 0;\r
606 }\r
607 return psaRoot.getMsaFiles().getFilenameList().size();\r
608 }\r
609 \r
610 /**\r
611 Get available Msa file into String array\r
612 \r
613 @param msaFile Caller allocated two-dimentional String array\r
614 **/\r
615 public void getSpdMsaFiles(String[][] msaFile) {\r
616 if (psaRoot.getMsaFiles() == null) {\r
617 return;\r
618 }\r
619 List<String> l = psaRoot.getMsaFiles().getFilenameList();\r
620 int i = 0;\r
621 ListIterator li = l.listIterator();\r
622 while (li.hasNext()) {\r
623 msaFile[i][0] = (String)li.next();\r
624\r
625 i++;\r
626 }\r
627 }\r
628\r
629 /**\r
630 Get the number of include header files in PackageHeaders from the size of List\r
631 \r
632 @return int\r
633 **/\r
634 public int getSpdPackageHeaderCount() {\r
635 if (psaRoot.getPackageHeaders() == null || psaRoot.getPackageHeaders().getIncludePkgHeaderList() == null) {\r
636 return 0;\r
637 }\r
638 return psaRoot.getPackageHeaders().getIncludePkgHeaderList().size();\r
639 }\r
640\r
641 /**\r
642 Get available package header contents into String array\r
643 \r
644 @param pkgHeader Caller allocated two-dimentional String array\r
645 **/\r
646 public void getSpdPackageHeaders(String[][] pkgHeader) {\r
647 if (psaRoot.getPackageHeaders() == null) {\r
648 return;\r
649 }\r
650 \r
651 List<PackageHeadersDocument.PackageHeaders.IncludePkgHeader> l = psaRoot.getPackageHeaders().getIncludePkgHeaderList();\r
652 int i = 0;\r
653 ListIterator li = l.listIterator();\r
654 while (li.hasNext()) {\r
655 PackageHeadersDocument.PackageHeaders.IncludePkgHeader ih = (PackageHeadersDocument.PackageHeaders.IncludePkgHeader) li.next();\r
656 if (ih.getModuleType() != null) {\r
657 pkgHeader[i][0] = ih.getModuleType().toString();\r
658 }\r
659\r
660 pkgHeader[i][1] = ih.getStringValue();\r
661 i++;\r
662 }\r
663 }\r
664\r
665 /**\r
666 Get the number of GUID declarations from the size of List\r
667 \r
668 @return int\r
669 **/\r
670 public int getSpdGuidDeclarationCount() {\r
671 if (psaRoot.getGuidDeclarations() == null || psaRoot.getGuidDeclarations().getEntryList() == null) {\r
672 return 0;\r
673 }\r
674 return psaRoot.getGuidDeclarations().getEntryList().size();\r
675 }\r
676\r
677 /**\r
678 Get available Guid declaration contents into String array\r
679 \r
680 @param guid Caller allocated two-dimentional String array\r
681 **/\r
682 public void getSpdGuidDeclarations(String[][] guid) {\r
683 if (psaRoot.getGuidDeclarations() == null) {\r
684 return;\r
685 }\r
686 \r
687 List<GuidDeclarationsDocument.GuidDeclarations.Entry> l = psaRoot.getGuidDeclarations().getEntryList();\r
688 int i = 0;\r
689 ListIterator li = l.listIterator();\r
690 while (li.hasNext()) {\r
691 GuidDeclarationsDocument.GuidDeclarations.Entry e = (GuidDeclarationsDocument.GuidDeclarations.Entry) li\r
692 .next();\r
693 guid[i][0] = e.getName();\r
694 guid[i][1] = e.getCName();\r
695 if (e.getGuidValue() != null) {\r
696 guid[i][2] = e.getGuidValue();\r
697 }\r
698 guid[i][3] = e.getHelpText();\r
699 guid[i][4] = listToString(e.getSupArchList());\r
700 guid[i][5] = listToString(e.getSupModuleList());\r
701 guid[i][6] = listToString(e.getGuidTypeList());\r
702 i++;\r
703 }\r
704 }\r
705\r
706 /**\r
707 Get the number of protocol declarations from the size of List\r
708 \r
709 @return int\r
710 **/\r
711 public int getSpdProtocolDeclarationCount() {\r
712 if (psaRoot.getProtocolDeclarations() == null || psaRoot.getProtocolDeclarations().getEntryList() == null) {\r
713 return 0;\r
714 }\r
715 return psaRoot.getProtocolDeclarations().getEntryList().size();\r
716 }\r
717\r
718 /**\r
719 Get available protocol declaration contents into String array\r
720 \r
721 @param protocol Caller allocated two-dimentional String array\r
722 **/\r
723 public void getSpdProtocolDeclarations(String[][] protocol) {\r
724 if (psaRoot.getProtocolDeclarations() == null) {\r
725 return;\r
726 }\r
727 \r
728 List<ProtocolDeclarationsDocument.ProtocolDeclarations.Entry> l = psaRoot.getProtocolDeclarations()\r
729 .getEntryList();\r
730 int i = 0;\r
731 ListIterator li = l.listIterator();\r
732 while (li.hasNext()) {\r
733 ProtocolDeclarationsDocument.ProtocolDeclarations.Entry e = (ProtocolDeclarationsDocument.ProtocolDeclarations.Entry) li\r
734 .next();\r
735 protocol[i][0] = e.getName();\r
736 protocol[i][1] = e.getCName();\r
737 if (e.getGuidValue() != null) {\r
738 protocol[i][2] = e.getGuidValue();\r
739 }\r
740 protocol[i][3] = e.getHelpText();\r
741 protocol[i][4] = listToString(e.getSupArchList());\r
742 protocol[i][5] = listToString(e.getSupModuleList());\r
743 i++;\r
744 }\r
745 }\r
746\r
747 /**\r
748 Get the number of Ppi declarations from the size of List\r
749 \r
750 @return int\r
751 **/\r
752 public int getSpdPpiDeclarationCount() {\r
753 if (psaRoot.getPpiDeclarations() == null || psaRoot.getPpiDeclarations().getEntryList() == null) {\r
754 return 0;\r
755 }\r
756 return psaRoot.getPpiDeclarations().getEntryList().size();\r
757 }\r
758\r
759 /**\r
760 Get available Ppi declaration contents into String array\r
761 \r
762 @param ppi Caller allocated two-dimentional String array\r
763 **/\r
764 public void getSpdPpiDeclarations(String[][] ppi) {\r
765 if (psaRoot.getPpiDeclarations() == null) {\r
766 return;\r
767 }\r
768 \r
769 List<PpiDeclarationsDocument.PpiDeclarations.Entry> l = psaRoot.getPpiDeclarations().getEntryList();\r
770 int i = 0;\r
771 ListIterator li = l.listIterator();\r
772 while (li.hasNext()) {\r
773 PpiDeclarationsDocument.PpiDeclarations.Entry e = (PpiDeclarationsDocument.PpiDeclarations.Entry) li.next();\r
774 ppi[i][0] = e.getName();\r
775 ppi[i][1] = e.getCName();\r
776 if (e.getGuidValue() != null) {\r
777 ppi[i][2] = e.getGuidValue();\r
778 }\r
779 ppi[i][3] = e.getHelpText();\r
780 ppi[i][4] = listToString(e.getSupArchList());\r
781 ppi[i][5] = listToString(e.getSupModuleList());\r
782\r
783 i++;\r
784 }\r
785 }\r
786\r
787 /**\r
788 Get the number of Pcd definitions from the size of List\r
789 \r
790 @return int\r
791 **/\r
792 public int getSpdPcdDefinitionCount() {\r
793 if (psaRoot.getPcdDeclarations() == null || psaRoot.getPcdDeclarations().getPcdEntryList() == null) {\r
794 return 0;\r
795 }\r
796 return psaRoot.getPcdDeclarations().getPcdEntryList().size();\r
797 }\r
798\r
799 /**\r
800 Get available Pcd definition contents into String array\r
801 \r
802 @param pcd Caller allocated two-dimentional String array\r
803 **/\r
804 public void getSpdPcdDefinitions(String[][] pcd, String pcdUsage[][]) {\r
805 if (psaRoot.getPcdDeclarations() == null) {\r
806 return;\r
807 }\r
808 \r
809 List<PcdDeclarationsDocument.PcdDeclarations.PcdEntry> l = psaRoot.getPcdDeclarations().getPcdEntryList();\r
810 int i = 0;\r
811 while (i < l.size()) {\r
812 PcdDeclarationsDocument.PcdDeclarations.PcdEntry e = (PcdDeclarationsDocument.PcdDeclarations.PcdEntry)l.get(i);\r
813 pcd[i][0] = e.getCName();\r
814 pcd[i][1] = e.getToken() + ""; \r
815 pcd[i][2] = e.getTokenSpaceGuidCName();\r
816 if (e.getDatumType() != null) {\r
817 pcd[i][3] = e.getDatumType().toString();\r
818 }\r
819 pcd[i][4] = e.getDefaultValue()+"";\r
820 pcd[i][5] = e.getHelpText();\r
821 String archList = listToString(e.getSupArchList());\r
822 if (archList != null) {\r
823 pcd[i][6] = archList;\r
824 }\r
825 String modTypeList = listToString(e.getSupModuleList());\r
826 if (modTypeList != null) {\r
827 pcd[i][7] = modTypeList;\r
828 }\r
829 \r
830 int j = 0;\r
831 while (j < e.getValidUsage().size() && j < 5) {\r
832 pcdUsage[i][j] = (String)e.getValidUsage().get(j);\r
833 ++j;\r
834 }\r
835 i++;\r
836 }\r
837 }\r
838\r
839 /**\r
840 Save the processed xml contents to file\r
841 \r
842 @param spdFile The file to save xml contents\r
843 @throws IOException Exceptions during file operation\r
844 **/\r
845 public void saveAs(File spdFile) throws IOException {\r
846\r
847 XmlOptions options = new XmlOptions();\r
848\r
849 options.setCharacterEncoding("UTF-8");\r
850 options.setSavePrettyPrint();\r
851 options.setSavePrettyPrintIndent(2);\r
852 try {\r
853 psad.save(spdFile, options);\r
854 } catch (IOException e) {\r
855 e.printStackTrace();\r
856 }\r
857\r
858 }\r
859\r
860 /**\r
861 Generate SpdHeader contents using parameters passed in.\r
862 \r
863 @param pkgName PackageName \r
864 @param pkgGuid Guid\r
865 @param pkgVer Version\r
866 @param pkgAbs Abstract\r
867 @param pkgDes Description\r
868 @param pkgCpRight Copyright\r
869 @param pkgLicense License\r
870 @param pkgCreateDate Created\r
871 @param pkgUpdateDate Updated\r
872 @param pkgURL URL\r
873 @param pkgType PackageType\r
874 @param pkgRdOnly ReadOnly\r
875 @param pkgRePkg RePackage\r
876 @param pkgSpec Reserved\r
877 @param pkgOutDir Reserved\r
878 **/\r
879 public void genSpdHeader(String pkgName, String pkgGuid, String pkgVer, String pkgAbs, String pkgDes,\r
880 String pkgCpRight, String pkgLicense, String pkgCreateDate, String pkgUpdateDate,\r
881 String pkgURL, String pkgType, String pkgRdOnly, String pkgRePkg, String pkgSpec,\r
882 String pkgOutDir) {\r
883 if (getSpdHdr() == null) {\r
884 spdHdr = psaRoot.addNewSpdHeader();\r
885 }\r
886\r
887 setSpdHdrPkgName(pkgName);\r
888 setSpdHdrGuidValue(pkgGuid);\r
889 setSpdHdrVer(pkgVer);\r
890 setSpdHdrAbs(pkgAbs);\r
891 setSpdHdrDescription(pkgDes);\r
892 setSpdHdrCopyright(pkgCpRight);\r
893 setSpdHdrLicense(pkgLicense);\r
894 \r
895\r
896 setSpdHdrSpec(pkgSpec);\r
897 }\r
898\r
899 /**\r
900 Generate library class declaration element using parameters passed in\r
901 \r
902 @param libClassBaseName LibraryClass element value\r
903 @param libClassUsage Reserved\r
904 @param incHdrFileName IncludeHeader element value\r
905 @param incHdrAttribGuid Reserved\r
906 @param incHdrAttribArch Reserved\r
907 @param incHdrAttribPath Reserved\r
908 @param incHdrAttribClass Reserved\r
909 @param incHdrAttribVer Reserved\r
910 @param incHdrAttribOverrideID Reserved\r
911 @param incHdrAttribModuleType Reserved\r
912 **/\r
913 public void genSpdLibClassDeclarations(String libClassBaseName, String instanceUsage, String incHdrFileName,\r
914 String help, String incHdrAttribArch, String incHdrAttribPath,\r
915 String incHdrAttribClass, String incHdrAttribVer,\r
916 String incHdrAttribOverrideID, String incHdrAttribModuleType) {\r
917 if (getSpdLibClassDeclarations() == null) {\r
918 spdLibClassDeclarations = psaRoot.addNewLibraryClassDeclarations();\r
919 }\r
920 //\r
921 // add contents under LibraryClassDeclarations tag \r
922 //\r
923 setSpdLibClassDeclaration(libClassBaseName, instanceUsage, incHdrFileName, help, incHdrAttribArch,\r
924 incHdrAttribPath, incHdrAttribClass, incHdrAttribVer, incHdrAttribOverrideID,\r
925 incHdrAttribModuleType, spdLibClassDeclarations);\r
926 }\r
927\r
928 /**\r
929 Set library class declaration contents under parent tag\r
930 \r
931 @param clsName LibraryClass element value\r
932 @param clsUsage Reserved\r
933 @param hdrFile IncludeHeader element value\r
934 @param hdrAttribGuid Reserved\r
935 @param hdrAttribArch Reserved\r
936 @param hdrAttribPath Reserved\r
937 @param hdrAttribClass Reserved\r
938 @param hdrAttribVer Reserved\r
939 @param hdrAttribOverID Reserved\r
940 @param hdrAttribModType Reserved\r
941 @param parent The tag under which library class declaration goes to\r
942 **/\r
943 public void setSpdLibClassDeclaration(String clsName, String clsUsage, String hdrFile, String help,\r
944 String hdrAttribArch, String hdrAttribPath, String hdrAttribClass,\r
945 String instanceVer, String hdrAttribOverID, String hdrAttribModType,\r
946 XmlObject parent) {\r
947\r
948 setSpdLibraryClass(clsName, hdrFile, help, clsUsage, instanceVer, hdrAttribArch, hdrAttribModType, parent);\r
949\r
950 }\r
951\r
952 /**\r
953 Set the contents of LibraryClass under parent element\r
954 \r
955 @param clsName LibraryClass element value \r
956 @param clsUsage Reserved\r
957 @param parent The tag under which library class declaration goes to\r
958 **/\r
959 public void setSpdLibraryClass(String clsName, String clsIncludeFile, String help, String clsUsage, String instanceVer, String hdrAttribArch, String hdrAttribModType, XmlObject parent) {\r
960 LibraryClassDeclarationsDocument.LibraryClassDeclarations.LibraryClass lc = ((LibraryClassDeclarationsDocument.LibraryClassDeclarations) parent).addNewLibraryClass();\r
961 lc.setName(clsName);\r
962 lc.setIncludeHeader(clsIncludeFile);\r
963 lc.setHelpText(help);\r
964 lc.setRecommendedInstanceGuid(clsUsage);\r
965 lc.setRecommendedInstanceVersion(instanceVer);\r
966 if (hdrAttribArch != null) {\r
967 lc.setSupArchList(stringToList(hdrAttribArch));\r
968 }\r
969 if (hdrAttribModType != null) {\r
970 lc.setSupModuleList(stringToList(hdrAttribModType));\r
971 }\r
972 \r
973 }\r
974\r
975 /**\r
976 Set contents of IncludeHeader under parent element\r
977 \r
978 @param modType Reserved\r
979 @param hdrFile IncludeHeader element value\r
980 @param hdrAttribGuid Reserved\r
981 @param hdrAttribArch Reserved\r
982 @param hdrAttribPath Reserved\r
983 @param hdrAttribClass Reserved\r
984 @param hdrAttribVer Reserved\r
985 @param hdrAttribOverID Reserved\r
986 @param parent The tag under which library class declaration goes to\r
987 **/\r
988 public void setSpdIncludeHeader(String modType, String hdrFile, String hdrAttribGuid, String hdrAttribArch,\r
989 String hdrAttribPath, String hdrAttribClass, String hdrAttribVer,\r
990 String hdrAttribOverID, XmlObject parent) {\r
991 \r
992 if (parent instanceof LibraryClassDeclarationsDocument.LibraryClassDeclarations) {\r
993 } else if (parent instanceof PackageHeadersDocument.PackageHeaders) {\r
994 PackageHeadersDocument.PackageHeaders.IncludePkgHeader ih = null;\r
995 ih = ((PackageHeadersDocument.PackageHeaders) parent).addNewIncludePkgHeader();\r
996 ih.setStringValue(hdrFile);\r
997 ih.setModuleType(ModuleTypeDef.Enum.forString(modType));\r
998 } else {\r
999 return;\r
1000 }\r
1001\r
1002 if (hdrAttribGuid != null) {\r
1003 }\r
1004 if (hdrAttribPath != null) {\r
1005 }\r
1006 if (hdrAttribClass != null) {\r
1007 }\r
1008 if (hdrAttribVer != null) {\r
1009 }\r
1010 if (hdrAttribOverID != null) {\r
1011 }\r
1012\r
1013 }\r
1014\r
1015 /**\r
1016 Generate MsaFile element.\r
1017 \r
1018 @param msaFileName MsaFile element value\r
1019 @param archType Reserved\r
1020 **/\r
1021 public void genSpdMsaFiles(String msaFileName, String moduleName, String ver, String guid) {\r
1022 if (getSpdMsaFiles() == null) {\r
1023 spdMsaFiles = psaRoot.addNewMsaFiles();\r
1024 }\r
1025 setSpdMsaFile(msaFileName, moduleName, ver, guid, spdMsaFiles);\r
1026 \r
1027 }\r
1028\r
1029 /**\r
1030 Set MsaFile contents under parent element.\r
1031 \r
1032 @param msaFileName MsaFile element value\r
1033 @param parent Element under which MsaFile goes to\r
1034 **/\r
1035 public void setSpdMsaFile(String msaFileName, String moduleName, String ver, String guid, XmlObject parent) {\r
1036 MsaFilesDocument.MsaFiles f = (MsaFilesDocument.MsaFiles)parent;\r
1037 f.addNewFilename().setStringValue(msaFileName);\r
1038// f.setFilename(msaFileName);\r
1039// f.setModuleName(moduleName);\r
1040// f.setModuleVersion(ver);\r
1041// f.setModuleGuid(guid);\r
1042 }\r
1043\r
1044 /**\r
1045 Generate PackageHeader element using parameters passed in.\r
1046 \r
1047 @param ModHdrModType ModuleType attribute of IncludeHeader element\r
1048 @param hdrFile IncludeHeader element value\r
1049 @param hdrAttribGuid Reserved\r
1050 @param hdrAttribArch Reserved\r
1051 @param hdrAttribPath Reserved\r
1052 @param hdrAttribClass Reserved\r
1053 @param hdrAttribVer Reserved\r
1054 @param hdrAttribOverID Reserved\r
1055 **/\r
1056 public void genSpdModuleHeaders(String ModHdrModType, String hdrFile, String hdrAttribGuid, String hdrAttribArch,\r
1057 String hdrAttribPath, String hdrAttribClass, String hdrAttribVer,\r
1058 String hdrAttribOverID) {\r
1059 if (getSpdModHdrs() == null) {\r
1060 spdModHdrs = psaRoot.addNewPackageHeaders();\r
1061 }\r
1062\r
1063 //\r
1064 // add IncludeHeader under PackageHeaders element\r
1065 //\r
1066 setSpdIncludeHeader(ModHdrModType, hdrFile, hdrAttribGuid, hdrAttribArch, hdrAttribPath, hdrAttribClass,\r
1067 hdrAttribVer, hdrAttribOverID, spdModHdrs);\r
1068 }\r
1069\r
1070 /**\r
1071 Generate GUID declaration element using parameters passed in.\r
1072 \r
1073 @param guidDeclEntryName Name attribute of Entry element\r
1074 @param guidDeclCName CName element value\r
1075 @param guidDeclGuid Guid element value\r
1076 @param guidDeclFeatureFlag Reserved\r
1077 **/\r
1078 public void genSpdGuidDeclarations(String guidDeclEntryName, String guidDeclCName, String guidDeclGuid,\r
1079 String guidDeclHelp, Vector<String> archList, Vector<String> modTypeList,\r
1080 Vector<String> guidTypeList) {\r
1081 if (getSpdGuidDeclarations() == null) {\r
1082 spdGuidDeclarations = psaRoot.addNewGuidDeclarations();\r
1083 }\r
1084\r
1085 setSpdEntry(guidDeclEntryName, guidDeclCName, guidDeclGuid, guidDeclHelp, archList, modTypeList, guidTypeList, spdGuidDeclarations);\r
1086 }\r
1087\r
1088 /**\r
1089 Generate protocol declaration element using parameters passed in.\r
1090 \r
1091 @param protocolDeclEntryName Name attribute of Entry element\r
1092 @param protocolDeclCName CName element value\r
1093 @param protocolDeclGuid Guid element value\r
1094 @param protocolDeclFeatureFlag Reserved\r
1095 **/\r
1096 public void genSpdProtocolDeclarations(String protocolDeclEntryName, String protocolDeclCName,\r
1097 String protocolDeclGuid, String protocolDeclFeatureFlag,\r
1098 Vector<String> archList, Vector<String> modTypeList) {\r
1099 if (getSpdProtocolDeclarations() == null) {\r
1100 spdProtocolDeclarations = psaRoot.addNewProtocolDeclarations();\r
1101 }\r
1102\r
1103 setSpdEntry(protocolDeclEntryName, protocolDeclCName, protocolDeclGuid, protocolDeclFeatureFlag,\r
1104 archList, modTypeList, null, spdProtocolDeclarations);\r
1105 }\r
1106\r
1107 /**\r
1108 Generate PPI declaration element using parameters passed in.\r
1109 \r
1110 @param ppiDeclEntryName Name attribute of Entry element\r
1111 @param ppiDeclCName CName element value\r
1112 @param ppiDeclGuid Guid element value\r
1113 @param ppiDeclFeatureFlag Reserved\r
1114 **/\r
1115 public void genSpdPpiDeclarations(String ppiDeclEntryName, String ppiDeclCName, String ppiDeclGuid,\r
1116 String ppiDeclFeatureFlag, Vector<String> archList, Vector<String> modTypeList) {\r
1117 if (getSpdPpiDeclarations() == null) {\r
1118 spdPpiDeclarations = psaRoot.addNewPpiDeclarations();\r
1119 }\r
1120\r
1121 setSpdEntry(ppiDeclEntryName, ppiDeclCName, ppiDeclGuid, ppiDeclFeatureFlag, archList, modTypeList, null, spdPpiDeclarations);\r
1122 }\r
1123\r
1124 /**\r
1125 Set Entry contents using parameters passed in\r
1126 \r
1127 @param entryName Name attribute of Entry element\r
1128 @param cName CName element value\r
1129 @param guid Guid element value\r
1130 @param featureFlag Reserved\r
1131 @param parent The tag under which Entry element goes to\r
1132 **/\r
1133 public void setSpdEntry(String entryName, String cName, String guid, String help, \r
1134 Vector<String> archList, Vector<String> modTypeList,\r
1135 Vector<String> guidTypeList, XmlObject parent) {\r
1136\r
1137 if (parent instanceof GuidDeclarationsDocument.GuidDeclarations) {\r
1138 GuidDeclarationsDocument.GuidDeclarations.Entry e = ((GuidDeclarations) parent).addNewEntry();\r
1139 e.setName(entryName);\r
1140 e.setCName(cName);\r
1141 e.setGuidValue(guid);\r
1142 e.setHelpText(help);\r
ce73a791 1143 e.setGuidTypeList(guidTypeList);\r
1144 e.setSupArchList(archList);\r
1145 e.setSupModuleList(modTypeList);\r
1146// if (guidTypeList != null && guidTypeList.size() > 0) {\r
1147// e.setGuidTypeList(new ArrayList<String>(guidTypeList));\r
1148// }\r
1149// if (archList != null && archList.size() > 0){\r
1150// e.setSupArchList(new ArrayList<String>(archList));\r
1151// }\r
1152// if (modTypeList != null && modTypeList.size() > 0) {\r
1153// e.setSupModuleList(new ArrayList<String>(modTypeList));\r
1154// }\r
a13899c5 1155 return;\r
1156 }\r
1157 if (parent instanceof ProtocolDeclarationsDocument.ProtocolDeclarations) {\r
1158 ProtocolDeclarationsDocument.ProtocolDeclarations.Entry pe = ((ProtocolDeclarationsDocument.ProtocolDeclarations) parent)\r
1159 .addNewEntry();\r
1160 pe.setName(entryName);\r
1161 pe.setCName(cName);\r
1162 pe.setGuidValue(guid);\r
1163 pe.setHelpText(help);\r
ce73a791 1164 pe.setSupArchList(archList);\r
1165 pe.setSupModuleList(modTypeList);\r
1166// if (archList != null && archList.size() > 0){\r
1167// pe.setSupArchList(new ArrayList<String>(archList));\r
1168// }\r
1169// if (modTypeList != null && modTypeList.size() > 0) {\r
1170// pe.setSupModuleList(new ArrayList<String>(modTypeList));\r
1171// }\r
a13899c5 1172 return;\r
1173 }\r
1174 if (parent instanceof PpiDeclarationsDocument.PpiDeclarations) {\r
1175 PpiDeclarationsDocument.PpiDeclarations.Entry ppe = ((PpiDeclarationsDocument.PpiDeclarations) parent)\r
1176 .addNewEntry();\r
1177 ppe.setName(entryName);\r
1178 ppe.setCName(cName);\r
1179 ppe.setGuidValue(guid);\r
1180 ppe.setHelpText(help);\r
ce73a791 1181 ppe.setSupArchList(archList);\r
1182 ppe.setSupModuleList(modTypeList);\r
1183// if (archList != null && archList.size() > 0){\r
1184// ppe.setSupArchList(new ArrayList<String>(archList));\r
1185// }\r
1186// if (archList != null && modTypeList.size() > 0) {\r
1187// ppe.setSupModuleList(new ArrayList<String>(modTypeList));\r
1188// }\r
a13899c5 1189 return;\r
1190 }\r
1191\r
1192 return;\r
1193\r
1194 }\r
1195\r
1196 /**\r
1197 Generate Pcd definition using parameters passed in\r
1198 \r
1199 @param pcdItemTypes ItemType attribute of PcdEntry element\r
1200 @param cName C_Name element value\r
1201 @param token Token element value\r
1202 @param dataType DatumType element value\r
1203 @param skuEnable Reserved\r
1204 @param sku Reserved\r
1205 @param maxSku Reserved\r
1206 @param hiiEnable Reserved\r
1207 @param varGuid Reserved\r
1208 @param varName Reserved\r
1209 @param defaultString DefaultString element value\r
1210 **/\r
1211 public void genSpdPcdDefinitions(String cName, String token, String dataType, String pcdItemTypes, \r
1212 String spaceGuid, String defaultString, String help, String archList,\r
1213 String modTypeList) {\r
1214 if (getSpdPcdDefinitions() == null) {\r
1215 spdPcdDefinitions = psaRoot.addNewPcdDeclarations();\r
1216 }\r
1217\r
1218 setSpdPcdEntry(pcdItemTypes, cName, token, dataType, spaceGuid, help,\r
1219 defaultString, archList, modTypeList, spdPcdDefinitions);\r
1220 }\r
1221\r
1222 /**\r
1223 Set Pcd entry contents under parent tag\r
1224 \r
1225 @param pcdItemTypes ItemType attribute of PcdEntry element\r
1226 @param cName C_Name element value\r
1227 @param token Token element value\r
1228 @param dataType DatumType element value\r
1229 @param spaceGuid Reserved\r
1230 @param help Reserved\r
1231 @param defaultString DefaultString element value\r
1232 @param parent Tag under which PcdEntry goes to\r
1233 **/\r
1234 public void setSpdPcdEntry(String pcdItemTypes, String cName, String token, String dataType, String spaceGuid, String help,\r
1235 String defaultString, String archList, String modTypeList, XmlObject parent) {\r
1236\r
1237 PcdDeclarationsDocument.PcdDeclarations.PcdEntry pe = ((PcdDeclarationsDocument.PcdDeclarations) parent).addNewPcdEntry();\r
1238 \r
1239 //ToDo: maybe multiple types in, need parse pcdItemTypes.\r
1240 String usage[] = pcdItemTypes.split("( )+");\r
1241 List<String> l = new ArrayList<String>();\r
1242 for (int i = 0; i < usage.length; ++i) {\r
1243 l.add(usage[i]); \r
1244 }\r
1245 pe.setValidUsage(l);\r
1246 pe.setCName(cName);\r
1247 pe.setToken(token);\r
1248 pe.setDatumType(PcdDataTypes.Enum.forString(dataType));\r
1249 pe.setDefaultValue(defaultString);\r
1250 pe.setTokenSpaceGuidCName(spaceGuid);\r
1251 pe.setHelpText(help);\r
1252 if (archList != null){\r
1253 pe.setSupArchList(stringToList(archList));\r
1254 }\r
1255 if (modTypeList != null){\r
1256 pe.setSupModuleList(stringToList(modTypeList));\r
1257 }\r
1258 }\r
1259\r
1260 /**\r
1261 Get PpiDeclarations element\r
1262 \r
1263 @return PpiDeclarationsDocument.PpiDeclarations\r
1264 **/\r
1265 public PpiDeclarationsDocument.PpiDeclarations getSpdPpiDeclarations() {\r
1266 if (spdPpiDeclarations == null) {\r
1267 spdPpiDeclarations = psaRoot.getPpiDeclarations();\r
1268 }\r
1269 return spdPpiDeclarations;\r
1270 }\r
1271\r
1272 /**\r
1273 Get ProtocolDeclarations element\r
1274 \r
1275 @return ProtocolDeclarationsDocument.ProtocolDeclarations\r
1276 **/\r
1277 public ProtocolDeclarationsDocument.ProtocolDeclarations getSpdProtocolDeclarations() {\r
1278 if (spdProtocolDeclarations == null) {\r
1279 spdProtocolDeclarations = psaRoot.getProtocolDeclarations();\r
1280 }\r
1281 return spdProtocolDeclarations;\r
1282 }\r
1283\r
1284 /**\r
1285 Get GuidDeclarations element\r
1286 \r
1287 @return GuidDeclarationsDocument.GuidDeclarations\r
1288 **/\r
1289 public GuidDeclarationsDocument.GuidDeclarations getSpdGuidDeclarations() {\r
1290 if (spdGuidDeclarations == null) {\r
1291 spdGuidDeclarations = psaRoot.getGuidDeclarations();\r
1292 }\r
1293 return spdGuidDeclarations;\r
1294 }\r
1295\r
1296 /**\r
1297 Get PcdDefinitions element\r
1298 \r
1299 @return PcdDefinitionsDocument.PcdDefinitions\r
1300 **/\r
1301 public PcdDeclarationsDocument.PcdDeclarations getSpdPcdDefinitions() {\r
1302 if (spdPcdDefinitions == null) {\r
1303 spdPcdDefinitions = psaRoot.getPcdDeclarations();\r
1304 }\r
1305 return spdPcdDefinitions;\r
1306 }\r
1307\r
1308 /**\r
1309 Get PackageHeaders element\r
1310 \r
1311 @return PackageHeadersDocument.PackageHeaders\r
1312 **/\r
1313 public PackageHeadersDocument.PackageHeaders getSpdModHdrs() {\r
1314 if (spdModHdrs == null) {\r
1315 spdModHdrs = psaRoot.getPackageHeaders();\r
1316 }\r
1317 return spdModHdrs;\r
1318 }\r
1319\r
1320 /**\r
1321 Get MsaFiles element\r
1322 \r
1323 @return MsaFilesDocument.MsaFiles\r
1324 **/\r
1325 public MsaFilesDocument.MsaFiles getSpdMsaFiles() {\r
1326 if (spdMsaFiles == null) {\r
1327 spdMsaFiles = psaRoot.getMsaFiles();\r
1328 }\r
1329 return spdMsaFiles;\r
1330 }\r
1331\r
1332 /**\r
1333 Get LibraryClassDeclarations element\r
1334 \r
1335 @return LibraryClassDeclarationsDocument.LibraryClassDeclarations\r
1336 **/\r
1337 public LibraryClassDeclarationsDocument.LibraryClassDeclarations getSpdLibClassDeclarations() {\r
1338 if (spdLibClassDeclarations == null) {\r
1339 spdLibClassDeclarations = psaRoot.getLibraryClassDeclarations();\r
1340 }\r
1341 return spdLibClassDeclarations;\r
1342 }\r
1343\r
1344 public PackageDefinitionsDocument.PackageDefinitions getSpdPkgDefs() {\r
1345 if (spdPkgDefs == null) {\r
1346 spdPkgDefs = psaRoot.addNewPackageDefinitions();\r
1347 }\r
1348 return spdPkgDefs;\r
1349 }\r
1350 /**\r
1351 Get SpdHeader element\r
1352 \r
1353 @return SpdHeaderDocument.SpdHeader\r
1354 **/\r
1355 public SpdHeaderDocument.SpdHeader getSpdHdr() {\r
1356 if (spdHdr == null) {\r
1357 spdHdr = psaRoot.addNewSpdHeader();\r
1358 }\r
1359 return spdHdr;\r
1360 }\r
1361\r
1362 /**\r
1363 Set value to Guid element\r
1364 \r
1365 @param guid The value set to Guid element\r
1366 **/\r
1367 public void setSpdHdrGuidValue(String guid) {\r
1368 getSpdHdr().setGuidValue(guid);\r
1369 }\r
1370\r
1371 /**\r
1372 Get Version element under SpdHdr\r
1373 \r
1374 @return String\r
1375 **/\r
1376 public String getSpdHdrVer() {\r
1377 return getSpdHdr().getVersion();\r
1378 }\r
1379\r
1380 /**\r
1381 Set value to Version element\r
1382 \r
1383 @param ver The value set to Version element\r
1384 **/\r
1385 public void setSpdHdrVer(String ver) {\r
1386 getSpdHdr().setVersion(ver);\r
1387 }\r
1388\r
1389 public String getSpdHdrAbs(){\r
1390 return getSpdHdr().getAbstract();\r
1391 \r
1392 }\r
1393 \r
1394 /**\r
1395 Set value to Abstract element\r
1396 \r
1397 @param abs The value set to Abstract element\r
1398 **/\r
1399 public void setSpdHdrAbs(String abs) {\r
1400\r
1401 getSpdHdr().setAbstract(abs);\r
1402 }\r
1403 \r
1404 public String getSpdHdrDescription(){\r
1405 return getSpdHdr().getDescription(); \r
1406 }\r
1407 /**\r
1408 Set value to Description element\r
1409 \r
1410 @param des The value set to Description element\r
1411 **/\r
1412 public void setSpdHdrDescription(String des) {\r
1413 getSpdHdr().setDescription(des);\r
1414 }\r
1415 \r
1416 public String getSpdHdrCopyright(){\r
1417 return getSpdHdr().getCopyright();\r
1418 }\r
1419 /**\r
1420 Set value to Copyright element\r
1421 \r
1422 @param cpRit The value set to Copyright element\r
1423 **/\r
1424 public void setSpdHdrCopyright(String cpRit) {\r
1425\r
1426 getSpdHdr().setCopyright(cpRit);\r
1427\r
1428 }\r
1429 /**\r
1430 Get License element under SpdHdr\r
1431 \r
1432 @return String\r
1433 **/\r
1434 public String getSpdHdrLicense() {\r
1435 if (getSpdHdr().getLicense() != null) {\r
1436 return getSpdHdr().getLicense().getStringValue();\r
1437 }\r
1438 return null;\r
1439 }\r
1440\r
1441 /**\r
1442 Set value to License element\r
1443 \r
1444 @param license The value set to License element\r
1445 **/\r
1446 public void setSpdHdrLicense(String license) {\r
1447 if (getSpdHdr().getLicense() == null){\r
1448 getSpdHdr().addNewLicense().setStringValue(license);\r
1449 }\r
1450 else {\r
1451 getSpdHdr().getLicense().setStringValue(license);\r
1452 }\r
1453 }\r
1454 \r
1455 public String getSpdHdrUrl(){\r
1456 if (getSpdHdr().getLicense() != null) {\r
1457 return getSpdHdr().getLicense().getURL();\r
1458 }\r
1459 return null;\r
1460 }\r
1461 \r
1462 public void setSpdHdrUrl(String url){\r
1463 getSpdHdr().getLicense().setURL(url);\r
1464 }\r
1465\r
1466 /**\r
1467 Get PackageName element under SpdHdr\r
1468 \r
1469 @return String\r
1470 **/\r
1471 public String getSpdHdrPkgName() {\r
1472 \r
1473 return getSpdHdr().getPackageName();\r
1474 }\r
1475\r
1476 /**\r
1477 Set value to PackageName element\r
1478 \r
1479 @param pkgName The value set to PackageName element\r
1480 **/\r
1481 public void setSpdHdrPkgName(String pkgName) {\r
1482 getSpdHdr().setPackageName(pkgName);\r
1483 }\r
1484\r
1485 public String getSpdHdrGuidValue(){\r
1486 return getSpdHdr().getGuidValue();\r
1487 }\r
1488 \r
1489 /**\r
1490 Reserved method\r
1491 \r
1492 @return SpecificationDocument.Specification\r
1493 **/\r
1494 public String getSpdHdrSpec() {\r
1495 return "FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052";\r
1496// return getSpdHdr().getSpecification();\r
1497 }\r
1498\r
1499 /**\r
1500 Reserved method\r
1501 \r
1502 @param spec \r
1503 **/\r
1504 public void setSpdHdrSpec(String spec) {\r
1505 spec = "FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052";\r
1506 getSpdHdr().setSpecification(spec);\r
1507 \r
1508 }\r
1509\r
1510 public String getSpdPkgDefsRdOnly(){\r
1511 return getSpdPkgDefs().getReadOnly() + "";\r
1512 }\r
1513 /**\r
1514 Set value to ReadOnly element\r
1515 \r
1516 @param rdOnly The value set to ReadOnly element\r
1517 **/\r
1518 public void setSpdPkgDefsRdOnly(String rdOnly) {\r
1519\r
1520 getSpdPkgDefs().setReadOnly(new Boolean(rdOnly));\r
1521 }\r
1522\r
1523 public String getSpdPkgDefsRePkg(){\r
1524 return getSpdPkgDefs().getRePackage() + "";\r
1525 }\r
1526 /**\r
1527 Set value to RePackage element\r
1528 \r
1529 @param rePkg The value set to RePackage element\r
1530 **/\r
1531 public void setSpdPkgDefsRePkg(String rePkg) {\r
1532\r
1533 getSpdPkgDefs().setRePackage(new Boolean(rePkg));\r
1534 }\r
1535\r
1536 /**\r
1537 Set value to URL element\r
1538 \r
1539 @param url The value set to URL element\r
1540 **/\r
1541// public void setSpdHdrURL(String url) {\r
1542// getSpdHdr().setURL(url);\r
1543// }\r
1544\r
1545 /**\r
1546 Get xml file\r
1547 \r
1548 @return File\r
1549 **/\r
1550 public File getFile() {\r
1551 return file;\r
1552 }\r
1553\r
1554 /**\r
1555 Set file\r
1556 \r
1557 @param file File with xml format\r
1558 **/\r
1559 public void setFile(File file) {\r
1560 this.file = file;\r
1561 }\r
1562 \r
1563 private List<String> stringToList(String s){\r
ce73a791 1564 if (s == null || s.length() == 0) {\r
a13899c5 1565 return null;\r
1566 }\r
ce73a791 1567 Vector<String> al = new Vector<String>();\r
a13899c5 1568 String[] sArray = s.split(" ");\r
1569 for(int i = 0; i < sArray.length; ++i){\r
1570 al.add(sArray[i]);\r
1571 }\r
1572 return al; \r
1573 }\r
1574 \r
ce73a791 1575 private String listToString(List l) {\r
a13899c5 1576 if (l == null) {\r
1577 return null;\r
1578 }\r
1579 String s = " ";\r
1580 ListIterator li = l.listIterator();\r
1581 while(li.hasNext()) {\r
1582 s += li.next();\r
1583 s += " ";\r
1584 }\r
1585 return s.trim();\r
1586 }\r
1587\r
1588}\r