1. Change key word "Variable" to "Identifier", all related items are changed
[people/mcb30/basetools.git] / Source / Python / Ecc / Database.py
index f36427d..ae06b66 100644 (file)
@@ -20,7 +20,7 @@ from TableDataModel import TableDataModel
 from TableFile import TableFile\r
 from TableFunction import TableFunction\r
 from TablePcd import TablePcd\r
-from TableVariable import TableVariable\r
+from TableIdentifier import TableIdentifier\r
 import Common.EdkLogger as EdkLogger\r
 import DataClass\r
 \r
@@ -50,7 +50,7 @@ class Database(object):
         self.TblDataModel = TableDataModel(self.Cur)\r
         self.TblFile = TableFile(self.Cur)\r
         self.TblFunction = TableFunction(self.Cur)\r
-        self.TblVariable = TableVariable(self.Cur)\r
+        self.TblIdentifier = TableIdentifier(self.Cur)\r
         self.TblPcd = TablePcd(self.Cur)\r
     \r
     ## Initialize ECC database\r
@@ -68,7 +68,7 @@ class Database(object):
         self.TblFile.Drop()\r
         self.TblFunction.Drop()\r
         self.TblPcd.Drop()\r
-        self.TblVariable.Drop()\r
+        self.TblIdentifier.Drop()\r
         \r
         #\r
         # Create new tables\r
@@ -77,7 +77,7 @@ class Database(object):
         self.TblFile.Create()\r
         self.TblFunction.Create()\r
         self.TblPcd.Create()\r
-        self.TblVariable.Create()\r
+        self.TblIdentifier.Create()\r
         \r
         #\r
         # Initialize table DataModel\r
@@ -117,12 +117,12 @@ class Database(object):
             self.TblFunction.Insert(FunctionID, Function.Header, Function.Modifier, Function.Name, Function.ReturnStatement, \\r
                                     Function.StartLine, Function.StartColumn, Function.EndLine, Function.EndColumn, FileID)\r
             #\r
-            # Insert Variable of function\r
+            # Insert Identifier of function\r
             #\r
-            for Variable in Function.VariableList:\r
-                VariableID = self.TblVariable.GetCount() + 1\r
-                self.TblVariable.Insert(VariableID, Variable.Modifier, Variable.Type, Variable.Name, Variable.Value, Variable.Model, \\r
-                                        FileID, FunctionID, Variable.StartLine, Variable.StartColumn, Variable.EndLine, Variable.EndColumn)\r
+            for Identifier in Function.IdentifierList:\r
+                IdentifierID = self.TblIdentifier.GetCount() + 1\r
+                self.TblIdentifier.Insert(IdentifierID, Identifier.Modifier, Identifier.Type, Identifier.Name, Identifier.Value, Identifier.Model, \\r
+                                        FileID, FunctionID, Identifier.StartLine, Identifier.StartColumn, Identifier.EndLine, Identifier.EndColumn)\r
             #\r
             # Insert Pcd of function\r
             #\r
@@ -131,12 +131,12 @@ class Database(object):
                 self.TblPcd.Insert(PcdID, Pcd.CName, Pcd.TokenSpaceGuidCName, Pcd.Token, Pcd.DatumType, Pcd.Model, \\r
                                    FileID, FunctionID, Pcd.StartLine, Pcd.StartColumn, Pcd.EndLine, Pcd.EndColumn)\r
         #\r
-        # Insert Variable of file\r
+        # Insert Identifier of file\r
         #\r
-        for Variable in File.VariableList:\r
-            VariableID = self.TblVariable.GetCount() + 1\r
-            self.TblVariable.Insert(VariableID, Variable.Modifier, Variable.Type, Variable.Name, Variable.Value, Variable.Model, \\r
-                                    FileID, -1, Variable.StartLine, Variable.StartColumn, Variable.EndLine, Variable.EndColumn)\r
+        for Identifier in File.IdentifierList:\r
+            IdentifierID = self.TblIdentifier.GetCount() + 1\r
+            self.TblIdentifier.Insert(IdentifierID, Identifier.Modifier, Identifier.Type, Identifier.Name, Identifier.Value, Identifier.Model, \\r
+                                    FileID, -1, Identifier.StartLine, Identifier.StartColumn, Identifier.EndLine, Identifier.EndColumn)\r
         #\r
         # Insert Pcd of file\r
         #\r
@@ -147,6 +147,52 @@ class Database(object):
                 \r
         EdkLogger.verbose("Insert information of file %s ... DONE!" % File.FullPath)\r
 \r
