]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFileContents.java
FV attribute editor alpha.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdFileContents.java
index 08992048085fe0cddb7047b5108162228ba42519..9ca0509d3cf0441cd0783b921087e8ef5bbda1a9 100644 (file)
@@ -2732,6 +2732,27 @@ public class FpdFileContents {
         cursor.dispose();\r
     }\r
     \r
+    /**update the Type attribute of ith FvImage with new type.\r
+     * @param i\r
+     * @param type\r
+     */\r
+    public void updateFvImagesFvImageType (int i, String type) {\r
+        XmlObject o = getfpdFlash().getFvImages();\r
+        if (o == null) {\r
+            return;\r
+        }\r
+        XmlCursor cursor = o.newCursor();\r
+        QName qFvImage = new QName(xmlNs, "FvImage");\r
+        if (cursor.toChild(qFvImage)) {\r
+            for (int j = 0; j < i; ++j) {\r
+                cursor.toNextSibling(qFvImage);\r
+            }\r
+            FvImagesDocument.FvImages.FvImage fi = (FvImagesDocument.FvImages.FvImage)cursor.getObject();\r
+            fi.setType(FvImageTypes.Enum.forString(type));\r
+        }\r
+        cursor.dispose();\r
+    }\r
+    \r
     public void updateFvImagesFvImage(int i, String[] names, String types, Map<String, String> options){\r
            \r
         XmlObject o = getfpdFlash().getFvImages();\r
@@ -2849,19 +2870,27 @@ public class FpdFileContents {
         }\r
     }\r
     \r
+    /**Remove from fi the attribute pair with attributeName in FvImageOptions.\r
+     * @param fi\r
+     * @param attributeName\r
+     */\r
+    public void removeFvImageNameValue (FvImagesDocument.FvImages.FvImage fi, String attributeName) {\r
+        if (fi.getFvImageOptions() != null && fi.getFvImageOptions().getNameValueList() != null) {\r
+            ListIterator<FvImagesDocument.FvImages.FvImage.FvImageOptions.NameValue> li = fi.getFvImageOptions().getNameValueList().listIterator();\r
+            while (li.hasNext()) {\r
+                FvImagesDocument.FvImages.FvImage.FvImageOptions.NameValue nv = li.next();\r
+                if (nv.getName().equals(attributeName)) {\r
+                    li.remove();\r
+                }\r
+            }\r
+        }\r
+    }\r
+    \r
     public void removeTypedNamedFvImageNameValue (String fvName, String type, String optName) {\r
         Vector<FvImagesDocument.FvImages.FvImage> vFvImage = getFvImagesFvImageWithName(fvName, type);\r
         for (int i = 0; i < vFvImage.size(); ++i) {\r
             FvImagesDocument.FvImages.FvImage fi = vFvImage.get(i);\r
-            if (fi.getFvImageOptions() != null && fi.getFvImageOptions().getNameValueList() != null) {\r
-                ListIterator<FvImagesDocument.FvImages.FvImage.FvImageOptions.NameValue> li = fi.getFvImageOptions().getNameValueList().listIterator();\r
-                while (li.hasNext()) {\r
-                    FvImagesDocument.FvImages.FvImage.FvImageOptions.NameValue nv = li.next();\r
-                    if (nv.getName().equals(optName)) {\r
-                        li.remove();\r
-                    }\r
-                }\r
-            }\r
+            removeFvImageNameValue (fi, optName);\r
         }\r
     }\r
     \r
@@ -2976,6 +3005,50 @@ public class FpdFileContents {
             }\r
         }\r
     }\r
+    \r
+    public int getFvImagePosInFvImages (String fvNameList, String type) {\r
+        XmlObject o = getfpdFlash().getFvImages();\r
+        if (o == null) {\r
+            return -1;\r
+        }\r
+        \r
+        int pos = -1;\r
+        String[] fvNameArray = fvNameList.split(" ");\r
+        Vector<String> vFvNames = new Vector<String>();\r
+        \r
+        \r
+        XmlCursor cursor = o.newCursor();\r
+        QName qFvImage = new QName(xmlNs, "FvImage");\r
+        if (cursor.toChild(qFvImage)) {\r
+            do {\r
+                pos++;\r
+                vFvNames.removeAllElements();\r
+                for (int i = 0; i < fvNameArray.length; ++i) {\r
+                    vFvNames.add(fvNameArray[i]);\r
+                }\r
+                FvImagesDocument.FvImages.FvImage fi = (FvImagesDocument.FvImages.FvImage)cursor.getObject();\r
+                if (!fi.getType().toString().equals(type)) {\r
+                    continue;\r
+                }\r
+                if (fi.getFvImageNamesList() == null || fi.getFvImageNamesList().size() != vFvNames.size()) {\r
+                    continue;\r
+                }\r
+                ListIterator<String> li = fi.getFvImageNamesList().listIterator();\r
+                while (li.hasNext()) {\r
+                    String name = li.next();\r
+                    vFvNames.remove(name);\r
+                }\r
+                if (vFvNames.size() == 0) {\r
+                    cursor.dispose();\r
+                    return pos;\r
+                }\r
+                \r
+            }while (cursor.toNextSibling(qFvImage));\r
+           \r
+        }\r
+        cursor.dispose();\r
+        return -1;\r
+    }\r
     /**Get FvImage Options for FvImage i\r
      * @param i the ith FvImage\r
      */\r
@@ -2992,6 +3065,7 @@ public class FpdFileContents {
             }\r
             FvImagesDocument.FvImages.FvImage fi = (FvImagesDocument.FvImages.FvImage)cursor.getObject();\r
             if (fi.getFvImageOptions() == null || fi.getFvImageOptions().getNameValueList() == null){\r
+                cursor.dispose();\r
                 return;\r
             }\r
             ListIterator<FvImagesDocument.FvImages.FvImage.FvImageOptions.NameValue> li = fi.getFvImageOptions().getNameValueList().listIterator();\r
@@ -3000,6 +3074,7 @@ public class FpdFileContents {
                 m.put(nv.getName(), nv.getValue());\r
             }\r
         }\r
+        cursor.dispose();\r
     }\r
     \r
     /**\r