]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFileContents.java
Generate Module Orders in FV at BuildOptions, UserExtensions with UserId "IMAGES...
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdFileContents.java
index e60426446fbe826b66cf251432da64e9b5db78e4..07980d7ddba91714dce2c0b38be7760f519c3f4f 100644 (file)
@@ -760,31 +760,110 @@ public class FpdFileContents {
         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
+    public void setFvBinding(ModuleSADocument.ModuleSA moduleSa, String fvBinding) {\r
+        if (moduleSa == null ) {\r
             return;\r
         }\r
         if (fvBinding == null || fvBinding.length() == 0) {\r
-            if(msa.getModuleSaBuildOptions() != null){\r
-                msa.getModuleSaBuildOptions().unsetFvBinding();\r
+            if(moduleSa.getModuleSaBuildOptions() != null){\r
+                moduleSa.getModuleSaBuildOptions().unsetFvBinding();\r
             }\r
         }\r
         else {\r
-            if(msa.getModuleSaBuildOptions() == null){\r
-                msa.addNewModuleSaBuildOptions().setFvBinding(fvBinding);\r
+            if(moduleSa.getModuleSaBuildOptions() == null){\r
+                moduleSa.addNewModuleSaBuildOptions().setFvBinding(fvBinding);\r
                 return;\r
             }\r
-            msa.getModuleSaBuildOptions().setFvBinding(fvBinding);\r
+            moduleSa.getModuleSaBuildOptions().setFvBinding(fvBinding);\r
+        }\r
+    }\r
+    \r
+    public void setFvBinding(String moduleKey, String fvBinding){\r
+        ModuleSADocument.ModuleSA moduleSa = getModuleSA(moduleKey);\r
+        setFvBinding (moduleSa, fvBinding);\r
+    }\r
+    \r
+    public void removeFvBinding (ModuleSADocument.ModuleSA moduleSa, String fvName) {\r
+        if (moduleSa == null || moduleSa.getModuleSaBuildOptions() == null || moduleSa.getModuleSaBuildOptions().getFvBinding() == null) {\r
+            return;\r
+        }\r
+        \r
+        String fvNameList = moduleSa.getModuleSaBuildOptions().getFvBinding();\r
+        String[] fvNamesArray = fvNameList.split(" ");\r
+        int occursAt = -1;\r
+        for (int i = 0; i < fvNamesArray.length; ++i) {\r
+            if (fvNamesArray[i].equals(fvName)) {\r
+                occursAt = i;\r
+                break;\r
+            }\r
+        }\r
+        // jump over where the input fvName occurs in the original Fv list.\r
+        if (occursAt != -1) {\r
+            String newFvNameList = " ";\r
+            for (int i = 0; i < fvNamesArray.length; ++i) {\r
+                if (i == occursAt) {\r
+                    continue;\r
+                }\r
+                newFvNameList += fvNamesArray[i];\r
+            }\r
+            setFvBinding (moduleSa, newFvNameList.trim());\r
+        }\r
+\r
+    }\r
+    \r
+    /**\r
+     * @param fvName The FV name that to be removed from FvBinding List.\r
+     */\r
+    public void removeFvBindingAll (String fvName) {\r
+        if (getfpdFrameworkModules().getModuleSAList() == null || getfpdFrameworkModules().getModuleSAList().size() == 0){\r
+            removeElement(getfpdFrameworkModules());\r
+            fpdFrameworkModules = null;\r
+            return;\r
+        }\r
+        \r
+        Iterator<ModuleSADocument.ModuleSA> li = getfpdFrameworkModules().getModuleSAList().iterator();\r
+        while (li.hasNext()) {\r
+            ModuleSADocument.ModuleSA moduleSa = li.next();\r
+            removeFvBinding (moduleSa, fvName); \r
+        }\r
+    }\r
+    \r
+    public void appendFvBinding (String moduleKey, String fvName) {\r
+        ModuleSADocument.ModuleSA moduleSa = getModuleSA(moduleKey);\r
+        appendFvBinding (moduleSa, fvName);\r
+    }\r
+    \r
+    public void appendFvBinding (ModuleSADocument.ModuleSA moduleSa, String fvName) {\r
+        if (moduleSa == null) {\r
+            return;\r
+        }\r
+        \r
+        if (moduleSa.getModuleSaBuildOptions() == null || moduleSa.getModuleSaBuildOptions().getFvBinding() == null) {\r
+            setFvBinding(moduleSa, fvName);\r
+            return;\r
+        }\r
+        \r
+        String fvNameList = moduleSa.getModuleSaBuildOptions().getFvBinding();\r
+        String newFvNameList = fvNameList + " " + fvName;\r
+        setFvBinding (moduleSa, newFvNameList.trim());\r
+    }\r
+    \r
+    public void updateFvBindingInModuleSA (ModuleIdentification mi, String fvName) {\r
+        Vector<Object> vSupArchs = new Vector<Object>();\r
+        getPlatformDefsSupportedArchs(vSupArchs);\r
+        String moduleInfo = mi.getGuid() + " " + mi.getVersion() + " " + mi.getPackageId().getGuid() + " " + mi.getPackageId().getVersion();\r
+        for (int i = 0; i < vSupArchs.size(); ++i) {\r
+            String moduleKey = moduleInfo + " " + vSupArchs.get(i);\r
+            appendFvBinding (moduleKey, fvName);\r
         }\r
     }\r
     \r
     public String getFfsFileNameGuid(String moduleKey){\r
-        ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey);\r
-        if (msa == null || msa.getModuleSaBuildOptions() == null) {\r
+        ModuleSADocument.ModuleSA moduleSa = getModuleSA(moduleKey);\r
+        if (moduleSa == null || moduleSa.getModuleSaBuildOptions() == null) {\r
             return null;\r
         }\r
-        return msa.getModuleSaBuildOptions().getFfsFileNameGuid();\r
+        return moduleSa.getModuleSaBuildOptions().getFfsFileNameGuid();\r
     }\r
     \r
     public void setFfsFileNameGuid(String moduleKey, String fileGuid){\r
@@ -1529,7 +1608,7 @@ public class FpdFileContents {
         return fpdBuildOpts;\r
     }\r
     \r
-    public void genBuildOptionsUserExtensions(String fvName, String outputFileName, String[][] includeModules) {\r
+    public void genBuildOptionsUserExtensions(String fvName, String outputFileName, Vector<String[]> includeModules) {\r
         UserExtensionsDocument.UserExtensions userExts = getfpdBuildOpts().addNewUserExtensions();\r
         userExts.setUserID("IMAGES");\r
         userExts.setIdentifier(new BigInteger("1"));\r
@@ -1545,10 +1624,10 @@ public class FpdFileContents {
         cursor.toNextToken();\r
         \r
         cursor.beginElement("IncludeModules");\r
-        for (int i = 0; i < includeModules.length; ++i) {\r
+        for (int i = 0; i < includeModules.size(); ++i) {\r
             cursor.beginElement("Module");\r
-            cursor.insertAttributeWithValue("ModuleGuid", includeModules[i][0]);\r
-            cursor.insertAttributeWithValue("BaseName", includeModules[i][1]);\r
+            cursor.insertAttributeWithValue("ModuleGuid", includeModules.get(i)[0]);\r
+            cursor.insertAttributeWithValue("BaseName", includeModules.get(i)[1]);\r
             cursor.toEndToken();\r
             cursor.toNextToken();\r
         }\r