+    ## UpdateIdentifierBelongsToFunction\r
+    #\r
+    # Update the field "BelongsToFunction" for each Indentifier\r
+    #\r
+    #\r
+    def UpdateIdentifierBelongsToFunction(self):\r
+        EdkLogger.verbose("Update 'BelongsToFunction' for Identifiers started ...")\r
+        \r
+        SqlCommand = """select ID, BelongsToFile, StartLine, EndLine, Model from Identifier"""\r
+        EdkLogger.debug(4, SqlCommand)\r
+        self.Cur.execute(SqlCommand)\r
+        Records = self.Cur.fetchall()\r
+        for Record in Records:\r
+            IdentifierID = Record[0]\r
+            BelongsToFile = Record[1]\r
+            StartLine = Record[2]\r
+            EndLine = Record[3]\r
+            Model = Record[4]\r
+\r
+            EdkLogger.debug(4, "For common identifiers ... ")\r
+            SqlCommand = """select ID from Function \r
+                        where StartLine < %s and EndLine > %s\r
+                        and BelongsToFile = %s""" % (StartLine, EndLine, BelongsToFile)\r
+            EdkLogger.debug(4, SqlCommand)\r
+            self.Cur.execute(SqlCommand)\r
+            IDs = self.Cur.fetchall()\r
+            for ID in IDs:\r
+                SqlCommand = """Update Identifier set BelongsToFunction = %s where ID = %s""" % (ID[0], IdentifierID)\r
+                EdkLogger.debug(4, SqlCommand)\r
+                self.Cur.execute(SqlCommand)\r
+            \r
+            EdkLogger.debug(4, "For function headers ... ") \r
+            if Model == DataClass.MODEL_IDENTIFIER_COMMENT:\r
+                SqlCommand = """select ID from Function \r
+                        where StartLine = %s + 1\r
+                        and BelongsToFile = %s""" % (EndLine, BelongsToFile)\r
+                EdkLogger.debug(4, SqlCommand)\r
+                self.Cur.execute(SqlCommand)\r
+                IDs = self.Cur.fetchall()\r
+                for ID in IDs:\r
+                    SqlCommand = """Update Identifier set BelongsToFunction = %s, Model = %s where ID = %s""" % (ID[0], DataClass.MODEL_IDENTIFIER_FUNCTION_HEADER, IdentifierID)\r
+                    EdkLogger.debug(4, SqlCommand)\r
+                    self.Cur.execute(SqlCommand)\r
+        \r
+        EdkLogger.verbose("Update 'BelongsToFunction' for Identifiers ... DONE")\r
+\r
 ##\r
 #\r
 # This acts like the main() function for the script, unless it is 'import'ed into another\r
@@ -156,7 +202,18 @@ if __name__ == '__main__':
     Db = Database(DATABASE_PATH)\r
     Db.InitDatabase()\r
     Db.QueryTable(Db.TblDataModel)\r
+    \r
+    identifier1 = DataClass.IdentifierClass(-1, '', '', 'i1', 'aaa', DataClass.MODEL_IDENTIFIER_COMMENT, 1, -1, 32,  43,  54,  43)\r
+    identifier2 = DataClass.IdentifierClass(-1, '', '', 'i1', 'aaa', DataClass.MODEL_IDENTIFIER_COMMENT, 1, -1, 15,  43,  20,  43)\r
+    identifier3 = DataClass.IdentifierClass(-1, '', '', 'i1', 'aaa', DataClass.MODEL_IDENTIFIER_COMMENT, 1, -1, 55,  43,  58,  43)\r
+    identifier4 = DataClass.IdentifierClass(-1, '', '', 'i1', 'aaa', DataClass.MODEL_IDENTIFIER_COMMENT, 1, -1, 77,  43,  88,  43)\r
+    fun1 = DataClass.FunctionClass(-1, '', '', 'fun1', '', 21, 2, 60,  45, 1, [], [])\r
+    file = DataClass.FileClass(-1, 'F1', 'c', 'C:\\', 'C:\\F1.exe', DataClass.MODEL_FILE_C, [fun1], [identifier1, identifier2, identifier3, identifier4], [])\r
+    Db.InsertOneFile(file)\r
+    Db.UpdateIdentifierBelongsToFunction()\r
+        \r
     Db.QueryTable(Db.TblFile)\r
     Db.QueryTable(Db.TblFunction)\r
     Db.QueryTable(Db.TblPcd)\r
-    Db.QueryTable(Db.TblVariable)\r
+    Db.QueryTable(Db.TblIdentifier)\r
+    
\ No newline at end of file