Path VARCHAR,\r
FullPath VARCHAR NOT NULL,\r
Model INTEGER DEFAULT 0,\r
- TimeStamp SINGLE NOT NULL\r
+ TimeStamp SINGLE NOT NULL,\r
+ FromItem REAL NOT NULL\r
'''\r
def __init__(self, Cursor):\r
Table.__init__(self, Cursor, 'File')\r
# @param Model: Model of a File\r
# @param TimeStamp: TimeStamp of a File\r
#\r
- def Insert(self, Name, ExtName, Path, FullPath, Model, TimeStamp):\r
+ def Insert(self, Name, ExtName, Path, FullPath, Model, TimeStamp, FromItem=0):\r
(Name, ExtName, Path, FullPath) = ConvertToSqlString((Name, ExtName, Path, FullPath))\r
return Table.Insert(\r
self,\r
Path,\r
FullPath,\r
Model,\r
- TimeStamp\r
+ TimeStamp,\r
+ FromItem\r
)\r
\r
## InsertFile\r
#\r
# @retval FileID: The ID after record is inserted\r
#\r
- def InsertFile(self, File, Model):\r
+ def InsertFile(self, File, Model, FromItem=''):\r
+ if FromItem:\r
+ return self.Insert(\r
+ File.Name,\r
+ File.Ext,\r
+ File.Dir,\r
+ File.Path,\r
+ Model,\r
+ File.TimeStamp,\r
+ FromItem\r
+ )\r
return self.Insert(\r
File.Name,\r
File.Ext,\r
#\r
# @retval ID ID value of given file in the table\r
#\r
- def GetFileId(self, File):\r
- QueryScript = "select ID from %s where FullPath = '%s'" % (self.Table, str(File))\r
+ def GetFileId(self, File, FromItem=None):\r
+ if FromItem:\r
+ QueryScript = "select ID from %s where FullPath = '%s' and FromItem = %s" % (self.Table, str(File), str(FromItem))\r
+ else:\r
+ QueryScript = "select ID from %s where FullPath = '%s'" % (self.Table, str(File))\r
RecordList = self.Exec(QueryScript)\r
if len(RecordList) == 0:\r
return None\r
#\r
def __init__(self, FilePath, FileType, Arch, Table, Owner= -1, From= -1):\r
# prevent re-initialization\r
- if hasattr(self, "_Table"):\r
+ if hasattr(self, "_Table") and self._Table is Table:\r
return\r
MetaFileParser.__init__(self, FilePath, FileType, Arch, Table, Owner, From)\r
self._Version = 0x00010005 # Only EDK2 dsc file is supported\r
\r
self._FileWithError = IncludedFile1\r
\r
- IncludedFileTable = MetaFileStorage(self._Table.Cur, IncludedFile1, MODEL_FILE_DSC, False)\r
FromItem = self._Content[self._ContentIndex - 1][0]\r
if self._InSubsection:\r
Owner = self._Content[self._ContentIndex - 1][8]\r
else:\r
Owner = self._Content[self._ContentIndex - 1][0]\r
+ IncludedFileTable = MetaFileStorage(self._Table.Cur, IncludedFile1, MODEL_FILE_DSC, False, FromItem=FromItem)\r
Parser = DscParser(IncludedFile1, self._FileType, self._Arch, IncludedFileTable,\r
Owner=Owner, From=FromItem)\r
\r
_ID_MAX_ = 0.99999999\r
\r
## Constructor\r
- def __init__(self, Cursor, MetaFile, FileType, Temporary):\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)\r
+ FileId = self._FileIndexTable.GetFileId(MetaFile, FromItem)\r
if not FileId:\r
- FileId = self._FileIndexTable.InsertFile(MetaFile, FileType)\r
+ FileId = self._FileIndexTable.InsertFile(MetaFile, FileType, FromItem)\r
\r
if Temporary:\r
TableName = "_%s_%s_%s" % (FileType, FileId, uuid.uuid4().hex)\r
_DUMMY_ = "-1, -1, '====', '====', '====', '====', '====','====', -1, -1, -1, -1, -1, -1, -1"\r
\r
## Constructor\r
- def __init__(self, Cursor, MetaFile, Temporary):\r
- MetaFileTable.__init__(self, Cursor, MetaFile, MODEL_FILE_DSC, Temporary)\r
+ def __init__(self, Cursor, MetaFile, Temporary, FromItem=0):\r
+ MetaFileTable.__init__(self, Cursor, MetaFile, MODEL_FILE_DSC, Temporary, FromItem)\r
\r
## Insert table\r
#\r
}\r
\r
## Constructor\r
- def __new__(Class, Cursor, MetaFile, FileType=None, Temporary=False):\r
+ def __new__(Class, Cursor, MetaFile, FileType=None, Temporary=False, FromItem=None):\r
# no type given, try to find one\r
if not FileType:\r
if MetaFile.Type in self._FILE_TYPE_:\r
Args = (Cursor, MetaFile, FileType, Temporary)\r
else:\r
Args = (Cursor, MetaFile, Temporary)\r
+ if FromItem:\r
+ Args = Args + (FromItem,)\r
\r
# create the storage object and return it to caller\r
return Class._FILE_TABLE_[FileType](*Args)\r