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 97 by alloc, Mon Jan 22 23:05:45 2007 UTC vs.
oup/current/DataAccess/DataAccess.pas (file contents), Revision 227 by alloc, Tue Jun 19 22:06:10 2007 UTC

# Line 1 | Line 1
1   unit DataAccess;
2   interface
3  
4 < uses TypeDefs, Classes, StrUtils, SysUtils;
5 < //uses Data, Classes, SysUtils, StrUtils,
6 < //  Dialogs, ABSDecUtil, ABSMain, DB, Windows;
7 <
4 > uses TypeDefs, Classes, StrUtils, SysUtils, _MetaManager;
5  
6   type
7    TDataAccess = class
8    private
9 +  protected
10      FConnectionID:  Integer;
11      FFileName:      String;
12      FBackend:       TDataBackend;
13      FDataOS:        TDataOS;
14      FLevelNumber:   Integer;
15      FChangeRights:  TChangeRights;
16 +    FMeta:          TMetaManager;
17      procedure SetDataOS(DataOS: TDataOS);
19  protected
18    public
19      property ConnectionID: Integer      read FConnectionID;
20      property FileName:     String       read FFileName;
21      property Backend:      TDataBackend read FBackend;
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;
28      procedure Close; virtual; abstract;
# Line 36 | Line 36 | type
36      function GetExtensionsList(ExtListFormat: TExtensionFormat): TStrings; virtual; abstract;
37  
38      procedure LoadDatFile(FileID: Integer; var Target: TStream); overload; virtual; abstract;
39 <    procedure LoadDatFile(FileID: Integer; var Target: TByteData); overload; virtual; abstract;
39 >    procedure LoadDatFile(FileID: Integer; var Target: TByteData); overload;
40      procedure UpdateDatFile(FileID: Integer; Src: TStream); overload; virtual; abstract;
41 <    procedure UpdateDatFile(FileID: Integer; Src: TByteData); overload; virtual; abstract;
41 >    procedure UpdateDatFile(FileID: Integer; Src: TByteData); overload;
42      procedure LoadDatFilePart(FileID, Offset, Size: Integer; var Target: TStream); overload; virtual; abstract;
43 <    procedure LoadDatFilePart(FileID, Offset, Size: Integer; var Target: TByteData); overload; virtual; abstract;
44 <    procedure LoadDatFilePart(FileID, Offset, Size: Integer; Target: Pointer); overload; virtual; abstract;
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;
46 <    procedure UpdateDatFilePart(FileID, Offset, Size: Integer; Src: TByteData); overload; virtual; abstract;
47 <    procedure UpdateDatFilePart(FileID, Offset, Size: Integer; Src: Pointer); overload; virtual; abstract;
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;
51 >    function GetRawInfo(FileID, DatOffset: Integer): TRawDataInfo; virtual; abstract;
52  
53      procedure LoadRawFile(FileID, DatOffset: Integer; var Target: TStream); overload; virtual; abstract;
54 <    procedure LoadRawFile(FileID, DatOffset: Integer; var Target: TByteData); overload; virtual; abstract;
55 <    procedure UpdateRawFile(FileID, DatOffset, Size: Integer; Src: TStream); overload; virtual; abstract;
56 <    procedure UpdateRawFile(FileID, DatOffset, Size: Integer; Src: TByteData); overload; virtual; abstract;
54 >    procedure LoadRawFile(FileID, DatOffset: Integer; var Target: TByteData); overload;
55 >    procedure UpdateRawFile(FileID, DatOffset: Integer; Src: TStream); overload; virtual; abstract;
56 >    procedure UpdateRawFile(FileID, DatOffset: Integer; Src: TByteData); overload;
57      procedure LoadRawFilePart(FileID, DatOffset, Offset, Size: Integer; var Target: TStream); overload; virtual; abstract;
58 <    procedure LoadRawFilePart(FileID, DatOffset, Offset, Size: Integer; var Target: TByteData); overload; virtual; abstract;
59 <    procedure LoadRawFilePart(FileID, DatOffset, Offset, Size: Integer; Target: Pointer); overload; virtual; abstract;
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;
61 <    procedure UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: TByteData); overload; virtual; abstract;
61 <    procedure UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: Pointer); overload; virtual; abstract;
61 >    procedure UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: Pointer); overload;
62  
63 <    function AppendRawFile(LocSep: Boolean; Size: Integer; Src: TStream): Integer; overload; virtual; abstract;
64 <    function AppendRawFile(LocSep: Boolean; Size: Integer; Src: TByteData): Integer; overload; virtual; abstract;
65 <    function AppendRawFile(LocSep: Boolean; Size: Integer; Src: Pointer): Integer; overload; virtual; abstract;
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 119 | Line 119 | begin
119   end;
120  
121  
122 < function TDataAccess.GetRawInfo(FileID, DatOffset: Integer): TRawDataInfo;
122 > procedure TDataAccess.LoadDatFile(FileID: Integer; var Target: TByteData);
123   var
124 <  i: LongWord;
125 <  RawList: TRawDataList;
124 >  data: TStream;
125   begin
126 <  RawList          := GetRawList(FileID);
128 <  Result.SrcID     := -1;
129 <  Result.SrcOffset := -1;
130 <  Result.RawAddr   := -1;
131 <  Result.RawSize   := -1;
132 <  if Length(RawList) > 0 then
126 >  if fileid < GetFileCount then
127    begin
128 <    for i := 0 to High(RawList) do
129 <    begin
130 <      if RawList[i].SrcOffset = DatOffset then
131 <      begin
132 <        Result.SrcID     := FileID;
133 <        Result.SrcOffset := RawList[i].SrcOffset;
134 <        Result.RawAddr   := RawList[i].RawAddr;
135 <        Result.RawSize   := RawList[i].RawSize;
136 <        Result.LocSep    := RawList[i].LocSep;
137 <        Break;
138 <      end;
139 <    end;
128 >    data := nil;
129 >    LoadDatFile(FileID, data);
130 >    SetLength(Target, data.Size);
131 >    data.Read(Target[0], data.Size);
132 >    data.Free;
133 >  end;
134 > end;
135 >
136 > procedure TDataAccess.UpdateDatFile(FileID: Integer; Src: TByteData);
137 > var
138 >  data: TStream;
139 > begin
140 >  if fileid < GetFileCount then
141 >  begin
142 >    data := TMemoryStream.Create;
143 >    data.Write(Src[0], Length(Src));
144 >    data.Seek(0, soFromBeginning);
145 >    UpdateDatFile(FileID, data);
146 >    data.Free;
147 >  end;
148 > end;
149 >
150 > procedure TDataAccess.LoadDatFilePart(FileID, Offset, Size: Integer; var Target: TByteData);
151 > var
152 >  data: TStream;
153 > begin
154 >  if fileid < GetFileCount then
155 >  begin
156 >    data := nil;
157 >    LoadDatFilePart(FileID, offset, size, data);
158 >    SetLength(Target, data.Size);
159 >    data.Read(Target[0], data.Size);
160 >    data.Free;
161 >  end;
162 > end;
163 >
164 > procedure TDataAccess.LoadDatFilePart(FileID, Offset, Size: Integer; Target: Pointer);
165 > var
166 >  data: TStream;
167 > begin
168 >  if fileid < GetFileCount then
169 >  begin
170 >    data := nil;
171 >    LoadDatFilePart(FileID, offset, size, data);
172 >    data.Read(Target^, data.Size);
173 >    data.Free;
174 >  end;
175 > end;
176 >
177 > procedure TDataAccess.UpdateDatFilePart(FileID, Offset, Size: Integer; Src: Pointer);
178 > var
179 >  data: TStream;
180 > begin
181 >  if fileid < GetFileCount then
182 >  begin
183 >    data := TMemoryStream.Create;
184 >    data.Write(Src^, Size);
185 >    data.Seek(0, soFromBeginning);
186 >    UpdateDatFilePart(FileID, offset, size, data);
187 >    data.Free;
188 >  end;
189 > end;
190 >
191 >
192 >
193 > procedure TDataAccess.LoadRawFile(FileID, DatOffset: Integer; var Target: TByteData);
194 > var
195 >  data: TStream;
196 > begin
197 >  if fileid < GetFileCount then
198 >  begin
199 >    data := nil;
200 >    LoadRawFile(FileID, DatOffset, data);
201 >    SetLength(Target, data.Size);
202 >    data.Read(Target[0], data.Size);
203 >    data.Free;
204 >  end;
205 > end;
206 >
207 > procedure TDataAccess.UpdateRawFile(FileID, DatOffset: Integer; Src: TByteData);
208 > var
209 >  data: TStream;
210 > begin
211 >  if fileid < GetFileCount then
212 >  begin
213 >    data := TMemoryStream.Create;
214 >    data.Write(Src[0], Length(Src));
215 >    data.Seek(0, soFromBeginning);
216 >    UpdateRawFile(FileID, DatOffset, data);
217 >    data.Free;
218 >  end;
219 > end;
220 >
221 > procedure TDataAccess.LoadRawFilePart(FileID, DatOffset, Offset, Size: Integer; var Target: TByteData);
222 > var
223 >  data: TStream;
224 > begin
225 >  if fileid < GetFileCount then
226 >  begin
227 >    data := nil;
228 >    SetLength(Target, Size);
229 >    LoadRawFile(FileID, DatOffset, Data);
230 >    Data.Seek(Offset, soFromBeginning);
231 >    Data.Read(Target[0], Size);
232 >    Data.Free;
233 >  end;
234 > end;
235 >
236 > procedure TDataAccess.LoadRawFilePart(FileID, DatOffset, Offset, Size: Integer; Target: Pointer);
237 > var
238 >  data: TStream;
239 > begin
240 >  if fileid < GetFileCount then
241 >  begin
242 >    data := nil;
243 >    LoadRawFile(FileID, DatOffset, Data);
244 >    Data.Seek(Offset, soFromBeginning);
245 >    Data.Read(Target^, Size);
246 >    Data.Free;
247 >  end;
248 > end;
249 >
250 > procedure TDataAccess.UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: Pointer);
251 > var
252 >  data: TStream;
253 > begin
254 >  if fileid < GetFileCount then
255 >  begin
256 >    data := TMemoryStream.Create;
257 >    data.Write(Src^, Size);
258 >    data.Seek(0, soFromBeginning);
259 >    UpdateRawFilePart(FileID, DatOffset, Offset, Size, data);
260 >    data.Free;
261    end;
262   end;
263  
264  
265 + function TDataAccess.AppendRawFile(LocSep: Boolean; Src: TStream): Integer;
266 + begin
267 +  raise ENotImplemented.Create('ERROR: AppendRawFile not implemented here!!!');
268 + end;
269 +
270 +
271 + function TDataAccess.AppendRawFile(LocSep: Boolean; Src: TByteData): Integer;
272 + var
273 +  data: TStream;
274 + begin
275 +  data := TMemoryStream.Create;
276 +  data.Write(Src[0], Length(Src));
277 +  data.Seek(0, soFromBeginning);
278 +  Result := AppendRawFile(LocSep, data);
279 +  data.Free;
280 + end;
281 + {
282 + function TDataAccess.AppendRawFile(LocSep: Boolean; Size: Integer; Src: Pointer): Integer;
283 + var
284 +  data: TStream;
285 + begin
286 +  data := TMemoryStream.Create;
287 +  data.Write(Src^, Size);
288 +  data.Seek(0, soFromBeginning);
289 +  Result := AppendRawFile(LocSep, data);
290 +  data.Free;
291 + end;
292 + }
293 +
294 +
295   procedure TDataAccess.SetDataOS(DataOS: TDataOS);
296   begin
297    raise ENotImplemented.Create('TDataAccess.SetDataOS: TBD!');

Diff Legend

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