ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/oup/current/DataAccess/DataAccess.pas
(Generate patch)

Comparing:
oup/rewrite/DataAccess/DataAccess.pas (file contents), Revision 101 by alloc, Tue Feb 20 20:43:29 2007 UTC vs.
oup/current/DataAccess/DataAccess.pas (file contents), Revision 229 by alloc, Wed Jun 20 10:57:51 2007 UTC

# Line 1 | Line 1
1   unit DataAccess;
2   interface
3  
4 < uses TypeDefs, Classes, StrUtils, SysUtils;
4 > uses TypeDefs, Classes, StrUtils, SysUtils, _MetaManager;
5  
6   type
7    TDataAccess = class
# Line 13 | Line 13 | type
13      FDataOS:        TDataOS;
14      FLevelNumber:   Integer;
15      FChangeRights:  TChangeRights;
16 +    FMeta:          TMetaManager;
17      procedure SetDataOS(DataOS: TDataOS);
18    public
19      property ConnectionID: Integer      read FConnectionID;
# Line 21 | Line 22 | type
22      property DataOS:       TDataOS      read FDataOS write SetDataOS;
23      property LevelNumber:  Integer      read FLevelNumber;
24      property ChangeRights: TChangeRights read FChangeRights;
25 +    property MetaData:     TMetaManager read FMeta;
26  
27 <    constructor Create(FileName: String; ConnectionID: Integer; var Msg: TStatusMessages); virtual; abstract;
27 >    constructor Create(FileName: String; ConnectionID: Integer; var Msg: TStatusMessages); virtual;
28      procedure Close; virtual; abstract;
29  
30      function ExtractFileIDOfName(Name: String): Integer; virtual;
# Line 41 | Line 43 | type
43      procedure LoadDatFilePart(FileID, Offset, Size: Integer; var Target: TByteData); overload;
44      procedure LoadDatFilePart(FileID, Offset, Size: Integer; Target: Pointer); overload;
45      procedure UpdateDatFilePart(FileID, Offset, Size: Integer; Src: TStream); overload; virtual; abstract;
44    procedure UpdateDatFilePart(FileID, Offset, Size: Integer; Src: TByteData); overload;
46      procedure UpdateDatFilePart(FileID, Offset, Size: Integer; Src: Pointer); overload;
47  
48 +    function GetDatLinks(FileID: Integer): TDatLinkList; virtual; abstract;
49 +    function GetDatLink(FileID, DatOffset: Integer): TDatLink; virtual; abstract;
50      function GetRawList(FileID: Integer): TRawDataList; virtual; abstract;
51      function GetRawInfo(FileID, DatOffset: Integer): TRawDataInfo; virtual; abstract;
52  
# Line 55 | Line 58 | type
58      procedure LoadRawFilePart(FileID, DatOffset, Offset, Size: Integer; var Target: TByteData); overload;
59      procedure LoadRawFilePart(FileID, DatOffset, Offset, Size: Integer; Target: Pointer); overload;
60      procedure UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: TStream); overload; virtual; abstract;
58    procedure UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: TByteData); overload;
61      procedure UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: Pointer); overload;
62  
63 <    function AppendRawFile(LocSep: Boolean; Size: Integer; Src: TStream): Integer; overload; virtual;
64 <    function AppendRawFile(LocSep: Boolean; Size: Integer; Src: TByteData): Integer; overload;
65 <    function AppendRawFile(LocSep: Boolean; Size: Integer; Src: Pointer): Integer; overload;
63 >    function AppendRawFile(LocSep: Boolean; Src: TStream): Integer; overload; virtual;
64 >    function AppendRawFile(LocSep: Boolean; Src: TByteData): Integer; overload;
65 > //    function AppendRawFile(LocSep: Boolean; Size: Integer; Src: Pointer): Integer; overload;
66    published
67    end;
68  
# Line 73 | Line 75 | implementation
75   Implementation of TDataAccess
76   *)
77  
78 + constructor TDataAccess.Create(FileName: String; ConnectionID: Integer;
79 +  var Msg: TStatusMessages);
80 + begin
81 +  FMeta := TMetaManager.Create(FConnectionID, Self);
82 + end;
83 +
84 +
85 +
86   function TDataAccess.ExtractFileIDOfName(Name: String): Integer;
87   begin
88    if Name[5] = '-' then
# Line 172 | Line 182 | begin
182    end;
183   end;
184  
175 procedure TDataAccess.UpdateDatFilePart(FileID, Offset, Size: Integer; Src: TByteData);
176 var
177  data: TStream;
178 begin
179  if fileid < GetFileCount then
180  begin
181    data := TMemoryStream.Create;
182    data.Write(Src[0], Size);
183    data.Seek(0, soFromBeginning);
184    UpdateDatFilePart(FileID, offset, size, data);
185    data.Free;
186  end;
187 end;
188
185   procedure TDataAccess.UpdateDatFilePart(FileID, Offset, Size: Integer; Src: Pointer);
186   var
187    data: TStream;
# Line 259 | Line 255 | begin
255    end;
256   end;
257  
262 procedure TDataAccess.UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: TByteData);
263 var
264  data: TStream;
265 begin
266  if fileid < GetFileCount then
267  begin
268    data := TMemoryStream.Create;
269    data.Write(Src[0], Size);
270    data.Seek(0, soFromBeginning);
271    UpdateRawFilePart(FileID, DatOffset, Offset, Size, data);
272    data.Free;
273  end;
274 end;
275
258   procedure TDataAccess.UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: Pointer);
259   var
260    data: TStream;
# Line 288 | Line 270 | begin
270   end;
271  
272  
273 < function TDataAccess.AppendRawFile(LocSep: Boolean; Size: Integer; Src: TStream): Integer;
273 > function TDataAccess.AppendRawFile(LocSep: Boolean; Src: TStream): Integer;
274   begin
275    raise ENotImplemented.Create('ERROR: AppendRawFile not implemented here!!!');
276   end;
277  
278  
279 < function TDataAccess.AppendRawFile(LocSep: Boolean; Size: Integer; Src: TByteData): Integer;
279 > function TDataAccess.AppendRawFile(LocSep: Boolean; Src: TByteData): Integer;
280   var
281    data: TStream;
282   begin
283    data := TMemoryStream.Create;
284 <  data.Write(Src[0], Size);
285 <  AppendRawFile(LocSep, Size, data);
284 >  data.Write(Src[0], Length(Src));
285 >  data.Seek(0, soFromBeginning);
286 >  Result := AppendRawFile(LocSep, data);
287    data.Free;
288   end;
289 <
289 > {
290   function TDataAccess.AppendRawFile(LocSep: Boolean; Size: Integer; Src: Pointer): Integer;
291   var
292    data: TStream;
293   begin
294    data := TMemoryStream.Create;
295    data.Write(Src^, Size);
296 <  AppendRawFile(LocSep, Size, data);
296 >  data.Seek(0, soFromBeginning);
297 >  Result := AppendRawFile(LocSep, data);
298    data.Free;
299   end;
300 <
300 > }
301  
302  
303   procedure TDataAccess.SetDataOS(DataOS: TDataOS);

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)