From 30fdf1140b8d1ce93f3821d986fa165552023440 Mon Sep 17 00:00:00 2001 From: lgao4 Date: Fri, 17 Jul 2009 09:10:31 +0000 Subject: Check In tool source code based on Build tool project revision r1655. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8964 6f19259b-4bc3-4df7-8a09-765794883524 --- BaseTools/Source/Python/Common/Database.py | 120 +++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 BaseTools/Source/Python/Common/Database.py (limited to 'BaseTools/Source/Python/Common/Database.py') diff --git a/BaseTools/Source/Python/Common/Database.py b/BaseTools/Source/Python/Common/Database.py new file mode 100644 index 0000000000..e645337a39 --- /dev/null +++ b/BaseTools/Source/Python/Common/Database.py @@ -0,0 +1,120 @@ +## @file +# This file is used to create a database used by ECC tool +# +# Copyright (c) 2007 ~ 2008, Intel Corporation +# All rights reserved. This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# + +## +# Import Modules +# +import sqlite3 +import os + +import EdkLogger as EdkLogger +from CommonDataClass.DataClass import * +from String import * +from DataType import * + +from Table.TableDataModel import TableDataModel +from Table.TableFile import TableFile +from Table.TableInf import TableInf +from Table.TableDec import TableDec +from Table.TableDsc import TableDsc + +## Database +# +# This class defined the build databse +# During the phase of initialization, the database will create all tables and +# insert all records of table DataModel +# +# @param object: Inherited from object class +# @param DbPath: A string for the path of the ECC database +# +# @var Conn: Connection of the ECC database +# @var Cur: Cursor of the connection +# @var TblDataModel: Local instance for TableDataModel +# +class Database(object): + def __init__(self, DbPath): + if os.path.exists(DbPath): + os.remove(DbPath) + self.Conn = sqlite3.connect(DbPath, isolation_level = 'DEFERRED') + self.Conn.execute("PRAGMA page_size=8192") + self.Conn.execute("PRAGMA synchronous=OFF") + self.Cur = self.Conn.cursor() + self.TblDataModel = TableDataModel(self.Cur) + self.TblFile = TableFile(self.Cur) + self.TblInf = TableInf(self.Cur) + self.TblDec = TableDec(self.Cur) + self.TblDsc = TableDsc(self.Cur) + + ## Initialize build database + # + # 1. Delete all old existing tables + # 2. Create new tables + # 3. Initialize table DataModel + # + def InitDatabase(self): + EdkLogger.verbose("\nInitialize ECC database started ...") + # + # Drop all old existing tables + # +# self.TblDataModel.Drop() +# self.TblDsc.Drop() +# self.TblFile.Drop() + + # + # Create new tables + # + self.TblDataModel.Create() + self.TblFile.Create() + self.TblInf.Create() + self.TblDec.Create() + self.TblDsc.Create() + + # + # Initialize table DataModel + # + self.TblDataModel.InitTable() + EdkLogger.verbose("Initialize ECC database ... DONE!") + + ## Query a table + # + # @param Table: The instance of the table to be queried + # + def QueryTable(self, Table): + Table.Query() + + ## Close entire database + # + # Commit all first + # Close the connection and cursor + # + def Close(self): + self.Conn.commit() + self.Cur.close() + self.Conn.close() + +## +# +# This acts like the main() function for the script, unless it is 'import'ed into another +# script. +# +if __name__ == '__main__': + EdkLogger.Initialize() + EdkLogger.SetLevel(EdkLogger.DEBUG_0) + + Db = Database(DATABASE_PATH) + Db.InitDatabase() + Db.QueryTable(Db.TblDataModel) + Db.QueryTable(Db.TblFile) + Db.QueryTable(Db.TblDsc) + Db.Close() + \ No newline at end of file -- cgit v1.2.3