]>
git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Source/Python/Table/TableReport.py
2 # This file is used to create/update/query/erase table for ECC reports
4 # Copyright (c) 2008 - 2010, 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
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.
17 import Common
.EdkLogger
as EdkLogger
19 from Table
import Table
20 from Common
.String
import ConvertToSqlString2
21 import EccToolError
as EccToolError
22 import EccGlobalData
as EccGlobalData
26 # This class defined a table used for data model
28 # @param object: Inherited from object class
31 class TableReport(Table
):
32 def __init__(self
, Cursor
):
33 Table
.__init
__(self
, Cursor
)
40 # @param ID: ID of an Error
41 # @param ErrorID: ID of an Error TypeModel of a Report item
42 # @param OtherMsg: Other error message besides the standard error message
43 # @param BelongsToItem: The error belongs to which item
44 # @param Enabled: If this error enabled
45 # @param Corrected: if this error corrected
48 SqlCommand
= """create table IF NOT EXISTS %s (ID INTEGER PRIMARY KEY,
49 ErrorID INTEGER NOT NULL,
51 BelongsToTable TEXT NOT NULL,
52 BelongsToItem SINGLE NOT NULL,
53 Enabled INTEGER DEFAULT 0,
54 Corrected INTEGER DEFAULT -1
56 Table
.Create(self
, SqlCommand
)
60 # Insert a record into table report
62 # @param ID: ID of an Error
63 # @param ErrorID: ID of an Error TypeModel of a report item
64 # @param OtherMsg: Other error message besides the standard error message
65 # @param BelongsToTable: The error item belongs to which table
66 # @param BelongsToItem: The error belongs to which item
67 # @param Enabled: If this error enabled
68 # @param Corrected: if this error corrected
70 def Insert(self
, ErrorID
, OtherMsg
= '', BelongsToTable
= '', BelongsToItem
= -1, Enabled
= 0, Corrected
= -1):
72 SqlCommand
= """insert into %s values(%s, %s, '%s', '%s', %s, %s, %s)""" \
73 % (self
.Table
, self
.ID
, ErrorID
, ConvertToSqlString2(OtherMsg
), BelongsToTable
, BelongsToItem
, Enabled
, Corrected
)
74 Table
.Insert(self
, SqlCommand
)
80 # @retval: A recordSet of all found records
83 SqlCommand
= """select ID, ErrorID, OtherMsg, BelongsToTable, BelongsToItem, Corrected from %s
84 where Enabled > -1 order by ErrorID, BelongsToItem""" % (self
.Table
)
85 return self
.Exec(SqlCommand
)
89 # Get all enabled records from table report and save them to a .csv file
91 # @param Filename: To filename to save the report content
93 def ToCSV(self
, Filename
= 'Report.csv'):
95 File
= open(Filename
, 'w+')
96 File
.write("""No, Error Code, Error Message, File, LineNo, Other Error Message\n""")
97 RecordSet
= self
.Query()
99 for Record
in RecordSet
:
103 BelongsToTable
= Record
[3]
104 BelongsToItem
= Record
[4]
105 IsCorrected
= Record
[5]
107 if BelongsToTable
== 'File':
108 SqlCommand
= """select 1, FullPath from %s where ID = %s
109 """ % (BelongsToTable
, BelongsToItem
)
111 SqlCommand
= """select A.StartLine, B.FullPath from %s as A, File as B
112 where A.ID = %s and B.ID = A.BelongsToFile
113 """ % (BelongsToTable
, BelongsToItem
)
114 NewRecord
= self
.Exec(SqlCommand
)
116 File
.write("""%s,%s,"%s",%s,%s,"%s"\n""" % (Index
, ErrorID
, EccToolError
.gEccErrorMessage
[ErrorID
], NewRecord
[0][1], NewRecord
[0][0], OtherMsg
))
117 EdkLogger
.quiet("%s(%s): [%s]%s %s" % (NewRecord
[0][1], NewRecord
[0][0], ErrorID
, EccToolError
.gEccErrorMessage
[ErrorID
], OtherMsg
))
121 NewFilename
= 'Report_' + time
.strftime("%Y%m%d_%H%M%S.csv", time
.localtime())
122 EdkLogger
.warn("ECC", "The report file %s is locked by other progress, use %s instead!" % (Filename
, NewFilename
))
123 self
.ToCSV(NewFilename
)