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 93 by alloc, Thu Jan 18 17:15:59 2007 UTC vs.
oup/current/DataAccess/DataAccess.pas (file contents), Revision 109 by alloc, Wed Feb 21 03:12:33 2007 UTC

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

Diff Legend

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