--- oup/rewrite/DataAccess/DataAccess.pas 2007/02/20 20:43:29 101 +++ oup/current/DataAccess/DataAccess.pas 2007/07/17 22:27:16 241 @@ -1,7 +1,7 @@ unit DataAccess; interface -uses TypeDefs, Classes, StrUtils, SysUtils; +uses TypeDefs, Classes, StrUtils, SysUtils, _MetaManager; type TDataAccess = class @@ -13,6 +13,7 @@ type FDataOS: TDataOS; FLevelNumber: Integer; FChangeRights: TChangeRights; + FMeta: TMetaManager; procedure SetDataOS(DataOS: TDataOS); public property ConnectionID: Integer read FConnectionID; @@ -21,8 +22,9 @@ type property DataOS: TDataOS read FDataOS write SetDataOS; property LevelNumber: Integer read FLevelNumber; property ChangeRights: TChangeRights read FChangeRights; + property MetaData: TMetaManager read FMeta; - constructor Create(FileName: String; ConnectionID: Integer; var Msg: TStatusMessages); virtual; abstract; + constructor Create(FileName: String; ConnectionID: Integer; var Msg: TStatusMessages); virtual; procedure Close; virtual; abstract; function ExtractFileIDOfName(Name: String): Integer; virtual; @@ -41,11 +43,13 @@ type procedure LoadDatFilePart(FileID, Offset, Size: Integer; var Target: TByteData); overload; procedure LoadDatFilePart(FileID, Offset, Size: Integer; Target: Pointer); overload; procedure UpdateDatFilePart(FileID, Offset, Size: Integer; Src: TStream); overload; virtual; abstract; - procedure UpdateDatFilePart(FileID, Offset, Size: Integer; Src: TByteData); overload; procedure UpdateDatFilePart(FileID, Offset, Size: Integer; Src: Pointer); overload; + function GetDatLinks(FileID: Integer): TDatLinkList; virtual; abstract; + function GetDatLink(FileID, DatOffset: Integer): TDatLink; virtual; abstract; function GetRawList(FileID: Integer): TRawDataList; virtual; abstract; function GetRawInfo(FileID, DatOffset: Integer): TRawDataInfo; virtual; abstract; + function GetRawsForType(RawType: String): TRawDataList; virtual; abstract; procedure LoadRawFile(FileID, DatOffset: Integer; var Target: TStream); overload; virtual; abstract; procedure LoadRawFile(FileID, DatOffset: Integer; var Target: TByteData); overload; @@ -55,12 +59,11 @@ type procedure LoadRawFilePart(FileID, DatOffset, Offset, Size: Integer; var Target: TByteData); overload; procedure LoadRawFilePart(FileID, DatOffset, Offset, Size: Integer; Target: Pointer); overload; procedure UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: TStream); overload; virtual; abstract; - procedure UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: TByteData); overload; procedure UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: Pointer); overload; - function AppendRawFile(LocSep: Boolean; Size: Integer; Src: TStream): Integer; overload; virtual; - function AppendRawFile(LocSep: Boolean; Size: Integer; Src: TByteData): Integer; overload; - function AppendRawFile(LocSep: Boolean; Size: Integer; Src: Pointer): Integer; overload; + function AppendRawFile(LocSep: Boolean; Src: TStream): Integer; overload; virtual; + function AppendRawFile(LocSep: Boolean; Src: TByteData): Integer; overload; +// function AppendRawFile(LocSep: Boolean; Size: Integer; Src: Pointer): Integer; overload; published end; @@ -73,6 +76,14 @@ implementation Implementation of TDataAccess *) +constructor TDataAccess.Create(FileName: String; ConnectionID: Integer; + var Msg: TStatusMessages); +begin + FMeta := TMetaManager.Create(FConnectionID, Self); +end; + + + function TDataAccess.ExtractFileIDOfName(Name: String): Integer; begin if Name[5] = '-' then @@ -172,20 +183,6 @@ begin end; end; -procedure TDataAccess.UpdateDatFilePart(FileID, Offset, Size: Integer; Src: TByteData); -var - data: TStream; -begin - if fileid < GetFileCount then - begin - data := TMemoryStream.Create; - data.Write(Src[0], Size); - data.Seek(0, soFromBeginning); - UpdateDatFilePart(FileID, offset, size, data); - data.Free; - end; -end; - procedure TDataAccess.UpdateDatFilePart(FileID, Offset, Size: Integer; Src: Pointer); var data: TStream; @@ -259,20 +256,6 @@ begin end; end; -procedure TDataAccess.UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: TByteData); -var - data: TStream; -begin - if fileid < GetFileCount then - begin - data := TMemoryStream.Create; - data.Write(Src[0], Size); - data.Seek(0, soFromBeginning); - UpdateRawFilePart(FileID, DatOffset, Offset, Size, data); - data.Free; - end; -end; - procedure TDataAccess.UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: Pointer); var data: TStream; @@ -288,32 +271,34 @@ begin end; -function TDataAccess.AppendRawFile(LocSep: Boolean; Size: Integer; Src: TStream): Integer; +function TDataAccess.AppendRawFile(LocSep: Boolean; Src: TStream): Integer; begin raise ENotImplemented.Create('ERROR: AppendRawFile not implemented here!!!'); end; -function TDataAccess.AppendRawFile(LocSep: Boolean; Size: Integer; Src: TByteData): Integer; +function TDataAccess.AppendRawFile(LocSep: Boolean; Src: TByteData): Integer; var data: TStream; begin data := TMemoryStream.Create; - data.Write(Src[0], Size); - AppendRawFile(LocSep, Size, data); + data.Write(Src[0], Length(Src)); + data.Seek(0, soFromBeginning); + Result := AppendRawFile(LocSep, data); data.Free; end; - +{ function TDataAccess.AppendRawFile(LocSep: Boolean; Size: Integer; Src: Pointer): Integer; var data: TStream; begin data := TMemoryStream.Create; data.Write(Src^, Size); - AppendRawFile(LocSep, Size, data); + data.Seek(0, soFromBeginning); + Result := AppendRawFile(LocSep, data); data.Free; end; - +} procedure TDataAccess.SetDataOS(DataOS: TDataOS);