]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/MigrationTools/org/tianocore/migration/Database.java
singleton of Database & FirstPanel
[mirror_edk2.git] / Tools / Source / MigrationTools / org / tianocore / migration / Database.java
index f33670e7f19ae7ccd518f14a6796f66c6102c285..c986d3b59bb8d853a9dfb571e6ccd689ca0702a4 100644 (file)
@@ -14,31 +14,36 @@ package org.tianocore.migration;
 \r
 import java.io.*;\r
 import java.util.*;\r
+import java.util.regex.*;\r
 \r
-public class Database {\r
-       Database() throws Exception {\r
-               if (System.getenv("WORKSPACE") == null) {\r
-                       DatabasePath = "C:" + File.separator + "tianocore" + File.separator + "edk2" + File.separator + "Tools" + File.separator + "Conf" + File.separator + "Migration";\r
-               } else {\r
-                       DatabasePath = System.getenv("WORKSPACE") + File.separator + "Tools" + File.separator + "Conf" + File.separator + "Migration";\r
+public final class Database {\r
+       private static final Database INSTANCE = Database.init();\r
+       \r
+       Database(String path) {\r
+               DatabasePath = path;\r
+\r
+               try {\r
+                       importDBLib("Library.csv");\r
+                       importDBGuid("Guid.csv", "Guid");\r
+                       importDBGuid("Ppi.csv", "Ppi");\r
+                       importDBGuid("Protocol.csv", "Protocol");\r
+                       importDBMacro("Macro.csv");\r
+                       importListR8Only();\r
+               } catch (Exception e) {\r
+                       System.out.println(e.getMessage());\r
                }\r
-               \r
-               importDBLib("Library.csv");\r
-               importDBGuid("Guid.csv", "Guid");\r
-               importDBGuid("Ppi.csv", "Ppi");\r
-               importDBGuid("Protocol.csv", "Protocol");\r
-               importDBMacro("Macro.csv");\r
        }\r
        \r
-       public static String defaultpath = "C:" + File.separator + "tianocore" + File.separator + "edk2" + File.separator + "Tools" + File.separator + "Conf" + File.separator + "Migration";\r
-       \r
        public String DatabasePath;\r
        public Set<String> error = new HashSet<String>();\r
+       public Set<String> r8only = new HashSet<String>();\r
        \r
        private Map<String,Guid> hashguid = new HashMap<String,Guid>();\r
        private Map<String,Func> hashfunc = new HashMap<String,Func>();\r
        private Map<String,Macro> hashmacro = new HashMap<String,Macro>();\r
        \r
+       //-------------------------------------import------------------------------------------//\r
+       \r
        private void importDBLib(String filename) throws Exception {\r
                BufferedReader rd = new BufferedReader(new FileReader(DatabasePath + File.separator + filename));\r
                String line;\r
@@ -92,7 +97,21 @@ public class Database {
                        }\r
                }\r
        }\r
+\r
+       private void importListR8Only() throws Exception {\r
+               Pattern ptnr8only = Pattern.compile("////#?(\\w*)?.*?R8_(.*?)\\s*\\(.*?////~", Pattern.DOTALL);\r
+               String wholeline = Common.file2string(DatabasePath + File.separator + "R8Lib.c");\r
+               System.out.println("Found " + "R8Lib.c" + ", Importing R8Lib Database.");\r
+               Matcher mtrr8only = ptnr8only.matcher(wholeline);\r
+               while (mtrr8only.find()) {\r
+                       r8only.add(mtrr8only.group(2));\r
+               }\r
+       }\r
        \r
+       //-------------------------------------import------------------------------------------//\r
+\r
+       //-------------------------------------get------------------------------------------//\r
+\r
        public String getR9Lib(String r8funcname) {\r
                String temp = null;\r
                if (hashfunc.containsKey(r8funcname)) {\r
@@ -109,22 +128,10 @@ public class Database {
                return temp;\r
        }\r
        \r
-       public boolean hasFunc(String r8lib) {\r
-               return hashfunc.containsKey(r8lib);\r
-       }\r
-\r
-       public boolean hasGuid(String r8guid) {\r
-               return hashguid.containsKey(r8guid);\r
-       }\r
-\r
-       public boolean hasMacro(String r8macro) {\r
-               return hashmacro.containsKey(r8macro);\r
-       }\r
-       \r
        public String getR9Macro(String r8macro) {\r
                return hashmacro.get(r8macro).r9name;                   // the verification job of if the macro exists in the database is done when registering it\r
        }\r
-       \r
+\r
        public String getR9Guidname(String r8Guid) {\r
                String temp = null;\r
                try {\r
@@ -134,7 +141,7 @@ public class Database {
                }\r
                return temp;\r
        }\r
-       \r
+\r
        public String getGuidType(String r8Guid) {\r
                String temp = null;\r
                try {\r
@@ -144,4 +151,36 @@ public class Database {
                }\r
                return temp;\r
        }\r
+\r
+       //-------------------------------------get------------------------------------------//\r
+\r
+       //-------------------------------------has------------------------------------------//\r
+\r
+       public boolean hasFunc(String r8lib) {\r
+               return hashfunc.containsKey(r8lib);\r
+       }\r
+\r
+       public boolean hasGuid(String r8guid) {\r
+               return hashguid.containsKey(r8guid);\r
+       }\r
+\r
+       public boolean hasMacro(String r8macro) {\r
+               return hashmacro.containsKey(r8macro);\r
+       }\r
+       \r
+       //-------------------------------------has------------------------------------------//\r
+       \r
+       //-------------------------------------init------------------------------------------//\r
+\r
+       private static final Database init() {\r
+               if (System.getenv("WORKSPACE") == null) {\r
+                       return new Database("C:" + File.separator + "tianocore" + File.separator + "edk2" + File.separator + "Tools" + File.separator + "Conf" + File.separator + "Migration");\r
+               } else {\r
+                       return new Database(System.getenv("WORKSPACE") + File.separator + "Tools" + File.separator + "Conf" + File.separator + "Migration");\r
+               }\r
+       }\r
+       \r
+       public static final Database getInstance() {\r
+               return INSTANCE;\r
+       }\r
 }\r