d41f6e58a908da2034ad49850baca442405a4adb
[people/mcb30/basetools.git] / Source / Python / Workspace / MetaFileTable.py
1 ## @file\r
2 # This file is used to create/update/query/erase a common table\r
3 #\r
4 # Copyright (c) 2008, 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 Common.EdkLogger as EdkLogger\r
18 from MetaDataTable import Table\r
19 from MetaDataTable import ConvertToSqlString\r
20 \r
21 class ModuleTable(Table):\r
22     _ID_STEP_ = 0.00000001\r
23     _ID_MAX_  = 0.99999999\r
24     _COLUMN_ = '''\r
25         ID REAL PRIMARY KEY,\r
26         Model INTEGER NOT NULL,\r
27         Value1 TEXT NOT NULL,\r
28         Value2 TEXT,\r
29         Value3 TEXT,\r
30         Scope1 TEXT,\r
31         Scope2 TEXT,\r
32         BelongsToItem REAL NOT NULL,\r
33         StartLine INTEGER NOT NULL,\r
34         StartColumn INTEGER NOT NULL,\r
35         EndLine INTEGER NOT NULL,\r
36         EndColumn INTEGER NOT NULL,\r
37         Enabled INTEGER DEFAULT 0\r
38         '''\r
39     _DUMMY_ = "-1, -1, '====', '====', '====', '====', '====', -1, -1, -1, -1, -1, -1"\r
40 \r
41     def __init__(self, Cursor, Name='Inf', IdBase=0, Temporary=False):\r
42         Table.__init__(self, Cursor, Name, IdBase, Temporary)\r
43 \r
44     #\r
45     # Insert a record into table Inf\r
46     #\r
47     # @param Model:          Model of a Inf item\r
48     # @param Value1:         Value1 of a Inf item\r
49     # @param Value2:         Value2 of a Inf item\r
50     # @param Value3:         Value3 of a Inf item\r
51     # @param Value4:         Value4 of a Inf item\r
52     # @param Value5:         Value5 of a Inf item\r
53     # @param Arch:           Arch of a Inf item\r
54     # @param BelongsToItem:  The item belongs to which another item\r
55     # @param BelongsToFile:  The item belongs to which dsc file\r
56     # @param StartLine:      StartLine of a Inf item\r
57     # @param StartColumn:    StartColumn of a Inf item\r
58     # @param EndLine:        EndLine of a Inf item\r
59     # @param EndColumn:      EndColumn of a Inf item\r
60     # @param Enabled:        If this item enabled\r
61     #\r
62     def Insert(self, Model, Value1, Value2, Value3, Scope1='COMMON', Scope2='COMMON',\r
63                BelongsToItem=-1, StartLine=-1, StartColumn=-1, EndLine=-1, EndColumn=-1, Enabled=0):\r
64         (Value1, Value2, Value3, Scope1, Scope2) = ConvertToSqlString((Value1, Value2, Value3, Scope1, Scope2))\r
65         return Table.Insert(\r
66                         self, \r
67                         Model, \r
68                         Value1, \r
69                         Value2, \r
70                         Value3, \r
71                         Scope1, \r
72                         Scope2,\r
73                         BelongsToItem, \r
74                         StartLine, \r
75                         StartColumn, \r
76                         EndLine, \r
77                         EndColumn, \r
78                         Enabled\r
79                         )\r
80 \r
81     ## Query table\r
82     #\r
83     # @param Model:  The Model of Record \r
84     #\r
85     # @retval:       A recordSet of all found records \r
86     #\r
87     def Query(self, Model, Arch=None, Platform=None):\r
88         ConditionString = "Model=%s AND Enabled>=0" % Model\r
89         ValueString = "Value1,Value2,Value3,Scope1,Scope2,ID,StartLine"\r
90 \r
91         if Arch != None and Arch != 'COMMON':\r
92             ConditionString += " AND (Scope1='%s' OR Scope1='COMMON')" % Arch\r
93         if Platform != None and Platform != 'COMMON':\r
94             ConditionString += " AND (Scope2='%s' OR Scope2='COMMON' OR Scope2='DEFAULT')" % Platform\r
95 \r
96         SqlCommand = "SELECT %s FROM %s WHERE %s" % (ValueString, self.Table, ConditionString)\r
97         return self.Exec(SqlCommand)\r
98 \r
99 class PackageTable(Table):\r
100     _ID_STEP_ = 0.00000001\r
101     _ID_MAX_ = 1\r
102     _COLUMN_ = '''\r
103         ID REAL PRIMARY KEY,\r
104         Model INTEGER NOT NULL,\r
105         Value1 TEXT NOT NULL,\r
106         Value2 TEXT,\r
107         Value3 TEXT,\r
108         Scope1 TEXT,\r
109         Scope2 TEXT,\r
110         BelongsToItem REAL NOT NULL,\r
111         StartLine INTEGER NOT NULL,\r
112         StartColumn INTEGER NOT NULL,\r
113         EndLine INTEGER NOT NULL,\r
114         EndColumn INTEGER NOT NULL,\r
115         Enabled INTEGER DEFAULT 0\r
116         '''\r
117     _DUMMY_ = "-1, -1, '====', '====', '====', '====', '====', -1, -1, -1, -1, -1, -1"\r
118     def __init__(self, Cursor, Name='Dec', IdBase=0, Temporary=False):\r
119         Table.__init__(self, Cursor, Name, IdBase, Temporary)\r
120 \r
121     ## Insert table\r
122     #\r
123     # Insert a record into table Dec\r
124     #\r
125     # @param Model:          Model of a Dec item\r
126     # @param Value1:         Value1 of a Dec item\r
127     # @param Value2:         Value2 of a Dec item\r
128     # @param Value3:         Value3 of a Dec item\r
129     # @param Arch:           Arch of a Dec item\r
130     # @param BelongsToItem:  The item belongs to which another item\r
131     # @param BelongsToFile:  The item belongs to which dsc file\r
132     # @param StartLine:      StartLine of a Dec item\r
133     # @param StartColumn:    StartColumn of a Dec item\r
134     # @param EndLine:        EndLine of a Dec item\r
135     # @param EndColumn:      EndColumn of a Dec item\r
136     # @param Enabled:        If this item enabled\r
137     #\r
138     def Insert(self, Model, Value1, Value2, Value3, Scope1='COMMON', Scope2='COMMON',\r
139                BelongsToItem=-1, StartLine=-1, StartColumn=-1, EndLine=-1, EndColumn=-1, Enabled=0):\r
140         (Value1, Value2, Value3, Scope1, Scope2) = ConvertToSqlString((Value1, Value2, Value3, Scope1, Scope2))\r
141         return Table.Insert(\r
142                         self, \r
143                         Model, \r
144                         Value1, \r
145                         Value2, \r
146                         Value3, \r
147                         Scope1, \r
148                         Scope2,\r
149                         BelongsToItem, \r
150                         StartLine, \r
151                         StartColumn, \r
152                         EndLine, \r
153                         EndColumn, \r
154                         Enabled\r
155                         )\r
156 \r
157     ## Query table\r
158     #\r
159     # @param Model:  The Model of Record \r
160     #\r
161     # @retval:       A recordSet of all found records \r
162     #\r
163     def Query(self, Model, Arch=None):\r
164         ConditionString = "Model=%s AND Enabled>=0" % Model\r
165         ValueString = "Value1,Value2,Value3,Scope1,ID,StartLine"\r
166 \r
167         if Arch != None and Arch != 'COMMON':\r
168             ConditionString += " AND (Scope1='%s' OR Scope1='COMMON')" % Arch\r
169 \r
170         SqlCommand = "SELECT %s FROM %s WHERE %s" % (ValueString, self.Table, ConditionString)\r
171         return self.Exec(SqlCommand)\r
172 \r
173 class PlatformTable(Table):\r
174     _ID_STEP_ = 0.00000001\r
175     _ID_MAX_ = 1\r
176     _COLUMN_ = '''\r
177         ID REAL PRIMARY KEY,\r
178         Model INTEGER NOT NULL,\r
179         Value1 TEXT NOT NULL,\r
180         Value2 TEXT,\r
181         Value3 TEXT,\r
182         Scope1 TEXT,\r
183         Scope2 TEXT,\r
184         BelongsToItem REAL NOT NULL,\r
185         FromItem REAL NOT NULL,\r
186         StartLine INTEGER NOT NULL,\r
187         StartColumn INTEGER NOT NULL,\r
188         EndLine INTEGER NOT NULL,\r
189         EndColumn INTEGER NOT NULL,\r
190         Enabled INTEGER DEFAULT 0\r
191         '''\r
192     _DUMMY_ = "-1, -1, '====', '====', '====', '====', '====', -1, -1, -1, -1, -1, -1, -1"\r
193     def __init__(self, Cursor, Name='Dsc', IdBase=0, Temporary=False):\r
194         Table.__init__(self, Cursor, Name, IdBase, Temporary)\r
195 \r
196     ## Insert table\r
197     #\r
198     # Insert a record into table Dsc\r
199     #\r
200     # @param Model:          Model of a Dsc item\r
201     # @param Value1:         Value1 of a Dsc item\r
202     # @param Value2:         Value2 of a Dsc item\r
203     # @param Value3:         Value3 of a Dsc item\r
204     # @param Arch:           Arch of a Dsc item\r
205     # @param BelongsToItem:  The item belongs to which another item\r
206     # @param BelongsToFile:  The item belongs to which dsc file\r
207     # @param StartLine:      StartLine of a Dsc item\r
208     # @param StartColumn:    StartColumn of a Dsc item\r
209     # @param EndLine:        EndLine of a Dsc item\r
210     # @param EndColumn:      EndColumn of a Dsc item\r
211     # @param Enabled:        If this item enabled\r
212     #\r
213     def Insert(self, Model, Value1, Value2, Value3, Scope1='COMMON', Scope2='COMMON', BelongsToItem=-1, \r
214                FromItem=-1, StartLine=-1, StartColumn=-1, EndLine=-1, EndColumn=-1, Enabled=1):\r
215         (Value1, Value2, Value3, Scope1, Scope2) = ConvertToSqlString((Value1, Value2, Value3, Scope1, Scope2))\r
216         return Table.Insert(\r
217                         self, \r
218                         Model, \r
219                         Value1, \r
220                         Value2, \r
221                         Value3, \r
222                         Scope1, \r
223                         Scope2,\r
224                         BelongsToItem, \r
225                         FromItem,\r
226                         StartLine, \r
227                         StartColumn, \r
228                         EndLine, \r
229                         EndColumn, \r
230                         Enabled\r
231                         )\r
232 \r
233     ## Query table\r
234     #\r
235     # @param Model:  The Model of Record \r
236     #\r
237     # @retval:       A recordSet of all found records \r
238     #\r
239     def Query(self, Model, Scope1=None, Scope2=None, BelongsToItem=None, FromItem=None):\r
240         ConditionString = "Model=%s AND Enabled>=0" % Model\r
241         ValueString = "Value1,Value2,Value3,Scope1,Scope2,ID,StartLine"\r
242 \r
243         if Scope1 != None and Scope1 != 'COMMON':\r
244             ConditionString += " AND (Scope1='%s' OR Scope1='COMMON')" % Scope1\r
245         if Scope2 != None and Scope2 != 'COMMON':\r
246             ConditionString += " AND (Scope2='%s' OR Scope2='COMMON' OR Scope2='DEFAULT')" % Scope2\r
247 \r
248         if BelongsToItem != None:\r
249             ConditionString += " AND BelongsToItem=%s" % BelongsToItem\r
250         else:\r
251             ConditionString += " AND BelongsToItem<0"\r
252 \r
253         if FromItem != None:\r
254             ConditionString += " AND FromItem=%s" % FromItem\r
255 \r
256         SqlCommand = "SELECT %s FROM %s WHERE %s" % (ValueString, self.Table, ConditionString)\r
257         #print SqlCommand\r
258         return self.Exec(SqlCommand)\r
259 \r
260 \r