1. Add a super class for all tables
authorhche10x <hche10x@7335b38e-4728-0410-8992-fb3ffe349368>
Tue, 25 Dec 2007 05:50:14 +0000 (05:50 +0000)
committerhche10x <hche10x@7335b38e-4728-0410-8992-fb3ffe349368>
Tue, 25 Dec 2007 05:50:14 +0000 (05:50 +0000)
2. Add api to update file information.
3. Adjust apis provided by tables
4. Change the logger level

git-svn-id: https://buildtools.tianocore.org/svn/buildtools/trunk/BaseTools@929 7335b38e-4728-0410-8992-fb3ffe349368

Source/Python/Ecc/DataClass.py
Source/Python/Ecc/Database.py
Source/Python/Ecc/Table.py [new file with mode: 0644]
Source/Python/Ecc/TableDataModel.py
Source/Python/Ecc/TableFile.py
Source/Python/Ecc/TableFunction.py
Source/Python/Ecc/TablePcd.py
Source/Python/Ecc/TableVariable.py

index 19370ea..d6e8147 100644 (file)
@@ -99,6 +99,8 @@ MODEL_LIST = [('MODEL_UNKNOWN', MODEL_UNKNOWN),
 # @param EndLine:          EndLine of a Function\r
 # @param EndColumn:        EndColumn of a Function\r
 # @param BelongsToFile:    The Function belongs to which file\r
+# @param VariableList:     VariableList of a File\r
+# @param PcdList:          PcdList of a File\r
 #\r
 # @var ID:                 ID of a Function\r
 # @var Header:             Header of a Function\r
@@ -110,9 +112,11 @@ MODEL_LIST = [('MODEL_UNKNOWN', MODEL_UNKNOWN),
 # @var EndLine:            EndLine of a Function\r
 # @var EndColumn:          EndColumn of a Function\r
 # @var BelongsToFile:      The Function belongs to which file\r
+# @var VariableList:       VariableList of a File\r
+# @var PcdList:            PcdList of a File\r
 #\r
 class FunctionClass(object):\r
-    def __init__(self, ID = -1, Header = '', Modifier = '', Name = '', ReturnStatement = '', StartLine = -1, StartColumn = -1, EndLine = -1, EndColumn = -1, BelongsToFile = -1):\r
+    def __init__(self, ID = -1, Header = '', Modifier = '', Name = '', ReturnStatement = '', StartLine = -1, StartColumn = -1, EndLine = -1, EndColumn = -1, BelongsToFile = -1, VariableList = [], PcdList = []):\r
         self.ID = ID\r
         self.Header = Header\r
         self.Modifier = Modifier                    \r
@@ -123,6 +127,9 @@ class FunctionClass(object):
         self.EndLine = EndLine\r
         self.EndColumn = EndColumn\r
         self.BelongsToFile = BelongsToFile\r
+        \r
+        self.VariableList = VariableList\r
+        self.PcdList = PcdList\r
 \r
 ## VariableClass\r
 #\r
@@ -154,7 +161,7 @@ class FunctionClass(object):
 # @var EndLine:              EndLine of a Variable\r
 # @var EndColumn:            EndColumn of a Variable\r
 #\r
-class FunctionClass(object):\r
+class VariableClass(object):\r
     def __init__(self, ID = -1, Modifier = '', Type = '', Name = '', Value = '', Model = MODEL_UNKNOWN, BelongsToFile = -1, BelongsToFunction = -1, StartLine = -1, StartColumn = -1, EndLine = -1, EndColumn = -1):\r
         self.ID = ID\r
         self.Modifier = Modifier\r
@@ -198,7 +205,7 @@ class FunctionClass(object):
 # @var EndLine:                EndLine of a Pcd\r
 # @var EndColumn:              EndColumn of a Pcd\r
 #\r
-class FunctionClass(object):\r
+class PcdClass(object):\r
     def __init__(self, ID = -1, CName = '', TokenSpaceGuidCName = '', Token = '', DatumType = '', Model = MODEL_UNKNOWN, BelongsToFile = -1, BelongsToFunction = -1, StartLine = -1, StartColumn = -1, EndLine = -1, EndColumn = -1):\r
         self.ID = ID\r
         self.CName = CName\r
index a82874c..f36427d 100644 (file)
@@ -22,6 +22,7 @@ from TableFunction import TableFunction
 from TablePcd import TablePcd\r
 from TableVariable import TableVariable\r
 import Common.EdkLogger as EdkLogger\r
+import DataClass\r
 \r
 ##\r
 # Static definitions\r
@@ -43,7 +44,7 @@ DATABASE_PATH = "Database/Ecc.db"
 #\r
 class Database(object):\r
     def __init__(self, DbPath):\r
-        EdkLogger.SetLevel(EdkLogger.VERBOSE)\r
+        EdkLogger.SetLevel(EdkLogger.DEBUG_0)\r
         self.Conn = sqlite3.connect(DbPath)\r
         self.Cur = self.Conn.cursor()\r
         self.TblDataModel = TableDataModel(self.Cur)\r
@@ -90,6 +91,61 @@ class Database(object):
     #\r
     def QueryTable(self, Table):\r
         Table.Query()\r
+    \r
+    ## Insert one file information\r
+    #\r
+    # Insert one file's information to the database\r
+    # 1. Create a record in TableFile\r
+    # 2. Create functions one by one\r
+    #    2.1 Create variables of function one by one\r
+    #    2.2 Create pcds of function one by one\r
+    # 3. Create variables one by one\r
+    # 4. Create pcds one by one\r
+    #\r
+    def InsertOneFile(self, File):\r
+        #\r
+        # Insert a record for file\r
+        #\r
+        FileID = self.TblFile.GetCount() + 1\r
+        self.TblFile.Insert(FileID, File.Name, File.ExtName, File.Path, File.FullPath, Model = File.Model)\r
+\r
+        #\r
+        # Insert function of file\r
+        #\r
+        for Function in File.FunctionList:\r
+            FunctionID = self.TblFunction.GetCount() + 1\r
+            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
+            #\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
+            #\r
+            # Insert Pcd of function\r
+            #\r
+            for Pcd in Function.PcdList:\r
+                PcdID = self.TblPcd.GetCount() + 1\r
+                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
+        #\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
+        #\r
+        # Insert Pcd of file\r
+        #\r
+        for Pcd in File.PcdList:\r
+            PcdID = self.TblPcd.GetCount() + 1\r
+            self.TblPcd.Insert(PcdID, Pcd.CName, Pcd.TokenSpaceGuidCName, Pcd.Token, Pcd.DatumType, Pcd.Model, \\r
+                               FileID, -1, Pcd.StartLine, Pcd.StartColumn, Pcd.EndLine, Pcd.EndColumn)\r
+                \r
+        EdkLogger.verbose("Insert information of file %s ... DONE!" % File.FullPath)\r
 \r
 ##\r
 #\r
@@ -104,5 +160,3 @@ if __name__ == '__main__':
     Db.QueryTable(Db.TblFunction)\r
     Db.QueryTable(Db.TblPcd)\r
     Db.QueryTable(Db.TblVariable)\r
-    \r
-    
\ No newline at end of file
diff --git a/Source/Python/Ecc/Table.py b/Source/Python/Ecc/Table.py
new file mode 100644 (file)
index 0000000..a5812c8
--- /dev/null
@@ -0,0 +1,84 @@
+## @file\r
+# This file is used to create/update/query/erase a common table\r
+#\r
+# Copyright (c) 2007, Intel Corporation\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution.  The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+\r
+##\r
+# Import Modules\r
+#\r
+import Common.EdkLogger as EdkLogger\r
+\r
+## TableFile\r
+#\r
+# This class defined a common table\r
+# \r
+# @param object:     Inherited from object class\r
+#\r
+# @param Cursor:     Cursor of the database\r
+# @param TableName:  Name of the table\r
+#\r
+class Table(object):\r
+    def __init__(self, Cursor):\r
+        self.Cur = Cursor\r
+        self.Table = ''\r
+    \r
+    ## Create table\r
+    #\r
+    # Create a table\r
+    #\r
+    def Create(self, SqlCommand):\r
+        self.Cur.execute(SqlCommand)\r
+        EdkLogger.verbose(SqlCommand + " ... DONE!")\r
+\r
+    ## Insert table\r
+    #\r
+    # Insert a record into a table\r
+    #\r
+    def Insert(self, SqlCommand):\r
+        self.Cur.execute(SqlCommand)\r
+        EdkLogger.debug(4, SqlCommand + " ... DONE!")\r
+    \r
+    ## Query table\r
+    #\r
+    # Query all records of the table\r
+    #  \r
+    def Query(self):\r
+        EdkLogger.verbose("\nQuery tabel %s started ..." % self.Table)\r
+        SqlCommand = """select * from %s""" % self.Table\r
+        self.Cur.execute(SqlCommand)\r
+        for Rs in self.Cur:\r
+            EdkLogger.verbose(Rs)\r
+        \r
+        TotalCount = self.GetCount()\r
+        EdkLogger.verbose("***Total %s records in table %s***" % (TotalCount, self.Table) )\r
+        EdkLogger.verbose("Query tabel %s DONE!" % self.Table)\r
+\r
+    ## Drop a table\r
+    #\r
+    # Drop the table\r
+    #\r
+    def Drop(self):\r
+        SqlCommand = """drop table IF EXISTS %s""" % self.Table\r
+        self.Cur.execute(SqlCommand)\r
+        EdkLogger.verbose("Drop tabel %s ... DONE!" % self.Table)\r
+    \r
+    ## Get count\r
+    #\r
+    # Get a count of all records of the table\r
+    #\r
+    # @retval Count:  Total count of all records\r
+    #\r
+    def GetCount(self):\r
+        SqlCommand = """select count(*) as Count from %s""" % self.Table\r
+        self.Cur.execute(SqlCommand)\r
+        for Item in self.Cur:\r
+            return Item[0]\r
+\r
index d60d9af..aa1b5c6 100644 (file)
@@ -16,6 +16,7 @@
 #\r
 import Common.EdkLogger as EdkLogger\r
 import DataClass\r
+from Table import Table\r
 \r
 ## TableDataModel\r
 #\r
@@ -24,9 +25,10 @@ import DataClass
 # @param object:       Inherited from object class\r
 #\r
 #\r
-class TableDataModel(object):\r
+class TableDataModel(Table):\r
     def __init__(self, Cursor):\r
         self.Cur = Cursor\r
+        self.Table = 'DataModel'\r
     \r
     ## Create table\r
     #\r
@@ -38,13 +40,12 @@ class TableDataModel(object):
     # @param Description:  Description of a ModelType\r
     #\r
     def Create(self):\r
-        SqlCommand = """create table IF NOT EXISTS DataModel(ID SINGLE PRIMARY KEY,\r
-                                                              CrossIndex INTEGER NOT NULL,\r
-                                                              Name VARCHAR NOT NULL,\r
-                                                              Description VARCHAR\r
-                                                             )"""\r
-        self.Cur.execute(SqlCommand)\r
-        EdkLogger.verbose("Create table DataModel ... DONE!")\r
+        SqlCommand = """create table IF NOT EXISTS %s (ID SINGLE PRIMARY KEY,\r
+                                                       CrossIndex INTEGER NOT NULL,\r
+                                                       Name VARCHAR NOT NULL,\r
+                                                       Description VARCHAR\r
+                                                      )""" % self.Table\r
+        Table.Create(self, SqlCommand)\r
 \r
     ## Insert table\r
     #\r
@@ -56,34 +57,8 @@ class TableDataModel(object):
     # @param Description:  Description of a ModelType\r
     #\r
     def Insert(self, ID, CrossIndex, Name, Description):\r
-        SqlCommand = """insert into DataModel values(%s, %s, '%s', '%s')""" % (ID, CrossIndex, Name, Description)\r
-        self.Cur.execute(SqlCommand)\r
-        EdkLogger.verbose(SqlCommand + " ... DONE!")\r
-    \r
-    ## Query table\r
-    #\r
-    # Query all records of table DataModel\r
-    #  \r
-    def Query(self):\r
-        EdkLogger.verbose("\nQuery tabel DataModel started ...")\r
-        SqlCommand = """select * from DataModel"""\r
-        self.Cur.execute(SqlCommand)\r
-        for Rs in self.Cur:\r
-            EdkLogger.verbose(Rs)\r
-        SqlCommand = """select count(*) as Count from DataModel"""\r
-        self.Cur.execute(SqlCommand)\r
-        for Item in self.Cur:\r
-            EdkLogger.verbose("***Total %s records in table DataModel***" % Item)\r
-        EdkLogger.verbose("Query tabel DataModel DONE!")\r
-\r
-    ## Drop a table\r
-    #\r
-    # Drop the table DataModel\r
-    #\r
-    def Drop(self):\r
-        SqlCommand = """drop table IF EXISTS DataModel"""\r
-        self.Cur.execute(SqlCommand)\r
-        EdkLogger.verbose("Drop tabel DataModel ... DONE!")\r
+        SqlCommand = """insert into %s values(%s, %s, '%s', '%s')""" % (self.Table, ID, CrossIndex, Name, Description)\r
+        Table.Insert(self, SqlCommand)\r
     \r
     ## Init table\r
     #\r
@@ -99,3 +74,19 @@ class TableDataModel(object):
             Description = Item[0]\r
             self.Insert(ID, CrossIndex, Name, Description)\r
         EdkLogger.verbose("Initialize table DataModel ... DONE!")\r
+    \r
+    ## Get CrossIndex\r
+    #\r
+    # Get a model's cross index from its name\r
+    #\r
+    # @param ModelName:    Name of the model\r
+    # @retval CrossIndex:  CrossIndex of the model\r
+    #\r
+    def GetCrossIndex(self, ModelName):\r
+        CrossIndex = -1\r
+        SqlCommand = """select CrossIndex from DataModel where name = '""" + ModelName + """'"""\r
+        self.Cur.execute(SqlCommand)\r
+        for Item in self.Cur:\r
+            CrossIndex = Item[0]\r
+        \r
+        return CrossIndex\r
index d7ae28f..25a2ab1 100644 (file)
@@ -15,6 +15,7 @@
 # Import Modules\r
 #\r
 import Common.EdkLogger as EdkLogger\r
+from Table import Table\r
 \r
 ## TableFile\r
 #\r
@@ -22,9 +23,10 @@ import Common.EdkLogger as EdkLogger
 # \r
 # @param object:       Inherited from object class\r
 #\r
-class TableFile(object):\r
+class TableFile(Table):\r
     def __init__(self, Cursor):\r
         self.Cur = Cursor\r
+        self.Table = 'File'\r
     \r
     ## Create table\r
     #\r
@@ -38,15 +40,14 @@ class TableFile(object):
     # @param Model:     Model of a File\r
     #\r
     def Create(self):\r
-        SqlCommand = """create table IF NOT EXISTS File(ID SINGLE PRIMARY KEY,\r
-                                                        Name VARCHAR NOT NULL,\r
-                                                        ExtName VARCHAR,\r
-                                                        Path VARCHAR,\r
-                                                        FullPath VARCHAR NOT NULL,\r
-                                                        Model INTEGER DEFAULT 0\r
-                                                       )"""\r
-        self.Cur.execute(SqlCommand)\r
-        EdkLogger.verbose("Create table File ... DONE!")\r
+        SqlCommand = """create table IF NOT EXISTS %s (ID SINGLE PRIMARY KEY,\r
+                                                       Name VARCHAR NOT NULL,\r
+                                                       ExtName VARCHAR,\r
+                                                       Path VARCHAR,\r
+                                                       FullPath VARCHAR NOT NULL,\r
+                                                       Model INTEGER DEFAULT 0\r
+                                                      )""" % self.Table\r
+        Table.Create(self, SqlCommand)\r
 \r
     ## Insert table\r
     #\r
@@ -60,33 +61,6 @@ class TableFile(object):
     # @param Model:     Model of a File\r
     #\r
     def Insert(self, ID, Name, ExtName, Path, FullPath, Model):\r
-        SqlCommand = """insert into File values(%s, '%s', '%s', '%s', '%s', %s)""" \\r
-                                             % (ID, Name, ExtName, Path, FullPath, Model)\r
-        self.Cur.execute(SqlCommand)\r
-        EdkLogger.verbose(SqlCommand + " ... DONE!")\r
-    \r
-    ## Query table\r
-    #\r
-    # Query all records of table File\r
-    #  \r
-    def Query(self):\r
-        EdkLogger.verbose("\nQuery tabel File started ...")\r
-        SqlCommand = """select * from File"""\r
-        self.Cur.execute(SqlCommand)\r
-        for Rs in self.Cur:\r
-            EdkLogger.verbose(Rs)\r
-        SqlCommand = """select count(*) as Count from File"""\r
-        self.Cur.execute(SqlCommand)\r
-        for Item in self.Cur:\r
-            EdkLogger.verbose("***Total %s records in table File***" % Item)\r
-        EdkLogger.verbose("Query tabel File DONE!")\r
-\r
-    ## Drop a table\r
-    #\r
-    # Drop the table File\r
-    #\r
-    def Drop(self):\r
-        SqlCommand = """drop table IF EXISTS File"""\r
-        self.Cur.execute(SqlCommand)\r
-        EdkLogger.verbose("Drop tabel File ... DONE!")\r
-\r
+        SqlCommand = """insert into %s values(%s, '%s', '%s', '%s', '%s', %s)""" \\r
+                                           % (self.Table, ID, Name, ExtName, Path, FullPath, Model)\r
+        Table.Insert(self, SqlCommand)\r
index 135ac64..3fcb2d8 100644 (file)
@@ -15,6 +15,7 @@
 # Import Modules\r
 #\r
 import Common.EdkLogger as EdkLogger\r
+from Table import Table\r
 \r
 ## TableFunction\r
 #\r
@@ -22,9 +23,10 @@ import Common.EdkLogger as EdkLogger
 # \r
 # @param object:       Inherited from object class\r
 #\r
-class TableFunction(object):\r
+class TableFunction(Table):\r
     def __init__(self, Cursor):\r
         self.Cur = Cursor\r
+        self.Table = 'Function'\r
     \r
     ## Create table\r
     #\r
@@ -42,19 +44,18 @@ class TableFunction(object):
     # @param BelongsToFile:    The Function belongs to which file\r
     #\r
     def Create(self):\r
-        SqlCommand = """create table IF NOT EXISTS Function(ID SINGLE PRIMARY KEY,\r
-                                                            Header TEXT,\r
-                                                            Modifier VARCHAR,\r
-                                                            Name VARCHAR NOT NULL,\r
-                                                            ReturnStatement VARCHAR,\r
-                                                            StartLine INTEGER NOT NULL,\r
-                                                            StartColumn INTEGER NOT NULL,\r
-                                                            EndLine INTEGER NOT NULL,\r
-                                                            EndColumn INTEGER NOT NULL,\r
-                                                            BelongsToFile SINGLE NOT NULL\r
-                                                           )"""\r
-        self.Cur.execute(SqlCommand)\r
-        EdkLogger.verbose("Create table Function ... DONE!")\r
+        SqlCommand = """create table IF NOT EXISTS %s (ID SINGLE PRIMARY KEY,\r
+                                                       Header TEXT,\r
+                                                       Modifier VARCHAR,\r
+                                                       Name VARCHAR NOT NULL,\r
+                                                       ReturnStatement VARCHAR,\r
+                                                       StartLine INTEGER NOT NULL,\r
+                                                       StartColumn INTEGER NOT NULL,\r
+                                                       EndLine INTEGER NOT NULL,\r
+                                                       EndColumn INTEGER NOT NULL,\r
+                                                       BelongsToFile SINGLE NOT NULL\r
+                                                      )""" % self.Table\r
+        Table.Create(self, SqlCommand)\r
 \r
     ## Insert table\r
     #\r
@@ -72,33 +73,6 @@ class TableFunction(object):
     # @param BelongsToFile:    The Function belongs to which file\r
     #\r
     def Insert(self, ID, Header, Modifier, Name, ReturnStatement, StartLine, StartColumn, EndLine, EndColumn, BelongsToFile):\r
-        SqlCommand = """insert into Function values(%s, '%s', '%s', '%s', '%s', %s, %s, %s, %s, %s)""" \\r
-                                                 % (ID, Header, Modifier, Name, ReturnStatement, StartLine, StartColumn, EndLine, EndColumn, BelongsToFile)\r
-        self.Cur.execute(SqlCommand)\r
-        EdkLogger.verbose(SqlCommand + " ... DONE!")\r
-    \r
-    ## Query table\r
-    #\r
-    # Query all records of table Function\r
-    #  \r
-    def Query(self):\r
-        EdkLogger.verbose("\nQuery tabel Function started ...")\r
-        SqlCommand = """select * from Function"""\r
-        self.Cur.execute(SqlCommand)\r
-        for Rs in self.Cur:\r
-            EdkLogger.verbose(Rs)\r
-        SqlCommand = """select count(*) as Count from Function"""\r
-        self.Cur.execute(SqlCommand)\r
-        for Item in self.Cur:\r
-            EdkLogger.verbose("***Total %s records in table Function***" % Item)\r
-        EdkLogger.verbose("Query tabel Function DONE!")\r
-\r
-    ## Drop a table\r
-    #\r
-    # Drop the table Function\r
-    #\r
-    def Drop(self):\r
-        SqlCommand = """drop table IF EXISTS Function"""\r
-        self.Cur.execute(SqlCommand)\r
-        EdkLogger.verbose("Drop tabel Function ... DONE!")\r
-\r
+        SqlCommand = """insert into %s values(%s, '%s', '%s', '%s', '%s', %s, %s, %s, %s, %s)""" \\r
+                                           % (self.Table, ID, Header, Modifier, Name, ReturnStatement, StartLine, StartColumn, EndLine, EndColumn, BelongsToFile)\r
+        Table.Insert(self, SqlCommand)\r
index 1cd24b7..4158840 100644 (file)
@@ -15,6 +15,7 @@
 # Import Modules\r
 #\r
 import Common.EdkLogger as EdkLogger\r
+from Table import Table\r
 \r
 ## TablePcd\r
 #\r
@@ -23,9 +24,10 @@ import Common.EdkLogger as EdkLogger
 # @param object:       Inherited from object class\r
 #\r
 #\r
-class TablePcd(object):\r
+class TablePcd(Table):\r
     def __init__(self, Cursor):\r
         self.Cur = Cursor\r
+        self.Table = 'Pcd'\r
     \r
     ## Create table\r
     #\r
@@ -45,7 +47,7 @@ class TablePcd(object):
     # @param EndColumn:            EndColumn of a Pcd\r
     #\r
     def Create(self):\r
-        SqlCommand = """create table IF NOT EXISTS Pcd(ID SINGLE PRIMARY KEY,\r
+        SqlCommand = """create table IF NOT EXISTS %s (ID SINGLE PRIMARY KEY,\r
                                                        CName VARCHAR NOT NULL,\r
                                                        TokenSpaceGuidCName VARCHAR NOT NULL,\r
                                                        Token INTEGER,\r
@@ -57,9 +59,8 @@ class TablePcd(object):
                                                        StartColumn INTEGER NOT NULL,\r
                                                        EndLine INTEGER NOT NULL,\r
                                                        EndColumn INTEGER NOT NULL\r
-                                                      )"""\r
-        self.Cur.execute(SqlCommand)\r
-        EdkLogger.verbose("Create table Pcd ... DONE!")\r
+                                                      )""" % self.Table\r
+        Table.Create(self, SqlCommand)\r
 \r
     ## Insert table\r
     #\r
@@ -79,33 +80,6 @@ class TablePcd(object):
     # @param EndColumn:            EndColumn of a Pcd\r
     #\r
     def Insert(self, ID, CName, TokenSpaceGuidCName, Token, DatumType, Model, BelongsToFile, BelongsToFunction, StartLine, StartColumn, EndLine, EndColumn):\r
-        SqlCommand = """insert into Pcd values(%s, '%s', '%s', %s, '%s', %s, %s, %s, %s, %s, %s, %s)""" \\r
-                                            % (ID, CName, TokenSpaceGuidCName, Token, DatumType, Model, BelongsToFile, BelongsToFunction, StartLine, StartColumn, EndLine, EndColumn)\r
-        self.Cur.execute(SqlCommand)\r
-        EdkLogger.verbose(SqlCommand + " ... DONE!")\r
-    \r
-    ## Query table\r
-    #\r
-    # Query all records of table Pcd\r
-    #  \r
-    def Query(self):\r
-        EdkLogger.verbose("\nQuery tabel Pcd started ...")\r
-        SqlCommand = """select * from Pcd"""\r
-        self.Cur.execute(SqlCommand)\r
-        for Rs in self.Cur:\r
-            EdkLogger.verbose(Rs)\r
-        SqlCommand = """select count(*) as Count from Pcd"""\r
-        self.Cur.execute(SqlCommand)\r
-        for Item in self.Cur:\r
-            EdkLogger.verbose("***Total %s records in table Pcd***" % Item)\r
-        EdkLogger.verbose("Query tabel Pcd DONE!")\r
-\r
-    ## Drop a table\r
-    #\r
-    # Drop the table Pcd\r
-    #\r
-    def Drop(self):\r
-        SqlCommand = """drop table IF EXISTS Pcd"""\r
-        self.Cur.execute(SqlCommand)\r
-        EdkLogger.verbose("Drop tabel Pcd ... DONE!")\r
-\r
+        SqlCommand = """insert into %s values(%s, '%s', '%s', %s, '%s', %s, %s, %s, %s, %s, %s, %s)""" \\r
+                                           % (self.Table, ID, CName, TokenSpaceGuidCName, Token, DatumType, Model, BelongsToFile, BelongsToFunction, StartLine, StartColumn, EndLine, EndColumn)\r
+        Table.Insert(self, SqlCommand)\r
index 0593c17..1dc2af9 100644 (file)
@@ -15,6 +15,7 @@
 # Import Modules\r
 #\r
 import Common.EdkLogger as EdkLogger\r
+from Table import Table\r
 \r
 ## TableVariable\r
 #\r
@@ -23,9 +24,10 @@ import Common.EdkLogger as EdkLogger
 # @param object:       Inherited from object class\r
 #\r
 #\r
-class TableVariable(object):\r
+class TableVariable(Table):\r
     def __init__(self, Cursor):\r
         self.Cur = Cursor\r
+        self.Table = 'Variable'\r
     \r
     ## Create table\r
     #\r
@@ -45,21 +47,20 @@ class TableVariable(object):
     # @param EndColumn:          EndColumn of a Variable\r
     #\r
     def Create(self):\r
-        SqlCommand = """create table IF NOT EXISTS Variable(ID SINGLE PRIMARY KEY,\r
-                                                            Modifier VARCHAR,\r
-                                                            Type VARCHAR,\r
-                                                            Name VARCHAR NOT NULL,\r
-                                                            Value VARCHAR NOT NULL,\r
-                                                            Model INTEGER NOT NULL,\r
-                                                            BelongsToFile SINGLE NOT NULL,\r
-                                                            BelongsToFunction SINGLE DEFAULT -1,\r
-                                                            StartLine INTEGER NOT NULL,\r
-                                                            StartColumn INTEGER NOT NULL,\r
-                                                            EndLine INTEGER NOT NULL,\r
-                                                            EndColumn INTEGER NOT NULL\r
-                                                           )"""\r
-        self.Cur.execute(SqlCommand)\r
-        EdkLogger.verbose("Create table Variable ... DONE!")\r
+        SqlCommand = """create table IF NOT EXISTS %s(ID SINGLE PRIMARY KEY,\r
+                                                      Modifier VARCHAR,\r
+                                                      Type VARCHAR,\r
+                                                      Name VARCHAR NOT NULL,\r
+                                                      Value VARCHAR NOT NULL,\r
+                                                      Model INTEGER NOT NULL,\r
+                                                      BelongsToFile SINGLE NOT NULL,\r
+                                                      BelongsToFunction SINGLE DEFAULT -1,\r
+                                                      StartLine INTEGER NOT NULL,\r
+                                                      StartColumn INTEGER NOT NULL,\r
+                                                      EndLine INTEGER NOT NULL,\r
+                                                      EndColumn INTEGER NOT NULL\r
+                                                     )""" % self.Table\r
+        Table.Create(self, SqlCommand)\r
 \r
     ## Insert table\r
     #\r
@@ -79,33 +80,6 @@ class TableVariable(object):
     # @param EndColumn:          EndColumn of a Variable\r
     #\r
     def Insert(self, ID, Modifier, Type, Name, Value, Model, BelongsToFile, BelongsToFunction, StartLine, StartColumn, EndLine, EndColumn):\r
-        SqlCommand = """insert into Variable values(%s, '%s', '%s', '%s', '%s', %s, %s, %s, %s, %s, %s, %s)""" \\r
-                                                 % (ID, Modifier, Type, Name, Value, Model, BelongsToFile, BelongsToFunction, StartLine, StartColumn, EndLine, EndColumn)\r
-        self.Cur.execute(SqlCommand)\r
-        EdkLogger.verbose(SqlCommand + " ... DONE!")\r
-    \r
-    ## Query table\r
-    #\r
-    # Query all records of table Variable\r
-    #  \r
-    def Query(self):\r
-        EdkLogger.verbose("\nQuery tabel Variable started ...")\r
-        SqlCommand = """select * from Variable"""\r
-        self.Cur.execute(SqlCommand)\r
-        for Rs in self.Cur:\r
-            EdkLogger.verbose(Rs)\r
-        SqlCommand = """select count(*) as Count from Variable"""\r
-        self.Cur.execute(SqlCommand)\r
-        for Item in self.Cur:\r
-            EdkLogger.verbose("***Total %s records in table Variable***" % Item)\r
-        EdkLogger.verbose("Query tabel Variable DONE!")\r
-\r
-    ## Drop a table\r
-    #\r
-    # Drop the table Variable\r
-    #\r
-    def Drop(self):\r
-        SqlCommand = """drop table IF EXISTS Variable"""\r
-        self.Cur.execute(SqlCommand)\r
-        EdkLogger.verbose("Drop tabel Variable ... DONE!")\r
-\r
+        SqlCommand = """insert into %s values(%s, '%s', '%s', '%s', '%s', %s, %s, %s, %s, %s, %s, %s)""" \\r
+                                           % (self.Table, ID, Modifier, Type, Name, Value, Model, BelongsToFile, BelongsToFunction, StartLine, StartColumn, EndLine, EndColumn)\r
+        Table.Insert(self, SqlCommand)\r