1. Create ECC Database structure
[people/mcb30/basetools.git] / Source / Python / Ecc / Database.py
1 ## @file\r
2 # This file is used to create a database used by ECC tool\r
3 #\r
4 # Copyright (c) 2007, 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 sqlite3\r
18 import os\r
19 from TableDataModel import TableDataModel\r
20 from TableFile import TableFile\r
21 from TableFunction import TableFunction\r
22 from TablePcd import TablePcd\r
23 from TableVariable import TableVariable\r
24 import Common.EdkLogger as EdkLogger\r
25 \r
26 ##\r
27 # Static definitions\r
28 #\r
29 DATABASE_PATH = "Database/Ecc.db"\r
30 \r
31 ## TableDataModel\r
32 #\r
33 # This class defined the ECC databse\r
34 # During the phase of initialization, the database will create all tables and\r
35 # insert all records of table DataModel\r
36\r
37 # @param object:    Inherited from object class\r
38 # @param DbPath:    A string for the path of the ECC database\r
39 #\r
40 # @var Conn:        Connection of the ECC database\r
41 # @var Cur:         Cursor of the connection\r
42 # @var TblDataModel:  Local instance for TableDataModel\r
43 #\r
44 class Database(object):\r
45     def __init__(self, DbPath):\r
46         EdkLogger.SetLevel(EdkLogger.VERBOSE)\r
47         self.Conn = sqlite3.connect(DbPath)\r
48         self.Cur = self.Conn.cursor()\r
49         self.TblDataModel = TableDataModel(self.Cur)\r
50         self.TblFile = TableFile(self.Cur)\r
51         self.TblFunction = TableFunction(self.Cur)\r
52         self.TblVariable = TableVariable(self.Cur)\r
53         self.TblPcd = TablePcd(self.Cur)\r
54     \r
55     ## Initialize ECC database\r
56     #\r
57     # 1. Delete all old existing tables\r
58     # 2. Create new tables\r
59     # 3. Initialize table DataModel\r
60     #\r
61     def InitDatabase(self):\r
62         EdkLogger.verbose("\nInitialize ECC database started ...")\r
63         #\r
64         # Drop all old existing tables\r
65         #\r
66         self.TblDataModel.Drop()\r
67         self.TblFile.Drop()\r
68         self.TblFunction.Drop()\r
69         self.TblPcd.Drop()\r
70         self.TblVariable.Drop()\r
71         \r
72         #\r
73         # Create new tables\r
74         #\r
75         self.TblDataModel.Create()\r
76         self.TblFile.Create()\r
77         self.TblFunction.Create()\r
78         self.TblPcd.Create()\r
79         self.TblVariable.Create()\r
80         \r
81         #\r
82         # Initialize table DataModel\r
83         #\r
84         self.TblDataModel.InitTable()\r
85         EdkLogger.verbose("Initialize ECC database ... DONE!")\r
86 \r
87     ## Query a table\r
88     #\r
89     # @param Table:  The instance of the table to be queried\r
90     #\r
91     def QueryTable(self, Table):\r
92         Table.Query()\r
93 \r
94 ##\r
95 #\r
96 # This acts like the main() function for the script, unless it is 'import'ed into another\r
97 # script.\r
98 #\r
99 if __name__ == '__main__':\r
100     Db = Database(DATABASE_PATH)\r
101     Db.InitDatabase()\r
102     Db.QueryTable(Db.TblDataModel)\r
103     Db.QueryTable(Db.TblFile)\r
104     Db.QueryTable(Db.TblFunction)\r
105     Db.QueryTable(Db.TblPcd)\r
106     Db.QueryTable(Db.TblVariable)\r
107     \r
108