]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/PcdTools/org/tianocore/pcd/entity/MemoryDatabaseManager.java
Fix some bugs and remove unused code.
[mirror_edk2.git] / Tools / Source / PcdTools / org / tianocore / pcd / entity / MemoryDatabaseManager.java
index 90d0db4aaa62599ebed0b0057316e471a28a9c5b..62789fe4c987dfd3b90e90ae3ed21a91594ecd93 100644 (file)
@@ -35,7 +35,7 @@ public class MemoryDatabaseManager {
 \r
     ///\r
     /// Before build a module, the used libary will be build firstly, the PCD of these\r
-    /// libarry is inheritted by the module, so stored module's PCD information as PCD\r
+    /// library is inheritted by the module, so stored module's PCD information as PCD\r
     /// context of building libary.\r
     ///\r
     public static List<UsageInstance> UsageInstanceContext = null;\r
@@ -118,26 +118,26 @@ public class MemoryDatabaseManager {
         Object[]    dataArray   = null;\r
         Map.Entry   entry       = null;\r
         int         index       = 0;\r
+        int         size        = 0;\r
 \r
         if (memoryDatabase == null) {\r
             return null;\r
         }\r
-\r
         dataArray  = memoryDatabase.entrySet().toArray();\r
+        size       = memoryDatabase.size();\r
         tokenArray = new Token[memoryDatabase.size()];\r
-        for (index = 0; index < memoryDatabase.size(); index ++) {\r
+        for (index = 0; index < size; index++) {\r
             entry =(Map.Entry) dataArray [index];\r
             tokenArray[index] =(Token) entry.getValue();\r
         }\r
-\r
         return tokenArray;\r
     }\r
 \r
     /**\r
        Get record array only contains DYNAMIC or DYNAMIC_EX type PCD.\r
 \r
-       @return ArrayList\r
-     */\r
+       @return ArrayList the array list contains all dynamic type PCD.\r
+    **/\r
     private ArrayList getDynamicRecordArray() {\r
         Token[]     tokenArray  =   getRecordArray();\r
         int         index       =   0;\r
@@ -167,16 +167,17 @@ public class MemoryDatabaseManager {
         ArrayList               tokenArrayList      =   getDynamicRecordArray();\r
         Object[]                usageInstanceArray  =   null;\r
         UsageInstance           usageInstance       =   null;\r
+        int                     size                =   0;\r
+        int                     consumerSize        =   0;\r
 \r
-        //pei = new ArrayList<Token>();\r
-        //dxe = new ArrayList<Token>();\r
-\r
-        for (index = 0; index < tokenArrayList.size(); index++) {\r
+        size = tokenArrayList.size();\r
+        for (index = 0; index < size; index++) {\r
             boolean found   =   false;\r
             Token       token = (Token) tokenArrayList.get(index);\r
             if (token.consumers != null) {\r
                 usageInstanceArray = token.consumers.entrySet().toArray();\r
-                for (usageInstanceIndex = 0; usageInstanceIndex < token.consumers.size(); usageInstanceIndex ++) {\r
+                consumerSize       = token.consumers.size();\r
+                for (usageInstanceIndex = 0; usageInstanceIndex < consumerSize; usageInstanceIndex++) {\r
                     usageInstance =(UsageInstance) (((Map.Entry)usageInstanceArray[usageInstanceIndex]).getValue());\r
                     if (usageInstance.isPeiPhaseComponent()) {\r
                         pei.add(token);\r
@@ -193,7 +194,8 @@ public class MemoryDatabaseManager {
             if (!found) {\r
                 if (token.consumers != null) {\r
                     usageInstanceArray = token.consumers.entrySet().toArray();\r
-                    for (usageInstanceIndex = 0; usageInstanceIndex < token.consumers.size(); usageInstanceIndex ++) {\r
+                    consumerSize       = token.consumers.size();\r
+                    for (usageInstanceIndex = 0; usageInstanceIndex < consumerSize; usageInstanceIndex++) {\r
                         usageInstance =(UsageInstance) (((Map.Entry)usageInstanceArray[usageInstanceIndex]).getValue());\r
                         if (usageInstance.isDxePhaseComponent()) {\r
                             dxe.add(token);\r
@@ -216,23 +218,10 @@ public class MemoryDatabaseManager {
                 }\r
             }\r
         }\r
-\r
-        return;\r
     }\r
 \r
-    /**\r
-      Get all PCD record for a module according to module's name, module's GUID,\r
-      package name, package GUID, arch, version information.\r
-\r
-      @param usageId   the id of UsageInstance.\r
-\r
-      @return  all usage instance for this module in memory database.\r
-    **/\r
-    public List<UsageInstance> getUsageInstanceArrayByModuleName(UsageIdentification usageId) {\r
-\r
-        String primaryKey = UsageInstance.getPrimaryKey(usageId);\r
-\r
-        return getUsageInstanceArrayByKeyString(primaryKey);\r
+    public void clearDatabase() {\r
+        memoryDatabase.clear();\r
     }\r
 \r
     /**\r
@@ -240,20 +229,21 @@ public class MemoryDatabaseManager {
 \r
        @param primaryKey    the primary key of usage instance.\r
 \r
-       @return List<UsageInstance>\r
-     */\r
-    public List<UsageInstance> getUsageInstanceArrayByKeyString(String primaryKey) {\r
+       @return List<UsageInstance>  the list contains all usage instances.\r
+    **/\r
+    public List<UsageInstance> getUsageInstanceArrayById(UsageIdentification usageId) {\r
         Token[]               tokenArray          = null;\r
         int                   recordIndex         = 0;\r
         UsageInstance         usageInstance       = null;\r
         List<UsageInstance>   returnArray         = new ArrayList<UsageInstance>();\r
+        String                primaryKey          = usageId.toString();\r
 \r
         tokenArray = getRecordArray();\r
-\r
+        \r
         //\r
         // Loop to find all PCD record related to current module\r
         //\r
-        for (recordIndex = 0; recordIndex < getDBSize(); recordIndex ++) {\r
+        for (recordIndex = 0; recordIndex < getDBSize(); recordIndex++) {\r
             if (tokenArray[recordIndex].consumers.size() != 0) {\r
                 usageInstance = tokenArray[recordIndex].consumers.get(primaryKey);\r
                 if (usageInstance != null) {\r
@@ -265,42 +255,59 @@ public class MemoryDatabaseManager {
         return returnArray;\r
     }\r
 \r
+    public List<Token> getPcdTokenListForModule(UsageIdentification usageId) {\r
+        List<UsageInstance> usageList = getUsageInstanceArrayById(usageId);\r
+        List<Token>         tokenList = new ArrayList<Token>();\r
+\r
+        if (usageList == null) {\r
+            return null;\r
+        }\r
+\r
+        for (int usageIndex = 0; usageIndex < usageList.size(); usageIndex++) {\r
+            tokenList.add(usageList.get(usageIndex).parentToken);\r
+        }\r
+\r
+        return tokenList;\r
+    }\r
+\r
     /**\r
       Get all modules name who contains PCD information\r
 \r
-      @return Array for module name\r
+      @return Array for usage's identification\r
     **/\r
-    public List<String> getAllModuleArray()\r
+    public List<UsageIdentification> getAllModuleArray()\r
     {\r
-        int                       indexToken    = 0;\r
+        int                       tokenIndex    = 0;\r
         int                       usageIndex    = 0;\r
         int                       moduleIndex   = 0;\r
         Token[]                   tokenArray    = null;\r
         Object[]                  usageInstanceArray = null;\r
-        List<String>              moduleNames   = new ArrayList<String>();\r
+        List<UsageIdentification> usageArray    = new ArrayList<UsageIdentification>();\r
         UsageInstance             usageInstance = null;\r
         boolean                   bFound        = false;\r
+        String                    primaryKey    = null;\r
 \r
         tokenArray = getRecordArray();\r
         //\r
         // Find all consumer usage instance for retrieving module's name\r
         //\r
-        for (indexToken = 0; indexToken < getDBSize(); indexToken ++) {\r
-            usageInstanceArray = tokenArray[indexToken].consumers.entrySet().toArray();\r
-            for (usageIndex = 0; usageIndex < tokenArray[indexToken].consumers.size(); usageIndex ++) {\r
+        for (tokenIndex = 0; tokenIndex < getDBSize(); tokenIndex++) {\r
+            usageInstanceArray = tokenArray[tokenIndex].consumers.entrySet().toArray();\r
+            for (usageIndex = 0; usageIndex < tokenArray[tokenIndex].consumers.size(); usageIndex++) {\r
                 usageInstance = (UsageInstance)((Map.Entry)usageInstanceArray[usageIndex]).getValue();\r
+                primaryKey    = usageInstance.getPrimaryKey();\r
                 bFound        = false;\r
-                for (moduleIndex = 0; moduleIndex < moduleNames.size(); moduleIndex ++) {\r
-                    if (moduleNames.get(moduleIndex).equalsIgnoreCase(usageInstance.getPrimaryKey())) {\r
+                for (moduleIndex = 0; moduleIndex < usageArray.size(); moduleIndex++) {\r
+                    if (usageArray.get(moduleIndex).toString().equalsIgnoreCase(primaryKey)) {\r
                         bFound = true;\r
                         break;\r
                     }\r
                 }\r
                 if (!bFound) {\r
-                    moduleNames.add(usageInstance.getPrimaryKey());\r
+                    usageArray.add(usageInstance.usageId);\r
                 }\r
             }\r
         }\r
-        return moduleNames;\r
+        return usageArray;\r
     }\r
 }\r