ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/oup/current/DataAccess/DataAccess.pas
Revision: 97
Committed: Mon Jan 22 23:05:45 2007 UTC (18 years, 8 months ago) by alloc
Content type: text/x-pascal
Original Path: oup/rewrite/DataAccess/DataAccess.pas
File size: 6074 byte(s)
Log Message:

File Contents

# Content
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
8
9 type
10 TDataAccess = class
11 private
12 FConnectionID: Integer;
13 FFileName: String;
14 FBackend: TDataBackend;
15 FDataOS: TDataOS;
16 FLevelNumber: Integer;
17 FChangeRights: TChangeRights;
18 procedure SetDataOS(DataOS: TDataOS);
19 protected
20 public
21 property ConnectionID: Integer read FConnectionID;
22 property FileName: String read FFileName;
23 property Backend: TDataBackend read FBackend;
24 property DataOS: TDataOS read FDataOS write SetDataOS;
25 property LevelNumber: Integer read FLevelNumber;
26
27 constructor Create(FileName: String; ConnectionID: Integer; var Msg: TStatusMessages); virtual; abstract;
28 procedure Close; virtual; abstract;
29
30 function ExtractFileIDOfName(Name: String): Integer; virtual;
31 function GetFileInfo(FileID: Integer): TFileInfo; virtual;
32 function GetFileInfoByName(Name: String): TFileInfo; virtual;
33 function GetFilesList(Ext: String; Pattern: String;
34 NoEmptyFiles: Boolean; SortType: TSortType): TStrings; virtual; abstract;
35 function GetFileCount: Integer; virtual; abstract;
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;
40 procedure UpdateDatFile(FileID: Integer; Src: TStream); overload; virtual; abstract;
41 procedure UpdateDatFile(FileID: Integer; Src: TByteData); overload; virtual; abstract;
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;
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;
48
49 function GetRawList(FileID: Integer): TRawDataList; virtual; abstract;
50 function GetRawInfo(FileID, DatOffset: Integer): TRawDataInfo;
51
52 procedure LoadRawFile(FileID, DatOffset: Integer; var Target: TStream); overload; virtual; abstract;
53 procedure LoadRawFile(FileID, DatOffset: Integer; var Target: TByteData); overload; virtual; abstract;
54 procedure UpdateRawFile(FileID, DatOffset, Size: Integer; Src: TStream); overload; virtual; abstract;
55 procedure UpdateRawFile(FileID, DatOffset, Size: Integer; Src: TByteData); overload; virtual; abstract;
56 procedure LoadRawFilePart(FileID, DatOffset, Offset, Size: Integer; var Target: TStream); overload; virtual; abstract;
57 procedure LoadRawFilePart(FileID, DatOffset, Offset, Size: Integer; var Target: TByteData); overload; virtual; abstract;
58 procedure LoadRawFilePart(FileID, DatOffset, Offset, Size: Integer; Target: Pointer); overload; virtual; abstract;
59 procedure UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: TStream); overload; virtual; abstract;
60 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;
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;
66 published
67 end;
68
69
70
71 implementation
72
73
74 (*
75 Implementation of TDataAccess
76 *)
77
78 function TDataAccess.ExtractFileIDOfName(Name: String): Integer;
79 begin
80 if Name[5] = '-' then
81 Result := StrToInt(MidStr(Name, 1, 4))
82 else
83 Result := StrToInt(MidStr(Name, 1, 5));
84 end;
85
86
87 function TDataAccess.GetFileInfo(FileID: Integer): TFileInfo;
88 begin
89 Result.ID := -1;
90 Result.Name := '';
91 Result.Extension := '';
92 Result.Size := -1;
93 Result.FileType := 0;
94 Result.DatAddr := -1;
95 end;
96
97
98 function TDataAccess.GetFileInfoByName(Name: String): TFileInfo;
99 var
100 i: Integer;
101 files: TStrings;
102 begin
103 Result := GetFileInfo(-1);
104 files := GetFilesList('', Name, False, ST_IDAsc);
105 if files.Count = 0 then
106 else
107 begin
108 for i := 0 to files.Count - 1 do
109 begin
110 if MidStr(files.Strings[i], Pos('-', files.Strings[i]) + 1,
111 Length(files.Strings[i]) - Pos('-', files.Strings[i]) - 5) = name then
112 begin
113 Result := GetFileInfo(ExtractFileIDOfName(files.Strings[i]));
114 Break;
115 end;
116 end;
117 end;
118 files.Free;
119 end;
120
121
122 function TDataAccess.GetRawInfo(FileID, DatOffset: Integer): TRawDataInfo;
123 var
124 i: LongWord;
125 RawList: TRawDataList;
126 begin
127 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
133 begin
134 for i := 0 to High(RawList) do
135 begin
136 if RawList[i].SrcOffset = DatOffset then
137 begin
138 Result.SrcID := FileID;
139 Result.SrcOffset := RawList[i].SrcOffset;
140 Result.RawAddr := RawList[i].RawAddr;
141 Result.RawSize := RawList[i].RawSize;
142 Result.LocSep := RawList[i].LocSep;
143 Break;
144 end;
145 end;
146 end;
147 end;
148
149
150 procedure TDataAccess.SetDataOS(DataOS: TDataOS);
151 begin
152 raise ENotImplemented.Create('TDataAccess.SetDataOS: TBD!');
153 end;
154
155 end.