4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# This file is used to create a database used by ECC tool
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Copyright (c) 2007 - 2008, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# This program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# are licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# which accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# http://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync##
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Import Modules
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncimport sqlite3
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncimport os
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncimport EdkLogger as EdkLogger
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom CommonDataClass.DataClass import *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom String import *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom DataType import *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Table.TableDataModel import TableDataModel
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Table.TableFile import TableFile
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Table.TableInf import TableInf
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Table.TableDec import TableDec
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Table.TableDsc import TableDsc
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## Database
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# This class defined the build databse
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# During the phase of initialization, the database will create all tables and
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# insert all records of table DataModel
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# @param object: Inherited from object class
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# @param DbPath: A string for the path of the ECC database
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# @var Conn: Connection of the ECC database
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# @var Cur: Cursor of the connection
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# @var TblDataModel: Local instance for TableDataModel
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncclass Database(object):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def __init__(self, DbPath):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if os.path.exists(DbPath):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync os.remove(DbPath)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.Conn = sqlite3.connect(DbPath, isolation_level = 'DEFERRED')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.Conn.execute("PRAGMA page_size=8192")
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.Conn.execute("PRAGMA synchronous=OFF")
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.Cur = self.Conn.cursor()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.TblDataModel = TableDataModel(self.Cur)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.TblFile = TableFile(self.Cur)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.TblInf = TableInf(self.Cur)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.TblDec = TableDec(self.Cur)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.TblDsc = TableDsc(self.Cur)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## Initialize build database
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # 1. Delete all old existing tables
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # 2. Create new tables
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # 3. Initialize table DataModel
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def InitDatabase(self):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EdkLogger.verbose("\nInitialize ECC database started ...")
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Drop all old existing tables
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# self.TblDataModel.Drop()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# self.TblDsc.Drop()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# self.TblFile.Drop()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Create new tables
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.TblDataModel.Create()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.TblFile.Create()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.TblInf.Create()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.TblDec.Create()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.TblDsc.Create()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Initialize table DataModel
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.TblDataModel.InitTable()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EdkLogger.verbose("Initialize ECC database ... DONE!")
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## Query a table
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # @param Table: The instance of the table to be queried
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def QueryTable(self, Table):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Table.Query()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## Close entire database
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Commit all first
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Close the connection and cursor
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def Close(self):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.Conn.commit()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.Cur.close()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.Conn.close()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync##
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# This acts like the main() function for the script, unless it is 'import'ed into another
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# script.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncif __name__ == '__main__':
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EdkLogger.Initialize()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EdkLogger.SetLevel(EdkLogger.DEBUG_0)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Db = Database(DATABASE_PATH)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Db.InitDatabase()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Db.QueryTable(Db.TblDataModel)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Db.QueryTable(Db.TblFile)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Db.QueryTable(Db.TblDsc)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Db.Close()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync