git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.RemObjects@49 b6239004-a887-0f4b-9937-50029ccdca16
102 lines
3.5 KiB
ObjectPascal
102 lines
3.5 KiB
ObjectPascal
unit ReducedDeltaService_Impl;
|
|
|
|
{----------------------------------------------------------------------------}
|
|
{ This unit was automatically generated by the RemObjects SDK after reading }
|
|
{ the RODL file associated with this project . }
|
|
{ }
|
|
{ This is where you are supposed to code the implementation of your objects. }
|
|
{----------------------------------------------------------------------------}
|
|
|
|
{$I Remobjects.inc}
|
|
|
|
interface
|
|
|
|
uses
|
|
{vcl:} Classes, SysUtils,
|
|
{RemObjects:} uROXMLIntf, uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions,
|
|
{Required:} uRORemoteDataModule,
|
|
{Ancestor Implementation:} DataAbstractService_Impl,
|
|
{Used RODLs:} DataAbstract4_Intf,
|
|
{Generated:} ReducedDeltaLibrary_Intf, uDAClasses, uDADataStreamer,
|
|
uDABin2DataStreamer, uDABusinessProcessor, uDAScriptingProvider, uDADelta, uDAInterfaces;
|
|
|
|
type
|
|
{ TReducedDeltaService }
|
|
TReducedDeltaService = class(TDataAbstractService, IReducedDeltaService)
|
|
Schema: TDASchema;
|
|
DataStreamer: TDABin2DataStreamer;
|
|
BusinessProcessor: TDABusinessProcessor;
|
|
procedure BusinessProcessorBeforeProcessChange(
|
|
Sender: TDABusinessProcessor; aChangeType: TDAChangeType;
|
|
aChange: TDADeltaChange; var ProcessChange: Boolean);
|
|
private
|
|
procedure Log(str: string);
|
|
protected
|
|
{ IReducedDeltaService methods }
|
|
end;
|
|
|
|
implementation
|
|
|
|
{$R *.dfm}
|
|
uses
|
|
{Generated:} ReducedDeltaLibrary_Invk,ReducedDeltaServerData, ReducedDeltaServerMain,
|
|
Variants;
|
|
|
|
procedure Create_ReducedDeltaService(out anInstance : IUnknown);
|
|
begin
|
|
anInstance := TReducedDeltaService.Create(nil);
|
|
end;
|
|
|
|
{ TReducedDeltaService }
|
|
|
|
procedure TReducedDeltaService.Log(str: string);
|
|
begin
|
|
ReducedDeltaServerMainForm.Log(str);
|
|
end;
|
|
|
|
procedure TReducedDeltaService.BusinessProcessorBeforeProcessChange(
|
|
Sender: TDABusinessProcessor; aChangeType: TDAChangeType;
|
|
aChange: TDADeltaChange; var ProcessChange: Boolean);
|
|
|
|
function _VarToStr(const aValue: variant): string;
|
|
begin
|
|
if VarIsEmpty(aValue) then Result:='<Empty>' else Result:= VarToStr(aValue);
|
|
end;
|
|
|
|
function _CreateStr(const aStr: string; const aLen:integer): string;
|
|
begin
|
|
if Length(aStr) > aLen then
|
|
Result:=Copy(aStr,1,aLen-3)+'...'
|
|
else
|
|
Result:= aStr+ StringOfChar(' ', aLen-Length(aStr));
|
|
end;
|
|
|
|
const
|
|
TDAChangeTypeStr : array [TDAChangeType] of string = ('Insert','Update','Delete');
|
|
|
|
var
|
|
i: integer;
|
|
begin
|
|
Log('Reduced Delta = '+ BoolToStr(BusinessProcessor.HasReducedDelta,True));
|
|
Log('RecID = '+inttostr(aChange.RecID)+', State = ' + TDAChangeTypeStr[aChangeType]);
|
|
for i:=0 to aChange.Delta.LoggedFieldCount-1 do begin
|
|
case aChangeType of
|
|
ctInsert: Log(_CreateStr(aChange.Delta.LoggedFieldNames[i]+':', 15)+
|
|
_CreateStr('NEW:'+_VarToStr(aChange.OldValues[i]), 35));
|
|
ctUpdate: Log(_CreateStr(aChange.Delta.LoggedFieldNames[i]+':', 15)+
|
|
_CreateStr('OLD:'+_VarToStr(aChange.OldValues[i]), 35)+
|
|
_CreateStr('NEW:'+_VarToStr(aChange.OldValues[i]), 35));
|
|
ctDelete: Log(_CreateStr(aChange.Delta.LoggedFieldNames[i]+':', 15)+
|
|
_CreateStr('OLD:'+_VarToStr(aChange.OldValues[i]), 35));
|
|
end;
|
|
end;
|
|
Log('');
|
|
end;
|
|
|
|
initialization
|
|
TROClassFactory.Create('ReducedDeltaService', Create_ReducedDeltaService, TReducedDeltaService_Invoker);
|
|
|
|
finalization
|
|
|
|
end.
|