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

Comparing oup/current/DataAccess/Access_OUP_ADB.pas (file contents):
Revision 113 by alloc, Sun Feb 25 17:20:22 2007 UTC vs.
Revision 119 by alloc, Fri Mar 23 00:58:41 2007 UTC

# Line 18 | Line 18 | type
18      procedure UpdateListCache;
19  
20      function GetLinksToFile(FileID: Integer): TLinks;
21    function GetLinksFromFile(FileID: Integer): TLinks;
21  
22      function GetFileInfo(FileID: Integer): TFileInfo; override;
23      function GetFilesList(Ext: String; Pattern: String;
# Line 32 | Line 31 | type
31      procedure UpdateDatFilePart(FileID, Offset, Size: Integer; Src: TStream); overload; override;
32  
33      function GetDatLinks(FileID: Integer): TDatLinkList; override;
34 +    function GetDatLink(FileID, DatOffset: Integer): TDatLink; override;
35      function GetRawList(FileID: Integer): TRawDataList; override;
36      function GetRawInfo(FileID, DatOffset: Integer): TRawDataInfo; override;
37  
# Line 46 | Line 46 | type
46   implementation
47  
48   uses
49 <  SysUtils, Data, Functions, ABSDecUtil, DB;
49 >  SysUtils, Data, Functions, ABSDecUtil, DB, DatLinks;
50  
51  
52   (*
# Line 192 | Line 192 | begin
192    FQuery.Close;
193   end;
194  
195 function TAccess_OUP_ADB.GetLinksFromFile(FileID: Integer): TLinks;
196 var
197  i: Integer;
198 begin
199  SetLength(Result.ByName, 0);
200  FQuery.SQL.Text := 'SELECT src_link_offset, target_id FROM linkmap WHERE src_id = ' + IntToStr(FileID) + ' ORDER BY target_id ASC;';
201  FQuery.Open;
202  SetLength(Result.ByID, FQuery.RecordCount);
203  if FQuery.RecordCount > 0 then
204  begin
205    i := 0;
206    repeat
207      Result.ByID[i].SrcOffset := FQuery.FieldByName('src_link_offset').AsInteger;
208      Result.ByID[i].Destination := FQuery.FieldByName('target_id').AsInteger;
209      Inc(i);
210      FQuery.Next;
211    until FQuery.EOF;
212  end;
213  FQuery.Close;
214 end;
215
195  
196  
197   function TAccess_OUP_ADB.GetFileInfo(fileid: Integer): TFileInfo;
# Line 443 | Line 422 | begin
422    end;
423   end;
424  
425 +
426 +
427 + function TAccess_OUP_ADB.GetDatLink(FileID, DatOffset: Integer): TDatLink;
428 + begin
429 +  Result := DatLinksManager.GetDatLink(FConnectionID, FileID, DatOffset);
430 +  FQuery.SQL.Text := 'SELECT target_id FROM linkmap WHERE src_id = ' + IntToStr(FileID) + ' and src_link_offset = ' + IntToStr(DatOffset) + ';';
431 +  FQuery.Open;
432 +  if FQuery.RecordCount > 0 then
433 +    Result.DestID := FQuery.FieldByName('target_id').AsInteger;
434 +  FQuery.Close;
435 + end;
436 +
437 +
438 + function TAccess_OUP_ADB.GetDatLinks(FileID: Integer): TDatLinkList;
439 + var
440 +  i: Integer;
441 +  SrcOffset, DestID: Integer;
442 + begin
443 +  Result := DatLinksManager.GetDatLinks(FConnectionID, FileID);
444 +  if Length(Result) > 0 then
445 +  begin
446 +    FQuery.SQL.Text := 'SELECT src_link_offset, target_id FROM linkmap WHERE src_id = ' + IntToStr(FileID) + ' ORDER BY src_link_offset ASC;';
447 +    FQuery.Open;
448 +    if FQuery.RecordCount > 0 then
449 +    begin
450 +      repeat
451 +        SrcOffset := FQuery.FieldByName('src_link_offset').AsInteger;
452 +        DestID := FQuery.FieldByName('target_id').AsInteger;
453 +        for i := 0 to High(Result) do
454 +          if Result[i].SrcOffset = SrcOffset then
455 +            Break;
456 +        if i < Length(Result) then
457 +          Result[i].DestID := DestID
458 +        else
459 +          Result[i].DestID := -1;
460 +        FQuery.Next;
461 +      until FQuery.EOF;
462 +    end;
463 +    FQuery.Close;
464 +  end;
465 + end;
466 +
467  
468   function TAccess_OUP_ADB.GetRawList(FileID: Integer): TRawDataList;
469   var

Diff Legend

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