UsersHashProvider.pas 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. unit UsersHashProvider;
  2. interface
  3. uses
  4. HashDBProvider, InterfaceDataProvider, SysUtils, WideStrings;
  5. type
  6. TUsersHashProvider = class(THashDBProvider)
  7. private
  8. function RemoverBridgeServerID(ALoginName: string): string;
  9. protected
  10. function GetTableName: string; override;
  11. procedure Insert(AKey, AValue: WideString; AVersion: Integer); overload; override; stdcall;
  12. procedure Insert(AHashs: TKeyValues); overload; override; stdcall;
  13. function FindKeyValue(AKey: WideString): TKeyValue; overload; override; stdcall;
  14. function Find(AKeys: array of WideString): TKeyValues; overload; override; stdcall;
  15. end;
  16. implementation
  17. { TUsersHashProvider }
  18. function TUsersHashProvider.Find(AKeys: array of WideString): TKeyValues;
  19. var
  20. iLoop, ALen: Integer;
  21. begin
  22. ALen := Length(AKeys);
  23. for iLoop := 0 to ALen - 1 do
  24. begin
  25. AKeys[iLoop] := RemoverBridgeServerID(AKeys[iLoop]);
  26. end;
  27. Result := inherited Find(AKeys);
  28. end;
  29. function TUsersHashProvider.FindKeyValue(AKey: WideString): TKeyValue;
  30. begin
  31. AKey := RemoverBridgeServerID(AKey);
  32. Result := inherited FindKeyValue(WideString(AKey));
  33. end;
  34. function TUsersHashProvider.GetTableName: string;
  35. begin
  36. Result := 'UsersHash';
  37. end;
  38. procedure TUsersHashProvider.Insert(AKey, AValue: WideString;
  39. AVersion: Integer);
  40. begin
  41. AKey := RemoverBridgeServerID(AKey);
  42. inherited;
  43. end;
  44. function TUsersHashProvider.RemoverBridgeServerID(ALoginName: string): string;
  45. var
  46. iStart: Integer;
  47. begin
  48. iStart := AnsiPos('+', ALoginName);
  49. if iStart < 0 then
  50. iStart := 0;
  51. Result := Copy(ALoginName, iStart + 1, Length(ALoginName) - iStart);
  52. end;
  53. procedure TUsersHashProvider.Insert(AHashs: TKeyValues);
  54. var
  55. iLoop, ALen: Integer;
  56. begin
  57. ALen := Length(AHashs);
  58. for iLoop := 0 to ALen - 1 do
  59. begin
  60. AHashs[iLoop][0] := RemoverBridgeServerID(AHashs[iLoop][0]);
  61. end;
  62. inherited;
  63. end;
  64. end.