+ _ID_STEP_ = 0.00000001\r
+ _ID_MAX_ = 0.99999999\r
+\r
+ ## Constructor\r
+ def __init__(self, Cursor, MetaFile, FileType, Temporary, FromItem=None):\r
+ self.MetaFile = MetaFile\r
+\r
+ self._FileIndexTable = TableFile(Cursor)\r
+ self._FileIndexTable.Create(False)\r
+\r
+ FileId = self._FileIndexTable.GetFileId(MetaFile, FromItem)\r
+ if not FileId:\r
+ FileId = self._FileIndexTable.InsertFile(MetaFile, FileType, FromItem)\r
+\r
+ if Temporary:\r
+ TableName = "_%s_%s_%s" % (FileType, FileId, uuid.uuid4().hex)\r
+ else:\r
+ TableName = "_%s_%s" % (FileType, FileId)\r
+\r
+ #Table.__init__(self, Cursor, TableName, FileId, False)\r
+ Table.__init__(self, Cursor, TableName, FileId, Temporary)\r
+ self.Create(not self.IsIntegrity())\r
+\r
+ def IsIntegrity(self):\r
+ try:\r
+ TimeStamp = self.MetaFile.TimeStamp\r
+ Result = self.Cur.execute("select ID from %s where ID<0" % (self.Table)).fetchall()\r
+ if not Result:\r
+ # update the timestamp in database\r
+ self._FileIndexTable.SetFileTimeStamp(self.IdBase, TimeStamp)\r
+ return False\r
+\r
+ if TimeStamp != self._FileIndexTable.GetFileTimeStamp(self.IdBase):\r
+ # update the timestamp in database\r
+ self._FileIndexTable.SetFileTimeStamp(self.IdBase, TimeStamp)\r
+ return False\r
+ except Exception as Exc:\r
+ EdkLogger.debug(EdkLogger.DEBUG_5, str(Exc))\r
+ return False\r
+ return True\r
+\r
+## Python class representation of table storing module data\r
+class ModuleTable(MetaFileTable):\r