def __init__(self, Cursor, MetaFile, FileType, Temporary): self.MetaFile = MetaFile self._FileIndexTable = TableFile(Cursor) self._FileIndexTable.Create(False) FileId = self._FileIndexTable.GetFileId(MetaFile) if not FileId: FileId = self._FileIndexTable.InsertFile(MetaFile, FileType) if Temporary: TableName = "_%s_%s_%s" % (FileType, FileId, uuid.uuid4().hex) else: TableName = "_%s_%s" % (FileType, FileId) #Table.__init__(self, Cursor, TableName, FileId, False) Table.__init__(self, Cursor, TableName, FileId, Temporary) self.Create(not self.IsIntegrity())
class MetaFileTable(Table): # TRICK: use file ID as the part before '.' _ID_STEP_ = 0.00000001 _ID_MAX_ = 0.99999999 ## Constructor def __init__(self, Cursor, MetaFile, FileType, Temporary): self.MetaFile = MetaFile self._FileIndexTable = TableFile(Cursor) self._FileIndexTable.Create(False) FileId = self._FileIndexTable.GetFileId(MetaFile) if not FileId: FileId = self._FileIndexTable.InsertFile(MetaFile, FileType) if Temporary: TableName = "_%s_%s_%s" % (FileType, FileId, uuid.uuid4().hex) else: TableName = "_%s_%s" % (FileType, FileId) #Table.__init__(self, Cursor, TableName, FileId, False) Table.__init__(self, Cursor, TableName, FileId, Temporary) self.Create(not self.IsIntegrity()) def IsIntegrity(self): try: Result = self.Cur.execute("select ID from %s where ID<0" % (self.Table)).fetchall() if not Result: return False TimeStamp = self.MetaFile.TimeStamp if TimeStamp != self._FileIndexTable.GetFileTimeStamp(self.IdBase): # update the timestamp in database self._FileIndexTable.SetFileTimeStamp(self.IdBase, TimeStamp) return False except Exception, Exc: EdkLogger.debug(EdkLogger.DEBUG_5, str(Exc)) return False return True