Componentes.Terceros.RemObj.../internal/5.0.35.741/1/Data Abstract for Delphi/Samples/Reduced Delta/ReducedDeltaService_Impl.pas
2009-02-28 17:16:16 +00:00

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.