import org.tianocore.AntTaskDocument;\r
import org.tianocore.BuildOptionsDocument;\r
import org.tianocore.DynamicPcdBuildDefinitionsDocument;\r
+import org.tianocore.EfiSectionType;\r
import org.tianocore.FlashDefinitionFileDocument;\r
import org.tianocore.FlashDocument;\r
import org.tianocore.FrameworkModulesDocument;\r
int i = 0;\r
while(li.hasNext()) {\r
OptionDocument.Option opt = (OptionDocument.Option)li.next();\r
-// saa[i][0] = opt.getBuildTargets();\r
+ if (opt.getBuildTargets() != null) {\r
+ saa[i][0] = listToString(opt.getBuildTargets());\r
+ }\r
saa[i][1] = opt.getToolChainFamily();\r
if (opt.getSupArchList() != null){\r
- Object[] archs = opt.getSupArchList().toArray();\r
- saa[i][2] = " ";\r
- for (int j = 0; j < archs.length; ++j){\r
- saa[i][2] += archs[j];\r
- saa[i][2] += " ";\r
- }\r
- saa[i][2] = saa[i][2].trim();\r
+ saa[i][2] = listToString(opt.getSupArchList());\r
+\r
}\r
saa[i][3] = opt.getToolCode();\r
saa[i][4] = opt.getTagName();\r
}\r
}\r
\r
+ public void genBuildOptionsFfs(String ffsKey, String type) {\r
+ BuildOptionsDocument.BuildOptions.Ffs ffs = getfpdBuildOpts().addNewFfs();\r
+ ffs.setFfsKey(ffsKey);\r
+ if (type != null) {\r
+ ffs.addNewSections().setEncapsulationType(type);\r
+ }\r
+ }\r
+ \r
+ public void genBuildOptionsFfsAttribute(int i, String name, String value) {\r
+ BuildOptionsDocument.BuildOptions.Ffs ffs = getFfs(i);\r
+ BuildOptionsDocument.BuildOptions.Ffs.Attribute attrib = ffs.addNewAttribute();\r
+ attrib.setName(name);\r
+ attrib.setValue(value);\r
+ }\r
+ \r
+ /**update jth attribute of ith ffs.\r
+ * @param i\r
+ * @param j\r
+ */\r
+ public void updateBuildOptionsFfsAttribute(int i, int j, String name, String value){\r
+ BuildOptionsDocument.BuildOptions.Ffs ffs = getFfs(i);\r
+ XmlCursor cursor = ffs.newCursor();\r
+ QName qAttrib = new QName(xmlNs, "Attribute");\r
+ if (cursor.toChild(qAttrib)) {\r
+ for (int k = 0; k < j; ++k) {\r
+ cursor.toNextSibling(qAttrib);\r
+ }\r
+ BuildOptionsDocument.BuildOptions.Ffs.Attribute attrib = (BuildOptionsDocument.BuildOptions.Ffs.Attribute)cursor.getObject();\r
+ attrib.setName(name);\r
+ attrib.setValue(value);\r
+ }\r
+ cursor.dispose();\r
+ }\r
+ \r
+ public void removeBuildOptionsFfsAttribute(int i, int j){\r
+ BuildOptionsDocument.BuildOptions.Ffs ffs = getFfs(i);\r
+ XmlCursor cursor = ffs.newCursor();\r
+ QName qAttrib = new QName(xmlNs, "Attribute");\r
+ if (cursor.toChild(qAttrib)) {\r
+ for (int k = 0; k < j; ++k) {\r
+ cursor.toNextSibling(qAttrib);\r
+ }\r
+ cursor.removeXml();\r
+ }\r
+ cursor.dispose();\r
+ }\r
+ \r
+ public void genBuildOptionsFfsSectionsSection(int i, String sectionType) {\r
+ BuildOptionsDocument.BuildOptions.Ffs ffs = getFfs(i);\r
+ if (ffs == null) {\r
+ return;\r
+ }\r
+ BuildOptionsDocument.BuildOptions.Ffs.Sections sections = ffs.getSections();\r
+ \r
+ if (sections == null){\r
+ sections = ffs.addNewSections();\r
+ }\r
+ sections.addNewSection().setSectionType(EfiSectionType.Enum.forString(sectionType));\r
+ }\r
+ \r
+ public void genBuildOptionsFfsSectionsSections(int i, String encapType) {\r
+ BuildOptionsDocument.BuildOptions.Ffs ffs = getFfs(i);\r
+ if (ffs == null) {\r
+ return;\r
+ }\r
+ BuildOptionsDocument.BuildOptions.Ffs.Sections sections = ffs.getSections();\r
+ \r
+ if (sections == null){\r
+ sections = ffs.addNewSections();\r
+ }\r
+ sections.addNewSections().setEncapsulationType(encapType);\r
+ }\r
+ \r
+ public void genBuildOptionsFfsSectionsSectionsSection(int i, int j, String type) {\r
+ BuildOptionsDocument.BuildOptions.Ffs ffs = getFfs(i);\r
+ if (ffs == null) {\r
+ return;\r
+ }\r
+ BuildOptionsDocument.BuildOptions.Ffs.Sections sections = ffs.getSections();\r
+ XmlCursor cursor = sections.newCursor();\r
+ QName qSections = new QName(xmlNs, "Sections");\r
+ if (cursor.toChild(qSections)){\r
+ for (int k = 0; k < j; ++k) {\r
+ cursor.toNextSibling(qSections);\r
+ }\r
+ BuildOptionsDocument.BuildOptions.Ffs.Sections.Sections2 sections2 = (BuildOptionsDocument.BuildOptions.Ffs.Sections.Sections2)cursor.getObject();\r
+ sections2.addNewSection().setSectionType(EfiSectionType.Enum.forString(type));\r
+ }\r
+ cursor.dispose();\r
+ }\r
+ \r
+ public void getBuildOptionsFfsSectionsSectionsSection(int i, int j, ArrayList<String> al) {\r
+ BuildOptionsDocument.BuildOptions.Ffs ffs = getFfs(i);\r
+ if (ffs == null) {\r
+ return;\r
+ }\r
+ BuildOptionsDocument.BuildOptions.Ffs.Sections sections = ffs.getSections();\r
+ XmlCursor cursor = sections.newCursor();\r
+ QName qSections = new QName(xmlNs, "Sections");\r
+ if (cursor.toChild(qSections)){\r
+ for (int k = 0; k < j; ++k) {\r
+ cursor.toNextSibling(qSections);\r
+ }\r
+ BuildOptionsDocument.BuildOptions.Ffs.Sections.Sections2 sections2 = (BuildOptionsDocument.BuildOptions.Ffs.Sections.Sections2)cursor.getObject();\r
+ if (sections2.getSectionList() == null){\r
+ cursor.dispose();\r
+ return;\r
+ }\r
+ ListIterator<BuildOptionsDocument.BuildOptions.Ffs.Sections.Sections2.Section> li = sections2.getSectionList().listIterator();\r
+ while(li.hasNext()) {\r
+ BuildOptionsDocument.BuildOptions.Ffs.Sections.Sections2.Section section = li.next();\r
+ al.add(section.getSectionType().toString());\r
+ }\r
+ }\r
+ cursor.dispose();\r
+ \r
+ }\r
+ \r
+ public int getBuildOptionsFfsCount(){\r
+ if (getfpdBuildOpts().getFfsList() == null) {\r
+ return 0;\r
+ }\r
+ return getfpdBuildOpts().getFfsList().size();\r
+ }\r
+ \r
+ public void getBuildOptionsFfsKey(String[][] saa) {\r
+ if (getfpdBuildOpts().getFfsList() == null) {\r
+ return;\r
+ }\r
+ ListIterator<BuildOptionsDocument.BuildOptions.Ffs> li = getfpdBuildOpts().getFfsList().listIterator();\r
+ int i = 0;\r
+ while(li.hasNext()){\r
+ BuildOptionsDocument.BuildOptions.Ffs ffs = li.next();\r
+ saa[i][0] = ffs.getFfsKey();\r
+ ++i;\r
+ }\r
+ }\r
+ \r
+ /**Get ith FFS key and contents.\r
+ * @param saa\r
+ */\r
+ public void getBuildOptionsFfs(int i, String[] sa, LinkedHashMap<String, String> ffsAttribMap, ArrayList<String> firstLevelSections, ArrayList<String> firstLevelSection) {\r
+ BuildOptionsDocument.BuildOptions.Ffs ffs = getFfs(i);\r
+ \r
+ if (ffs != null) {\r
+ \r
+ sa[0] = ffs.getFfsKey();\r
+ if (ffs.getSections() != null) {\r
+ if(ffs.getSections().getEncapsulationType() != null){\r
+ sa[1] = ffs.getSections().getEncapsulationType();\r
+ }\r
+ if (ffs.getSections().getSectionList() != null){\r
+ ListIterator<BuildOptionsDocument.BuildOptions.Ffs.Sections.Section> li = ffs.getSections().getSectionList().listIterator();\r
+ while (li.hasNext()) {\r
+ firstLevelSection.add(li.next().getSectionType().toString());\r
+ }\r
+ }\r
+ if (ffs.getSections().getSectionsList() != null) {\r
+ ListIterator<BuildOptionsDocument.BuildOptions.Ffs.Sections.Sections2> li = ffs.getSections().getSectionsList().listIterator();\r
+ while(li.hasNext()) {\r
+ firstLevelSections.add(li.next().getEncapsulationType());\r
+ }\r
+ }\r
+ }\r
+ if (ffs.getAttributeList() != null) {\r
+ ListIterator<BuildOptionsDocument.BuildOptions.Ffs.Attribute> li = ffs.getAttributeList().listIterator();\r
+ while(li.hasNext()) {\r
+ BuildOptionsDocument.BuildOptions.Ffs.Attribute attrib = li.next();\r
+ ffsAttribMap.put(attrib.getName(), attrib.getValue());\r
+ }\r
+ \r
+ }\r
+ }\r
+\r
+ \r
+ }\r
+ \r
+ private BuildOptionsDocument.BuildOptions.Ffs getFfs(int i) {\r
+ XmlObject o = getfpdBuildOpts();\r
+ BuildOptionsDocument.BuildOptions.Ffs ffs = null;\r
+ \r
+ XmlCursor cursor = o.newCursor();\r
+ QName qFfs = new QName(xmlNs, "Ffs");\r
+ if (cursor.toChild(qFfs)) {\r
+ for (int j = 0; j < i; ++j) {\r
+ cursor.toNextSibling(qFfs);\r
+ }\r
+ ffs = (BuildOptionsDocument.BuildOptions.Ffs)cursor.getObject();\r
+ }\r
+ cursor.dispose();\r
+ return ffs;\r
+ }\r
+ \r
+ public void removeBuildOptionsFfs(int i) {\r
+ BuildOptionsDocument.BuildOptions.Ffs ffs = getFfs(i);\r
+ if (ffs == null){\r
+ return;\r
+ }\r
+ \r
+ XmlCursor cursor = ffs.newCursor();\r
+ cursor.removeXml();\r
+ cursor.dispose();\r
+ }\r
+ \r
public PlatformDefinitionsDocument.PlatformDefinitions getfpdPlatformDefs(){\r
if (fpdPlatformDefs == null){\r
fpdPlatformDefs = fpdRoot.addNewPlatformDefinitions();\r