1. Adjust the function of "GenerateID" of each table, use a global variable to store...
[people/mcb30/basetools.git] / Source / Python / Table / Table.py
1 ## @file\r
2 # This file is used to create/update/query/erase a common table\r
3 #\r
4 # Copyright (c) 2008, Intel Corporation\r
5 # All rights reserved. This program and the accompanying materials\r
6 # are licensed and made available under the terms and conditions of the BSD License\r
7 # which accompanies this distribution.  The full text of the license may be found at\r
8 # http://opensource.org/licenses/bsd-license.php\r
9 #\r
10 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12 #\r
13 \r
14 ##\r
15 # Import Modules\r
16 #\r
17 import Common.EdkLogger as EdkLogger\r
18 \r
19 ## TableFile\r
20 #\r
21 # This class defined a common table\r
22\r
23 # @param object:     Inherited from object class\r
24 #\r
25 # @param Cursor:     Cursor of the database\r
26 # @param TableName:  Name of the table\r
27 #\r
28 class Table(object):\r
29     def __init__(self, Cursor):\r
30         self.Cur = Cursor\r
31         self.Table = ''\r
32         self.ID = 0\r
33     \r
34     ## Create table\r
35     #\r
36     # Create a table\r
37     #\r
38     def Create(self, SqlCommand):\r
39         self.Cur.execute(SqlCommand)\r
40         self.ID = 0\r
41         EdkLogger.verbose(SqlCommand + " ... DONE!")\r
42 \r
43     ## Insert table\r
44     #\r
45     # Insert a record into a table\r
46     #\r
47     def Insert(self, SqlCommand):\r
48         EdkLogger.debug(4, SqlCommand)\r
49         self.Cur.execute(SqlCommand)\r
50     \r
51     ## Query table\r
52     #\r
53     # Query all records of the table\r
54     #  \r
55     def Query(self):\r
56         EdkLogger.verbose("\nQuery tabel %s started ..." % self.Table)\r
57         SqlCommand = """select * from %s""" % self.Table\r
58         self.Cur.execute(SqlCommand)\r
59         for Rs in self.Cur:\r
60             EdkLogger.verbose(str(Rs))\r
61         \r
62         TotalCount = self.GetCount()\r
63         EdkLogger.verbose("*** Total %s records in table %s ***" % (TotalCount, self.Table) )\r
64         EdkLogger.verbose("Query tabel %s DONE!" % self.Table)\r
65 \r
66     ## Drop a table\r
67     #\r
68     # Drop the table\r
69     #\r
70     def Drop(self):\r
71         SqlCommand = """drop table IF EXISTS %s""" % self.Table\r
72         self.Cur.execute(SqlCommand)\r
73         EdkLogger.verbose("Drop tabel %s ... DONE!" % self.Table)\r
74     \r
75     ## Get count\r
76     #\r
77     # Get a count of all records of the table\r
78     #\r
79     # @retval Count:  Total count of all records\r
80     #\r
81     def GetCount(self):\r
82         SqlCommand = """select count(*) as Count from %s""" % self.Table\r
83         self.Cur.execute(SqlCommand)\r
84         for Item in self.Cur:\r
85             return Item[0]\r
86     \r
87     ## Generate ID\r
88     #\r
89     # Generate an ID if input ID is -1\r
90     #\r
91     # @param ID:   Input ID \r
92     #\r
93     # @retval ID:  New generated ID\r
94     #\r
95     def GenerateID(self, ID):\r
96         if ID == -1:\r
97             self.ID = self.ID + 1\r
98 \r
99         return self.ID\r