]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFileContents.java
some bug fixing for FpdFrameworkModules
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdFileContents.java
index 3d34eb5b63d44cd39dd1f03bea19a6d162fc4c12..a8191aba5fe91cdd14d43fe735cdf4ed3900d6f1 100644 (file)
@@ -23,6 +23,7 @@ import java.util.List;
 import java.util.ListIterator;\r
 import java.util.Map;\r
 import java.util.Set;\r
+import java.util.Vector;\r
 \r
 import javax.xml.namespace.QName;\r
 \r
@@ -36,6 +37,7 @@ import org.tianocore.EfiSectionType;
 import org.tianocore.FlashDefinitionFileDocument;\r
 import org.tianocore.FlashDocument;\r
 import org.tianocore.FrameworkModulesDocument;\r
+import org.tianocore.IntermediateOutputType;\r
 import org.tianocore.LibrariesDocument;\r
 import org.tianocore.ModuleSADocument;\r
 import org.tianocore.ModuleSurfaceAreaDocument;\r
@@ -172,29 +174,6 @@ public class FpdFileContents {
         return fpdFrameworkModules;\r
     }\r
     \r
-    public int getPlatformDefsSkuInfoCount(){\r
-        if (getfpdPlatformDefs().getSkuInfo() == null || getfpdPlatformDefs().getSkuInfo().getUiSkuNameList() == null) {\r
-            return 0;\r
-        }\r
-        return getfpdPlatformDefs().getSkuInfo().getUiSkuNameList().size();\r
-    }\r
-    \r
-    public void getPlatformDefsSkuInfos(String[][] saa){\r
-        if (getfpdPlatformDefs().getSkuInfo() == null || getfpdPlatformDefs().getSkuInfo().getUiSkuNameList() == null) {\r
-            return ;\r
-        }\r
-        \r
-        List<SkuInfoDocument.SkuInfo.UiSkuName> l = getfpdPlatformDefs().getSkuInfo().getUiSkuNameList();\r
-        ListIterator<SkuInfoDocument.SkuInfo.UiSkuName> li = l.listIterator();\r
-        int i = 0;\r
-        while(li.hasNext()) {\r
-            SkuInfoDocument.SkuInfo.UiSkuName sku = li.next();\r
-            saa[i][0] = sku.getSkuID()+"";\r
-            saa[i][1] = sku.getStringValue();\r
-            ++i;\r
-        }\r
-    }\r
-    \r
     public int getFrameworkModulesCount() {\r
         if (getfpdFrameworkModules().getModuleSAList() == null){\r
             return 0;\r
@@ -229,9 +208,27 @@ public class FpdFileContents {
         ListIterator li = getfpdFrameworkModules().getModuleSAList().listIterator();\r
         while(li.hasNext()) {\r
             ModuleSADocument.ModuleSA msa = (ModuleSADocument.ModuleSA)li.next();\r
-            if (msa.getModuleGuid().equals(s[0]) && msa.getModuleVersion().equals(s[1])\r
-                            && msa.getPackageGuid().equals(s[2]) && msa.getPackageVersion().equals(s[3])) {\r
-                \r
+            if (msa.getModuleGuid().equals(s[0]) && msa.getPackageGuid().equals(s[2])) {\r
+                if (msa.getModuleVersion() != null) {\r
+                    if (!msa.getModuleVersion().equals(s[1])) {\r
+                        continue;\r
+                    }\r
+                }\r
+                else{\r
+                    if (s[1] != null) {\r
+                        continue;\r
+                    }\r
+                }\r
+                if (msa.getPackageVersion() != null) {\r
+                    if (!msa.getPackageVersion().equals(s[3])) {\r
+                        continue;\r
+                    }\r
+                }\r
+                else{\r
+                    if (s[3] != null) {\r
+                        continue;\r
+                    }\r
+                }\r
                 return msa;\r
             }\r
         }\r
@@ -412,6 +409,149 @@ public class FpdFileContents {
         instance.setPackageVersion(pv);\r
         \r
     }\r
+    \r
+    public String getFvBinding(String moduleKey){\r
+        ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey);\r
+        if (msa == null || msa.getModuleSaBuildOptions() == null) {\r
+            return null;\r
+        }\r
+        return msa.getModuleSaBuildOptions().getFvBinding();\r
+    }\r
+    \r
+    public void setFvBinding(String moduleKey, String fvBinding){\r
+        ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey);\r
+        if (msa == null ) {\r
+            return;\r
+        }\r
+        if(msa.getModuleSaBuildOptions() == null){\r
+            msa.addNewModuleSaBuildOptions().setFvBinding(fvBinding);\r
+            return;\r
+        }\r
+        msa.getModuleSaBuildOptions().setFvBinding(fvBinding);\r
+    }\r
+    \r
+    public String getFfsFileNameGuid(String moduleKey){\r
+        ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey);\r
+        if (msa == null || msa.getModuleSaBuildOptions() == null) {\r
+            return null;\r
+        }\r
+        return msa.getModuleSaBuildOptions().getFfsFileNameGuid();\r
+    }\r
+    \r
+    public void setFfsFileNameGuid(String moduleKey, String fileGuid){\r
+        ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey);\r
+        if (msa == null ) {\r
+            return;\r
+        }\r
+        if(msa.getModuleSaBuildOptions() == null){\r
+            msa.addNewModuleSaBuildOptions().setFfsFileNameGuid(fileGuid);\r
+            return;\r
+        }\r
+        msa.getModuleSaBuildOptions().setFfsFileNameGuid(fileGuid);\r
+    }\r
+    \r
+    public String getFfsFormatKey(String moduleKey){\r
+        ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey);\r
+        if (msa == null || msa.getModuleSaBuildOptions() == null) {\r
+            return null;\r
+        }\r
+        return msa.getModuleSaBuildOptions().getFfsFormatKey();\r
+    }\r
+    \r
+    public void setFfsFormatKey(String moduleKey, String ffsKey){\r
+        ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey);\r
+        if (msa == null ) {\r
+            return;\r
+        }\r
+        if(msa.getModuleSaBuildOptions() == null){\r
+            msa.addNewModuleSaBuildOptions().setFfsFormatKey(ffsKey);\r
+            return;\r
+        }\r
+        msa.getModuleSaBuildOptions().setFvBinding(ffsKey);\r
+    }\r
+    \r
+    public void getModuleSAOptions(String moduleKey, String[][] saa) {\r
+        ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey);\r
+        if (msa.getModuleSaBuildOptions() == null || msa.getModuleSaBuildOptions().getOptions() == null\r
+                        || msa.getModuleSaBuildOptions().getOptions().getOptionList() == null) {\r
+            return ;\r
+        }\r
+        \r
+        List<OptionDocument.Option> lOpt = msa.getModuleSaBuildOptions().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 int getModuleSAOptionsCount(String moduleKey){\r
+        ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey);\r
+        if (msa.getModuleSaBuildOptions() == null || msa.getModuleSaBuildOptions().getOptions() == null\r
+                        || msa.getModuleSaBuildOptions().getOptions().getOptionList() == null) {\r
+            return 0;\r
+        }\r
+        return msa.getModuleSaBuildOptions().getOptions().getOptionList().size();\r
+    }\r
+    \r
+    public void genModuleSAOptionsOpt(String moduleKey, Vector<Object> buildTargets, String toolChain, String tagName, String toolCmd, Vector<Object> archList, String contents) {\r
+        ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey);\r
+        if (msa.getModuleSaBuildOptions() == null) {\r
+            msa.addNewModuleSaBuildOptions();\r
+        }\r
+        if (msa.getModuleSaBuildOptions().getOptions() == null){\r
+            msa.getModuleSaBuildOptions().addNewOptions();\r
+        }\r
+        OptionDocument.Option opt = msa.getModuleSaBuildOptions().getOptions().addNewOption();\r
+        setBuildOptionsOpt(buildTargets, toolChain, tagName, toolCmd, archList, contents, opt);\r
+    }\r
+    \r
+    public void removeModuleSAOptionsOpt(String moduleKey, int i) {\r
+        ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey);\r
+        if (msa.getModuleSaBuildOptions() == null || msa.getModuleSaBuildOptions().getOptions() == null) {\r
+            return ;\r
+        }\r
+        OptionsDocument.Options opts = msa.getModuleSaBuildOptions().getOptions();\r
+        XmlCursor cursor = opts.newCursor();\r
+        if (cursor.toFirstChild()) {\r
+            for (int j = 0; j < i; ++j){\r
+                cursor.toNextSibling();\r
+            }\r
+            cursor.removeXml();\r
+        }\r
+        cursor.dispose();\r
+    }\r
+    \r
+    public void updateModuleSAOptionsOpt(String moduleKey, int i, Vector<Object> buildTargets, String toolChain, String tagName, String toolCmd, Vector<Object> archList, String contents) {\r
+        ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey);\r
+        if (msa.getModuleSaBuildOptions() == null || msa.getModuleSaBuildOptions().getOptions() == null) {\r
+            return ;\r
+        }\r
+        OptionsDocument.Options opts = msa.getModuleSaBuildOptions().getOptions();\r
+        XmlCursor cursor = opts.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
     /**add pcd information of module mi to a ModuleSA. \r
      * @param mi\r
      * @param moduleSa if null, generate a new ModuleSA.\r
@@ -1071,7 +1211,7 @@ public class FpdFileContents {
             ++i;\r
         }\r
     }\r
-    public void genBuildOptionsOpt(String buildTargets, String toolChain, String tagName, String toolCmd, String archList, String contents) {\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
@@ -1080,18 +1220,15 @@ public class FpdFileContents {
         setBuildOptionsOpt(buildTargets, toolChain, tagName, toolCmd, archList, contents, opt);\r
     }\r
     \r
-    private void setBuildOptionsOpt(String buildTargets, String toolChain, String tagName, String toolCmd, String archList, String contents, OptionDocument.Option opt){\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
-//        opt.setBuildTargets(buildTargets);\r
+        \r
+        opt.setBuildTargets(buildTargets);\r
         opt.setToolChainFamily(toolChain);\r
         opt.setTagName(tagName);\r
         opt.setToolCode(toolCmd);\r
-        String[] s = archList.split(" ");\r
-        ArrayList<String> al = new ArrayList<String>();\r
-        for (int i = 0; i < s.length; ++i) {\r
-            al.add(s[i]);\r
-        }\r
-        opt.setSupArchList(al);\r
+        \r
+        opt.setSupArchList(archList);\r
     }\r
     \r
     public void removeBuildOptionsOpt(int i){\r
@@ -1111,7 +1248,7 @@ public class FpdFileContents {
         cursor.dispose();\r
     }\r
     \r
-    public void updateBuildOptionsOpt(int i, String buildTargets, String toolChain, String tagName, String toolCmd, String archList, String contents) {\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
@@ -1169,6 +1306,13 @@ public class FpdFileContents {
         }\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
@@ -1221,6 +1365,41 @@ public class FpdFileContents {
         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
@@ -1234,6 +1413,41 @@ public class FpdFileContents {
         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
@@ -1252,6 +1466,51 @@ public class FpdFileContents {
         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
+                for (int m = 0; m < k; ++m) {\r
+                    cursor.toNextSibling();\r
+                }\r
+                cursor.removeXml();\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
@@ -1272,7 +1531,10 @@ public class FpdFileContents {
             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
+                if (section.isSetSectionType()) {\r
+                    al.add(section.getSectionType().toString());\r
+                }\r
+                \r
             }\r
         }\r
         cursor.dispose();\r
@@ -1299,6 +1561,11 @@ public class FpdFileContents {
         }\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
@@ -1365,6 +1632,8 @@ public class FpdFileContents {
         cursor.dispose();\r
     }\r
     \r
+    \r
+    \r
     public PlatformDefinitionsDocument.PlatformDefinitions getfpdPlatformDefs(){\r
         if (fpdPlatformDefs == null){\r
             fpdPlatformDefs = fpdRoot.addNewPlatformDefinitions();\r
@@ -1372,6 +1641,129 @@ public class FpdFileContents {
         return fpdPlatformDefs;\r
     }\r
     \r
+    public void getPlatformDefsSupportedArchs(Vector<Object> archs){\r
+        if (getfpdPlatformDefs().getSupportedArchitectures() == null) {\r
+            return;\r
+        }\r
+        ListIterator li = getfpdPlatformDefs().getSupportedArchitectures().listIterator();\r
+        while(li.hasNext()) {\r
+            archs.add(li.next());\r
+        }\r
+    }\r
+    \r
+    public void setPlatformDefsSupportedArchs(Vector<Object> archs) {\r
+        getfpdPlatformDefs().setSupportedArchitectures(archs);\r
+    }\r
+    \r
+    public void getPlatformDefsBuildTargets(Vector<Object> targets) {\r
+        if (getfpdPlatformDefs().getBuildTargets() == null) {\r
+            return;\r
+        }\r
+        ListIterator li = getfpdPlatformDefs().getBuildTargets().listIterator();\r
+        while(li.hasNext()) {\r
+            targets.add(li.next());\r
+        }\r
+    }\r
+    \r
+    public void setPlatformDefsBuildTargets(Vector<Object> targets) {\r
+        getfpdPlatformDefs().setBuildTargets(targets);\r
+    }\r
+    \r
+    public void genPlatformDefsSkuInfo(String id, String name) {\r
+        SkuInfoDocument.SkuInfo skuInfo = null;\r
+        if (getfpdPlatformDefs().getSkuInfo() == null) {\r
+            skuInfo = getfpdPlatformDefs().addNewSkuInfo();\r
+        }\r
+        skuInfo = getfpdPlatformDefs().getSkuInfo();\r
+        if (skuInfo.getUiSkuNameList() == null || skuInfo.getUiSkuNameList().size() == 0) {\r
+            SkuInfoDocument.SkuInfo.UiSkuName skuName = skuInfo.addNewUiSkuName();\r
+            skuName.setSkuID(new BigInteger("0"));\r
+            skuName.setStringValue("DEFAULT");\r
+        }\r
+        if (id.equals("0")) {\r
+            return;\r
+        }\r
+        SkuInfoDocument.SkuInfo.UiSkuName skuName = skuInfo.addNewUiSkuName();\r
+        skuName.setSkuID(new BigInteger(id));\r
+        skuName.setStringValue(name);\r
+    }\r
+    \r
+    public int getPlatformDefsSkuInfoCount(){\r
+        if (getfpdPlatformDefs().getSkuInfo() == null || getfpdPlatformDefs().getSkuInfo().getUiSkuNameList() == null) {\r
+            return 0;\r
+        }\r
+        return getfpdPlatformDefs().getSkuInfo().getUiSkuNameList().size();\r
+    }\r
+    \r
+    public void getPlatformDefsSkuInfos(String[][] saa){\r
+        if (getfpdPlatformDefs().getSkuInfo() == null || getfpdPlatformDefs().getSkuInfo().getUiSkuNameList() == null) {\r
+            return ;\r
+        }\r
+        \r
+        List<SkuInfoDocument.SkuInfo.UiSkuName> l = getfpdPlatformDefs().getSkuInfo().getUiSkuNameList();\r
+        ListIterator<SkuInfoDocument.SkuInfo.UiSkuName> li = l.listIterator();\r
+        int i = 0;\r
+        while(li.hasNext()) {\r
+            SkuInfoDocument.SkuInfo.UiSkuName sku = li.next();\r
+            saa[i][0] = sku.getSkuID()+"";\r
+            saa[i][1] = sku.getStringValue();\r
+            ++i;\r
+        }\r
+    }\r
+    \r
+    public void removePlatformDefsSkuInfo(int i) {\r
+        SkuInfoDocument.SkuInfo skuInfo = getfpdPlatformDefs().getSkuInfo();\r
+        if (skuInfo == null || i == 0) {\r
+            return ;\r
+        }\r
+        \r
+        XmlCursor cursor = skuInfo.newCursor();\r
+        if (cursor.toFirstChild()) {\r
+            for (int j = 0; j < i; ++j) {\r
+                cursor.toNextSibling();\r
+            }\r
+            cursor.removeXml();\r
+        }\r
+        cursor.dispose();\r
+    }\r
+    \r
+    public void updatePlatformDefsSkuInfo(int i, String id, String name) {\r
+        SkuInfoDocument.SkuInfo skuInfo = getfpdPlatformDefs().getSkuInfo();\r
+        if (skuInfo == null || i == 0) {\r
+            return ;\r
+        }\r
+        \r
+        XmlCursor cursor = skuInfo.newCursor();\r
+        if (cursor.toFirstChild()) {\r
+            for (int j = 0; j < i; ++j) {\r
+                cursor.toNextSibling();\r
+            }\r
+            SkuInfoDocument.SkuInfo.UiSkuName sku = (SkuInfoDocument.SkuInfo.UiSkuName)cursor.getObject();\r
+            sku.setSkuID(new BigInteger(id));\r
+            sku.setStringValue(name);\r
+        }\r
+        cursor.dispose();\r
+    }\r
+    \r
+    public String getPlatformDefsInterDir(){\r
+        if (getfpdPlatformDefs().getIntermediateDirectories() == null) {\r
+            return null;\r
+        }\r
+        return getfpdPlatformDefs().getIntermediateDirectories().toString();\r
+    }\r
+    \r
+    public void setPlatformDefsInterDir(String interDir){\r
+        getfpdPlatformDefs().setIntermediateDirectories(IntermediateOutputType.Enum.forString(interDir));\r
+    }\r
+    \r
+    public String getPlatformDefsOutputDir() {\r
+        return getfpdPlatformDefs().getOutputDirectory();\r
+    }\r
+    \r
+    public void setPlatformDefsOutputDir(String outputDir) {\r
+        getfpdPlatformDefs().setOutputDirectory(outputDir);\r
+    }\r
+    \r
     public FlashDocument.Flash getfpdFlash() {\r
         if (fpdFlash == null) {\r
             fpdFlash = fpdRoot.addNewFlash();\r
@@ -1656,26 +2048,6 @@ public class FpdFileContents {
         return fpdHdr;\r
     }\r
     \r
-    public void genPlatformDefsSkuInfo(String id, String name) {\r
-        SkuInfoDocument.SkuInfo skuInfo = null;\r
-        if (getfpdPlatformDefs().getSkuInfo() == null) {\r
-            skuInfo = getfpdPlatformDefs().addNewSkuInfo();\r
-        }\r
-        skuInfo = getfpdPlatformDefs().getSkuInfo();\r
-        if (skuInfo.getUiSkuNameList() == null || skuInfo.getUiSkuNameList().size() == 0) {\r
-            SkuInfoDocument.SkuInfo.UiSkuName skuName = skuInfo.addNewUiSkuName();\r
-            skuName.setSkuID(new BigInteger("0"));\r
-            skuName.setStringValue("DEFAULT");\r
-        }\r
-        if (id.equals("0")) {\r
-            return;\r
-        }\r
-        SkuInfoDocument.SkuInfo.UiSkuName skuName = skuInfo.addNewUiSkuName();\r
-        skuName.setSkuID(new BigInteger(id));\r
-        skuName.setStringValue(name);\r
-            \r
-        \r
-    }\r
     public String getFpdHdrPlatformName() {\r
         return getFpdHdr().getPlatformName();\r
     }\r
@@ -1788,7 +2160,7 @@ public class FpdFileContents {
 \r
     }\r
     \r
-    private String listToString(List<String> l) {\r
+    private String listToString(List l) {\r
         if (l == null) {\r
             return null;\r
         }\r