]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/PackageEditor/src/org/tianocore/common/Tools.java
Fix the problem "update action multiple times fail".
[mirror_edk2.git] / Tools / Source / PackageEditor / src / org / tianocore / common / Tools.java
index e372812e1f6995d54dc4aba7d328b0a9aeacb1d1..311370d85dc092520f97d497c638c70fac1bf5c3 100644 (file)
@@ -25,6 +25,8 @@ import java.util.UUID;
 **/\r
 public class Tools {\r
        \r
+        public static final String guidArrayPat = "0x[a-fA-F0-9]{1,8},( )*0x[a-fA-F0-9]{1,4},( )*0x[a-fA-F0-9]{1,4}(,( )*\\{)?(,?( )*0x[a-fA-F0-9]{1,2}){8}( )*(\\})?";\r
+       public static final String guidRegistryPat = "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}";\r
        /**\r
          get current date and time, then return\r
          @return String\r
@@ -70,4 +72,88 @@ public class Tools {
                return UUID.randomUUID().toString();\r
        }\r
        \r
+    public static String formatGuidString (String guidNameConv) {\r
+        String[] strList;\r
+        String guid = "";\r
+        int index = 0;\r
+        if (guidNameConv\r
+                        .matches(Tools.guidRegistryPat)) {\r
+            strList = guidNameConv.split("-");\r
+            guid = "0x" + strList[0] + ", ";\r
+            guid = guid + "0x" + strList[1] + ", ";\r
+            guid = guid + "0x" + strList[2] + ", ";\r
+//            guid = guid + "{";\r
+            guid = guid + "0x" + strList[3].substring(0, 2) + ", ";\r
+            guid = guid + "0x" + strList[3].substring(2, 4);\r
+\r
+            while (index < strList[4].length()) {\r
+                guid = guid + ", ";\r
+                guid = guid + "0x" + strList[4].substring(index, index + 2);\r
+                index = index + 2;\r
+            }\r
+//            guid = guid + "}";\r
+            return guid;\r
+        }\r
+        else if (guidNameConv\r
+                        .matches(Tools.guidArrayPat)) {\r
+            strList = guidNameConv.split(",");\r
+            \r
+            //\r
+            // chang ANSI c form to registry form\r
+            //\r
+            for (int i = 0; i < strList.length; i++){\r
+                strList[i] = strList[i].substring(strList[i].lastIndexOf("x") + 1);\r
+            }\r
+            if (strList[strList.length - 1].endsWith("}")) {\r
+                strList[strList.length -1] = strList[strList.length-1].substring(0, strList[strList.length-1].length()-1); \r
+            }\r
+            //\r
+            //inserting necessary leading zeros\r
+            //\r
+            \r
+            int segLen = strList[0].length();\r
+            if (segLen < 8){\r
+                for (int i = 0; i < 8 - segLen; ++i){\r
+                    strList[0] = "0" + strList[0];\r
+                }\r
+            }\r
+            \r
+            segLen = strList[1].length();\r
+            if (segLen < 4){\r
+                for (int i = 0; i < 4 - segLen; ++i){\r
+                    strList[1] = "0" + strList[1];\r
+                }\r
+            }\r
+            segLen = strList[2].length();\r
+            if (segLen < 4){\r
+                for (int i = 0; i < 4 - segLen; ++i){\r
+                    strList[2] = "0" + strList[2];\r
+                }\r
+            }\r
+            for (int i = 3; i < 11; ++i) {\r
+                segLen = strList[i].length();\r
+                if (segLen < 2){\r
+                    strList[i] = "0" + strList[i];\r
+                }\r
+            }\r
+            \r
+            for (int i = 0; i < 3; i++){\r
+                guid += strList[i] + "-";\r
+            }\r
+            \r
+            guid += strList[3];\r
+            guid += strList[4] + "-";\r
+            \r
+            for (int i = 5; i < strList.length; ++i){\r
+                guid += strList[i];\r
+            }\r
+            \r
+            \r
+            return guid;\r
+        } else {\r
+            \r
+            return "0";\r
+\r
+        }\r
+    }\r
 }\r