source: oup/rewrite/DataAccess/DataAccess.pas@ 98

Last change on this file since 98 was 97, checked in by alloc, 18 years ago
File size: 5.9 KB
Line 
1unit DataAccess;
2interface
3
4uses TypeDefs, Classes, StrUtils, SysUtils;
5//uses Data, Classes, SysUtils, StrUtils,
6// Dialogs, ABSDecUtil, ABSMain, DB, Windows;
7
8
9type
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
71implementation
72
73
74(*
75 Implementation of TDataAccess
76*)
77
78function TDataAccess.ExtractFileIDOfName(Name: String): Integer;
79begin
80 if Name[5] = '-' then
81 Result := StrToInt(MidStr(Name, 1, 4))
82 else
83 Result := StrToInt(MidStr(Name, 1, 5));
84end;
85
86
87function TDataAccess.GetFileInfo(FileID: Integer): TFileInfo;
88begin
89 Result.ID := -1;
90 Result.Name := '';
91 Result.Extension := '';
92 Result.Size := -1;
93 Result.FileType := 0;
94 Result.DatAddr := -1;
95end;
96
97
98function TDataAccess.GetFileInfoByName(Name: String): TFileInfo;
99var
100 i: Integer;
101 files: TStrings;
102begin
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;
119end;
120
121
122function TDataAccess.GetRawInfo(FileID, DatOffset: Integer): TRawDataInfo;
123var
124 i: LongWord;
125 RawList: TRawDataList;
126begin
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;
147end;
148
149
150procedure TDataAccess.SetDataOS(DataOS: TDataOS);
151begin
152 raise ENotImplemented.Create('TDataAccess.SetDataOS: TBD!');
153end;
154
155end.
Note: See TracBrowser for help on using the repository browser.