+ public BuildOptionsDocument.BuildOptions getfpdBuildOpts() {\r
+ if (fpdBuildOpts == null) {\r
+ fpdBuildOpts = fpdRoot.addNewBuildOptions();\r
+ }\r
+ return fpdBuildOpts;\r
+ }\r
+ \r
+ public void genBuildOptionsUserDefAntTask (String id, String fileName, String execOrder) {\r
+ UserDefinedAntTasksDocument.UserDefinedAntTasks udats = getfpdBuildOpts().getUserDefinedAntTasks();\r
+ if (udats == null) {\r
+ udats = getfpdBuildOpts().addNewUserDefinedAntTasks();\r
+ }\r
+ \r
+ AntTaskDocument.AntTask at = udats.addNewAntTask();\r
+ setBuildOptionsUserDefAntTask(id, fileName, execOrder, at);\r
+ }\r
+ \r
+ private void setBuildOptionsUserDefAntTask(String id, String fileName, String execOrder, AntTaskDocument.AntTask at) {\r
+ at.setId(new Integer(id));\r
+ XmlCursor cursor = at.newCursor();\r
+ if (fileName != null){\r
+ at.setFilename(fileName);\r
+ }\r
+ else if (cursor.toChild(xmlNs, "Filename")) {\r
+ cursor.removeXml();\r
+ }\r
+ if (execOrder != null) {\r
+ at.setAntCmdOptions(execOrder);\r
+ }\r
+ else if (cursor.toChild(xmlNs, "AntCmdOptions")) {\r
+ cursor.removeXml();\r
+ }\r
+ cursor.dispose();\r
+ }\r
+ \r
+ public void removeBuildOptionsUserDefAntTask(int i) {\r
+ XmlObject o = getfpdBuildOpts().getUserDefinedAntTasks();\r
+ if (o == null) {\r
+ return;\r
+ }\r
+ XmlCursor cursor = o.newCursor();\r
+ if (cursor.toFirstChild()) {\r
+ for (int j = 0; j < i; ++j) {\r
+ cursor.toNextSibling();\r
+ }\r
+ cursor.removeXml();\r
+ if (getBuildOptionsUserDefAntTaskCount() == 0) {\r
+ cursor.toParent();\r
+ cursor.removeXml();\r
+ }\r
+ }\r
+ cursor.dispose();\r
+ }\r
+ \r
+ public void updateBuildOptionsUserDefAntTask(int i, String id, String fileName, String execOrder){\r
+ XmlObject o = getfpdBuildOpts().getUserDefinedAntTasks();\r
+ if (o == null) {\r
+ return;\r
+ }\r
+ XmlCursor cursor = o.newCursor();\r
+ if (cursor.toFirstChild()) {\r
+ for (int j = 0; j < i; ++j) {\r
+ cursor.toNextSibling();\r
+ }\r
+ AntTaskDocument.AntTask at = (AntTaskDocument.AntTask)cursor.getObject();\r
+ setBuildOptionsUserDefAntTask(id, fileName, execOrder, at);\r
+ }\r
+ cursor.dispose();\r
+ }\r
+ \r
+ public int getBuildOptionsUserDefAntTaskCount() {\r
+ UserDefinedAntTasksDocument.UserDefinedAntTasks udats = getfpdBuildOpts().getUserDefinedAntTasks();\r
+ if (udats == null || udats.getAntTaskList() == null) {\r
+ return 0;\r
+ }\r
+ \r
+ return udats.getAntTaskList().size();\r
+ }\r
+ \r
+ public void getBuildOptionsUserDefAntTasks(String[][] saa) {\r
+ UserDefinedAntTasksDocument.UserDefinedAntTasks udats = getfpdBuildOpts().getUserDefinedAntTasks();\r
+ if (udats == null || udats.getAntTaskList() == null) {\r
+ return ;\r
+ }\r
+ \r
+ List<AntTaskDocument.AntTask> l = udats.getAntTaskList();\r
+ ListIterator li = l.listIterator();\r
+ int i = 0;\r
+ while (li.hasNext()) {\r
+ AntTaskDocument.AntTask at = (AntTaskDocument.AntTask)li.next();\r
+ saa[i][0] = at.getId() + "";\r
+ saa[i][1] = saa[i][2] = "";\r
+ if (at.getFilename() != null){\r
+ saa[i][1] = at.getFilename();\r
+ }\r
+ if (at.getAntCmdOptions() != null) {\r
+ saa[i][2] = at.getAntCmdOptions();\r
+ }\r
+ ++i;\r
+ }\r
+ }\r
+ public void genBuildOptionsOpt(Vector<Object> buildTargets, String toolChain, String tagName, String toolCmd, Vector<Object> archList, String contents) {\r
+ OptionsDocument.Options opts = getfpdBuildOpts().getOptions();\r
+ if (opts == null) {\r
+ opts = getfpdBuildOpts().addNewOptions();\r
+ }\r
+ OptionDocument.Option opt = opts.addNewOption();\r
+ setBuildOptionsOpt(buildTargets, toolChain, tagName, toolCmd, archList, contents, opt);\r
+ }\r
+ \r
+ private void setBuildOptionsOpt(Vector<Object> buildTargets, String toolChain, String tagName, String toolCmd, Vector<Object> archList, String contents, OptionDocument.Option opt){\r
+ opt.setStringValue(contents);\r
+ \r
+ opt.setBuildTargets(buildTargets);\r
+ opt.setToolChainFamily(toolChain);\r
+ opt.setTagName(tagName);\r
+ opt.setToolCode(toolCmd);\r
+ \r
+ if (archList != null) {\r
+ opt.setSupArchList(archList);\r
+ }\r
+ else {\r
+ if (opt.isSetSupArchList()) {\r
+ opt.unsetSupArchList();\r
+ }\r
+ }\r
+ }\r
+ \r
+ public void removeBuildOptionsOpt(int i){\r
+ \r
+ XmlObject o = getfpdBuildOpts().getOptions();\r
+ if (o == null) {\r
+ return;\r
+ }\r
+ \r
+ XmlCursor cursor = o.newCursor();\r
+ if (cursor.toFirstChild()) {\r
+ for (int j = 0; j < i; ++j) {\r
+ cursor.toNextSibling();\r
+ }\r
+ cursor.removeXml();\r
+ if (getBuildOptionsOptCount() == 0) {\r
+ cursor.toParent();\r
+ cursor.removeXml();\r
+ }\r
+ }\r
+ cursor.dispose();\r
+ }\r
+ \r
+ public void updateBuildOptionsOpt(int i, Vector<Object> buildTargets, String toolChain, String tagName, String toolCmd, Vector<Object> archList, String contents) {\r
+ XmlObject o = getfpdBuildOpts().getOptions();\r
+ if (o == null) {\r
+ return;\r
+ }\r
+ \r
+ XmlCursor cursor = o.newCursor();\r
+ if (cursor.toFirstChild()) {\r
+ for (int j = 0; j < i; ++j) {\r
+ cursor.toNextSibling();\r
+ }\r
+ OptionDocument.Option opt = (OptionDocument.Option)cursor.getObject();\r
+ setBuildOptionsOpt(buildTargets, toolChain, tagName, toolCmd, archList, contents, opt);\r
+ }\r
+ cursor.dispose();\r
+ }\r
+ \r
+ public int getBuildOptionsOptCount(){\r
+ if (getfpdBuildOpts().getOptions() == null || getfpdBuildOpts().getOptions().getOptionList() == null) {\r
+ return 0;\r
+ }\r
+ return getfpdBuildOpts().getOptions().getOptionList().size();\r
+ }\r
+ \r
+ public void getBuildOptionsOpts(String[][] saa) {\r
+ if (getfpdBuildOpts().getOptions() == null || getfpdBuildOpts().getOptions().getOptionList() == null) {\r
+ return ;\r
+ }\r
+ \r
+ List<OptionDocument.Option> lOpt = getfpdBuildOpts().getOptions().getOptionList();\r
+ ListIterator li = lOpt.listIterator();\r
+ int i = 0;\r
+ while(li.hasNext()) {\r
+ OptionDocument.Option opt = (OptionDocument.Option)li.next();\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
+ saa[i][2] = listToString(opt.getSupArchList());\r
+\r
+ }\r
+ saa[i][3] = opt.getToolCode();\r
+ saa[i][4] = opt.getTagName();\r
+ saa[i][5] = opt.getStringValue();\r
+ \r
+ ++i;\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 updateBuildOptionsFfsSectionsType(int i, String type) {\r
+ BuildOptionsDocument.BuildOptions.Ffs ffs = getfpdBuildOpts().addNewFfs();\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 removeBuildOptionsFfsSectionsSection(int i, int j) {\r
+ BuildOptionsDocument.BuildOptions.Ffs ffs = getFfs(i);\r
+ BuildOptionsDocument.BuildOptions.Ffs.Sections sections = ffs.getSections();\r
+ if (sections == null) {\r
+ return;\r
+ }\r
+ XmlCursor cursor = sections.newCursor();\r
+ QName qSection = new QName(xmlNs, "Section");\r
+ if (cursor.toChild(qSection)) {\r
+ for (int k = 0; k < j; ++k) {\r
+ cursor.toNextSibling(qSection);\r
+ }\r
+ cursor.removeXml();\r
+ }\r
+ cursor.dispose();\r
+ }\r
+ \r
+ public void updateBuildOptionsFfsSectionsSection(int i, int j, String type){\r
+ BuildOptionsDocument.BuildOptions.Ffs ffs = getFfs(i);\r
+ BuildOptionsDocument.BuildOptions.Ffs.Sections sections = ffs.getSections();\r
+ if (sections == null) {\r
+ return;\r
+ }\r
+ XmlCursor cursor = sections.newCursor();\r
+ QName qSection = new QName(xmlNs, "Section");\r
+ if (cursor.toChild(qSection)) {\r
+ for (int k = 0; k < j; ++k) {\r
+ cursor.toNextSibling(qSection);\r
+ }\r
+ BuildOptionsDocument.BuildOptions.Ffs.Sections.Section section = (BuildOptionsDocument.BuildOptions.Ffs.Sections.Section)cursor.getObject();\r
+ section.setSectionType(EfiSectionType.Enum.forString(type));\r
+ }\r
+ cursor.dispose();\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 removeBuildOptionsFfsSectionsSections(int i, int j) {\r
+ BuildOptionsDocument.BuildOptions.Ffs ffs = getFfs(i);\r
+ BuildOptionsDocument.BuildOptions.Ffs.Sections sections = ffs.getSections();\r
+ if (sections == null) {\r
+ return;\r
+ }\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
+ cursor.removeXml();\r
+ }\r
+ cursor.dispose();\r
+ }\r
+ \r
+ public void updateBuildOptionsFfsSectionsSections(int i, int j, String type) {\r
+ BuildOptionsDocument.BuildOptions.Ffs ffs = getFfs(i);\r
+ BuildOptionsDocument.BuildOptions.Ffs.Sections sections = ffs.getSections();\r
+ if (sections == null) {\r
+ return;\r
+ }\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.setEncapsulationType(type);\r
+ }\r
+ cursor.dispose();\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 removeBuildOptionsFfsSectionsSectionsSection(int i, int j, int k) {\r
+ BuildOptionsDocument.BuildOptions.Ffs ffs = getFfs(i);\r
+ BuildOptionsDocument.BuildOptions.Ffs.Sections sections = ffs.getSections();\r
+ if (sections == null) {\r
+ return;\r
+ }\r
+ XmlCursor cursor = sections.newCursor();\r
+ QName qSections = new QName(xmlNs, "Sections");\r
+ if (cursor.toChild(qSections)) {\r
+ for (int l = 0; l < j; ++l) {\r
+ cursor.toNextSibling(qSections);\r
+ }\r
+ if (cursor.toFirstChild()) {\r
+ int m = 0;\r
+ for (; m < k; ++m) {\r
+ cursor.toNextSibling();\r
+ }\r
+ cursor.removeXml();\r
+ if (m == 0) {\r
+ cursor.toParent();\r
+ cursor.removeXml();\r
+ }\r
+ }\r
+ }\r
+ cursor.dispose();\r
+ }\r
+ \r
+ public void updateBuildOptionsFfsSectionsSectionsSection(int i, int j, int k, String type) {\r
+ BuildOptionsDocument.BuildOptions.Ffs ffs = getFfs(i);\r
+ BuildOptionsDocument.BuildOptions.Ffs.Sections sections = ffs.getSections();\r
+ if (sections == null) {\r
+ return;\r
+ }\r
+ XmlCursor cursor = sections.newCursor();\r
+ QName qSections = new QName(xmlNs, "Sections");\r
+ if (cursor.toChild(qSections)) {\r
+ for (int l = 0; l < j; ++l) {\r
+ cursor.toNextSibling(qSections);\r
+ }\r
+ if (cursor.toFirstChild()) {\r
+ for (int m = 0; m < k; ++m) {\r
+ cursor.toNextSibling();\r
+ }\r
+ BuildOptionsDocument.BuildOptions.Ffs.Sections.Sections2.Section section = (BuildOptionsDocument.BuildOptions.Ffs.Sections.Sections2.Section)cursor.getObject();\r
+ section.setSectionType(EfiSectionType.Enum.forString(type));\r
+ }\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
+ if (section.isSetSectionType()) {\r
+ al.add(section.getSectionType().toString());\r
+ }\r
+ \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
+ public void updateBuildOptionsFfsKey(int i, String key) {\r
+ BuildOptionsDocument.BuildOptions.Ffs ffs = getFfs(i);\r
+ ffs.setFfsKey(key);\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