mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-11-01 23:09:32 +01:00
* Additional options implemented
git-svn-id: trunk@11534 -
This commit is contained in:
parent
fd2b09c12c
commit
7d845aa47e
@ -25,7 +25,8 @@ uses
|
||||
TYpe
|
||||
TClassOption = (caCreateClass,caConstructor,caDestructor,caCreateList,caListAddMethod,caListItemsProperty);
|
||||
TClassOptions = Set of TClassOption;
|
||||
TVisitorOption = (voRead,voReadList,voCreate,voDelete,voUpdate);
|
||||
TVisitorOption = (voRead,voReadList,voCreate,voDelete,voUpdate,
|
||||
voCommonSetupParams,voSingleSaveVisitor);
|
||||
TVisitorOptions = set of TVisitorOption;
|
||||
|
||||
{ TTiOPFCodeOptions }
|
||||
@ -33,19 +34,23 @@ TYpe
|
||||
TTiOPFCodeOptions = Class (TClassCodeGeneratorOptions)
|
||||
Private
|
||||
FClassOptions: TClassOptions;
|
||||
FFinalVisitors: TVisitorOptions;
|
||||
FListAncestorName: String;
|
||||
FListClassName : String;
|
||||
FVisitorOptions: TVisitorOptions;
|
||||
FTableName : String;
|
||||
function GetListClassName: String;
|
||||
procedure SetClassOptions(const AValue: TClassOptions);
|
||||
procedure SetListAncestorName(const AValue: String);
|
||||
procedure SetListClassName(const AValue: String);
|
||||
procedure SetVisitorOptions(const AValue: TVisitorOptions);
|
||||
Public
|
||||
Constructor Create; override;
|
||||
Procedure Assign(ASource : TPersistent); override;
|
||||
Published
|
||||
Property ClassOptions : TClassOptions Read FClassOptions Write FClassOptions;
|
||||
Property VisitorOptions : TVisitorOptions Read FVisitorOptions Write FVisitorOptions;
|
||||
Property ClassOptions : TClassOptions Read FClassOptions Write SetClassOptions;
|
||||
Property VisitorOptions : TVisitorOptions Read FVisitorOptions Write SetVisitorOptions;
|
||||
Property FinalVisitors : TVisitorOptions Read FFinalVisitors Write FFinalVisitors;
|
||||
Property ListAncestorName : String Read FListAncestorName Write SetListAncestorName;
|
||||
Property ListClassName : String Read GetListClassName Write SetListClassName;
|
||||
Property AncestorClass;
|
||||
@ -65,15 +70,24 @@ TYpe
|
||||
private
|
||||
Function CreateSQLStatement(V: TVisitorOption) : String;
|
||||
function GetOpt: TTiOPFCodeOptions;
|
||||
procedure WriteCreateVisitor(Strings: TStrings; const ObjectClassName: String);
|
||||
procedure WriteDeleteVisitor(Strings: TStrings; const ObjectClassName: String);
|
||||
Function UseCommonSetupParams : Boolean;
|
||||
Function SingleSaveVisitor : Boolean;
|
||||
Function VisitorClassName(V : TVisitorOption; Const ObjectClassName : String) : String;
|
||||
// Auxiliary routines
|
||||
procedure WriteFieldAssign(Strings: TStrings; F: TFieldPropDef);
|
||||
procedure WriteAssignToParam(Strings: TStrings; F: TFieldPropDef);
|
||||
procedure WriteReadListVisitor(Strings: TStrings; const ObjectClassName: String);
|
||||
procedure WriteReadVisitor(Strings: TStrings; const ObjectClassName: String );
|
||||
procedure WriteSetSQL(Strings: TStrings; const ASQL: String);
|
||||
procedure WriteSQLConstants(Strings: TStrings);
|
||||
Procedure WriteTerminateVisitor(Strings : TStrings; V : TVisitorOption; const ObjectClassName: String);
|
||||
procedure WriteSetupParams(Strings: TStrings; const AClassName, ObjectClassName: String);
|
||||
// Visitors
|
||||
procedure WriteCommonSetupVisitor(Strings: TStrings; const ObjectClassName: String);
|
||||
procedure WriteSaveVisitor(Strings: TStrings; const ObjectClassName: String);
|
||||
procedure WriteCreateVisitor(Strings: TStrings; const ObjectClassName: String);
|
||||
procedure WriteDeleteVisitor(Strings: TStrings; const ObjectClassName: String);
|
||||
procedure WriteUpdateVisitor(Strings: TStrings; const ObjectClassName: String);
|
||||
procedure WriteReadListVisitor(Strings: TStrings; const ObjectClassName: String);
|
||||
procedure WriteReadVisitor(Strings: TStrings; const ObjectClassName: String );
|
||||
procedure WriteVisitorDeclaration(Strings: TStrings; V: TVisitorOption; const ObjectClassName: String);
|
||||
procedure WriteVisitorImplementation(Strings: TStrings; V: TVisitorOption; const ObjectClassName: String);
|
||||
Protected
|
||||
@ -104,6 +118,14 @@ Const
|
||||
|
||||
implementation
|
||||
|
||||
Function StripType(S : String) : string;
|
||||
|
||||
begin
|
||||
Result:=S;
|
||||
If (Result<>'') and (Result[1]='T') then
|
||||
Delete(Result,1,1);
|
||||
end;
|
||||
|
||||
{ TTiOPFCodeOptions }
|
||||
|
||||
function TTiOPFCodeOptions.GetListClassName: String;
|
||||
@ -113,6 +135,20 @@ begin
|
||||
Result:=ObjectClassName+'List';
|
||||
end;
|
||||
|
||||
procedure TTiOPFCodeOptions.SetClassOptions(const AValue: TClassOptions);
|
||||
|
||||
Var
|
||||
B : Boolean;
|
||||
|
||||
begin
|
||||
If AValue=FClassOptions then
|
||||
Exit;
|
||||
B:=Not(caCreateList in FClassOptions) and (caCreateList in AValue);
|
||||
FClassOptions:=AValue;
|
||||
If B then
|
||||
Include(FVisitorOptions,voReadList);
|
||||
end;
|
||||
|
||||
procedure TTiOPFCodeOptions.SetListAncestorName(const AValue: String);
|
||||
begin
|
||||
CheckIdentifier(AValue,False);
|
||||
@ -125,6 +161,31 @@ begin
|
||||
FListClassName:=AValue;
|
||||
end;
|
||||
|
||||
procedure TTiOPFCodeOptions.SetVisitorOptions(const AValue: TVisitorOptions);
|
||||
|
||||
Var
|
||||
V : TVisitorOption;
|
||||
|
||||
begin
|
||||
FVisitorOptions:=AValue;
|
||||
// Consistency check
|
||||
If voSingleSaveVisitor in FVisitorOptions then
|
||||
begin
|
||||
Exclude(FVisitorOptions,voCommonSetupParams);
|
||||
Exclude(FVisitorOptions,voCreate);
|
||||
Exclude(FVisitorOptions,voUpdate);
|
||||
Exclude(FVisitorOptions,voDelete);
|
||||
end
|
||||
else If voCommonSetupParams in FVisitorOptions then
|
||||
begin
|
||||
Include(FVisitorOptions,voCreate);
|
||||
Include(FVisitorOptions,voUpdate);
|
||||
end;
|
||||
For V:=Low(TVisitorOption) to High(TVisitorOption) do
|
||||
If Not (V in FVisitorOptions) then
|
||||
Exclude(FFinalVisitors,V);
|
||||
end;
|
||||
|
||||
constructor TTiOPFCodeOptions.Create;
|
||||
begin
|
||||
inherited Create;
|
||||
@ -133,7 +194,7 @@ begin
|
||||
ObjectClassName:='MyObject';
|
||||
TableName:=SDefTableName;
|
||||
FVisitorOptions:=[voRead,voCreate,voDelete,voUpdate];
|
||||
FClassOptions:=[caCreateList,caListAddMethod,caListItemsProperty];
|
||||
FClassOptions:=[caCreateClass,caCreateList,caListAddMethod,caListItemsProperty];
|
||||
end;
|
||||
|
||||
procedure TTiOPFCodeOptions.Assign(ASource: TPersistent);
|
||||
@ -150,6 +211,7 @@ begin
|
||||
FVisitorOptions:=OC.FVisitorOptions;
|
||||
FClassOptions:=OC.FClassOptions;
|
||||
FTableName:=OC.TableName;
|
||||
FFinalVisitors:=OC.FinalVisitors;
|
||||
end;
|
||||
inherited Assign(ASource);
|
||||
end;
|
||||
@ -186,6 +248,122 @@ begin
|
||||
Result:=CodeOptions as TTiOPFCodeOptions;
|
||||
end;
|
||||
|
||||
function TTiOPFCodeGenerator.UseCommonSetupParams: Boolean;
|
||||
begin
|
||||
Result:=VoCommonSetupParams in tiOPFOptions.VisitorOptions;
|
||||
end;
|
||||
|
||||
function TTiOPFCodeGenerator.SingleSaveVisitor: Boolean;
|
||||
begin
|
||||
Result:=voSingleSaveVisitor in tiOPFOptions.VisitorOptions;
|
||||
end;
|
||||
|
||||
function TTiOPFCodeGenerator.VisitorClassName(V: TVisitorOption;
|
||||
const ObjectClassName: String): String;
|
||||
|
||||
Var
|
||||
S : String;
|
||||
|
||||
begin
|
||||
Case V of
|
||||
voRead : S:='Read';
|
||||
voReadList : S:='ReadList';
|
||||
voCreate : S:='Create';
|
||||
voDelete : S:='Delete';
|
||||
voUpdate : S:='Update';
|
||||
voCommonSetupParams : S:='UpdateCreate';
|
||||
voSingleSaveVisitor : S:='Save';
|
||||
else
|
||||
Result:='Unknown';
|
||||
end;
|
||||
// Real class name
|
||||
Result:=Format('T%s%sVisitor',[S,StripType(ObjectClassName)]);
|
||||
end;
|
||||
|
||||
procedure TTiOPFCodeGenerator.WriteCommonSetupVisitor(Strings: TStrings;
|
||||
const ObjectClassName: String);
|
||||
|
||||
|
||||
Var
|
||||
CS,C,S : String;
|
||||
I : Integer;
|
||||
|
||||
begin
|
||||
C:=VisitorClassName(voCommonSetupParams,ObjectClassName);
|
||||
Addln(Strings,'{ %s }',[C]);
|
||||
Addln(Strings);
|
||||
WriteSetupParams(Strings,C,ObjectClassName);
|
||||
end;
|
||||
|
||||
procedure TTiOPFCodeGenerator.WriteSaveVisitor(Strings: TStrings; const ObjectClassName: String);
|
||||
|
||||
Procedure WriteSQLCase(Const ACaselabel,ASQL : String);
|
||||
|
||||
begin
|
||||
addln(Strings,ACaseLabel+':');
|
||||
incIndent;
|
||||
WriteSetSQL(Strings,ASQL);
|
||||
DecIndent;
|
||||
end;
|
||||
|
||||
Var
|
||||
OCN,CS,C,S : String;
|
||||
I : Integer;
|
||||
F : TFieldPropDef;
|
||||
|
||||
begin
|
||||
OCN:=StripType(ObjectClassName);
|
||||
C:=VisitorClassName(voSingleSaveVisitor,OCN);
|
||||
Addln(Strings,'{ %s }',[C]);
|
||||
Addln(Strings);
|
||||
// Init
|
||||
S:=BeginInit(Strings,C);
|
||||
AddLn(Strings,'Case Visited.ObjectState of');
|
||||
IncIndent;
|
||||
try
|
||||
WriteSQLCase('posCreate',Format('SQLCreate%s',[OCN]));
|
||||
WriteSQLCase('posUpdate',Format('SQLUpdate%s',[OCN]));
|
||||
WriteSQLCase('posDelete',Format('SQLDelete%s',[OCN]));
|
||||
finally
|
||||
DecIndent;
|
||||
end;
|
||||
Addln(Strings,'end;');
|
||||
DecIndent;
|
||||
EndMethod(Strings,S);
|
||||
// AcceptVisitor
|
||||
S:=BeginAcceptVisitor(Strings,C,ObjectClassName);
|
||||
AddLn(Strings,'Result:=Result and (Visited.ObjectState in [posCreate,posdelete,posUpdate]);');
|
||||
DecIndent;
|
||||
EndMethod(Strings,S);
|
||||
S:=BeginSetupParams(Strings,C,ObjectClassName,True);
|
||||
Addln(Strings,'With Query do',[ObjectClassName]);
|
||||
IncINdent;
|
||||
try
|
||||
Addln(Strings,'begin');
|
||||
F:=Fields.FindPropName('OID');
|
||||
If (F<>Nil) then
|
||||
WriteAssignToParam(Strings,F)
|
||||
else
|
||||
AddLn(Strings,'// No OID property found. Add delete key parameter setup code here.');
|
||||
AddLn(Strings,'If (Visited.ObjectState<>posDelete) then');
|
||||
IncIndent;
|
||||
try
|
||||
AddLn(Strings,'begin');
|
||||
For I:=0 to Fields.Count-1 do
|
||||
If Fields[i].Enabled and (CompareText(Fields[i].PropertyName,'OID')<>0) then
|
||||
WriteAssignToParam(Strings,Fields[i]);
|
||||
AddLn(Strings,'end;');
|
||||
Finally
|
||||
DecIndent;
|
||||
end;
|
||||
Addln(Strings,'end;');
|
||||
finally
|
||||
DecIndent;
|
||||
end;
|
||||
DecIndent;
|
||||
EndMethod(Strings,S);
|
||||
end;
|
||||
|
||||
function TTiOPFCodeGenerator.GetInterfaceUsesClause: string;
|
||||
begin
|
||||
Result:=inherited GetInterfaceUsesClause;
|
||||
@ -213,8 +391,10 @@ begin
|
||||
try
|
||||
If caCreateList in ClassOptions then
|
||||
CreateListDeclaration(Strings,ObjectClassName,ListClassName,ListAncestorName);
|
||||
If voCommonSetupParams in VisitorOptions then
|
||||
WriteVisitorDeclaration(Strings,voCommonSetupParams,ObjectClassName);
|
||||
For V:=Low(TVisitorOption) to High(TVisitorOption) do
|
||||
If V in VisitorOptions then
|
||||
If (V in VisitorOptions) and (V<>voCommonSetupParams) then
|
||||
WriteVisitorDeclaration(Strings,V,ObjectClassName);
|
||||
Finally
|
||||
DecIndent;
|
||||
@ -222,13 +402,6 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
Function StripType(S : String) : string;
|
||||
|
||||
begin
|
||||
Result:=S;
|
||||
If (Result<>'') and (Result[1]='T') then
|
||||
Delete(Result,1,1);
|
||||
end;
|
||||
|
||||
procedure TTiOPFCodeGenerator.WriteVisitorDeclaration(Strings : TStrings; V : TVisitorOption; Const ObjectClassName : String);
|
||||
|
||||
@ -236,28 +409,34 @@ Var
|
||||
S,T,A : string;
|
||||
|
||||
begin
|
||||
Case V of
|
||||
voRead : S:='Read';
|
||||
voReadList : S:='ReadList';
|
||||
voCreate : S:='Create';
|
||||
voDelete : S:='Delete';
|
||||
voUpdate : S:='Update';
|
||||
end;
|
||||
If V in [voCreate,voDelete,voUpdate] then
|
||||
A:='Update'
|
||||
// Ancestor name
|
||||
// Common setup case
|
||||
If (V in [voCreate,voUpdate]) and (UseCommonSetupParams) then
|
||||
A:=Format('TUpdateCreate%sVisitor',[StripType(ObjectClassName)])
|
||||
else If (V in [voCreate,voDelete,voUpdate,voCommonSetupParams]) then
|
||||
A:='TtiVisitorUpdate'
|
||||
else
|
||||
A:='Select';
|
||||
S:=Format('T%s%sVisitor',[S,StripType(ObjectClassName)]);
|
||||
A:='TtiVisitorSelect';
|
||||
// Real class
|
||||
S:=VisitorClassName(V,ObjectClassName);
|
||||
AddLn(Strings,'{ %s }',[S]);
|
||||
AddlN(Strings,'%s = Class(TtiVisitor%s)',[S,A]);
|
||||
AddlN(Strings,'%s = Class(%s)',[S,A]);
|
||||
AddlN(Strings,'Protected');
|
||||
IncIndent;
|
||||
Try
|
||||
AddLn(Strings,'Procedure Init; override;');
|
||||
AddLn(Strings,'Function AcceptVisitor : Boolean; override;');
|
||||
AddLn(Strings,'Procedure SetupParams; override;');
|
||||
If Not (V in [voCreate,voDelete,voUpdate]) then
|
||||
If (V<>VoCommonSetupParams) then
|
||||
begin
|
||||
AddLn(Strings,'Procedure Init; override;');
|
||||
AddLn(Strings,'Function AcceptVisitor : Boolean; override;');
|
||||
If Not ((V in [voCreate,voUpdate]) and UseCommonSetupParams) then
|
||||
AddLn(Strings,'Procedure SetupParams; override;');
|
||||
end
|
||||
else
|
||||
AddLn(Strings,'Procedure SetupParams; override;');
|
||||
If (V in [voRead,voReadList]) then
|
||||
AddLn(Strings,'Procedure MapRowToObject; override;');
|
||||
if (V in TiOPFOptions.FinalVisitors) then
|
||||
Addln(Strings,'Procedure Execute(Const AData : TtiVisited); override;');
|
||||
Finally
|
||||
DecIndent;
|
||||
end;
|
||||
@ -347,7 +526,7 @@ procedure TTiOPFCodeGenerator.WriteSQLConstants(Strings : TStrings);
|
||||
|
||||
Const
|
||||
VisSQL : Array [TVisitorOption] of string
|
||||
= ('Read','ReadList','Create','Delete','Update');
|
||||
= ('Read','ReadList','Create','Delete','Update','','');
|
||||
|
||||
Var
|
||||
OCN,S : String;
|
||||
@ -359,7 +538,8 @@ begin
|
||||
try
|
||||
OCN:=StripType(TiOPFOptions.ObjectClassName);
|
||||
For V:=Low(TVisitorOption) to High(TVisitorOption) do
|
||||
If V in TiOPFOptions.VisitorOptions then
|
||||
If ((V in TiOPFOptions.VisitorOptions) or
|
||||
(SingleSaveVisitor and (V in [voCreate,voUpdate,voDelete]))) and (VisSQL[V]<>'') then
|
||||
begin
|
||||
S:=CreateSQLStatement(V);
|
||||
S:=Format('SQL%s%s = ''%s'';',[VisSQL[V],OCN,S]);
|
||||
@ -371,6 +551,33 @@ begin
|
||||
AddLn(Strings,'');
|
||||
end;
|
||||
|
||||
procedure TTiOPFCodeGenerator.WriteTerminateVisitor(Strings : TStrings;V : TVisitorOption;
|
||||
const ObjectClassName: String);
|
||||
|
||||
Var
|
||||
S : String;
|
||||
begin
|
||||
S:=VisitorclassName(V,ObjectClassName);
|
||||
S:=Format('Procedure %s.Execute(Const AData : TtiVisited);',[S]);
|
||||
BeginMethod(Strings,S);
|
||||
AddLn(Strings,'begin');
|
||||
IncIndent;
|
||||
try
|
||||
AddLn(Strings,'Inherited Execute(AData);');
|
||||
Addln(Strings,'If not AcceptVisitor then');
|
||||
IncIndent;
|
||||
Try
|
||||
Addln(Strings,'Exit; // ==>');
|
||||
Finally
|
||||
DecIndent;
|
||||
end;
|
||||
AddLn(Strings,'ContinueVisiting:=False;');
|
||||
Finally
|
||||
DecIndent;
|
||||
end;
|
||||
EndMethod(Strings,S);
|
||||
end;
|
||||
|
||||
|
||||
procedure TTiOPFCodeGenerator.DoGenerateImplementation(Strings: TStrings);
|
||||
|
||||
@ -400,12 +607,16 @@ procedure TTiOPFCodeGenerator.WriteVisitorImplementation(Strings : TStrings; V :
|
||||
|
||||
begin
|
||||
Case V of
|
||||
voRead : WriteReadVisitor(Strings,ObjectClassName);
|
||||
voReadList : WriteReadListVisitor(Strings,ObjectClassName);
|
||||
voCreate : WriteCreateVisitor(Strings,ObjectClassName);
|
||||
voDelete : WriteDeleteVisitor(Strings,ObjectClassName);
|
||||
voUpdate : WriteUpdateVisitor(Strings,ObjectClassName);
|
||||
voRead : WriteReadVisitor(Strings,ObjectClassName);
|
||||
voReadList : WriteReadListVisitor(Strings,ObjectClassName);
|
||||
voCreate : WriteCreateVisitor(Strings,ObjectClassName);
|
||||
voDelete : WriteDeleteVisitor(Strings,ObjectClassName);
|
||||
voUpdate : WriteUpdateVisitor(Strings,ObjectClassName);
|
||||
voCommonSetupParams : WriteCommonSetupVisitor(Strings,ObjectClassName);
|
||||
voSingleSaveVisitor : WriteSaveVisitor(Strings,ObjectClassName);
|
||||
end;
|
||||
If v in TiOPFOptions.FinalVisitors then
|
||||
WriteTerminateVisitor(Strings,V,ObjectClassName);
|
||||
end;
|
||||
|
||||
Function TTiOPFCodeGenerator.BeginInit(Strings : TStrings; const AClass : String) : String;
|
||||
@ -477,7 +688,7 @@ Var
|
||||
begin
|
||||
OCN:=StripType(ObjectClassName);
|
||||
CS:=Format('SQLRead%s',[OCN]);
|
||||
C:=Format('TRead%sVisitor',[OCN]);
|
||||
C:=VisitorClassName(voRead,OCN);
|
||||
Addln(Strings,'{ %s }',[C]);
|
||||
Addln(Strings);
|
||||
// Init
|
||||
@ -533,13 +744,9 @@ begin
|
||||
S:='AsBoolean';
|
||||
ptShortint, ptByte,
|
||||
ptSmallInt, ptWord,
|
||||
ptLongint, ptCardinal :
|
||||
ptLongint, ptCardinal,
|
||||
ptInt64:
|
||||
S:='AsInteger';
|
||||
ptInt64, ptQWord:
|
||||
If F.FieldType=ftLargeInt then
|
||||
R:=Format('O.%s:=(FieldByName(%s) as TLargeIntField).AsLargeInt;',[PN,SFN])
|
||||
else
|
||||
S:='AsInteger';
|
||||
ptShortString, ptAnsiString, ptWideString :
|
||||
S:='AsString';
|
||||
ptSingle, ptDouble, ptExtended, ptComp :
|
||||
@ -581,13 +788,9 @@ begin
|
||||
S:='AsBoolean';
|
||||
ptShortint, ptByte,
|
||||
ptSmallInt, ptWord,
|
||||
ptLongint, ptCardinal :
|
||||
ptLongint, ptCardinal,
|
||||
ptInt64, ptQWord :
|
||||
S:='AsInteger';
|
||||
ptInt64, ptQWord:
|
||||
If F.FieldType=ftLargeInt then
|
||||
R:=Format('O.%s:=(Name(%s) as TLargeIntField).AsLargeInt;',[PN,SFN])
|
||||
else
|
||||
S:='AsInteger';
|
||||
ptShortString, ptAnsiString, ptWideString :
|
||||
S:='AsString';
|
||||
ptSingle, ptDouble, ptExtended, ptComp :
|
||||
@ -626,7 +829,7 @@ begin
|
||||
LN:=tiOPFOptions.ListClassName;
|
||||
OCN:=StripType(ObjectClassName);
|
||||
CS:=Format('SQLReadList%s',[OCN]);
|
||||
C:=Format('TReadList%sVisitor',[StripType(OCN)]);
|
||||
C:=VisitorClassName(voReadList,OCN);
|
||||
Addln(Strings,'{ %s }',[C]);
|
||||
Addln(Strings);
|
||||
// Init
|
||||
@ -676,7 +879,7 @@ Var
|
||||
begin
|
||||
OCN:=StripType(ObjectClassName);
|
||||
CS:=Format('SQLCreate%s',[OCN]);
|
||||
C:=Format('TCreate%sVisitor',[OCN]);
|
||||
C:=VisitorClassName(voCreate,OCN);
|
||||
Addln(Strings,'{ %s }',[C]);
|
||||
Addln(Strings);
|
||||
// Init
|
||||
@ -689,8 +892,19 @@ begin
|
||||
AddLn(Strings,'Result:=Result and (Visited.ObjectState=posCreate);');
|
||||
DecIndent;
|
||||
EndMethod(Strings,S);
|
||||
If Not (UseCommonSetupParams) then
|
||||
WriteSetupParams(Strings,C,ObjectClassName);
|
||||
end;
|
||||
|
||||
procedure TTiOPFCodeGenerator.WriteSetupParams(Strings : TStrings; Const AClassName,ObjectClassName : String);
|
||||
|
||||
Var
|
||||
S : String;
|
||||
I : Integer;
|
||||
|
||||
begin
|
||||
// SetupParams
|
||||
S:=BeginSetupParams(Strings,C,ObjectClassName,True);
|
||||
S:=BeginSetupParams(Strings,AClassName,ObjectClassName,True);
|
||||
Addln(Strings,'With Query do',[ObjectClassName]);
|
||||
IncINdent;
|
||||
try
|
||||
@ -721,7 +935,7 @@ Var
|
||||
begin
|
||||
OCN:=StripType(ObjectClassName);
|
||||
CS:=Format('SQLDelete%s',[OCN]);
|
||||
C:=Format('TDelete%sVisitor',[StripType(ObjectClassName)]);
|
||||
C:=VisitorClassName(voDelete,OCN);
|
||||
Addln(Strings,'{ %s }',[C]);
|
||||
// Init
|
||||
S:=BeginInit(Strings,C);
|
||||
@ -753,7 +967,7 @@ Var
|
||||
begin
|
||||
OCN:=StripType(ObjectClassName);
|
||||
CS:=Format('SQLUpdate%s',[OCN]);
|
||||
C:=Format('TUpdate%sVisitor',[OCN]);
|
||||
C:=VisitorClassName(voUpdate,OCN);
|
||||
Addln(Strings,'{ %s }',[C]);
|
||||
Addln(Strings);
|
||||
// Init
|
||||
@ -766,26 +980,11 @@ begin
|
||||
AddLn(Strings,'Result:=Result and (Visited.ObjectState=posUpdate);');
|
||||
DecIndent;
|
||||
EndMethod(Strings,S);
|
||||
// SetupParams
|
||||
S:=BeginSetupParams(Strings,C,ObjectClassName,True);
|
||||
Addln(Strings,'With Query do',[ObjectClassName]);
|
||||
IncINdent;
|
||||
try
|
||||
Addln(Strings,'begin');
|
||||
For I:=0 to Fields.Count-1 do
|
||||
If Fields[i].Enabled then
|
||||
WriteAssignToParam(Strings,Fields[i]);
|
||||
Addln(Strings,'end;');
|
||||
finally
|
||||
DecIndent;
|
||||
end;
|
||||
DecIndent;
|
||||
EndMethod(Strings,S);
|
||||
If Not (UseCommonSetupParams) then
|
||||
WriteSetupParams(Strings,C,ObjectClassName);
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
List object commands
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user