]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFileContents.java
Fix EDKT337,Double click on modules in "Framework Modules" of Platforms should be...
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdFileContents.java
index 840f3e7700c5276faf3aac1ea7b6443ad7dcae55..26d3d694c952860db0552209be4884e74d9ad846 100644 (file)
@@ -1761,9 +1761,14 @@ public class FpdFileContents {
         for (int i = 0; i < includeModules.size(); ++i) {\r
             cursor.beginElement(elementModule);\r
             cursor.insertAttributeWithValue("ModuleGuid", includeModules.get(i)[0]);\r
-            cursor.insertAttributeWithValue("ModuleVersion", includeModules.get(i)[1]);\r
+            if (!includeModules.get(i)[1].equals("null") && includeModules.get(i)[1].length() != 0) {\r
+                cursor.insertAttributeWithValue("ModuleVersion", includeModules.get(i)[1]);\r
+            }\r
             cursor.insertAttributeWithValue("PackageGuid", includeModules.get(i)[2]);\r
-            cursor.insertAttributeWithValue("PackageVersion", includeModules.get(i)[3]);\r
+            if (!includeModules.get(i)[3].equals("null") && includeModules.get(i)[3].length() != 0) {\r
+                cursor.insertAttributeWithValue("PackageVersion", includeModules.get(i)[3]);\r
+            }\r
+            \r
             cursor.insertAttributeWithValue("Arch", includeModules.get(i)[4]);\r
             cursor.toEndToken();\r
             cursor.toNextToken();\r
@@ -1892,6 +1897,138 @@ public class FpdFileContents {
         \r
     }\r
     \r
+    private boolean versionEqual (String v1, String v2) {\r
+        \r
+        if ((v1 == null || v1.length() == 0 || v1.equalsIgnoreCase("null")) \r
+                        && (v2 == null || v2.length() == 0 || v2.equalsIgnoreCase("null"))) {\r
+            return true;\r
+        }\r
+        \r
+        if (v1 != null && v1.equals(v2)) {\r
+            return true;\r
+        }\r
+        \r
+        return false;\r
+    }\r
+    \r
+    public boolean moduleInBuildOptionsUserExtensions (String fvName, String moduleGuid, String moduleVersion, String packageGuid, String packageVersion, String arch) {\r
+        boolean inList = false;\r
+        if (getUserExtsIncModCount(fvName) > 0) {\r
+            \r
+            XmlCursor cursor = getfpdBuildOpts().newCursor();\r
+            QName elementUserExts = new QName (xmlNs, "UserExtensions");\r
+            QName attribUserId = new QName ("UserID");\r
+            QName elementFvName = new QName (xmlNs, "FvName");\r
+            QName elementIncludeModules = new QName(xmlNs, "IncludeModules");\r
+            QName attribModuleGuid = new QName("ModuleGuid");\r
+            QName attribModuleVersion = new QName("ModuleVersion");\r
+            QName attribPackageGuid = new QName("PackageGuid");\r
+            QName attribPackageVersion = new QName("PackageVersion");\r
+            QName attribArch = new QName("Arch");\r
+            \r
+            if (cursor.toChild(elementUserExts)) {\r
+                do {\r
+                    cursor.push();\r
+                    if (cursor.getAttributeText(attribUserId).equals("IMAGES")) {\r
+                        cursor.toChild(elementFvName);\r
+                        String elementName = cursor.getTextValue();\r
+                        if (elementName.equals(fvName)) {\r
+                            cursor.toNextSibling(elementIncludeModules);\r
+                            if (cursor.toFirstChild()) {\r
+                                \r
+                                do {\r
+                                    String mg = cursor.getAttributeText(attribModuleGuid);\r
+                                    String mv = cursor.getAttributeText(attribModuleVersion);\r
+                                    String pg = cursor.getAttributeText(attribPackageGuid);\r
+                                    String pv = cursor.getAttributeText(attribPackageVersion);\r
+                                    String ar = cursor.getAttributeText(attribArch);\r
+                                    if (!moduleGuid.equalsIgnoreCase(mg)) {\r
+                                        continue;\r
+                                    }\r
+                                    if (!packageGuid.equalsIgnoreCase(pg)) {\r
+                                        continue;\r
+                                    }\r
+                                    if (!arch.equalsIgnoreCase(ar)) {\r
+                                        continue;\r
+                                    }\r
+                                    if (!versionEqual(moduleVersion, mv)) {\r
+                                        continue;\r
+                                    }\r
+                                    if (!versionEqual(packageVersion, pv)) {\r
+                                        continue;\r
+                                    }\r
+                                    inList = true;\r
+                                    break;\r
+                                }while (cursor.toNextSibling());\r
+                            }\r
+                            break;\r
+                        }\r
+                    }\r
+                    cursor.pop();\r
+                }while (cursor.toNextSibling(elementUserExts));\r
+            }\r
+            cursor.dispose();\r
+        }\r
+        return inList;\r
+    }\r
+    \r
+    public void removeModuleInBuildOptionsUserExtensions (String fvName, String moduleGuid, String moduleVersion, String packageGuid, String packageVersion, String arch) {\r
+        if (getUserExtsIncModCount(fvName) > 0) {\r
+            \r
+            XmlCursor cursor = getfpdBuildOpts().newCursor();\r
+            QName elementUserExts = new QName (xmlNs, "UserExtensions");\r
+            QName attribUserId = new QName ("UserID");\r
+            QName elementFvName = new QName (xmlNs, "FvName");\r
+            QName elementIncludeModules = new QName(xmlNs, "IncludeModules");\r
+            QName attribModuleGuid = new QName("ModuleGuid");\r
+            QName attribModuleVersion = new QName("ModuleVersion");\r
+            QName attribPackageGuid = new QName("PackageGuid");\r
+            QName attribPackageVersion = new QName("PackageVersion");\r
+            QName attribArch = new QName("Arch");\r
+            \r
+            if (cursor.toChild(elementUserExts)) {\r
+                do {\r
+                    cursor.push();\r
+                    if (cursor.getAttributeText(attribUserId).equals("IMAGES")) {\r
+                        cursor.toChild(elementFvName);\r
+                        String elementName = cursor.getTextValue();\r
+                        if (elementName.equals(fvName)) {\r
+                            cursor.toNextSibling(elementIncludeModules);\r
+                            if (cursor.toFirstChild()) {\r
+                                \r
+                                do {\r
+                                    String mg = cursor.getAttributeText(attribModuleGuid);\r
+                                    String mv = cursor.getAttributeText(attribModuleVersion);\r
+                                    String pg = cursor.getAttributeText(attribPackageGuid);\r
+                                    String pv = cursor.getAttributeText(attribPackageVersion);\r
+                                    String ar = cursor.getAttributeText(attribArch);\r
+                                    if (!moduleGuid.equalsIgnoreCase(mg)) {\r
+                                        continue;\r
+                                    }\r
+                                    if (!packageGuid.equalsIgnoreCase(pg)) {\r
+                                        continue;\r
+                                    }\r
+                                    if (!arch.equalsIgnoreCase(ar)) {\r
+                                        continue;\r
+                                    }\r
+                                    if (!versionEqual(moduleVersion, mv)) {\r
+                                        continue;\r
+                                    }\r
+                                    if (!versionEqual(packageVersion, pv)) {\r
+                                        continue;\r
+                                    }\r
+                                    cursor.removeXml();\r
+                                }while (cursor.toNextSibling());\r
+                            }\r
+                            break;\r
+                        }\r
+                    }\r
+                    cursor.pop();\r
+                }while (cursor.toNextSibling(elementUserExts));\r
+            }\r
+            cursor.dispose();\r
+        }\r
+    }\r
     \r
     public void genBuildOptionsUserDefAntTask (String id, String fileName, String execOrder) {\r
         UserDefinedAntTasksDocument.UserDefinedAntTasks udats = getfpdBuildOpts().getUserDefinedAntTasks();\r