]> git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Source/Python/Table/TableDataModel.py
BaseTools: Replace StandardError with Expression
[mirror_edk2.git] / BaseTools / Source / Python / Table / TableDataModel.py
1 ## @file
2 # This file is used to create/update/query/erase table for data models
3 #
4 # Copyright (c) 2008, Intel Corporation. All rights reserved.<BR>
5 # This program and the accompanying materials
6 # are licensed and made available under the terms and conditions of the BSD License
7 # which accompanies this distribution. The full text of the license may be found at
8 # http://opensource.org/licenses/bsd-license.php
9 #
10 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12 #
13
14 ##
15 # Import Modules
16 #
17 import Common.EdkLogger as EdkLogger
18 import CommonDataClass.DataClass as DataClass
19 from Table import Table
20 from Common.StringUtils import ConvertToSqlString
21
22 ## TableDataModel
23 #
24 # This class defined a table used for data model
25 #
26 # @param object: Inherited from object class
27 #
28 #
29 class TableDataModel(Table):
30 def __init__(self, Cursor):
31 Table.__init__(self, Cursor)
32 self.Table = 'DataModel'
33
34 ## Create table
35 #
36 # Create table DataModel
37 #
38 # @param ID: ID of a ModelType
39 # @param CrossIndex: CrossIndex of a ModelType
40 # @param Name: Name of a ModelType
41 # @param Description: Description of a ModelType
42 #
43 def Create(self):
44 SqlCommand = """create table IF NOT EXISTS %s (ID INTEGER PRIMARY KEY,
45 CrossIndex INTEGER NOT NULL,
46 Name VARCHAR NOT NULL,
47 Description VARCHAR
48 )""" % self.Table
49 Table.Create(self, SqlCommand)
50
51 ## Insert table
52 #
53 # Insert a record into table DataModel
54 #
55 # @param ID: ID of a ModelType
56 # @param CrossIndex: CrossIndex of a ModelType
57 # @param Name: Name of a ModelType
58 # @param Description: Description of a ModelType
59 #
60 def Insert(self, CrossIndex, Name, Description):
61 self.ID = self.ID + 1
62 (Name, Description) = ConvertToSqlString((Name, Description))
63 SqlCommand = """insert into %s values(%s, %s, '%s', '%s')""" % (self.Table, self.ID, CrossIndex, Name, Description)
64 Table.Insert(self, SqlCommand)
65
66 return self.ID
67
68 ## Init table
69 #
70 # Create all default records of table DataModel
71 #
72 def InitTable(self):
73 EdkLogger.verbose("\nInitialize table DataModel started ...")
74 for Item in DataClass.MODEL_LIST:
75 CrossIndex = Item[1]
76 Name = Item[0]
77 Description = Item[0]
78 self.Insert(CrossIndex, Name, Description)
79 EdkLogger.verbose("Initialize table DataModel ... DONE!")
80
81 ## Get CrossIndex
82 #
83 # Get a model's cross index from its name
84 #
85 # @param ModelName: Name of the model
86 # @retval CrossIndex: CrossIndex of the model
87 #
88 def GetCrossIndex(self, ModelName):
89 CrossIndex = -1
90 SqlCommand = """select CrossIndex from DataModel where name = '""" + ModelName + """'"""
91 self.Cur.execute(SqlCommand)
92 for Item in self.Cur:
93 CrossIndex = Item[0]
94
95 return CrossIndex