## @file | |
# This file is used to create a database used by ECC tool | |
# | |
# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR> | |
# 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 Common.LongFilePathOs as 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() | |