1045 lines
31 KiB
ObjectPascal
1045 lines
31 KiB
ObjectPascal
unit DataAbstract3_Intf;
|
|
|
|
{----------------------------------------------------------------------------}
|
|
{ This unit was automatically generated by the RemObjects SDK after reading }
|
|
{ the RODL file associated with this project . }
|
|
{ }
|
|
{ Do not modify this unit manually, or your changes will be lost when this }
|
|
{ unit is regenerated the next time you compile the project. }
|
|
{----------------------------------------------------------------------------}
|
|
|
|
{$I DataAbstract.inc}
|
|
|
|
interface
|
|
|
|
uses
|
|
{vcl:} Classes, TypInfo,
|
|
{RemObjects:} uROClasses, uROClient, uROTypes, uROClientIntf;
|
|
|
|
const
|
|
{ Library ID }
|
|
LibraryUID = '{2966A4BF-569C-45AA-8F34-CF1E155FD77A}';
|
|
|
|
{ Service Interface ID's }
|
|
IDARemoteService_IID : TGUID = '{C532E842-0AA9-4253-A9BF-AFCF22885B97}';
|
|
IDALoginService_IID : TGUID = '{58550AA0-B64F-495A-B2F8-C981D4C39180}';
|
|
|
|
{ Event ID's }
|
|
|
|
type
|
|
{ Forward declarations }
|
|
IDARemoteService = interface;
|
|
IDALoginService = interface;
|
|
|
|
TDADatasetParamArray = class;
|
|
TDADatasetRequestInfoArray = class;
|
|
TDAStringArray = class;
|
|
|
|
TDADatasetParam = class;
|
|
TDADatasetRequestInfo = class;
|
|
TDALoginInfo = class;
|
|
|
|
|
|
{ TDADatasetParam }
|
|
TDADatasetParam = class(TROComplexType)
|
|
private
|
|
fName: String;
|
|
fValue: Variant;
|
|
public
|
|
procedure Assign(iSource: TPersistent); override;
|
|
published
|
|
property Name:String read fName write fName;
|
|
property Value:Variant read fValue write fValue;
|
|
end;
|
|
|
|
{ TDADatasetParamCollection }
|
|
TDADatasetParamCollection = class(TROCollection)
|
|
protected
|
|
constructor Create(aItemClass: TCollectionItemClass); overload;
|
|
function GetItems(Index: integer): TDADatasetParam;
|
|
procedure SetItems(Index: integer; const Value: TDADatasetParam);
|
|
public
|
|
constructor Create; overload;
|
|
function Add: TDADatasetParam; reintroduce;
|
|
procedure SaveToArray(anArray: TDADatasetParamArray);
|
|
procedure LoadFromArray(anArray: TDADatasetParamArray);
|
|
property Items[Index: integer]:TDADatasetParam read GetItems write SetItems; default;
|
|
end;
|
|
|
|
{ TDADatasetRequestInfo }
|
|
TDADatasetRequestInfo = class(TROComplexType)
|
|
private
|
|
fDatasetName: String;
|
|
fIncludeSchema: Boolean;
|
|
fMaxRecords: Integer;
|
|
fParams: TDADatasetParamArray;
|
|
function GetParams: TDADatasetParamArray;
|
|
public
|
|
procedure Assign(iSource: TPersistent); override;
|
|
published
|
|
property DatasetName:String read fDatasetName write fDatasetName;
|
|
property IncludeSchema:Boolean read fIncludeSchema write fIncludeSchema;
|
|
property MaxRecords:Integer read fMaxRecords write fMaxRecords;
|
|
property Params:TDADatasetParamArray read GetParams write fParams;
|
|
end;
|
|
|
|
{ TDADatasetRequestInfoCollection }
|
|
TDADatasetRequestInfoCollection = class(TROCollection)
|
|
protected
|
|
constructor Create(aItemClass: TCollectionItemClass); overload;
|
|
function GetItems(Index: integer): TDADatasetRequestInfo;
|
|
procedure SetItems(Index: integer; const Value: TDADatasetRequestInfo);
|
|
public
|
|
constructor Create; overload;
|
|
function Add: TDADatasetRequestInfo; reintroduce;
|
|
procedure SaveToArray(anArray: TDADatasetRequestInfoArray);
|
|
procedure LoadFromArray(anArray: TDADatasetRequestInfoArray);
|
|
property Items[Index: integer]:TDADatasetRequestInfo read GetItems write SetItems; default;
|
|
end;
|
|
|
|
{ TDALoginInfo }
|
|
TDALoginInfo = class(TROComplexType)
|
|
private
|
|
fSessionID: String;
|
|
fUserID: String;
|
|
fPrivileges: TDAStringArray;
|
|
fAttributes: TDAStringArray;
|
|
fData: Binary;
|
|
function GetPrivileges: TDAStringArray;
|
|
function GetAttributes: TDAStringArray;
|
|
function GetData: Binary;
|
|
public
|
|
procedure Assign(iSource: TPersistent); override;
|
|
published
|
|
property SessionID:String read fSessionID write fSessionID;
|
|
property UserID:String read fUserID write fUserID;
|
|
property Privileges:TDAStringArray read GetPrivileges write fPrivileges;
|
|
property Attributes:TDAStringArray read GetAttributes write fAttributes;
|
|
property Data:Binary read GetData write fData;
|
|
end;
|
|
|
|
{ TDALoginInfoCollection }
|
|
TDALoginInfoCollection = class(TROCollection)
|
|
protected
|
|
constructor Create(aItemClass: TCollectionItemClass); overload;
|
|
function GetItems(Index: integer): TDALoginInfo;
|
|
procedure SetItems(Index: integer; const Value: TDALoginInfo);
|
|
public
|
|
constructor Create; overload;
|
|
function Add: TDALoginInfo; reintroduce;
|
|
property Items[Index: integer]:TDALoginInfo read GetItems write SetItems; default;
|
|
end;
|
|
|
|
{ TDADatasetParamArray }
|
|
TDADatasetParamArray = class(TROArray)
|
|
private
|
|
fCount: Integer;
|
|
fItems : array of TDADatasetParam;
|
|
protected
|
|
procedure Grow; virtual;
|
|
function GetItems(aIndex: integer): TDADatasetParam;
|
|
procedure SetItems(aIndex: integer; const Value: TDADatasetParam);
|
|
function GetCount: integer; override;
|
|
public
|
|
class function GetItemType: PTypeInfo; override;
|
|
class function GetItemClass: TClass; override;
|
|
class function GetItemSize: integer; override;
|
|
function GetItemRef(aIndex: integer): pointer; override;
|
|
procedure SetItemRef(aIndex: integer; Ref: pointer); override;
|
|
procedure Clear; override;
|
|
procedure Delete(aIndex: integer); override;
|
|
procedure Resize(ElementCount: integer); override;
|
|
|
|
procedure Assign(iSource:TPersistent); override;
|
|
function Add: TDADatasetParam; overload;
|
|
function Add(const Value: TDADatasetParam):integer; overload;
|
|
|
|
property Count : integer read GetCount;
|
|
property Items[Index: integer]:TDADatasetParam read GetItems write SetItems; default;
|
|
end;
|
|
|
|
{ TDADatasetRequestInfoArray }
|
|
TDADatasetRequestInfoArray = class(TROArray)
|
|
private
|
|
fCount: Integer;
|
|
fItems : array of TDADatasetRequestInfo;
|
|
protected
|
|
procedure Grow; virtual;
|
|
function GetItems(aIndex: integer): TDADatasetRequestInfo;
|
|
procedure SetItems(aIndex: integer; const Value: TDADatasetRequestInfo);
|
|
function GetCount: integer; override;
|
|
public
|
|
class function GetItemType: PTypeInfo; override;
|
|
class function GetItemClass: TClass; override;
|
|
class function GetItemSize: integer; override;
|
|
function GetItemRef(aIndex: integer): pointer; override;
|
|
procedure SetItemRef(aIndex: integer; Ref: pointer); override;
|
|
procedure Clear; override;
|
|
procedure Delete(aIndex: integer); override;
|
|
procedure Resize(ElementCount: integer); override;
|
|
|
|
procedure Assign(iSource:TPersistent); override;
|
|
function Add: TDADatasetRequestInfo; overload;
|
|
function Add(const Value: TDADatasetRequestInfo):integer; overload;
|
|
|
|
property Count : integer read GetCount;
|
|
property Items[Index: integer]:TDADatasetRequestInfo read GetItems write SetItems; default;
|
|
end;
|
|
|
|
{ TDAStringArray }
|
|
TDAStringArray = class(TROArray)
|
|
private
|
|
fCount: Integer;
|
|
fItems : array of String;
|
|
protected
|
|
procedure Grow; virtual;
|
|
function GetItems(AIndex: integer): String;
|
|
procedure SetItems(AIndex: integer; const Value: String);
|
|
function GetCount: integer; override;
|
|
public
|
|
class function GetItemType: PTypeInfo; override;
|
|
class function GetItemSize: integer; override;
|
|
function GetItemRef(AIndex: integer): pointer; override;
|
|
procedure Clear; override;
|
|
procedure Delete(AIndex: integer); override;
|
|
procedure Resize(ElementCount: integer); override;
|
|
|
|
procedure Assign(iSource:TPersistent); override;
|
|
function Add(const Value:String): integer;
|
|
|
|
property Count : integer read GetCount;
|
|
property Items[Index: integer]:String read GetItems write SetItems; default;
|
|
end;
|
|
|
|
{ IDARemoteService }
|
|
IDARemoteService = interface
|
|
['{C532E842-0AA9-4253-A9BF-AFCF22885B97}']
|
|
function GetDatasetSchema(const aDatasetName: String): Binary;
|
|
function GetDatasetScripts(const DatasetNames: String): String;
|
|
function GetDatasetData(const DatasetName: String; const Params: String; const IncludeSchema: Boolean; const MaxRecords: Integer): Binary;
|
|
function GetDatasetDataEx(const DatasetName: String; const Params: TDADatasetParamArray; const UserFilter: String; const IncludeSchema: Boolean;
|
|
const MaxRecords: Integer): Binary;
|
|
function UpdateData(const Delta: Binary): Binary;
|
|
function ExecuteSQLCommand(const SQL: String): Integer;
|
|
function GetSchemaAsXML: String;
|
|
function GetMultipleDatasets(const DatasetRequestInfoArray: TDADatasetRequestInfoArray): Binary;
|
|
function ExecuteSQLCommandEx(const CommandName: String; const Params: TDADatasetParamArray): Integer;
|
|
end;
|
|
|
|
{ CoDARemoteService }
|
|
CoDARemoteService = class
|
|
class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDARemoteService;
|
|
end;
|
|
|
|
{ TDARemoteService_Proxy }
|
|
TDARemoteService_Proxy = class(TROProxy, IDARemoteService)
|
|
protected
|
|
function __GetInterfaceName:string;{.$IFNDEF FPC} override;{.$ENDIF}
|
|
|
|
function GetDatasetSchema(const aDatasetName: String): Binary;
|
|
function GetDatasetScripts(const DatasetNames: String): String;
|
|
function GetDatasetData(const DatasetName: String; const Params: String; const IncludeSchema: Boolean; const MaxRecords: Integer): Binary;
|
|
function GetDatasetDataEx(const DatasetName: String; const Params: TDADatasetParamArray; const UserFilter: String; const IncludeSchema: Boolean;
|
|
const MaxRecords: Integer): Binary;
|
|
function UpdateData(const Delta: Binary): Binary;
|
|
function ExecuteSQLCommand(const SQL: String): Integer;
|
|
function GetSchemaAsXML: String;
|
|
function GetMultipleDatasets(const DatasetRequestInfoArray: TDADatasetRequestInfoArray): Binary;
|
|
function ExecuteSQLCommandEx(const CommandName: String; const Params: TDADatasetParamArray): Integer;
|
|
end;
|
|
|
|
{ IDALoginService }
|
|
IDALoginService = interface(IDARemoteService)
|
|
['{58550AA0-B64F-495A-B2F8-C981D4C39180}']
|
|
function Login(const UserID: String; const Password: String; out LoginInfo: TDALoginInfo): Boolean;
|
|
procedure Logout;
|
|
end;
|
|
|
|
{ CoDALoginService }
|
|
CoDALoginService = class
|
|
class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDALoginService;
|
|
end;
|
|
|
|
{ TDALoginService_Proxy }
|
|
TDALoginService_Proxy = class(TDARemoteService_Proxy, IDALoginService)
|
|
protected
|
|
function __GetInterfaceName:string; override;
|
|
|
|
function Login(const UserID: String; const Password: String; out LoginInfo: TDALoginInfo): Boolean;
|
|
procedure Logout;
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses
|
|
{vcl:} SysUtils,
|
|
{RemObjects:} uROEventRepository, uRORes;
|
|
|
|
{ TDADatasetParamArray }
|
|
|
|
procedure TDADatasetParamArray.Assign(iSource: TPersistent);
|
|
var lSource:TDADatasetParamArray;
|
|
i:integer;
|
|
begin
|
|
if (iSource is TDADatasetParamArray) then begin
|
|
lSource := TDADatasetParamArray(iSource);
|
|
Clear();
|
|
Resize(lSource.Count);
|
|
for i := 0 to Count-1 do begin
|
|
if Assigned(lSource.Items[i]) then begin
|
|
Items[i] := lSource.Items[i].Clone() as TDADatasetParam;
|
|
end;
|
|
end;
|
|
end
|
|
else begin
|
|
inherited Assign(iSource);
|
|
end;
|
|
end;
|
|
|
|
class function TDADatasetParamArray.GetItemType: PTypeInfo;
|
|
begin
|
|
result := TypeInfo(TDADatasetParam);
|
|
end;
|
|
|
|
class function TDADatasetParamArray.GetItemClass: TClass;
|
|
begin
|
|
result := TDADatasetParam;
|
|
end;
|
|
|
|
class function TDADatasetParamArray.GetItemSize: integer;
|
|
begin
|
|
result := SizeOf(TDADatasetParam);
|
|
end;
|
|
|
|
function TDADatasetParamArray.GetItems(aIndex: integer): TDADatasetParam;
|
|
begin
|
|
if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]);
|
|
result := fItems[aIndex];
|
|
end;
|
|
|
|
function TDADatasetParamArray.GetItemRef(aIndex: integer): pointer;
|
|
begin
|
|
if (AIndex < 0) or (AIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[AIndex]);
|
|
result := fItems[AIndex];
|
|
end;
|
|
|
|
procedure TDADatasetParamArray.SetItemRef(AIndex: integer; Ref: pointer);
|
|
begin
|
|
if (AIndex < 0) or (AIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[AIndex]);
|
|
if Ref <> fItems[AIndex] then
|
|
fItems[AIndex] := Ref;
|
|
end;
|
|
|
|
procedure TDADatasetParamArray.Clear;
|
|
var i: integer;
|
|
begin
|
|
for i := 0 to (Count-1) do fItems[i].Free();
|
|
SetLength(fItems, 0);
|
|
FCount := 0;
|
|
end;
|
|
|
|
procedure TDADatasetParamArray.Delete(aIndex: integer);
|
|
var i: integer;
|
|
begin
|
|
if (AIndex>=Count) then RaiseError(err_InvalidIndex, [AIndex]);
|
|
|
|
fItems[AIndex].Free();
|
|
|
|
if (AIndex<Count-1) then
|
|
for i := AIndex to Count-2 do fItems[i] := fItems[i+1];
|
|
|
|
SetLength(fItems, Count-1);
|
|
Dec(FCount);
|
|
end;
|
|
|
|
procedure TDADatasetParamArray.SetItems(aIndex: integer; const Value: TDADatasetParam);
|
|
begin
|
|
if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]);
|
|
fItems[aIndex] := Value;
|
|
end;
|
|
|
|
procedure TDADatasetParamArray.Resize(ElementCount: integer);
|
|
begin
|
|
SetLength(fItems, ElementCount);
|
|
FCount := ElementCount;
|
|
end;
|
|
|
|
function TDADatasetParamArray.GetCount: integer;
|
|
begin
|
|
result := FCount;
|
|
end;
|
|
|
|
procedure TDADatasetParamArray.Grow;
|
|
var
|
|
Delta, Capacity: Integer;
|
|
begin
|
|
Capacity := Length(fItems);
|
|
if Capacity > 64 then
|
|
Delta := Capacity div 4
|
|
else
|
|
if Capacity > 8 then
|
|
Delta := 16
|
|
else
|
|
Delta := 4;
|
|
SetLength(fItems, Capacity + Delta);
|
|
end;
|
|
|
|
function TDADatasetParamArray.Add: TDADatasetParam;
|
|
begin
|
|
result := TDADatasetParam.Create;
|
|
Add(Result);
|
|
end;
|
|
|
|
function TDADatasetParamArray.Add(const Value:TDADatasetParam): integer;
|
|
begin
|
|
Result := Count;
|
|
if Length(fItems) = Result then
|
|
Grow;
|
|
fItems[result] := Value;
|
|
Inc(fCount);
|
|
end;
|
|
|
|
{ TDADatasetRequestInfoArray }
|
|
|
|
procedure TDADatasetRequestInfoArray.Assign(iSource: TPersistent);
|
|
var lSource:TDADatasetRequestInfoArray;
|
|
i:integer;
|
|
begin
|
|
if (iSource is TDADatasetRequestInfoArray) then begin
|
|
lSource := TDADatasetRequestInfoArray(iSource);
|
|
Clear();
|
|
Resize(lSource.Count);
|
|
for i := 0 to Count-1 do begin
|
|
if Assigned(lSource.Items[i]) then begin
|
|
Items[i] := lSource.Items[i].Clone() as TDADatasetRequestInfo;
|
|
end;
|
|
end;
|
|
end
|
|
else begin
|
|
inherited Assign(iSource);
|
|
end;
|
|
end;
|
|
|
|
class function TDADatasetRequestInfoArray.GetItemType: PTypeInfo;
|
|
begin
|
|
result := TypeInfo(TDADatasetRequestInfo);
|
|
end;
|
|
|
|
class function TDADatasetRequestInfoArray.GetItemClass: TClass;
|
|
begin
|
|
result := TDADatasetRequestInfo;
|
|
end;
|
|
|
|
class function TDADatasetRequestInfoArray.GetItemSize: integer;
|
|
begin
|
|
result := SizeOf(TDADatasetRequestInfo);
|
|
end;
|
|
|
|
function TDADatasetRequestInfoArray.GetItems(AIndex: integer): TDADatasetRequestInfo;
|
|
begin
|
|
if (AIndex < 0) or (AIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[AIndex]);
|
|
result := fItems[AIndex];
|
|
end;
|
|
|
|
function TDADatasetRequestInfoArray.GetItemRef(AIndex: integer): pointer;
|
|
begin
|
|
if (AIndex < 0) or (AIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[AIndex]);
|
|
result := fItems[AIndex];
|
|
end;
|
|
|
|
procedure TDADatasetRequestInfoArray.SetItemRef(AIndex: integer; Ref: pointer);
|
|
begin
|
|
if (AIndex < 0) or (AIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[AIndex]);
|
|
if Ref <> fItems[AIndex] then
|
|
fItems[AIndex] := Ref;
|
|
end;
|
|
|
|
procedure TDADatasetRequestInfoArray.Clear;
|
|
var i: integer;
|
|
begin
|
|
for i := 0 to (Count-1) do fItems[i].Free();
|
|
SetLength(fItems, 0);
|
|
FCount := 0;
|
|
end;
|
|
|
|
procedure TDADatasetRequestInfoArray.Delete(AIndex: integer);
|
|
var i: integer;
|
|
begin
|
|
if (AIndex>=Count) then RaiseError(err_InvalidIndex, [AIndex]);
|
|
|
|
fItems[AIndex].Free();
|
|
|
|
if (AIndex<Count-1) then
|
|
for i := AIndex to Count-2 do fItems[i] := fItems[i+1];
|
|
|
|
SetLength(fItems, Count-1);
|
|
Dec(FCount);
|
|
end;
|
|
|
|
procedure TDADatasetRequestInfoArray.SetItems(AIndex: integer; const Value: TDADatasetRequestInfo);
|
|
begin
|
|
if (AIndex < 0) or (AIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[AIndex]);
|
|
fItems[AIndex] := Value;
|
|
end;
|
|
|
|
procedure TDADatasetRequestInfoArray.Resize(ElementCount: integer);
|
|
begin
|
|
SetLength(fItems, ElementCount);
|
|
FCount := ElementCount;
|
|
end;
|
|
|
|
function TDADatasetRequestInfoArray.GetCount: integer;
|
|
begin
|
|
result := FCount;
|
|
end;
|
|
|
|
procedure TDADatasetRequestInfoArray.Grow;
|
|
var
|
|
Delta, Capacity: Integer;
|
|
begin
|
|
Capacity := Length(fItems);
|
|
if Capacity > 64 then
|
|
Delta := Capacity div 4
|
|
else
|
|
if Capacity > 8 then
|
|
Delta := 16
|
|
else
|
|
Delta := 4;
|
|
SetLength(fItems, Capacity + Delta);
|
|
end;
|
|
|
|
function TDADatasetRequestInfoArray.Add: TDADatasetRequestInfo;
|
|
begin
|
|
result := TDADatasetRequestInfo.Create;
|
|
Add(Result);
|
|
end;
|
|
|
|
function TDADatasetRequestInfoArray.Add(const Value:TDADatasetRequestInfo): integer;
|
|
begin
|
|
Result := Count;
|
|
if Length(fItems) = Result then
|
|
Grow;
|
|
fItems[result] := Value;
|
|
Inc(fCount);
|
|
end;
|
|
|
|
{ TDAStringArray }
|
|
|
|
procedure TDAStringArray.Assign(iSource: TPersistent);
|
|
var lSource:TDAStringArray;
|
|
i:integer;
|
|
begin
|
|
if (iSource is TDAStringArray) then begin
|
|
lSource := TDAStringArray(iSource);
|
|
Clear();
|
|
Resize(lSource.Count);
|
|
for i := 0 to Count-1 do begin
|
|
Items[i] := lSource.Items[i];
|
|
end;
|
|
end
|
|
else begin
|
|
inherited Assign(iSource);
|
|
end;
|
|
end;
|
|
|
|
class function TDAStringArray.GetItemType: PTypeInfo;
|
|
begin
|
|
result := TypeInfo(String);
|
|
end;
|
|
|
|
class function TDAStringArray.GetItemSize: integer;
|
|
begin
|
|
result := SizeOf(String);
|
|
end;
|
|
|
|
function TDAStringArray.GetItems(AIndex: integer): String;
|
|
begin
|
|
if (AIndex < 0) or (AIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[AIndex]);
|
|
result := fItems[AIndex];
|
|
end;
|
|
|
|
function TDAStringArray.GetItemRef(AIndex: integer): pointer;
|
|
begin
|
|
if (AIndex < 0) or (AIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[AIndex]);
|
|
result := @fItems[AIndex];
|
|
end;
|
|
|
|
procedure TDAStringArray.Clear;
|
|
begin
|
|
SetLength(fItems, 0);
|
|
FCount := 0;
|
|
end;
|
|
|
|
procedure TDAStringArray.Delete(AIndex: integer);
|
|
var i: integer;
|
|
begin
|
|
if (AIndex>=Count) then RaiseError(err_InvalidIndex, [AIndex]);
|
|
|
|
if (AIndex<Count-1) then
|
|
for i := AIndex to Count-2 do fItems[i] := fItems[i+1];
|
|
|
|
SetLength(fItems, Count-1);
|
|
Dec(FCount);
|
|
end;
|
|
|
|
procedure TDAStringArray.SetItems(AIndex: integer; const Value: String);
|
|
begin
|
|
if (AIndex < 0) or (AIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[AIndex]);
|
|
fItems[AIndex] := Value;
|
|
end;
|
|
|
|
procedure TDAStringArray.Resize(ElementCount: integer);
|
|
begin
|
|
SetLength(fItems, ElementCount);
|
|
FCount := ElementCount;
|
|
end;
|
|
|
|
function TDAStringArray.GetCount: integer;
|
|
begin
|
|
result := FCount;
|
|
end;
|
|
|
|
procedure TDAStringArray.Grow;
|
|
var
|
|
Delta, Capacity: Integer;
|
|
begin
|
|
Capacity := Length(fItems);
|
|
if Capacity > 64 then
|
|
Delta := Capacity div 4
|
|
else
|
|
if Capacity > 8 then
|
|
Delta := 16
|
|
else
|
|
Delta := 4;
|
|
SetLength(fItems, Capacity + Delta);
|
|
end;
|
|
|
|
function TDAStringArray.Add(const Value: String): integer;
|
|
begin
|
|
Result := Count;
|
|
if Length(fItems) = Result then
|
|
Grow;
|
|
fItems[result] := Value;
|
|
Inc(fCount);
|
|
end;
|
|
|
|
{ TDADatasetParam }
|
|
|
|
procedure TDADatasetParam.Assign(iSource: TPersistent);
|
|
var lSource:TDADatasetParam;
|
|
begin
|
|
inherited Assign(iSource);
|
|
if (iSource is TDADatasetParam) then begin
|
|
lSource := TDADatasetParam(iSource);
|
|
Name := lSource.Name;
|
|
Value := lSource.Value;
|
|
end;
|
|
end;
|
|
|
|
{ TDADatasetParamCollection }
|
|
constructor TDADatasetParamCollection.Create;
|
|
begin
|
|
inherited Create(TDADatasetParam);
|
|
end;
|
|
|
|
constructor TDADatasetParamCollection.Create(aItemClass: TCollectionItemClass);
|
|
begin
|
|
inherited Create(aItemClass);
|
|
end;
|
|
|
|
function TDADatasetParamCollection.Add: TDADatasetParam;
|
|
begin
|
|
result := TDADatasetParam(inherited Add);
|
|
end;
|
|
|
|
function TDADatasetParamCollection.GetItems(Index: integer): TDADatasetParam;
|
|
begin
|
|
result := TDADatasetParam(inherited Items[Index]);
|
|
end;
|
|
|
|
procedure TDADatasetParamCollection.LoadFromArray(anArray: TDADatasetParamArray);
|
|
var i : integer;
|
|
begin
|
|
Clear;
|
|
for i := 0 to (anArray.Count-1) do
|
|
Add.Assign(anArray[i]);
|
|
end;
|
|
|
|
procedure TDADatasetParamCollection.SaveToArray(anArray: TDADatasetParamArray);
|
|
var i : integer;
|
|
begin
|
|
anArray.Clear;
|
|
anArray.Resize(Count);
|
|
for i := 0 to (Count-1) do begin
|
|
anArray[i] := TDADatasetParam.Create;
|
|
anArray[i].Assign(Items[i]);
|
|
end;
|
|
end;
|
|
|
|
procedure TDADatasetParamCollection.SetItems(Index: integer; const Value: TDADatasetParam);
|
|
begin
|
|
TDADatasetParam(inherited Items[Index]).Assign(Value);
|
|
end;
|
|
|
|
{ TDADatasetRequestInfo }
|
|
|
|
procedure TDADatasetRequestInfo.Assign(iSource: TPersistent);
|
|
var lSource:TDADatasetRequestInfo;
|
|
begin
|
|
inherited Assign(iSource);
|
|
if (iSource is TDADatasetRequestInfo) then begin
|
|
lSource := TDADatasetRequestInfo(iSource);
|
|
DatasetName := lSource.DatasetName;
|
|
IncludeSchema := lSource.IncludeSchema;
|
|
MaxRecords := lSource.MaxRecords;
|
|
Params.Assign(lSource.Params);
|
|
end;
|
|
end;
|
|
|
|
function TDADatasetRequestInfo.GetParams: TDADatasetParamArray;
|
|
begin
|
|
if (fParams = nil) then fParams := TDADatasetParamArray.Create();
|
|
result := fParams;
|
|
end;
|
|
|
|
{ TDADatasetRequestInfoCollection }
|
|
constructor TDADatasetRequestInfoCollection.Create;
|
|
begin
|
|
inherited Create(TDADatasetRequestInfo);
|
|
end;
|
|
|
|
constructor TDADatasetRequestInfoCollection.Create(aItemClass: TCollectionItemClass);
|
|
begin
|
|
inherited Create(aItemClass);
|
|
end;
|
|
|
|
function TDADatasetRequestInfoCollection.Add: TDADatasetRequestInfo;
|
|
begin
|
|
result := TDADatasetRequestInfo(inherited Add);
|
|
end;
|
|
|
|
function TDADatasetRequestInfoCollection.GetItems(Index: integer): TDADatasetRequestInfo;
|
|
begin
|
|
result := TDADatasetRequestInfo(inherited Items[Index]);
|
|
end;
|
|
|
|
procedure TDADatasetRequestInfoCollection.LoadFromArray(anArray: TDADatasetRequestInfoArray);
|
|
var i : integer;
|
|
begin
|
|
Clear;
|
|
for i := 0 to (anArray.Count-1) do
|
|
Add.Assign(anArray[i]);
|
|
end;
|
|
|
|
procedure TDADatasetRequestInfoCollection.SaveToArray(anArray: TDADatasetRequestInfoArray);
|
|
var i : integer;
|
|
begin
|
|
anArray.Clear;
|
|
anArray.Resize(Count);
|
|
for i := 0 to (Count-1) do begin
|
|
anArray[i] := TDADatasetRequestInfo.Create;
|
|
anArray[i].Assign(Items[i]);
|
|
end;
|
|
end;
|
|
|
|
procedure TDADatasetRequestInfoCollection.SetItems(Index: integer; const Value: TDADatasetRequestInfo);
|
|
begin
|
|
TDADatasetRequestInfo(inherited Items[Index]).Assign(Value);
|
|
end;
|
|
|
|
{ TDALoginInfo }
|
|
|
|
procedure TDALoginInfo.Assign(iSource: TPersistent);
|
|
var lSource:TDALoginInfo;
|
|
begin
|
|
inherited Assign(iSource);
|
|
if (iSource is TDALoginInfo) then begin
|
|
lSource := TDALoginInfo(iSource);
|
|
SessionID := lSource.SessionID;
|
|
UserID := lSource.UserID;
|
|
Privileges.Assign(lSource.Privileges);
|
|
Attributes.Assign(lSource.Attributes);
|
|
Data.Assign(lSource.Data);
|
|
end;
|
|
end;
|
|
|
|
function TDALoginInfo.GetPrivileges: TDAStringArray;
|
|
begin
|
|
if (fPrivileges = nil) then fPrivileges := TDAStringArray.Create();
|
|
result := fPrivileges;
|
|
end;
|
|
|
|
function TDALoginInfo.GetAttributes: TDAStringArray;
|
|
begin
|
|
if (fAttributes = nil) then fAttributes := TDAStringArray.Create();
|
|
result := fAttributes;
|
|
end;
|
|
|
|
function TDALoginInfo.GetData: Binary;
|
|
begin
|
|
if (fData = nil) then fData := Binary.Create();
|
|
result := fData;
|
|
end;
|
|
|
|
{ TDALoginInfoCollection }
|
|
constructor TDALoginInfoCollection.Create;
|
|
begin
|
|
inherited Create(TDALoginInfo);
|
|
end;
|
|
|
|
constructor TDALoginInfoCollection.Create(aItemClass: TCollectionItemClass);
|
|
begin
|
|
inherited Create(aItemClass);
|
|
end;
|
|
|
|
function TDALoginInfoCollection.Add: TDALoginInfo;
|
|
begin
|
|
result := TDALoginInfo(inherited Add);
|
|
end;
|
|
|
|
function TDALoginInfoCollection.GetItems(Index: integer): TDALoginInfo;
|
|
begin
|
|
result := TDALoginInfo(inherited Items[Index]);
|
|
end;
|
|
|
|
procedure TDALoginInfoCollection.SetItems(Index: integer; const Value: TDALoginInfo);
|
|
begin
|
|
TDALoginInfo(inherited Items[Index]).Assign(Value);
|
|
end;
|
|
|
|
{ CoDARemoteService }
|
|
|
|
class function CoDARemoteService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDARemoteService;
|
|
begin
|
|
result := TDARemoteService_Proxy.Create(aMessage, aTransportChannel);
|
|
end;
|
|
|
|
{ TDARemoteService_Proxy }
|
|
|
|
function TDARemoteService_Proxy.__GetInterfaceName:string;
|
|
begin
|
|
result := 'DARemoteService';
|
|
end;
|
|
|
|
function TDARemoteService_Proxy.GetDatasetSchema(const aDatasetName: String): Binary;
|
|
begin
|
|
result := nil;
|
|
|
|
try
|
|
__Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract', __InterfaceName, 'GetDatasetSchema');
|
|
__Message.Write('aDatasetName', TypeInfo(String), aDatasetName, []);
|
|
__Message.Finalize;
|
|
|
|
__TransportChannel.Dispatch(__Message);
|
|
|
|
__Message.Read('Result', TypeInfo(Binary), result, []);
|
|
finally
|
|
__Message.FreeStream;
|
|
end
|
|
end;
|
|
|
|
function TDARemoteService_Proxy.GetDatasetScripts(const DatasetNames: String): String;
|
|
begin
|
|
try
|
|
__Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract', __InterfaceName, 'GetDatasetScripts');
|
|
__Message.Write('DatasetNames', TypeInfo(String), DatasetNames, []);
|
|
__Message.Finalize;
|
|
|
|
__TransportChannel.Dispatch(__Message);
|
|
|
|
__Message.Read('Result', TypeInfo(String), result, []);
|
|
finally
|
|
__Message.FreeStream;
|
|
end
|
|
end;
|
|
|
|
function TDARemoteService_Proxy.GetDatasetData(const DatasetName: String; const Params: String; const IncludeSchema: Boolean; const MaxRecords: Integer): Binary;
|
|
begin
|
|
result := nil;
|
|
|
|
try
|
|
__Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract', __InterfaceName, 'GetDatasetData');
|
|
__Message.Write('DatasetName', TypeInfo(String), DatasetName, []);
|
|
__Message.Write('Params', TypeInfo(String), Params, []);
|
|
__Message.Write('IncludeSchema', TypeInfo(Boolean), IncludeSchema, []);
|
|
__Message.Write('MaxRecords', TypeInfo(Integer), MaxRecords, []);
|
|
__Message.Finalize;
|
|
|
|
__TransportChannel.Dispatch(__Message);
|
|
|
|
__Message.Read('Result', TypeInfo(Binary), result, []);
|
|
finally
|
|
__Message.FreeStream;
|
|
end
|
|
end;
|
|
|
|
function TDARemoteService_Proxy.GetDatasetDataEx(const DatasetName: String; const Params: TDADatasetParamArray; const UserFilter: String; const IncludeSchema: Boolean;
|
|
const MaxRecords: Integer): Binary;
|
|
begin
|
|
result := nil;
|
|
|
|
try
|
|
__Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract', __InterfaceName, 'GetDatasetDataEx');
|
|
__Message.Write('DatasetName', TypeInfo(String), DatasetName, []);
|
|
__Message.Write('Params', TypeInfo(DataAbstract3_Intf.TDADatasetParamArray), Params, []);
|
|
__Message.Write('UserFilter', TypeInfo(String), UserFilter, []);
|
|
__Message.Write('IncludeSchema', TypeInfo(Boolean), IncludeSchema, []);
|
|
__Message.Write('MaxRecords', TypeInfo(Integer), MaxRecords, []);
|
|
__Message.Finalize;
|
|
|
|
__TransportChannel.Dispatch(__Message);
|
|
|
|
__Message.Read('Result', TypeInfo(Binary), result, []);
|
|
finally
|
|
__Message.FreeStream;
|
|
end
|
|
end;
|
|
|
|
function TDARemoteService_Proxy.UpdateData(const Delta: Binary): Binary;
|
|
begin
|
|
result := nil;
|
|
|
|
try
|
|
__Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract', __InterfaceName, 'UpdateData');
|
|
__Message.Write('Delta', TypeInfo(Binary), Delta, []);
|
|
__Message.Finalize;
|
|
|
|
__TransportChannel.Dispatch(__Message);
|
|
|
|
__Message.Read('Result', TypeInfo(Binary), result, []);
|
|
finally
|
|
__Message.FreeStream;
|
|
end
|
|
end;
|
|
|
|
function TDARemoteService_Proxy.ExecuteSQLCommand(const SQL: String): Integer;
|
|
begin
|
|
try
|
|
__Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract', __InterfaceName, 'ExecuteSQLCommand');
|
|
__Message.Write('SQL', TypeInfo(String), SQL, []);
|
|
__Message.Finalize;
|
|
|
|
__TransportChannel.Dispatch(__Message);
|
|
|
|
__Message.Read('Result', TypeInfo(Integer), result, []);
|
|
finally
|
|
__Message.FreeStream;
|
|
end
|
|
end;
|
|
|
|
function TDARemoteService_Proxy.GetSchemaAsXML: String;
|
|
begin
|
|
try
|
|
__Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract', __InterfaceName, 'GetSchemaAsXML');
|
|
__Message.Finalize;
|
|
|
|
__TransportChannel.Dispatch(__Message);
|
|
|
|
__Message.Read('Result', TypeInfo(String), result, []);
|
|
finally
|
|
__Message.FreeStream;
|
|
end
|
|
end;
|
|
|
|
function TDARemoteService_Proxy.GetMultipleDatasets(const DatasetRequestInfoArray: TDADatasetRequestInfoArray): Binary;
|
|
begin
|
|
result := nil;
|
|
try
|
|
__Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract', __InterfaceName, 'GetMultipleDatasets');
|
|
__Message.Write('DatasetRequestInfoArray', TypeInfo(DataAbstract3_Intf.TDADatasetRequestInfoArray), DatasetRequestInfoArray, []);
|
|
__Message.Finalize;
|
|
|
|
__TransportChannel.Dispatch(__Message);
|
|
|
|
__Message.Read('Result', TypeInfo(Binary), result, []);
|
|
finally
|
|
__Message.FreeStream;
|
|
end
|
|
end;
|
|
|
|
function TDARemoteService_Proxy.ExecuteSQLCommandEx(const CommandName: String; const Params: TDADatasetParamArray): Integer;
|
|
begin
|
|
try
|
|
__Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract', __InterfaceName, 'ExecuteSQLCommandEx');
|
|
__Message.Write('CommandName', TypeInfo(String), CommandName, []);
|
|
__Message.Write('Params', TypeInfo(DataAbstract3_Intf.TDADatasetParamArray), Params, []);
|
|
__Message.Finalize;
|
|
|
|
__TransportChannel.Dispatch(__Message);
|
|
|
|
__Message.Read('Result', TypeInfo(Integer), result, []);
|
|
finally
|
|
__Message.FreeStream;
|
|
end
|
|
end;
|
|
|
|
{ CoDALoginService }
|
|
|
|
class function CoDALoginService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDALoginService;
|
|
begin
|
|
result := TDALoginService_Proxy.Create(aMessage, aTransportChannel);
|
|
end;
|
|
|
|
{ TDALoginService_Proxy }
|
|
|
|
function TDALoginService_Proxy.__GetInterfaceName:string;
|
|
begin
|
|
result := 'DALoginService';
|
|
end;
|
|
|
|
function TDALoginService_Proxy.Login(const UserID: String; const Password: String; out LoginInfo: TDALoginInfo): Boolean;
|
|
begin
|
|
LoginInfo := nil;
|
|
|
|
try
|
|
__Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract', __InterfaceName, 'Login');
|
|
__Message.Write('UserID', TypeInfo(String), UserID, []);
|
|
__Message.Write('Password', TypeInfo(String), Password, []);
|
|
__Message.Finalize;
|
|
|
|
__TransportChannel.Dispatch(__Message);
|
|
|
|
__Message.Read('Result', TypeInfo(Boolean), result, []);
|
|
__Message.Read('LoginInfo', TypeInfo(DataAbstract3_Intf.TDALoginInfo), LoginInfo, []);
|
|
finally
|
|
__Message.FreeStream;
|
|
end
|
|
end;
|
|
|
|
procedure TDALoginService_Proxy.Logout;
|
|
begin
|
|
|
|
try
|
|
__Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract', __InterfaceName, 'Logout');
|
|
__Message.Finalize;
|
|
|
|
__TransportChannel.Dispatch(__Message);
|
|
|
|
finally
|
|
__Message.FreeStream;
|
|
end
|
|
end;
|
|
|
|
initialization
|
|
RegisterROClass(TDADatasetParam);
|
|
RegisterROClass(TDADatasetRequestInfo);
|
|
RegisterROClass(TDALoginInfo);
|
|
RegisterROClass(TDADatasetParamArray);
|
|
RegisterROClass(TDADatasetRequestInfoArray);
|
|
RegisterROClass(TDAStringArray);
|
|
RegisterProxyClass(IDARemoteService_IID, TDARemoteService_Proxy);
|
|
RegisterProxyClass(IDALoginService_IID, TDALoginService_Proxy);
|
|
|
|
|
|
finalization
|
|
UnregisterROClass(TDADatasetParam);
|
|
UnregisterROClass(TDADatasetRequestInfo);
|
|
UnregisterROClass(TDALoginInfo);
|
|
UnregisterROClass(TDADatasetParamArray);
|
|
UnregisterROClass(TDADatasetRequestInfoArray);
|
|
UnregisterROClass(TDAStringArray);
|
|
UnregisterProxyClass(IDARemoteService_IID);
|
|
UnregisterProxyClass(IDALoginService_IID);
|
|
|
|
end.
|