Commit 1c46e551 authored by Sandro Camata Santana's avatar Sandro Camata Santana

Ajustes

parent 7b8e54f3
...@@ -10,64 +10,73 @@ ...@@ -10,64 +10,73 @@
</HEADER> </HEADER>
<BODY> <BODY>
<MAINMENU> <MAINMENU>
<MAINITEM index="7" base="NEW_TOP" caption="Curio" beginGroup="TRUE"> <MAINITEM index="6" base="NEW_TOP" caption="Curio" beginGroup="TRUE">
<MAINITEM caption="Generate RegisterModelMappings" actionId="1" /> <MAINITEM caption="Generate RegisterModelMappings" actionId="1" />
<MAINITEM caption="Code Generator" actionId="6" beginGroup="TRUE"/> <MAINITEM caption="Code Generator" actionId="6" beginGroup="TRUE"/>
<MAINITEM caption="Quick OQL" actionId="18" beginGroup="TRUE"/> <MAINITEM caption="Quick OQL" actionId="18" beginGroup="TRUE"/>
<MAINITEM caption="OQL Studio" actionId="19" /> <MAINITEM caption="OQL Studio" actionId="19" />
<MAINITEM caption="Element documentation" actionId="12" beginGroup="TRUE"/> <!-- <MAINITEM caption="Element documentation" actionId="12" beginGroup="TRUE"/>
<MAINITEM caption="Convert ALL XSDs to Usecase XSD" actionId="14" beginGroup="TRUE"/> <MAINITEM caption="Convert ALL XSDs to Usecase XSD" actionId="14" beginGroup="TRUE"/>
<MAINITEM caption="Dynamo" actionId="20" beginGroup="TRUE"/> <MAINITEM caption="Dynamo" beginGroup="TRUE">
<MAINITEM caption="Manage Forms..." actionId="20"/>
</MAINITEM> -->
</MAINITEM> </MAINITEM>
<MAINITEM caption="Curio" beginGroup="TRUE" availableWhen="MODEL_SELECTED"> <MAINITEM caption="Curio" beginGroup="TRUE" availableWhen="MODEL_SELECTED">
<MAINITEM caption="Associations" beginGroup="TRUE"> <MAINITEM caption="Associations" beginGroup="TRUE">
<MAINITEM caption="Association code preview..." actionId="2" /> <MAINITEM caption="Association code preview..." actionId="2" />
</MAINITEM> </MAINITEM>
<MAINITEM caption="Classes" beginGroup="TRUE">
<MAINITEM caption="Insert class..." actionId="9" /> <MAINITEM caption="Classes" beginGroup="TRUE">
<MAINITEM caption="Edit selected class..." actionId="10"/> <MAINITEM caption="Insert class..." actionId="9" />
<MAINITEM caption="Class code preview..." actionId="2" beginGroup="TRUE" /> <MAINITEM caption="Edit selected class..." actionId="10"/>
</MAINITEM> <MAINITEM caption="Class code preview..." actionId="2" beginGroup="TRUE" />
<!-- <MAINITEM caption="Transitions" > </MAINITEM>
<MAINITEM caption="XSD Editor..." actionId="7" />
</MAINITEM>--> <!-- <MAINITEM caption="Transitions" >
<MAINITEM caption="XSD Editor..." actionId="7" />
<MAINITEM caption="Usecases" beginGroup="TRUE"> </MAINITEM> -->
<MAINITEM caption="Insert usecase..." actionId="8" />
<MAINITEM caption="Edit selected usecase..." actionId="11"/> <MAINITEM caption="Usecases" beginGroup="TRUE">
<MAINITEM caption="XSDs Editor..." actionId="13" beginGroup="TRUE" /> <MAINITEM caption="Insert usecase..." actionId="8" />
</MAINITEM> <MAINITEM caption="Edit selected usecase..." actionId="11"/>
</MAINITEM> <MAINITEM caption="XSDs Editor..." actionId="13" beginGroup="TRUE" />
</MAINITEM>
</MAINITEM>
</MAINMENU> </MAINMENU>
<POPUPMENU> <POPUPMENU>
<POPUPITEM caption="Curio" beginGroup="TRUE"> <POPUPITEM caption="Curio" beginGroup="TRUE">
<POPUPITEM caption="Generate RegisterModelMappings" actionId="1" /> <POPUPITEM caption="Generate RegisterModelMappings" actionId="1" />
<POPUPITEM caption="Code Generator" actionId="6" beginGroup="TRUE"/> <POPUPITEM caption="Code Generator" actionId="6" beginGroup="TRUE"/>
<POPUPITEM caption="OQL Executor" actionId="4" beginGroup="TRUE"/> <POPUPITEM caption="OQL Executor" actionId="4" beginGroup="TRUE"/>
<POPUPITEM caption="OQL Manager" actionId="5" /> <POPUPITEM caption="OQL Manager" actionId="5" />
<POPUPITEM caption="Element documentation..." actionId="12" beginGroup="TRUE"/> <POPUPITEM caption="Element documentation..." actionId="12" beginGroup="TRUE"/>
</POPUPITEM> </POPUPITEM>
<POPUPITEM caption="Associations" > <POPUPITEM caption="Associations" >
<POPUPITEM caption="Association code preview..." actionId="2" /> <POPUPITEM caption="Association code preview..." actionId="2" />
</POPUPITEM> </POPUPITEM>
<POPUPITEM caption="Classes" >
<POPUPITEM caption="Class code preview..." actionId="2" /> <POPUPITEM caption="Classes" >
<POPUPITEM caption="Insert class..." actionId="9" beginGroup="TRUE" /> <POPUPITEM caption="Class code preview..." actionId="2" />
<POPUPITEM caption="Edit selected class..." actionId="10"/> <POPUPITEM caption="Insert class..." actionId="9" beginGroup="TRUE" />
</POPUPITEM> <POPUPITEM caption="Edit selected class..." actionId="10"/>
</POPUPITEM>
<!-- <POPUPITEM caption="Transitions" >
<POPUPITEM caption="XSD Editor..." actionId="7" /> <!-- <POPUPITEM caption="Transitions" >
</POPUPITEM>--> <POPUPITEM caption="XSD Editor..." actionId="7" />
</POPUPITEM> -->
<POPUPITEM caption="Usecases" >
<POPUPITEM caption="Insert usecase..." actionId="8" /> <POPUPITEM caption="Usecases" >
<POPUPITEM caption="Edit selected usecase..." actionId="11"/> <POPUPITEM caption="Insert usecase..." actionId="8" />
<POPUPITEM caption="XSDs Editor..." actionId="13" beginGroup="TRUE" /> <POPUPITEM caption="Edit selected usecase..." actionId="11"/>
</POPUPITEM> <POPUPITEM caption="XSDs Editor..." actionId="13" beginGroup="TRUE" />
</POPUPITEM>
<POPUPITEM caption="Dynamo" >
<POPUPITEM caption="Manage Forms" actionId="20" />
</POPUPITEM>
</POPUPMENU> </POPUPMENU>
</BODY> </BODY>
</ADDINMENU> </ADDINMENU>
......
...@@ -29,10 +29,12 @@ uses ...@@ -29,10 +29,12 @@ uses
utuLinksManager, utuLinksManager,
utuLinkSock, utuLinkSock,
acuFramework, acuFramework,
acuSystem, acuSystemCurrentConfig,
acuApplicationLog, acuApplicationLog,
acuPersistenceLog,
acuQuerySQLODBC, acuQuerySQLODBC,
ituExplorerV2, ituExplorerV2,
acuAudit,
IntegracaoDelphiSUML in 'IntegracaoDelphiSUML.pas', IntegracaoDelphiSUML in 'IntegracaoDelphiSUML.pas',
Mostra_Processamento in 'Mostra_Processamento.pas' {FMostra_Processamento}, Mostra_Processamento in 'Mostra_Processamento.pas' {FMostra_Processamento},
InstantClasses in 'InstantCode\InstantClasses.pas', InstantClasses in 'InstantCode\InstantClasses.pas',
...@@ -60,20 +62,21 @@ begin ...@@ -60,20 +62,21 @@ begin
end; end;
{$ifend} {$ifend}
gSystemConfig := acSystem.Create(''); if not assigned(acApplicationLog.Instance) then acApplicationLog.Instance := acApplicationLog.Create;
if not assigned(gApplicationLog) then gApplicationLog := acApplicationLog.Create; if not assigned(acPersistenceManager.Instance) then acPersistenceManager.Instance := acPersistenceManager.Create;
if not assigned(gPersistenceManager) then gPersistenceManager := acPersistenceManager.Create; if not assigned(acPersistenceManager.Audit) then acPersistenceManager.Audit := acAudit.Create;
if not assigned(gAuditLog) then gAuditLog := acAuditLog.Create; if not Assigned(acPersistenceLog.Instance) then acPersistenceLog.Instance := acPersistenceLog.Create;
utuMessage.ChangeLocaleFormatSetting; if not Assigned(acSystemCurrentConfig.Instance) then acSystemCurrentConfig.Instance := acSystemCurrentConfig.Create;
gDefaultDatabaseDriver := typeOf(acDatabaseSQLODBC); mxMessage.ChangeLocaleFormatSetting;
acRepositorySQL.DefaultDatabaseDriver := typeOf(acDatabaseSQLODBC);
PersistenceManager.DefaultRepositoryClass := typeOf(acRepositorySQL); PersistenceManager.DefaultRepositoryClass := typeOf(acRepositorySQL);
PersistenceManager.RegisterClass(typeOf(acPersistentObject), acPersistentObjectClassFactory.Create); PersistenceManager.RegisterClass(typeOf(acPersistentObject), acPersistentObjectClassFactory.Create);
gSQLDialectManager := acSQLDialectManager.Create; if not Assigned(acSQLDialectManager.Instance) then acSQLDialectManager.Instance := acSQLDialectManager.Create;
gSQLDialectManager.RegisterSQLDialect('MS SQL Server', typeOf(acSQLDialectSQLServer), acSQLDialectSQLServerClassFactory.Create); acSQLDialectManager.Instance.RegisterSQLDialect('MS SQL Server', typeOf(acSQLDialectSQLServer), acSQLDialectSQLServerClassFactory.Create);
gSQLDialectManager.RegisterSQLDialect('Oracle', typeOf(acSQLDialectOracle), acSQLDialectOracleClassFactory.Create); acSQLDialectManager.Instance.RegisterSQLDialect('Oracle', typeOf(acSQLDialectOracle), acSQLDialectOracleClassFactory.Create);
gSQLDialectManager.RegisterSQLDialect('DB2', typeOf(acSQLDialectDB2), acSQLDialectDB2ClassFactory.Create); acSQLDialectManager.Instance.RegisterSQLDialect('DB2', typeOf(acSQLDialectDB2), acSQLDialectDB2ClassFactory.Create);
gLinksManager := utLinksManager.Create; if not Assigned(utLinksManager.Instance) then utLinksManager.Instance := utLinksManager.Create;
gLinksManager.RegisterLink('tcp/ip', typeOf(utLinkSock), utLinkSockClassFactory.Create); utLinksManager.Instance.RegisterLink('tcp/ip', typeOf(utLinkSock), utLinkSockClassFactory.Create);
{$IFDEF DARWIN} {$IFDEF DARWIN}
MainPool := Nil; MainPool := Nil;
......
...@@ -98,9 +98,6 @@ ...@@ -98,9 +98,6 @@
<TargetOS Value="win32"/> <TargetOS Value="win32"/>
</CodeGeneration> </CodeGeneration>
<Linking> <Linking>
<Debugging>
<DebugInfoType Value="dsDwarf2Set"/>
</Debugging>
<Options> <Options>
<Win32> <Win32>
<GraphicApplication Value="True"/> <GraphicApplication Value="True"/>
...@@ -171,23 +168,30 @@ ...@@ -171,23 +168,30 @@
</PublishOptions> </PublishOptions>
<RunParams> <RunParams>
<FormatVersion Value="2"/> <FormatVersion Value="2"/>
<Modes Count="0"/>
</RunParams> </RunParams>
<RequiredPackages Count="5"> <RequiredPackages Count="7">
<Item1> <Item1>
<PackageName Value="JvStdCtrlsLazR"/> <PackageName Value="CurioApplication"/>
</Item1> </Item1>
<Item2> <Item2>
<PackageName Value="evoumlintf"/> <PackageName Value="Curio"/>
</Item2> </Item2>
<Item3> <Item3>
<PackageName Value="curio"/> <PackageName Value="CurioPersistence"/>
</Item3> </Item3>
<Item4> <Item4>
<PackageName Value="SynEdit"/> <PackageName Value="CurioModeling"/>
</Item4> </Item4>
<Item5> <Item5>
<PackageName Value="LCL"/> <PackageName Value="evoumlintf"/>
</Item5> </Item5>
<Item6>
<PackageName Value="SynEdit"/>
</Item6>
<Item7>
<PackageName Value="LCL"/>
</Item7>
</RequiredPackages> </RequiredPackages>
<Units Count="32"> <Units Count="32">
<Unit0> <Unit0>
......
...@@ -65,6 +65,8 @@ type ...@@ -65,6 +65,8 @@ type
CheckDBTableNameLength: boolean; CheckDBTableNameLength: boolean;
end; end;
{ TUtil }
TUtil = class(TObject) TUtil = class(TObject)
private private
{ Private declarations } { Private declarations }
...@@ -98,13 +100,15 @@ type ...@@ -98,13 +100,15 @@ type
procedure GerarUnitRegisterModelMappings(piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress); procedure GerarUnitRegisterModelMappings(piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress);
procedure GerarUnitRegisterModelMappings_CSharp(piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress); procedure GerarUnitRegisterModelMappings_CSharp(piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress);
procedure GerarUnitRegisterModelMappings_Java(piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress); procedure GerarUnitRegisterModelMappings_Java(piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress);
function GerarBodyRegisterMappings(piModelMappingsOptions: TModelMappingsOptions; const piInstantCodeConsts: TInstantCodeConsts; piProgress: TFShowProgress; piStartAt: Integer; piEndAt: Integer): string; function GerarBodyRegisterMappings(piModelMappingsOptions: TModelMappingsOptions; const piInstantCodeConsts: TInstantCodeConsts; piProgress: TFShowProgress; piStartAt: Integer; piEndAt: Integer): string;
procedure GerarBodyRegisterMappings_CSharp(piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress; piStartAt: Integer; piEndAt: Integer; piUnitRegisterMappings: PStringWriter); procedure GerarBodyRegisterMappings_CSharp(piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress; piStartAt: Integer; piEndAt: Integer; piUnitRegisterMappings: PStringWriter);
procedure GerarBodyRegisterMappings_Java(piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress; piStartAt: Integer; piEndAt: Integer; piUnitRegisterMappings: PStringWriter); procedure GerarBodyRegisterMappings_Java(piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress; piStartAt: Integer; piEndAt: Integer; piUnitRegisterMappings: PStringWriter);
function GerarBodyRelationsAll(piProgress: TFShowProgress): string;
procedure GerarBodyRelationsAll_CSharp(piProgress: TFShowProgress; piUnitRegisterMappings: PStringWriter); function GerarBodyRelationsAll(piProgress: TFShowProgress; piStartAt: Integer; piEndAt: Integer): string;
procedure GerarBodyRelationsAll_Java(piProgress: TFShowProgress; piUnitRegisterMappings: PStringWriter); procedure GerarBodyRelationsAll_CSharp(piProgress: TFShowProgress; piStartAt: Integer; piEndAt: Integer; piUnitRegisterMappings: PStringWriter);
procedure GerarUnitRelationsAll(piModelMappingsOptions: TModelMappingsOptions; psFileName: string; piProgress: TFShowProgress); procedure GerarBodyRelationsAll_Java(piProgress: TFShowProgress; piStartAt: Integer; piEndAt: Integer; piUnitRegisterMappings: PStringWriter);
function GerarRelationsPartnerShips(piClassTicket: acClassTicket; piInstantCodeClass: TInstantCodeClass): string; function GerarRelationsPartnerShips(piClassTicket: acClassTicket; piInstantCodeClass: TInstantCodeClass): string;
function GerarBodyUseCases(piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress; piStartAt: Integer; piEndAt: Integer; piInstantCodeImplementationSection: TInstantCodeImplementationSection): string; function GerarBodyUseCases(piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress; piStartAt: Integer; piEndAt: Integer; piInstantCodeImplementationSection: TInstantCodeImplementationSection): string;
...@@ -174,8 +178,8 @@ var gStarUMLApp: IStarUMLApplication; ...@@ -174,8 +178,8 @@ var gStarUMLApp: IStarUMLApplication;
implementation implementation
uses dialogs, uDBAttributeParameters, acuUseCaseStateMachine, acuFramework, Forms, DelphiAddInObj, uses dialogs, uDBAttributeParameters, acuFramework, Forms, DelphiAddInObj,
Controls, strutils, utuMessage, utuXSD, acuModelMapping; Controls, strutils, utuMessage, utuXSD, acuModelMapping, acuUseCaseStateMachine;
function InitializeAddIn(AApplicationHandle: THandle; AStarUMLApplication: TObject): Integer; {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} function InitializeAddIn(AApplicationHandle: THandle; AStarUMLApplication: TObject): Integer; {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF}
begin begin
...@@ -422,7 +426,7 @@ function TUtil.SQLScriptCreateDirectTable(piClassToDBMapTicket: acClassToDBMapTi ...@@ -422,7 +426,7 @@ function TUtil.SQLScriptCreateDirectTable(piClassToDBMapTicket: acClassToDBMapTi
for i := piClassDBTicket.ClassTicket.RelationTicketsIn.Count - 1 downto 0 do for i := piClassDBTicket.ClassTicket.RelationTicketsIn.Count - 1 downto 0 do
begin begin
lRelationTicket := acRelationTicket(piClassDBTicket.ClassTicket.RelationTicketsIn.Objects[i]); lRelationTicket := acRelationTicket(piClassDBTicket.ClassTicket.RelationTicketsIn.Objects[i]);
lRelationPersistenceMapTicket := lMetaModelPersistenceMapSQL.RelationsSQLPersistenceMapTicket[lRelationTicket]; lRelationPersistenceMapTicket := lMetaModelPersistenceMapSQL.GetRelationsSQLPersistenceMapTicket(lRelationTicket);
if (lRelationTicket.DestinationMaxMultiplicity <= 1) then if (lRelationTicket.DestinationMaxMultiplicity <= 1) then
if (lRelationPersistenceMapTicket is acDirectDBRelationMapTicket)then if (lRelationPersistenceMapTicket is acDirectDBRelationMapTicket)then
begin begin
...@@ -625,6 +629,31 @@ begin ...@@ -625,6 +629,31 @@ begin
piIndirectDBRelationMapTicket.FKDestinoName]),#13#10); piIndirectDBRelationMapTicket.FKDestinoName]),#13#10);
Result := concat(Result, 'exception when others then raise;', #13#10, 'end;'); Result := concat(Result, 'exception when others then raise;', #13#10, 'end;');
end; end;
if piIndirectDBRelationMapTicket.RelationTicket.OriginMaxMultiplicity <= 1 then
begin
Result := concat(Result, #13#10#13#10);
Result := concat(Result, 'begin execute immediate ', #13#10);
result := concat(result, Format('''CREATE UNIQUE INDEX %s ON %s (%s)'';',
['IU' + StringReplace(piIndirectDBRelationMapTicket.RelationTicket.OriginClassTicket.PersistentObjectClassCode, '-', 'S', [rfReplaceAll]) + piIndirectDBRelationMapTicket.FKOrigemName,
piIndirectDBRelationMapTicket.TableName,
piIndirectDBRelationMapTicket.FKOrigemName]),#13#10);
Result := concat(Result, 'exception when others then raise;', #13#10, 'end;');
end
else
begin
if piIndirectDBRelationMapTicket.RelationTicket.OriginPropertyName = '' then
begin
Result := concat(Result, #13#10#13#10);
Result := concat(Result, 'begin execute immediate ', #13#10);
result := concat(result, Format('''CREATE INDEX %s ON %s (%s)'';',
['IU' + StringReplace(piIndirectDBRelationMapTicket.RelationTicket.OriginClassTicket.PersistentObjectClassCode, '-', 'S', [rfReplaceAll]) + piIndirectDBRelationMapTicket.FKOrigemName,
piIndirectDBRelationMapTicket.TableName,
piIndirectDBRelationMapTicket.FKOrigemName]),#13#10);
Result := concat(Result, 'exception when others then raise;', #13#10, 'end;');
end
end;
if piIndirectDBRelationMapTicket.RelationTicket.DestinationPropertyName <> '' then if piIndirectDBRelationMapTicket.RelationTicket.DestinationPropertyName <> '' then
begin begin
Result := concat(Result, #13#10#13#10); Result := concat(Result, #13#10#13#10);
...@@ -636,10 +665,34 @@ begin ...@@ -636,10 +665,34 @@ begin
piIndirectDBRelationMapTicket.FKOrigemName]),#13#10); piIndirectDBRelationMapTicket.FKOrigemName]),#13#10);
Result := concat(Result, 'exception when others then raise;', #13#10, 'end;'); Result := concat(Result, 'exception when others then raise;', #13#10, 'end;');
end; end;
if piIndirectDBRelationMapTicket.RelationTicket.DestinationMaxMultiplicity <= 1 then
begin
Result := concat(Result, #13#10#13#10);
Result := concat(Result, 'begin execute immediate ', #13#10);
result := concat(result, Format('''CREATE UNIQUE INDEX %s ON %s (%s)'';',
['IU' + StringReplace(piIndirectDBRelationMapTicket.RelationTicket.DestinationClassTicket.PersistentObjectClassCode, '-', 'S', [rfReplaceAll]) + piIndirectDBRelationMapTicket.FKDestinoName,
piIndirectDBRelationMapTicket.TableName,
piIndirectDBRelationMapTicket.FKDestinoName]),#13#10);
Result := concat(Result, 'exception when others then raise;', #13#10, 'end;');
end
else
begin
if piIndirectDBRelationMapTicket.RelationTicket.DestinationPropertyName = '' then
begin
Result := concat(Result, #13#10#13#10);
Result := concat(Result, 'begin execute immediate ', #13#10);
result := concat(result, Format('''CREATE INDEX %s ON %s (%s)'';',
['IU' + StringReplace(piIndirectDBRelationMapTicket.RelationTicket.DestinationClassTicket.PersistentObjectClassCode, '-', 'S', [rfReplaceAll]) + piIndirectDBRelationMapTicket.FKDestinoName,
piIndirectDBRelationMapTicket.TableName,
piIndirectDBRelationMapTicket.FKDestinoName]),#13#10);
Result := concat(Result, 'exception when others then raise;', #13#10, 'end;');
end
end;
end; end;
else else
begin begin
result := concat(result, Format('ALTER TABLE %s ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s(%s);', (* result := concat(result, Format('ALTER TABLE %s ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s(%s);',
[piIndirectDBRelationMapTicket.TableName, [piIndirectDBRelationMapTicket.TableName,
lNomeConstraint, lNomeConstraint,
piIndirectDBRelationMapTicket.FKOrigemName, piIndirectDBRelationMapTicket.FKOrigemName,
...@@ -666,7 +719,28 @@ begin ...@@ -666,7 +719,28 @@ begin
piIndirectDBRelationMapTicket.FKOrigemName, piIndirectDBRelationMapTicket.FKOrigemName,
piIndirectDBRelationMapTicket.FKDestinoName])); piIndirectDBRelationMapTicket.FKDestinoName]));
end; end;
if piIndirectDBRelationMapTicket.RelationTicket.DestinationPropertyName <> '' then *)
if piIndirectDBRelationMapTicket.RelationTicket.OriginMaxMultiplicity <= 1 then
begin
Result := concat(Result, #13#10#13#10);
result := concat(result, Format('CREATE UNIQUE INDEX %s ON %s (%s);',
['IU' + StringReplace(piIndirectDBRelationMapTicket.RelationTicket.OriginClassTicket.PersistentObjectClassCode, '-', 'S', [rfReplaceAll]) + piIndirectDBRelationMapTicket.FKOrigemName,
piIndirectDBRelationMapTicket.TableName,
piIndirectDBRelationMapTicket.FKOrigemName]));
end
else
begin
if piIndirectDBRelationMapTicket.RelationTicket.OriginPropertyName = '' then
begin
Result := concat(Result, #13#10#13#10);
result := concat(result, Format('CREATE INDEX %s ON %s (%s);',
['IU' + StringReplace(piIndirectDBRelationMapTicket.RelationTicket.OriginClassTicket.PersistentObjectClassCode, '-', 'S', [rfReplaceAll]) + piIndirectDBRelationMapTicket.FKOrigemName,
piIndirectDBRelationMapTicket.TableName,
piIndirectDBRelationMapTicket.FKOrigemName]));
end;
end;
(* if piIndirectDBRelationMapTicket.RelationTicket.DestinationPropertyName <> '' then
begin begin
Result := concat(Result, #13#10#13#10); Result := concat(Result, #13#10#13#10);
result := concat(result, Format('CREATE UNIQUE INDEX %s ON %s (%s, %s);', result := concat(result, Format('CREATE UNIQUE INDEX %s ON %s (%s, %s);',
...@@ -675,6 +749,27 @@ begin ...@@ -675,6 +749,27 @@ begin
piIndirectDBRelationMapTicket.FKDestinoName, piIndirectDBRelationMapTicket.FKDestinoName,
piIndirectDBRelationMapTicket.FKOrigemName])); piIndirectDBRelationMapTicket.FKOrigemName]));
end; end;
*)
if piIndirectDBRelationMapTicket.RelationTicket.DestinationMaxMultiplicity <= 1 then
begin
Result := concat(Result, #13#10#13#10);
result := concat(result, Format('CREATE UNIQUE INDEX %s ON %s (%s);',
['IU' + StringReplace(piIndirectDBRelationMapTicket.RelationTicket.DestinationClassTicket.PersistentObjectClassCode, '-', 'S', [rfReplaceAll]) + piIndirectDBRelationMapTicket.FKDestinoName,
piIndirectDBRelationMapTicket.TableName,
piIndirectDBRelationMapTicket.FKDestinoName]));
end
else
begin
if piIndirectDBRelationMapTicket.RelationTicket.DestinationPropertyName = '' then
begin
Result := concat(Result, #13#10#13#10);
result := concat(result, Format('CREATE INDEX %s ON %s (%s);',
['IU' + StringReplace(piIndirectDBRelationMapTicket.RelationTicket.DestinationClassTicket.PersistentObjectClassCode, '-', 'S', [rfReplaceAll]) + piIndirectDBRelationMapTicket.FKDestinoName,
piIndirectDBRelationMapTicket.TableName,
piIndirectDBRelationMapTicket.FKDestinoName]));
end;
end;
end; end;
end; end;
end; end;
...@@ -741,7 +836,7 @@ begin ...@@ -741,7 +836,7 @@ begin
for i := piClassToDBMapTicket.ClassTicket.RelationTicketsIn.Count - 1 downto 0 do for i := piClassToDBMapTicket.ClassTicket.RelationTicketsIn.Count - 1 downto 0 do
begin begin
lRelationTicket := acRelationTicket(piClassToDBMapTicket.ClassTicket.RelationTicketsIn.Objects[i]); lRelationTicket := acRelationTicket(piClassToDBMapTicket.ClassTicket.RelationTicketsIn.Objects[i]);
lRelationPersistenceMapTicket := lMetaModelPersistenceMapSQL.RelationsSQLPersistenceMapTicket[lRelationTicket]; lRelationPersistenceMapTicket := lMetaModelPersistenceMapSQL.GetRelationsSQLPersistenceMapTicket(lRelationTicket);
if (lRelationTicket.DestinationMaxMultiplicity <= 1) then if (lRelationTicket.DestinationMaxMultiplicity <= 1) then
begin begin
if (lRelationPersistenceMapTicket is acDirectDBRelationMapTicket)then if (lRelationPersistenceMapTicket is acDirectDBRelationMapTicket)then
...@@ -970,7 +1065,7 @@ begin ...@@ -970,7 +1065,7 @@ begin
for i := piClassToDBMapTicket.ClassTicket.RelationTicketsIn.Count - 1 downto 0 do for i := piClassToDBMapTicket.ClassTicket.RelationTicketsIn.Count - 1 downto 0 do
begin begin
lRelationTicket := acRelationTicket(piClassToDBMapTicket.ClassTicket.RelationTicketsIn.Objects[i]); lRelationTicket := acRelationTicket(piClassToDBMapTicket.ClassTicket.RelationTicketsIn.Objects[i]);
lRelationPersistenceMapTicket := lMetaModelPersistenceMapSQL.RelationsSQLPersistenceMapTicket[lRelationTicket]; lRelationPersistenceMapTicket := lMetaModelPersistenceMapSQL.GetRelationsSQLPersistenceMapTicket(lRelationTicket);
if (lRelationTicket.DestinationMaxMultiplicity <= 1) then if (lRelationTicket.DestinationMaxMultiplicity <= 1) then
begin begin
if (lRelationPersistenceMapTicket is acDirectDBRelationMapTicket)then if (lRelationPersistenceMapTicket is acDirectDBRelationMapTicket)then
...@@ -1232,7 +1327,7 @@ procedure TUtil.AlimentaMetaModelStateMachine(piRootUseCase: IUMLUseCase; piStar ...@@ -1232,7 +1327,7 @@ procedure TUtil.AlimentaMetaModelStateMachine(piRootUseCase: IUMLUseCase; piStar
raise Exception.Create(Format('Need to define tagged value "Code" for UseCase "%s" in DBUseCaseMap Tag Definition.',[(lUCStateMachine.Context as IUMLUseCase).Pathname])); raise Exception.Create(Format('Need to define tagged value "Code" for UseCase "%s" in DBUseCaseMap Tag Definition.',[(lUCStateMachine.Context as IUMLUseCase).Pathname]));
end; end;
lUseCaseTicket := MetaModel.UseCaseTicketByCode[lUseCaseCode]; lUseCaseTicket := MetaModel.GetUseCaseTicketByCode(lUseCaseCode);
if not Assigned(lUseCaseTicket) then if not Assigned(lUseCaseTicket) then
begin begin
raise Exception.Create(Format('UseCaseTicket not found for UseCase "%s" in DBUseCaseMap Tag Definition.',[(lUCStateMachine.Context as IUMLUseCase).Pathname + ' ('+lUseCaseCode+')'])); raise Exception.Create(Format('UseCaseTicket not found for UseCase "%s" in DBUseCaseMap Tag Definition.',[(lUCStateMachine.Context as IUMLUseCase).Pathname + ' ('+lUseCaseCode+')']));
...@@ -2202,7 +2297,7 @@ begin ...@@ -2202,7 +2297,7 @@ begin
raise Exception.Create(Format('Need to define tagged value "Code" for UseCase "%s" in DBUseCaseMap Tag Definition.',[lUMLChildUseCase.Pathname])); raise Exception.Create(Format('Need to define tagged value "Code" for UseCase "%s" in DBUseCaseMap Tag Definition.',[lUMLChildUseCase.Pathname]));
end; end;
lUseCaseTicket := poMetaModel.UseCaseTicketByCode[lUseCaseCode]; lUseCaseTicket := poMetaModel.GetUseCaseTicketByCode(lUseCaseCode);
if Assigned(lUseCaseTicket) then if Assigned(lUseCaseTicket) then
begin begin
gStarUMLApp.SelectInModelExplorer(lUMLChildUseCase); gStarUMLApp.SelectInModelExplorer(lUMLChildUseCase);
...@@ -2285,7 +2380,7 @@ begin ...@@ -2285,7 +2380,7 @@ begin
raise Exception.Create(Format('Need to define tagged value "Code" for UseCase "%s" in DBUseCaseMap Tag Definition.',[lUMLChildUseCase.Pathname])); raise Exception.Create(Format('Need to define tagged value "Code" for UseCase "%s" in DBUseCaseMap Tag Definition.',[lUMLChildUseCase.Pathname]));
end; end;
lUseCaseTicket := poMetaModel.UseCaseTicketByCode[lUseCaseCode]; lUseCaseTicket := poMetaModel.GetUseCaseTicketByCode(lUseCaseCode);
// lUseCaseTicket := poMetaModel.NewUseCaseTicket(lUseCaseCode, nil, lUseCaseIsAuditable); // lUseCaseTicket := poMetaModel.NewUseCaseTicket(lUseCaseCode, nil, lUseCaseIsAuditable);
// lUseCaseTicket.Name := lUMLChildUseCase.Name; // lUseCaseTicket.Name := lUMLChildUseCase.Name;
// lUseCaseTicket.InheritsFrom := lUMLChildUseCase.GetGeneralizationAt(0).Parent.Name; // lUseCaseTicket.InheritsFrom := lUMLChildUseCase.GetGeneralizationAt(0).Parent.Name;
...@@ -2365,9 +2460,6 @@ begin ...@@ -2365,9 +2460,6 @@ begin
if lsTypeColumnName <> '' then if lsTypeColumnName <> '' then
sRegisterMapping := sRegisterMapping + 'lClassToDBMapTicket.TypeColumnName := '''+ lsTypeColumnName +''';' + #13#10; sRegisterMapping := sRegisterMapping + 'lClassToDBMapTicket.TypeColumnName := '''+ lsTypeColumnName +''';' + #13#10;
if lClassTicket.Attributes.Count > 0 then
sRegisterMapping := sRegisterMapping + '// registrando os atributos da classe' + #13#10;
//Percorre atributos da classe //Percorre atributos da classe
for index := 0 to lClassTicket.Attributes.Count - 1 do for index := 0 to lClassTicket.Attributes.Count - 1 do
begin begin
...@@ -2440,7 +2532,9 @@ begin ...@@ -2440,7 +2532,9 @@ begin
result := sRegisterMapping; result := sRegisterMapping;
end; end;
procedure TUtil.GerarBodyRegisterMappings_CSharp(piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress; piStartAt, piEndAt: Integer; piUnitRegisterMappings: PStringWriter); procedure TUtil.GerarBodyRegisterMappings_CSharp(
piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress;
piStartAt: Integer; piEndAt: Integer; piUnitRegisterMappings: PStringWriter);
var var
lEnum: acEnumerator; lEnum: acEnumerator;
lClassTicket: acClassTicket; lClassTicket: acClassTicket;
...@@ -2497,9 +2591,6 @@ begin ...@@ -2497,9 +2591,6 @@ begin
if lsTypeColumnName <> '' then if lsTypeColumnName <> '' then
piUnitRegisterMappings.WriteLine('lClassToDBMapTicket.TypeColumnName = "'+ lsTypeColumnName +'";'); piUnitRegisterMappings.WriteLine('lClassToDBMapTicket.TypeColumnName = "'+ lsTypeColumnName +'";');
if lClassTicket.Attributes.Count > 0 then
piUnitRegisterMappings.WriteLine('// registrando os atributos da classe');
//Percorre atributos da classe //Percorre atributos da classe
for index := 0 to lClassTicket.Attributes.Count - 1 do for index := 0 to lClassTicket.Attributes.Count - 1 do
begin begin
...@@ -2551,8 +2642,9 @@ begin ...@@ -2551,8 +2642,9 @@ begin
piUnitRegisterMappings.Outdent(); piUnitRegisterMappings.Outdent();
end; end;
procedure TUtil.GerarBodyRegisterMappings_Java(piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress; piStartAt, piEndAt: Integer; procedure TUtil.GerarBodyRegisterMappings_Java(
piUnitRegisterMappings: PStringWriter); piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress;
piStartAt: Integer; piEndAt: Integer; piUnitRegisterMappings: PStringWriter);
var var
lEnum: acEnumerator; lEnum: acEnumerator;
lClassTicket: acClassTicket; lClassTicket: acClassTicket;
...@@ -2610,9 +2702,6 @@ begin ...@@ -2610,9 +2702,6 @@ begin
if lsTypeColumnName <> '' then if lsTypeColumnName <> '' then
piUnitRegisterMappings.WriteLine('lClassToDBMapTicket.setTypeColumnName("'+ lsTypeColumnName +'");'); piUnitRegisterMappings.WriteLine('lClassToDBMapTicket.setTypeColumnName("'+ lsTypeColumnName +'");');
if lClassTicket.Attributes.Count > 0 then
piUnitRegisterMappings.WriteLine('// registrando os atributos da classe');
//Percorre atributos da classe //Percorre atributos da classe
for index := 0 to lClassTicket.Attributes.Count - 1 do for index := 0 to lClassTicket.Attributes.Count - 1 do
begin begin
...@@ -2668,6 +2757,7 @@ procedure TUtil.GerarUnitRegisterModelMappings(piModelMappingsOptions: TModelMap ...@@ -2668,6 +2757,7 @@ procedure TUtil.GerarUnitRegisterModelMappings(piModelMappingsOptions: TModelMap
const const
MAX_UC = 100; MAX_UC = 100;
MAX_CLASS = 200; MAX_CLASS = 200;
MAX_RELATIONS = 200;
var var
lInstantCodeModule: TInstantCodeModule; lInstantCodeModule: TInstantCodeModule;
lInstantCodeProc: TInstantCodeProc; lInstantCodeProc: TInstantCodeProc;
...@@ -2677,6 +2767,7 @@ var ...@@ -2677,6 +2767,7 @@ var
lI, lI,
lTotalGroups: Integer; lTotalGroups: Integer;
lRegisterUseCasesCall, lRegisterUseCasesCall,
lRegisterRelationsCall,
lRegisterClassCall: string; lRegisterClassCall: string;
lInstantCodeConsts: TInstantCodeConsts; lInstantCodeConsts: TInstantCodeConsts;
// lInstantCodeWriter: TInstantCodeWriter; // lInstantCodeWriter: TInstantCodeWriter;
...@@ -2724,17 +2815,26 @@ begin ...@@ -2724,17 +2815,26 @@ begin
end; end;
//PROCEDURE RegisterClassRelationTickets ////////////////////////////////////////// lTotalGroups := (MetaModel.RelationTickets.Count div MAX_RELATIONS);
lInstantCodeProc := lInstantCodeModule.ImplementationSection.AddProc; if (MetaModel.RelationTickets.Count mod MAX_RELATIONS) <> 0 then Inc(lTotalGroups);
lInstantCodeProc.Name := 'RegisterClassRelationTickets';
lInstantCodeProc.Parameters.AddParameter('piMetaModel', 'acMetaModel', []); for lI := 0 to lTotalGroups - 1 do
lInstantCodeProc.Parameters.AddParameter('piMetaModelPersistenceMap', 'acMetaModelPersistenceMapSQL', []); begin
lInstantCodeBody := lInstantCodeProc.Body; //PROCEDURE RegisterClassRelationTickets //////////////////////////////////////////
//class lInstantCodeProc := lInstantCodeModule.ImplementationSection.AddProc;
lInstantCodeVar := lInstantCodeBody.Vars.Add; lInstantCodeProc.Name := 'RegisterClassRelationTickets' + IntToStr(lI + 1);
lInstantCodeVar.Name := 'lRelationTicket'; lInstantCodeProc.Parameters.AddParameter('piMetaModel', 'acMetaModel', []);
lInstantCodeVar.TypeName := 'acRelationTicket'; lInstantCodeProc.Parameters.AddParameter('piMetaModelPersistenceMap', 'acMetaModelPersistenceMapSQL', []);
lInstantCodeBody.Text := GerarBodyRelationsAll(piProgress); lInstantCodeBody := lInstantCodeProc.Body;
//class
lInstantCodeVar := lInstantCodeBody.Vars.Add;
lInstantCodeVar.Name := 'lRelationTicket';
lInstantCodeVar.TypeName := 'acRelationTicket';
lInstantCodeBody.Text := GerarBodyRelationsAll(piProgress, lI*(MAX_RELATIONS) + 1, (lI + 1)*MAX_RELATIONS);
if (lRegisterRelationsCall <> '') then lRegisterRelationsCall := concat(lRegisterRelationsCall, #13#10);
lRegisterRelationsCall := concat(lRegisterRelationsCall, 'RegisterClassRelationTickets', IntToStr(lI + 1), '(piMetaModelPersistenceMap.MetaModel, piMetaModelPersistenceMap)', '{', IntToStr(lI*(MAX_RELATIONS) + 1) , ' - ', IntToStr( (lI + 1)*MAX_RELATIONS ), '};' );
end;
lTotalGroups := (MetaModel.UseCaseTickets.Count div MAX_UC); lTotalGroups := (MetaModel.UseCaseTickets.Count div MAX_UC);
if (MetaModel.UseCaseTickets.Count mod MAX_UC) <> 0 then Inc(lTotalGroups); if (MetaModel.UseCaseTickets.Count mod MAX_UC) <> 0 then Inc(lTotalGroups);
...@@ -2786,7 +2886,7 @@ begin ...@@ -2786,7 +2886,7 @@ begin
lInstantCodeBody := lInstantCodeProc.Body; lInstantCodeBody := lInstantCodeProc.Body;
lInstantCodeBody.Text := concat(' ', lRegisterClassCall, #13#10, lInstantCodeBody.Text := concat(' ', lRegisterClassCall, #13#10,
' ', 'RegisterClassRelationTickets(piMetaModelPersistenceMap.MetaModel, piMetaModelPersistenceMap);',#13#10, ' ', lRegisterRelationsCall,#13#10,
' ', lRegisterUseCasesCall); ' ', lRegisterUseCasesCall);
// Gerao de arquivo // Gerao de arquivo
...@@ -2800,11 +2900,14 @@ procedure TUtil.GerarUnitRegisterModelMappings_CSharp(piModelMappingsOptions: TM ...@@ -2800,11 +2900,14 @@ procedure TUtil.GerarUnitRegisterModelMappings_CSharp(piModelMappingsOptions: TM
const const
MAX_UC = 100; MAX_UC = 100;
MAX_CLASS = 200; MAX_CLASS = 200;
MAX_RELATIONS = 200;
var var
lProcBody: String; lProcBody: String;
lI, lI,
lTotalGroups: Integer; lTotalGroups: Integer;
lRegisterUseCasesCall, lRegisterUseCasesCall,
lRegisterRelationsCall,
lRegisterClassCall: PStringWriter; lRegisterClassCall: PStringWriter;
lArquivoRegisterModelMappings: PStringWriter; lArquivoRegisterModelMappings: PStringWriter;
...@@ -2813,17 +2916,14 @@ begin ...@@ -2813,17 +2916,14 @@ begin
lArquivoRegisterModelMappings := PStringWriter.Create(); lArquivoRegisterModelMappings := PStringWriter.Create();
lRegisterUseCasesCall := PStringWriter.Create(); lRegisterUseCasesCall := PStringWriter.Create();
lRegisterClassCall := PStringWriter.Create(); lRegisterClassCall := PStringWriter.Create();
try lRegisterRelationsCall := PStringWriter.Create();
lArquivoRegisterModelMappings.WriteLine('using acuFramework;'); try
lArquivoRegisterModelMappings.WriteLine('using acuRepositorySQL;');
lArquivoRegisterModelMappings.WriteLine('using System;'); lArquivoRegisterModelMappings.WriteLine('using System;');
lArquivoRegisterModelMappings.WriteLine('using acuRepositorySQL;');
lArquivoRegisterModelMappings.WriteLine('using acuModel;'); lArquivoRegisterModelMappings.WriteLine('using acuModel;');
lArquivoRegisterModelMappings.WriteLine('using utuStateMachine;'); lArquivoRegisterModelMappings.WriteLine('using utuStateMachine;');
lArquivoRegisterModelMappings.WriteLine('using acuUseCaseStateMachine;'); lArquivoRegisterModelMappings.WriteLine('using acuUseCaseStateMachine;');
lArquivoRegisterModelMappings.WriteLine(); lArquivoRegisterModelMappings.WriteLine();
lArquivoRegisterModelMappings.WriteLine('namespace acuRegisterModelMappings {');
lArquivoRegisterModelMappings.WriteLine();
lArquivoRegisterModelMappings.Indent();
lArquivoRegisterModelMappings.WriteLine('public sealed class acuRegisterModelMappings {'); lArquivoRegisterModelMappings.WriteLine('public sealed class acuRegisterModelMappings {');
lArquivoRegisterModelMappings.WriteLine(); lArquivoRegisterModelMappings.WriteLine();
...@@ -2846,10 +2946,18 @@ begin ...@@ -2846,10 +2946,18 @@ begin
end; end;
//PROCEDURE RegisterClassRelationTickets ////////////////////////////////////////// //PROCEDURE RegisterClassRelationTickets //////////////////////////////////////////
lTotalGroups := (MetaModel.RelationTickets.Count div MAX_RELATIONS);
if (MetaModel.RelationTickets.Count mod MAX_RELATIONS) <> 0 then Inc(lTotalGroups);
lArquivoRegisterModelMappings.WriteLine(); lArquivoRegisterModelMappings.WriteLine();
lArquivoRegisterModelMappings.WriteLine('internal static void RegisterClassRelationTickets(acMetaModel piMetaModel, acMetaModelPersistenceMapSQL piMetaModelPersistenceMap) {'); for lI := 0 to lTotalGroups - 1 do
GerarBodyRelationsAll_CSharp(piProgress, lArquivoRegisterModelMappings); begin
lArquivoRegisterModelMappings.WriteLine('}'); lArquivoRegisterModelMappings.WriteLine();
lArquivoRegisterModelMappings.WriteLine('internal static void RegisterClassRelationTickets' + IntToStr(lI + 1) + '(acMetaModel piMetaModel, acMetaModelPersistenceMapSQL piMetaModelPersistenceMap) {');
GerarBodyRelationsAll_CSharp(piProgress, lI*(MAX_RELATIONS) + 1, (lI + 1)*MAX_RELATIONS, lArquivoRegisterModelMappings);
lArquivoRegisterModelMappings.WriteLine('}');
lRegisterRelationsCall.WriteLine('RegisterClassRelationTickets' + IntToStr(lI + 1) + '(piMetaModelPersistenceMap.MetaModel, piMetaModelPersistenceMap);' );
end;
lTotalGroups := (MetaModel.UseCaseTickets.Count div MAX_UC); lTotalGroups := (MetaModel.UseCaseTickets.Count div MAX_UC);
if (MetaModel.UseCaseTickets.Count mod MAX_UC) <> 0 then Inc(lTotalGroups); if (MetaModel.UseCaseTickets.Count mod MAX_UC) <> 0 then Inc(lTotalGroups);
...@@ -2869,10 +2977,10 @@ begin ...@@ -2869,10 +2977,10 @@ begin
//PROCEDURE RegisterModelMappings ////////////////////////////////////////// //PROCEDURE RegisterModelMappings //////////////////////////////////////////
lArquivoRegisterModelMappings.WriteLine(); lArquivoRegisterModelMappings.WriteLine();
lArquivoRegisterModelMappings.WriteLine('internal static void RegisterModelMappings(acMetaModelPersistenceMapSQL piMetaModelPersistenceMap) {'); lArquivoRegisterModelMappings.WriteLine('public static void RegisterModelMappings(acMetaModelPersistenceMapSQL piMetaModelPersistenceMap) {');
lArquivoRegisterModelMappings.Indent(); lArquivoRegisterModelMappings.Indent();
lArquivoRegisterModelMappings.Append(lRegisterClassCall); lArquivoRegisterModelMappings.Append(lRegisterClassCall);
lArquivoRegisterModelMappings.WriteLine('RegisterClassRelationTickets(piMetaModelPersistenceMap.MetaModel, piMetaModelPersistenceMap);'); lArquivoRegisterModelMappings.Append(lRegisterRelationsCall);
lArquivoRegisterModelMappings.Append(lRegisterUseCasesCall); lArquivoRegisterModelMappings.Append(lRegisterUseCasesCall);
lArquivoRegisterModelMappings.Outdent(); lArquivoRegisterModelMappings.Outdent();
lArquivoRegisterModelMappings.WriteLine('}'); lArquivoRegisterModelMappings.WriteLine('}');
...@@ -2881,9 +2989,6 @@ begin ...@@ -2881,9 +2989,6 @@ begin
lArquivoRegisterModelMappings.Outdent(); lArquivoRegisterModelMappings.Outdent();
lArquivoRegisterModelMappings.WriteLine(); lArquivoRegisterModelMappings.WriteLine();
lArquivoRegisterModelMappings.WriteLine('}'); lArquivoRegisterModelMappings.WriteLine('}');
lArquivoRegisterModelMappings.Outdent();
lArquivoRegisterModelMappings.WriteLine();
lArquivoRegisterModelMappings.WriteLine('}');
// Gerao de arquivo // Gerao de arquivo
if assigned(piProgress) then piProgress.ChangeMessage('Saving file "'+ piModelMappingsOptions.FileName +'"...'); if assigned(piProgress) then piProgress.ChangeMessage('Saving file "'+ piModelMappingsOptions.FileName +'"...');
...@@ -2891,6 +2996,9 @@ begin ...@@ -2891,6 +2996,9 @@ begin
finally finally
lArquivoRegisterModelMappings.Free; lArquivoRegisterModelMappings.Free;
lRegisterUseCasesCall.Free;
lRegisterClassCall.Free;
lRegisterRelationsCall.Free;
end; end;
end; end;
...@@ -2898,11 +3006,13 @@ procedure TUtil.GerarUnitRegisterModelMappings_Java(piModelMappingsOptions: TMod ...@@ -2898,11 +3006,13 @@ procedure TUtil.GerarUnitRegisterModelMappings_Java(piModelMappingsOptions: TMod
const const
MAX_UC = 100; MAX_UC = 100;
MAX_CLASS = 200; MAX_CLASS = 200;
MAX_RELATIONS = 200;
var var
lProcBody: String; lProcBody: String;
lI, lI,
lTotalGroups: Integer; lTotalGroups: Integer;
lRegisterUseCasesCall, lRegisterUseCasesCall,
lRegisterRelationsCall,
lRegisterClassCall: PStringWriter; lRegisterClassCall: PStringWriter;
lArquivoRegisterModelMappings: PStringWriter; lArquivoRegisterModelMappings: PStringWriter;
...@@ -2911,11 +3021,12 @@ begin ...@@ -2911,11 +3021,12 @@ begin
lArquivoRegisterModelMappings := PStringWriter.Create(); lArquivoRegisterModelMappings := PStringWriter.Create();
lRegisterUseCasesCall := PStringWriter.Create(); lRegisterUseCasesCall := PStringWriter.Create();
lRegisterClassCall := PStringWriter.Create(); lRegisterClassCall := PStringWriter.Create();
lRegisterRelationsCall := PStringWriter.Create();
try try
lArquivoRegisterModelMappings.WriteLine('import acurepositorysql.*;'); lArquivoRegisterModelMappings.WriteLine('import acuRepositorySQL.*;');
lArquivoRegisterModelMappings.WriteLine('import acumodel.*;'); lArquivoRegisterModelMappings.WriteLine('import acuModel.*;');
lArquivoRegisterModelMappings.WriteLine('import utustatemachine.*;'); lArquivoRegisterModelMappings.WriteLine('import utuStateMachine.*;');
lArquivoRegisterModelMappings.WriteLine('import acuusecasestatemachine.*;'); lArquivoRegisterModelMappings.WriteLine('import acuUseCaseStateMachine.*;');
lArquivoRegisterModelMappings.WriteLine(); lArquivoRegisterModelMappings.WriteLine();
lArquivoRegisterModelMappings.Indent(); lArquivoRegisterModelMappings.Indent();
...@@ -2937,10 +3048,18 @@ begin ...@@ -2937,10 +3048,18 @@ begin
end; end;
//PROCEDURE RegisterClassRelationTickets ////////////////////////////////////////// //PROCEDURE RegisterClassRelationTickets //////////////////////////////////////////
lTotalGroups := (MetaModel.RelationTickets.Count div MAX_RELATIONS);
if (MetaModel.RelationTickets.Count mod MAX_RELATIONS) <> 0 then Inc(lTotalGroups);
lArquivoRegisterModelMappings.WriteLine(); lArquivoRegisterModelMappings.WriteLine();
lArquivoRegisterModelMappings.WriteLine('static void RegisterClassRelationTickets(acMetaModel piMetaModel, acMetaModelPersistenceMapSQL piMetaModelPersistenceMap) {'); for lI := 0 to lTotalGroups - 1 do
GerarBodyRelationsAll_Java(piProgress, lArquivoRegisterModelMappings); begin
lArquivoRegisterModelMappings.WriteLine('}'); lArquivoRegisterModelMappings.WriteLine();
lArquivoRegisterModelMappings.WriteLine('static void RegisterClassRelationTickets' + IntToStr(lI + 1) + '(acMetaModel piMetaModel, acMetaModelPersistenceMapSQL piMetaModelPersistenceMap) {');
GerarBodyRelationsAll_Java(piProgress, lI*(MAX_RELATIONS) + 1, (lI + 1)*MAX_RELATIONS, lArquivoRegisterModelMappings);
lArquivoRegisterModelMappings.WriteLine('}');
lRegisterRelationsCall.WriteLine('RegisterClassRelationTickets' + IntToStr(lI + 1) + '(piMetaModelPersistenceMap.getMetaModel(), piMetaModelPersistenceMap);' );
end;
lTotalGroups := (MetaModel.UseCaseTickets.Count div MAX_UC); lTotalGroups := (MetaModel.UseCaseTickets.Count div MAX_UC);
if (MetaModel.UseCaseTickets.Count mod MAX_UC) <> 0 then Inc(lTotalGroups); if (MetaModel.UseCaseTickets.Count mod MAX_UC) <> 0 then Inc(lTotalGroups);
...@@ -2960,10 +3079,10 @@ begin ...@@ -2960,10 +3079,10 @@ begin
//PROCEDURE RegisterModelMappings ////////////////////////////////////////// //PROCEDURE RegisterModelMappings //////////////////////////////////////////
lArquivoRegisterModelMappings.WriteLine(); lArquivoRegisterModelMappings.WriteLine();
lArquivoRegisterModelMappings.WriteLine('static void RegisterModelMappings(acMetaModelPersistenceMapSQL piMetaModelPersistenceMap) {'); lArquivoRegisterModelMappings.WriteLine('public static void RegisterModelMappings(acMetaModelPersistenceMapSQL piMetaModelPersistenceMap) {');
lArquivoRegisterModelMappings.Indent(); lArquivoRegisterModelMappings.Indent();
lArquivoRegisterModelMappings.Append(lRegisterClassCall); lArquivoRegisterModelMappings.Append(lRegisterClassCall);
lArquivoRegisterModelMappings.WriteLine('RegisterClassRelationTickets(piMetaModelPersistenceMap.getMetaModel(), piMetaModelPersistenceMap);'); lArquivoRegisterModelMappings.Append(lRegisterRelationsCall);
lArquivoRegisterModelMappings.Append(lRegisterUseCasesCall); lArquivoRegisterModelMappings.Append(lRegisterUseCasesCall);
lArquivoRegisterModelMappings.Outdent(); lArquivoRegisterModelMappings.Outdent();
lArquivoRegisterModelMappings.WriteLine('}'); lArquivoRegisterModelMappings.WriteLine('}');
...@@ -2979,10 +3098,13 @@ begin ...@@ -2979,10 +3098,13 @@ begin
finally finally
lArquivoRegisterModelMappings.Free; lArquivoRegisterModelMappings.Free;
lRegisterUseCasesCall.Free;
lRegisterClassCall.Free;
lRegisterRelationsCall.Free;
end; end;
end; end;
function TUtil.GerarBodyRelationsAll(piProgress: TFShowProgress): string; function TUtil.GerarBodyRelationsAll(piProgress: TFShowProgress; piStartAt: Integer; piEndAt: Integer): string;
var lEnumRelation: acEnumerator; var lEnumRelation: acEnumerator;
lRelationTicket: acRelationTicket; lRelationTicket: acRelationTicket;
lClassTicketOrigem, lClassTicketDestino: acClassTicket; lClassTicketOrigem, lClassTicketDestino: acClassTicket;
...@@ -2991,116 +3113,119 @@ var lEnumRelation: acEnumerator; ...@@ -2991,116 +3113,119 @@ var lEnumRelation: acEnumerator;
lRelationSQLPersistenceMapTicket: acRelationSQLPersistenceMapTicket; lRelationSQLPersistenceMapTicket: acRelationSQLPersistenceMapTicket;
bIndireta: boolean; bIndireta: boolean;
lMultiplicityOrMax, lMultiplicityDsMax, lMultiplicityOrMin, lMultiplicityDsMin: integer; lMultiplicityOrMax, lMultiplicityDsMax, lMultiplicityOrMin, lMultiplicityDsMin: integer;
li: Integer;
begin begin
if assigned(piProgress) then piProgress.ChangeMessage('Generating model mappings relation tickets...', 0, MetaModel.RelationTickets.Count); li := 1;
if assigned(piProgress) then piProgress.ChangeMessage(Format('Generating model mappings relation tickets... (%d of %d relations)', [piStartAt + piEndAt - 1, MetaModel.RelationTickets.Count]));
lEnumRelation := MetaModel.RelationTickets.GetEnumerator; lEnumRelation := MetaModel.RelationTickets.GetEnumerator;
try try
while not lEnumRelation.EOL do while (not lEnumRelation.EOL) and (li <= piEndAt) do
begin begin
if assigned(piProgress) then piProgress.Inc; if (li >= piStartAt) then
lRelationTicket := acRelationTicket(lEnumRelation.Current); begin
// Obtm classes origem e destino. No est sendo considerada associaao ternria. if assigned(piProgress) then piProgress.Inc;
lClassTicketOrigem := lRelationTicket.OriginClassTicket; lRelationTicket := acRelationTicket(lEnumRelation.Current);
lClassTicketDestino := lRelationTicket.DestinationClassTicket; // Obtm classes origem e destino. No est sendo considerada associaao ternria.
lClassTicketOrigem := lRelationTicket.OriginClassTicket;
lMultiplicityOrMax := lRelationTicket.OriginMaxMultiplicity; lClassTicketDestino := lRelationTicket.DestinationClassTicket;
lMultiplicityDsMax := lRelationTicket.DestinationMaxMultiplicity;
lMultiplicityOrMax := lRelationTicket.OriginMaxMultiplicity;
lMultiplicityDsMax := lRelationTicket.DestinationMaxMultiplicity;
lMultiplicityOrMin := lRelationTicket.OriginMinMultiplicity;
lMultiplicityDsMin := lRelationTicket.DestinationMinMultiplicity;
case lRelationTicket.OriginAggregation of
acPropertyAggregation.pvNone: lsOrAggregation := 'acPropertyAggregation.pvNone';
acPropertyAggregation.pvAggregate: lsOrAggregation := 'acPropertyAggregation.pvAggregate';
acPropertyAggregation.pvComposite: lsOrAggregation := 'acPropertyAggregation.pvComposite';
end;
lMultiplicityOrMin := lRelationTicket.OriginMinMultiplicity; case lRelationTicket.DestinationAggregation of
lMultiplicityDsMin := lRelationTicket.DestinationMinMultiplicity; acPropertyAggregation.pvNone: lsDsAggregation := 'acPropertyAggregation.pvNone';
acPropertyAggregation.pvAggregate: lsDsAggregation := 'acPropertyAggregation.pvAggregate';
acPropertyAggregation.pvComposite: lsDsAggregation := 'acPropertyAggregation.pvComposite';
end;
case lRelationTicket.OriginAggregation of sRelationsAll := sRelationsAll + 'lRelationTicket := piMetaModel.NewRelationRegisterTicket(';
acPropertyAggregation.pvNone: lsOrAggregation := 'acPropertyAggregation.pvNone'; sRelationsAll := sRelationsAll + '''' + lClassTicketOrigem.PersistentObjectClassName + '''' + ', ' + '''' + lRelationTicket.OriginPropertyName + '''' + ', '+IntToStr(lRelationTicket.OriginPropertyindex)+', ' + inttostr(lMultiplicityOrMin) + ', ' + inttostr(lMultiplicityOrMax) + ', ' + lsOrAggregation;
acPropertyAggregation.pvAggregate: lsOrAggregation := 'acPropertyAggregation.pvAggregate'; sRelationsAll := sRelationsAll + ', ' + '''' + lRelationTicket.Name + '''' + ', ';
acPropertyAggregation.pvComposite: lsOrAggregation := 'acPropertyAggregation.pvComposite'; sRelationsAll := sRelationsAll + '''' + lClassTicketDestino.PersistentObjectClassName + '''' + ', ' + '''' + lRelationTicket.DestinationPropertyName + '''' + ', '+IntToStr(lRelationTicket.DestinationPropertyIndex)+', ' + inttostr(lMultiplicityDsMin) + ', ' + inttostr(lMultiplicityDsMax) + ', ' + lsDsAggregation;
end; sRelationsAll := sRelationsAll + ', ' + BoolToStr(lRelationTicket.Bidirectional, true);
sRelationsAll := sRelationsAll + ', ' + BoolToStr(lRelationTicket.IsAuditable, true);
sRelationsAll := sRelationsAll + ');' + #13#10;
if lRelationTicket.DisplayName <> lRelationTicket.Name then
sRelationsAll := sRelationsAll + 'lRelationTicket.DisplayName := ' + QuotedStr(lRelationTicket.DisplayName) + ';' + #13#10;
if lRelationTicket.OriginDisplayName <> '' then
sRelationsAll := sRelationsAll + 'lRelationTicket.OriginDisplayName := ' + QuotedStr(lRelationTicket.OriginDisplayName) + ';' + #13#10;
if lRelationTicket.DestinationDisplayName <> '' then
sRelationsAll := sRelationsAll + 'lRelationTicket.DestinationDisplayName := ' + QuotedStr(lRelationTicket.DestinationDisplayName) + ';' + #13#10;
// ATRIBUTOS ESTENDIDOS
// Obtm classe responsvel por mapeamento OO-DB para Relacionamento
lRelationSQLPersistenceMapTicket := fMetaModelPersistenceMap.GetRelationsSQLPersistenceMapTicket(lRelationTicket);
if (lRelationSQLPersistenceMapTicket is acIndirectDBRelationMapTicket) then
begin
bIndireta := true;
lsNomeTabelaAssociativa := ', ''' + (lRelationSQLPersistenceMapTicket as acIndirectDBRelationMapTicket).TableName + '''';
lsNomeFKA := ', ''' + (lRelationSQLPersistenceMapTicket as acIndirectDBRelationMapTicket).FKOrigemName + '''';
lsNomeFKB := ', ''' + (lRelationSQLPersistenceMapTicket as acIndirectDBRelationMapTicket).FKDestinoName + '''';
end
else
begin
bIndireta := false;
lsNomeFKA := ', ''' + (lRelationSQLPersistenceMapTicket as acDirectDBRelationMapTicket).FKColumnName + '''';
end;
case lRelationTicket.DestinationAggregation of // Lgica responsvel por selecionar o mtodo de relacionamento de acordo com a cardinalidade
acPropertyAggregation.pvNone: lsDsAggregation := 'acPropertyAggregation.pvNone'; if lMultiplicityOrMax <= 1 then
acPropertyAggregation.pvAggregate: lsDsAggregation := 'acPropertyAggregation.pvAggregate'; begin
acPropertyAggregation.pvComposite: lsDsAggregation := 'acPropertyAggregation.pvComposite'; if lMultiplicityDsMax <= 1 then
begin
if bIndireta then
sMetodo := 'NewIndirectOneToOneDbRelationMapRegisterTicket'
else
sMetodo := 'NewOneToOneDbRelationMapRegisterTicket';
end
else
begin
if bIndireta then
sMetodo := 'NewIndirectOneToManyDbRelationMapRegisterTicket'
else
sMetodo := 'NewOneToManyDbRelationMapRegisterTicket';
end; end;
end
sRelationsAll := sRelationsAll + 'lRelationTicket := piMetaModel.NewRelationRegisterTicket('; else //lsMultiplicityOr = N
sRelationsAll := sRelationsAll + '''' + lClassTicketOrigem.PersistentObjectClassName + '''' + ', ' + '''' + lRelationTicket.OriginPropertyName + '''' + ', '+IntToStr(lRelationTicket.OriginPropertyindex)+', ' + inttostr(lMultiplicityOrMin) + ', ' + inttostr(lMultiplicityOrMax) + ', ' + lsOrAggregation; begin
sRelationsAll := sRelationsAll + ', ' + '''' + lRelationTicket.Name + '''' + ', '; if lMultiplicityDsMax <= 1 then
sRelationsAll := sRelationsAll + '''' + lClassTicketDestino.PersistentObjectClassName + '''' + ', ' + '''' + lRelationTicket.DestinationPropertyName + '''' + ', '+IntToStr(lRelationTicket.DestinationPropertyIndex)+', ' + inttostr(lMultiplicityDsMin) + ', ' + inttostr(lMultiplicityDsMax) + ', ' + lsDsAggregation; begin
sRelationsAll := sRelationsAll + ', ' + BoolToStr(lRelationTicket.Bidirectional, true); if bIndireta then
sRelationsAll := sRelationsAll + ', ' + BoolToStr(lRelationTicket.IsAuditable, true); sMetodo := 'NewIndirectOneToManyDbRelationMapRegisterTicket'
sRelationsAll := sRelationsAll + ');' + #13#10;
if lRelationTicket.DisplayName <> lRelationTicket.Name then
sRelationsAll := sRelationsAll + 'lRelationTicket.DisplayName := ' + QuotedStr(lRelationTicket.DisplayName) + ';' + #13#10;
if lRelationTicket.OriginDisplayName <> '' then
sRelationsAll := sRelationsAll + 'lRelationTicket.OriginDisplayName := ' + QuotedStr(lRelationTicket.OriginDisplayName) + ';' + #13#10;
if lRelationTicket.DestinationDisplayName <> '' then
sRelationsAll := sRelationsAll + 'lRelationTicket.DestinationDisplayName := ' + QuotedStr(lRelationTicket.DestinationDisplayName) + ';' + #13#10;
// ATRIBUTOS ESTENDIDOS
// Obtm classe responsvel por mapeamento OO-DB para Relacionamento
lRelationSQLPersistenceMapTicket := fMetaModelPersistenceMap.GetRelationsSQLPersistenceMapTicket(lRelationTicket);
if (lRelationSQLPersistenceMapTicket is acIndirectDBRelationMapTicket) then
begin
bIndireta := true;
lsNomeTabelaAssociativa := ', ''' + (lRelationSQLPersistenceMapTicket as acIndirectDBRelationMapTicket).TableName + '''';
lsNomeFKA := ', ''' + (lRelationSQLPersistenceMapTicket as acIndirectDBRelationMapTicket).FKOrigemName + '''';
lsNomeFKB := ', ''' + (lRelationSQLPersistenceMapTicket as acIndirectDBRelationMapTicket).FKDestinoName + '''';
end
else
begin
bIndireta := false;
lsNomeFKA := ', ''' + (lRelationSQLPersistenceMapTicket as acDirectDBRelationMapTicket).FKColumnName + '''';
end;
// Lgica responsvel por selecionar o mtodo de relacionamento de acordo com a cardinalidade
if lMultiplicityOrMax <= 1 then
begin
if lMultiplicityDsMax <= 1 then
begin
if bIndireta then
sMetodo := 'NewIndirectOneToOneDbRelationMapRegisterTicket'
else
sMetodo := 'NewOneToOneDbRelationMapRegisterTicket';
end
else
begin
if bIndireta then
sMetodo := 'NewIndirectOneToManyDbRelationMapRegisterTicket'
else
sMetodo := 'NewOneToManyDbRelationMapRegisterTicket';
end;
end
else //lsMultiplicityOr = N
begin
if lMultiplicityDsMax <= 1 then
begin
if bIndireta then
sMetodo := 'NewIndirectOneToManyDbRelationMapRegisterTicket'
else
sMetodo := 'NewOneToManyDbRelationMapRegisterTicket';
end
else else
sMetodo := 'NewManyToManyDbRelationMapRegisterTicket'; sMetodo := 'NewOneToManyDbRelationMapRegisterTicket';
end; end
else
sRelationsAll := sRelationsAll + 'if lRelationTicket <> nil then piMetaModelPersistenceMap.'; sMetodo := 'NewManyToManyDbRelationMapRegisterTicket';
sRelationsAll := sRelationsAll + sMetodo + '(lRelationTicket' + lsNomeFKA + lsNomeFKB + lsNomeTabelaAssociativa + ');' + #13#10 + #13#10; end;
lsNomeFKA := '';
lsNomeFKB := '';
lsNomeTabelaAssociativa := '';
lEnumRelation.MoveNext; sRelationsAll := sRelationsAll + 'if lRelationTicket <> nil then piMetaModelPersistenceMap.';
sRelationsAll := sRelationsAll + sMetodo + '(lRelationTicket' + lsNomeFKA + lsNomeFKB + lsNomeTabelaAssociativa + ');' + #13#10 + #13#10;
lsNomeFKA := '';
lsNomeFKB := '';
lsNomeTabelaAssociativa := '';
end;
lEnumRelation.MoveNext;
end; end;
finally finally
lEnumRelation.Free; lEnumRelation.Free;
end; end;
result := sRelationsAll; result := sRelationsAll;
end; end;
procedure TUtil.GerarBodyRelationsAll_CSharp(piProgress: TFShowProgress; piUnitRegisterMappings: PStringWriter); procedure TUtil.GerarBodyRelationsAll_CSharp(piProgress: TFShowProgress; piStartAt: Integer; piEndAt: Integer; piUnitRegisterMappings: PStringWriter);
var lEnumRelation: acEnumerator; var lEnumRelation: acEnumerator;
lRelationTicket: acRelationTicket; lRelationTicket: acRelationTicket;
lClassTicketOrigem, lClassTicketDestino: acClassTicket; lClassTicketOrigem, lClassTicketDestino: acClassTicket;
...@@ -3110,9 +3235,10 @@ var lEnumRelation: acEnumerator; ...@@ -3110,9 +3235,10 @@ var lEnumRelation: acEnumerator;
bIndireta: boolean; bIndireta: boolean;
lMultiplicityOrMax, lMultiplicityDsMax, lMultiplicityOrMin, lMultiplicityDsMin: integer; lMultiplicityOrMax, lMultiplicityDsMax, lMultiplicityOrMin, lMultiplicityDsMin: integer;
lOriginPropertyName, lDetinationPropertyName: string; lOriginPropertyName, lDetinationPropertyName: string;
// I, li: integer;
lNumPropertyName: integer; lNumPropertyName: integer;
begin begin
li := 1;
lNumPropertyName:= 0; lNumPropertyName:= 0;
if assigned(piProgress) then piProgress.ChangeMessage('Generating model mappings relation tickets...', 0, MetaModel.RelationTickets.Count); if assigned(piProgress) then piProgress.ChangeMessage('Generating model mappings relation tickets...', 0, MetaModel.RelationTickets.Count);
piUnitRegisterMappings.Indent(); piUnitRegisterMappings.Indent();
...@@ -3120,124 +3246,126 @@ begin ...@@ -3120,124 +3246,126 @@ begin
lEnumRelation := MetaModel.RelationTickets.GetEnumerator; lEnumRelation := MetaModel.RelationTickets.GetEnumerator;
try try
while not lEnumRelation.EOL do while not lEnumRelation.EOL and (li <= piEndAt) do
begin begin
if assigned(piProgress) then piProgress.Inc; if li >= piStartAt then
lRelationTicket := acRelationTicket(lEnumRelation.Current);
// Obtm classes origem e destino. No est sendo considerada associaao ternria.
lClassTicketOrigem := lRelationTicket.OriginClassTicket;
lClassTicketDestino := lRelationTicket.DestinationClassTicket;
lMultiplicityOrMax := lRelationTicket.OriginMaxMultiplicity;
lMultiplicityDsMax := lRelationTicket.DestinationMaxMultiplicity;
lMultiplicityOrMin := lRelationTicket.OriginMinMultiplicity;
lMultiplicityDsMin := lRelationTicket.DestinationMinMultiplicity;
case lRelationTicket.OriginAggregation of
acPropertyAggregation.pvNone: lsOrAggregation := 'acPropertyAggregation.pvNone';
acPropertyAggregation.pvAggregate: lsOrAggregation := 'acPropertyAggregation.pvAggregate';
acPropertyAggregation.pvComposite: lsOrAggregation := 'acPropertyAggregation.pvComposite';
end;
case lRelationTicket.DestinationAggregation of
acPropertyAggregation.pvNone: lsDsAggregation := 'acPropertyAggregation.pvNone';
acPropertyAggregation.pvAggregate: lsDsAggregation := 'acPropertyAggregation.pvAggregate';
acPropertyAggregation.pvComposite: lsDsAggregation := 'acPropertyAggregation.pvComposite';
end;
Inc(lNumPropertyName);
lOriginPropertyName := 'piOriginPropertyName' + IntToStr(lNumPropertyName);
lDetinationPropertyName := 'piDestinationPropertyName' + IntToStr(lNumPropertyName);
// piUnitRegisterMappings.WriteLine('ShortString ' + lOriginPropertyName + ';');
// piUnitRegisterMappings.WriteLine('ShortString ' + lDetinationPropertyName + ';');
// piUnitRegisterMappings.WriteLine(lOriginPropertyName + '.Data = new Byte[] {');
// piUnitRegisterMappings.WriteLine(IntToStr(Length(lRelationTicket.OriginPropertyName))+ ', ');
// for I := 1 to Length(lRelationTicket.OriginPropertyName) do
// begin
// piUnitRegisterMappings.WriteLine(IntToStr(Ord(lRelationTicket.OriginPropertyName[I]))+ ', ');
// end;
// piUnitRegisterMappings.WriteLine('};');
// piUnitRegisterMappings.WriteLine(lDetinationPropertyName + '.Data = new Byte[] {');
// piUnitRegisterMappings.WriteLine(IntToStr(Length(lRelationTicket.DestinationPropertyName))+ ', ');
// for I := 1 to Length(lRelationTicket.DestinationPropertyName) do
// begin
// piUnitRegisterMappings.WriteLine(IntToStr(Ord(lRelationTicket.DestinationPropertyName[I]))+ ', ');
// end;
// piUnitRegisterMappings.WriteLine('};');
piUnitRegisterMappings.WriteLine('String ' + lOriginPropertyName + ';');
piUnitRegisterMappings.WriteLine('String ' + lDetinationPropertyName + ';');
piUnitRegisterMappings.WriteLine(lOriginPropertyName + ' = "'+ lRelationTicket.OriginPropertyName + '";');
piUnitRegisterMappings.WriteLine(lDetinationPropertyName + ' = "'+ lRelationTicket.DestinationPropertyName + '";');
piUnitRegisterMappings.Write('lRelationTicket = piMetaModel.NewRelationRegisterTicket(');
piUnitRegisterMappings.Write('"' + lClassTicketOrigem.PersistentObjectClassName + '"' + ', ' + lOriginPropertyName + ', ' + IntToStr(lRelationTicket.OriginPropertyindex) + ', ' + inttostr(lMultiplicityOrMin) + ', ' + inttostr(lMultiplicityOrMax) + ', ' + lsOrAggregation);
piUnitRegisterMappings.Write(', ' + '"' + lRelationTicket.Name + '"' + ', ');
piUnitRegisterMappings.Write('"' + lClassTicketDestino.PersistentObjectClassName + '"' + ', ' + lDetinationPropertyName + ', ' + IntToStr(lRelationTicket.DestinationPropertyIndex) + ', ' + inttostr(lMultiplicityDsMin) + ', ' + inttostr(lMultiplicityDsMax) + ', ' + lsDsAggregation);
piUnitRegisterMappings.Write(', ' + AnsiLowerCase(BoolToStr(lRelationTicket.Bidirectional, true)));
piUnitRegisterMappings.Write(', ' + AnsiLowerCase(BoolToStr(lRelationTicket.IsAuditable, true)));
piUnitRegisterMappings.WriteLine(');');
if lRelationTicket.DisplayName <> lRelationTicket.Name then
piUnitRegisterMappings.WriteLine('lRelationTicket.DisplayName = "' + lRelationTicket.DisplayName + '";');
if lRelationTicket.OriginDisplayName <> '' then
piUnitRegisterMappings.WriteLine('lRelationTicket.OriginDisplayName = "' + lRelationTicket.OriginDisplayName + '";');
if lRelationTicket.DestinationDisplayName <> '' then
piUnitRegisterMappings.WriteLine('lRelationTicket.DestinationDisplayName = "' + lRelationTicket.DestinationDisplayName + '";');
// ATRIBUTOS ESTENDIDOS
// Obtm classe responsvel por mapeamento OO-DB para Relacionamento
lRelationSQLPersistenceMapTicket := fMetaModelPersistenceMap.GetRelationsSQLPersistenceMapTicket(lRelationTicket);
if (lRelationSQLPersistenceMapTicket is acIndirectDBRelationMapTicket) then
begin begin
bIndireta := true; if assigned(piProgress) then piProgress.Inc;
lsNomeTabelaAssociativa := ', "' + (lRelationSQLPersistenceMapTicket as acIndirectDBRelationMapTicket).TableName + '"'; lRelationTicket := acRelationTicket(lEnumRelation.Current);
lsNomeFKA := ', "' + (lRelationSQLPersistenceMapTicket as acIndirectDBRelationMapTicket).FKOrigemName + '"'; // Obtm classes origem e destino. No est sendo considerada associaao ternria.
lsNomeFKB := ', "' + (lRelationSQLPersistenceMapTicket as acIndirectDBRelationMapTicket).FKDestinoName + '"'; lClassTicketOrigem := lRelationTicket.OriginClassTicket;
end lClassTicketDestino := lRelationTicket.DestinationClassTicket;
else
begin lMultiplicityOrMax := lRelationTicket.OriginMaxMultiplicity;
bIndireta := false; lMultiplicityDsMax := lRelationTicket.DestinationMaxMultiplicity;
lsNomeFKA := ', "' + (lRelationSQLPersistenceMapTicket as acDirectDBRelationMapTicket).FKColumnName + '"';
end; lMultiplicityOrMin := lRelationTicket.OriginMinMultiplicity;
lMultiplicityDsMin := lRelationTicket.DestinationMinMultiplicity;
case lRelationTicket.OriginAggregation of
acPropertyAggregation.pvNone: lsOrAggregation := 'acPropertyAggregation.pvNone';
acPropertyAggregation.pvAggregate: lsOrAggregation := 'acPropertyAggregation.pvAggregate';
acPropertyAggregation.pvComposite: lsOrAggregation := 'acPropertyAggregation.pvComposite';
end;
// Lgica responsvel por selecionar o mtodo de relacionamento de acordo com a cardinalidade case lRelationTicket.DestinationAggregation of
if lMultiplicityOrMax <= 1 then acPropertyAggregation.pvNone: lsDsAggregation := 'acPropertyAggregation.pvNone';
begin acPropertyAggregation.pvAggregate: lsDsAggregation := 'acPropertyAggregation.pvAggregate';
if lMultiplicityDsMax <= 1 then acPropertyAggregation.pvComposite: lsDsAggregation := 'acPropertyAggregation.pvComposite';
begin end;
if bIndireta
then sMetodo := 'NewIndirectOneToOneDbRelationMapRegisterTicket'
else sMetodo := 'NewOneToOneDbRelationMapRegisterTicket';
end
else
begin
if bIndireta
then sMetodo := 'NewIndirectOneToManyDbRelationMapRegisterTicket'
else sMetodo := 'NewOneToManyDbRelationMapRegisterTicket';
end;
end
else //lsMultiplicityOr = N
begin
if lMultiplicityDsMax <= 1 then
begin
if bIndireta
then sMetodo := 'NewIndirectOneToManyDbRelationMapRegisterTicket'
else sMetodo := 'NewOneToManyDbRelationMapRegisterTicket';
end
else sMetodo := 'NewManyToManyDbRelationMapRegisterTicket';
end;
piUnitRegisterMappings.WriteLine('if (lRelationTicket != null){'); Inc(lNumPropertyName);
piUnitRegisterMappings.WriteLine(#9+'piMetaModelPersistenceMap.'+sMetodo + '(lRelationTicket' + lsNomeFKA + lsNomeFKB + lsNomeTabelaAssociativa + ');'); lOriginPropertyName := 'piOriginPropertyName' + IntToStr(lNumPropertyName);
piUnitRegisterMappings.WriteLine('}'); lDetinationPropertyName := 'piDestinationPropertyName' + IntToStr(lNumPropertyName);
piUnitRegisterMappings.WriteLine();
lsNomeFKA := ''; // piUnitRegisterMappings.WriteLine('ShortString ' + lOriginPropertyName + ';');
lsNomeFKB := ''; // piUnitRegisterMappings.WriteLine('ShortString ' + lDetinationPropertyName + ';');
lsNomeTabelaAssociativa := ''; // piUnitRegisterMappings.WriteLine(lOriginPropertyName + '.Data = new Byte[] {');
// piUnitRegisterMappings.WriteLine(IntToStr(Length(lRelationTicket.OriginPropertyName))+ ', ');
// for I := 1 to Length(lRelationTicket.OriginPropertyName) do
// begin
// piUnitRegisterMappings.WriteLine(IntToStr(Ord(lRelationTicket.OriginPropertyName[I]))+ ', ');
// end;
// piUnitRegisterMappings.WriteLine('};');
// piUnitRegisterMappings.WriteLine(lDetinationPropertyName + '.Data = new Byte[] {');
// piUnitRegisterMappings.WriteLine(IntToStr(Length(lRelationTicket.DestinationPropertyName))+ ', ');
// for I := 1 to Length(lRelationTicket.DestinationPropertyName) do
// begin
// piUnitRegisterMappings.WriteLine(IntToStr(Ord(lRelationTicket.DestinationPropertyName[I]))+ ', ');
// end;
// piUnitRegisterMappings.WriteLine('};');
piUnitRegisterMappings.WriteLine('String ' + lOriginPropertyName + ';');
piUnitRegisterMappings.WriteLine('String ' + lDetinationPropertyName + ';');
piUnitRegisterMappings.WriteLine(lOriginPropertyName + ' = "'+ lRelationTicket.OriginPropertyName + '";');
piUnitRegisterMappings.WriteLine(lDetinationPropertyName + ' = "'+ lRelationTicket.DestinationPropertyName + '";');
piUnitRegisterMappings.Write('lRelationTicket = piMetaModel.NewRelationRegisterTicket(');
piUnitRegisterMappings.Write('"' + lClassTicketOrigem.PersistentObjectClassName + '"' + ', ' + lOriginPropertyName + ', ' + IntToStr(lRelationTicket.OriginPropertyindex) + ', ' + inttostr(lMultiplicityOrMin) + ', ' + inttostr(lMultiplicityOrMax) + ', ' + lsOrAggregation);
piUnitRegisterMappings.Write(', ' + '"' + lRelationTicket.Name + '"' + ', ');
piUnitRegisterMappings.Write('"' + lClassTicketDestino.PersistentObjectClassName + '"' + ', ' + lDetinationPropertyName + ', ' + IntToStr(lRelationTicket.DestinationPropertyIndex) + ', ' + inttostr(lMultiplicityDsMin) + ', ' + inttostr(lMultiplicityDsMax) + ', ' + lsDsAggregation);
piUnitRegisterMappings.Write(', ' + AnsiLowerCase(BoolToStr(lRelationTicket.Bidirectional, true)));
piUnitRegisterMappings.Write(', ' + AnsiLowerCase(BoolToStr(lRelationTicket.IsAuditable, true)));
piUnitRegisterMappings.WriteLine(');');
if lRelationTicket.DisplayName <> lRelationTicket.Name then
piUnitRegisterMappings.WriteLine('lRelationTicket.DisplayName = "' + lRelationTicket.DisplayName + '";');
if lRelationTicket.OriginDisplayName <> '' then
piUnitRegisterMappings.WriteLine('lRelationTicket.OriginDisplayName = "' + lRelationTicket.OriginDisplayName + '";');
if lRelationTicket.DestinationDisplayName <> '' then
piUnitRegisterMappings.WriteLine('lRelationTicket.DestinationDisplayName = "' + lRelationTicket.DestinationDisplayName + '";');
// ATRIBUTOS ESTENDIDOS
// Obtm classe responsvel por mapeamento OO-DB para Relacionamento
lRelationSQLPersistenceMapTicket := fMetaModelPersistenceMap.GetRelationsSQLPersistenceMapTicket(lRelationTicket);
if (lRelationSQLPersistenceMapTicket is acIndirectDBRelationMapTicket) then
begin
bIndireta := true;
lsNomeTabelaAssociativa := ', "' + (lRelationSQLPersistenceMapTicket as acIndirectDBRelationMapTicket).TableName + '"';
lsNomeFKA := ', "' + (lRelationSQLPersistenceMapTicket as acIndirectDBRelationMapTicket).FKOrigemName + '"';
lsNomeFKB := ', "' + (lRelationSQLPersistenceMapTicket as acIndirectDBRelationMapTicket).FKDestinoName + '"';
end
else
begin
bIndireta := false;
lsNomeFKA := ', "' + (lRelationSQLPersistenceMapTicket as acDirectDBRelationMapTicket).FKColumnName + '"';
end;
// Lgica responsvel por selecionar o mtodo de relacionamento de acordo com a cardinalidade
if lMultiplicityOrMax <= 1 then
begin
if lMultiplicityDsMax <= 1 then
begin
if bIndireta
then sMetodo := 'NewIndirectOneToOneDbRelationMapRegisterTicket'
else sMetodo := 'NewOneToOneDbRelationMapRegisterTicket';
end
else
begin
if bIndireta
then sMetodo := 'NewIndirectOneToManyDbRelationMapRegisterTicket'
else sMetodo := 'NewOneToManyDbRelationMapRegisterTicket';
end;
end
else //lsMultiplicityOr = N
begin
if lMultiplicityDsMax <= 1 then
begin
if bIndireta
then sMetodo := 'NewIndirectOneToManyDbRelationMapRegisterTicket'
else sMetodo := 'NewOneToManyDbRelationMapRegisterTicket';
end
else sMetodo := 'NewManyToManyDbRelationMapRegisterTicket';
end;
piUnitRegisterMappings.WriteLine('if (lRelationTicket != null){');
piUnitRegisterMappings.WriteLine(#9+'piMetaModelPersistenceMap.'+sMetodo + '(lRelationTicket' + lsNomeFKA + lsNomeFKB + lsNomeTabelaAssociativa + ');');
piUnitRegisterMappings.WriteLine('}');
piUnitRegisterMappings.WriteLine();
lsNomeFKA := '';
lsNomeFKB := '';
lsNomeTabelaAssociativa := '';
end;
lEnumRelation.MoveNext; lEnumRelation.MoveNext;
end; end;
finally finally
...@@ -3247,7 +3375,7 @@ begin ...@@ -3247,7 +3375,7 @@ begin
piUnitRegisterMappings.Outdent(); piUnitRegisterMappings.Outdent();
end; end;
procedure TUtil.GerarBodyRelationsAll_Java(piProgress: TFShowProgress; piUnitRegisterMappings: PStringWriter); procedure TUtil.GerarBodyRelationsAll_Java(piProgress: TFShowProgress; piStartAt: Integer; piEndAt: Integer; piUnitRegisterMappings: PStringWriter);
var lEnumRelation: acEnumerator; var lEnumRelation: acEnumerator;
lRelationTicket: acRelationTicket; lRelationTicket: acRelationTicket;
lClassTicketOrigem, lClassTicketDestino: acClassTicket; lClassTicketOrigem, lClassTicketDestino: acClassTicket;
...@@ -3258,7 +3386,9 @@ var lEnumRelation: acEnumerator; ...@@ -3258,7 +3386,9 @@ var lEnumRelation: acEnumerator;
lMultiplicityOrMax, lMultiplicityDsMax, lMultiplicityOrMin, lMultiplicityDsMin: integer; lMultiplicityOrMax, lMultiplicityDsMax, lMultiplicityOrMin, lMultiplicityDsMin: integer;
lOriginPropertyName, lDetinationPropertyName: string; lOriginPropertyName, lDetinationPropertyName: string;
lNumPropertyName: integer; lNumPropertyName: integer;
li: Integer;
begin begin
li := 1;
lNumPropertyName:= 0; lNumPropertyName:= 0;
if assigned(piProgress) then piProgress.ChangeMessage('Generating model mappings relation tickets...', 0, MetaModel.RelationTickets.Count); if assigned(piProgress) then piProgress.ChangeMessage('Generating model mappings relation tickets...', 0, MetaModel.RelationTickets.Count);
piUnitRegisterMappings.Indent(); piUnitRegisterMappings.Indent();
...@@ -3266,108 +3396,110 @@ begin ...@@ -3266,108 +3396,110 @@ begin
lEnumRelation := MetaModel.RelationTickets.GetEnumerator; lEnumRelation := MetaModel.RelationTickets.GetEnumerator;
try try
while not lEnumRelation.EOL do while not lEnumRelation.EOL and (li <= piEndAt) do
begin begin
if assigned(piProgress) then piProgress.Inc; if li >= piStartAt then
lRelationTicket := acRelationTicket(lEnumRelation.Current); begin
// Obtm classes origem e destino. No est sendo considerada associaao ternria. if assigned(piProgress) then piProgress.Inc;
lClassTicketOrigem := lRelationTicket.OriginClassTicket; lRelationTicket := acRelationTicket(lEnumRelation.Current);
lClassTicketDestino := lRelationTicket.DestinationClassTicket; // Obtm classes origem e destino. No est sendo considerada associaao ternria.
lClassTicketOrigem := lRelationTicket.OriginClassTicket;
lMultiplicityOrMax := lRelationTicket.OriginMaxMultiplicity; lClassTicketDestino := lRelationTicket.DestinationClassTicket;
lMultiplicityDsMax := lRelationTicket.DestinationMaxMultiplicity;
lMultiplicityOrMax := lRelationTicket.OriginMaxMultiplicity;
lMultiplicityOrMin := lRelationTicket.OriginMinMultiplicity; lMultiplicityDsMax := lRelationTicket.DestinationMaxMultiplicity;
lMultiplicityDsMin := lRelationTicket.DestinationMinMultiplicity;
lMultiplicityOrMin := lRelationTicket.OriginMinMultiplicity;
case lRelationTicket.OriginAggregation of lMultiplicityDsMin := lRelationTicket.DestinationMinMultiplicity;
acPropertyAggregation.pvNone: lsOrAggregation := 'acPropertyAggregation.pvNone';
acPropertyAggregation.pvAggregate: lsOrAggregation := 'acPropertyAggregation.pvAggregate'; case lRelationTicket.OriginAggregation of
acPropertyAggregation.pvComposite: lsOrAggregation := 'acPropertyAggregation.pvComposite'; acPropertyAggregation.pvNone: lsOrAggregation := 'acPropertyAggregation.pvNone';
end; acPropertyAggregation.pvAggregate: lsOrAggregation := 'acPropertyAggregation.pvAggregate';
acPropertyAggregation.pvComposite: lsOrAggregation := 'acPropertyAggregation.pvComposite';
end;
case lRelationTicket.DestinationAggregation of case lRelationTicket.DestinationAggregation of
acPropertyAggregation.pvNone: lsDsAggregation := 'acPropertyAggregation.pvNone'; acPropertyAggregation.pvNone: lsDsAggregation := 'acPropertyAggregation.pvNone';
acPropertyAggregation.pvAggregate: lsDsAggregation := 'acPropertyAggregation.pvAggregate'; acPropertyAggregation.pvAggregate: lsDsAggregation := 'acPropertyAggregation.pvAggregate';
acPropertyAggregation.pvComposite: lsDsAggregation := 'acPropertyAggregation.pvComposite'; acPropertyAggregation.pvComposite: lsDsAggregation := 'acPropertyAggregation.pvComposite';
end; end;
Inc(lNumPropertyName); Inc(lNumPropertyName);
lOriginPropertyName := 'piOriginPropertyName' + IntToStr(lNumPropertyName); lOriginPropertyName := 'piOriginPropertyName' + IntToStr(lNumPropertyName);
lDetinationPropertyName := 'piDestinationPropertyName' + IntToStr(lNumPropertyName); lDetinationPropertyName := 'piDestinationPropertyName' + IntToStr(lNumPropertyName);
piUnitRegisterMappings.WriteLine('String ' + lOriginPropertyName + ';'); piUnitRegisterMappings.WriteLine('String ' + lOriginPropertyName + ';');
piUnitRegisterMappings.WriteLine('String ' + lDetinationPropertyName + ';'); piUnitRegisterMappings.WriteLine('String ' + lDetinationPropertyName + ';');
piUnitRegisterMappings.WriteLine(lOriginPropertyName + ' = "'+ lRelationTicket.OriginPropertyName + '";'); piUnitRegisterMappings.WriteLine(lOriginPropertyName + ' = "'+ lRelationTicket.OriginPropertyName + '";');
piUnitRegisterMappings.WriteLine(lDetinationPropertyName + ' = "'+ lRelationTicket.DestinationPropertyName + '";'); piUnitRegisterMappings.WriteLine(lDetinationPropertyName + ' = "'+ lRelationTicket.DestinationPropertyName + '";');
piUnitRegisterMappings.Write('lRelationTicket = piMetaModel.NewRelationRegisterTicket('); piUnitRegisterMappings.Write('lRelationTicket = piMetaModel.NewRelationRegisterTicket(');
piUnitRegisterMappings.Write('"' + lClassTicketOrigem.PersistentObjectClassName + '"' + ', ' + lOriginPropertyName + ', ' + IntToStr(lRelationTicket.OriginPropertyindex) + ', ' + inttostr(lMultiplicityOrMin) + ', ' + inttostr(lMultiplicityOrMax) + ', ' + lsOrAggregation); piUnitRegisterMappings.Write('"' + lClassTicketOrigem.PersistentObjectClassName + '"' + ', ' + lOriginPropertyName + ', ' + IntToStr(lRelationTicket.OriginPropertyindex) + ', ' + inttostr(lMultiplicityOrMin) + ', ' + inttostr(lMultiplicityOrMax) + ', ' + lsOrAggregation);
piUnitRegisterMappings.Write(', ' + '"' + lRelationTicket.Name + '"' + ', '); piUnitRegisterMappings.Write(', ' + '"' + lRelationTicket.Name + '"' + ', ');
piUnitRegisterMappings.Write('"' + lClassTicketDestino.PersistentObjectClassName + '"' + ', ' + lDetinationPropertyName + ', ' + IntToStr(lRelationTicket.DestinationPropertyIndex) + ', ' + inttostr(lMultiplicityDsMin) + ', ' + inttostr(lMultiplicityDsMax) + ', ' + lsDsAggregation); piUnitRegisterMappings.Write('"' + lClassTicketDestino.PersistentObjectClassName + '"' + ', ' + lDetinationPropertyName + ', ' + IntToStr(lRelationTicket.DestinationPropertyIndex) + ', ' + inttostr(lMultiplicityDsMin) + ', ' + inttostr(lMultiplicityDsMax) + ', ' + lsDsAggregation);
piUnitRegisterMappings.Write(', ' + AnsiLowerCase(BoolToStr(lRelationTicket.Bidirectional, true))); piUnitRegisterMappings.Write(', ' + AnsiLowerCase(BoolToStr(lRelationTicket.Bidirectional, true)));
piUnitRegisterMappings.Write(', ' + AnsiLowerCase(BoolToStr(lRelationTicket.IsAuditable, true))); piUnitRegisterMappings.Write(', ' + AnsiLowerCase(BoolToStr(lRelationTicket.IsAuditable, true)));
piUnitRegisterMappings.WriteLine(');'); piUnitRegisterMappings.WriteLine(');');
if lRelationTicket.DisplayName <> lRelationTicket.Name then if lRelationTicket.DisplayName <> lRelationTicket.Name then
piUnitRegisterMappings.WriteLine('lRelationTicket.DisplayName = "' + lRelationTicket.DisplayName + '";'); piUnitRegisterMappings.WriteLine('lRelationTicket.DisplayName = "' + lRelationTicket.DisplayName + '";');
if lRelationTicket.OriginDisplayName <> '' then if lRelationTicket.OriginDisplayName <> '' then
piUnitRegisterMappings.WriteLine('lRelationTicket.OriginDisplayName = "' + lRelationTicket.OriginDisplayName + '";'); piUnitRegisterMappings.WriteLine('lRelationTicket.OriginDisplayName = "' + lRelationTicket.OriginDisplayName + '";');
if lRelationTicket.DestinationDisplayName <> '' then if lRelationTicket.DestinationDisplayName <> '' then
piUnitRegisterMappings.WriteLine('lRelationTicket.DestinationDisplayName = "' + lRelationTicket.DestinationDisplayName + '";'); piUnitRegisterMappings.WriteLine('lRelationTicket.DestinationDisplayName = "' + lRelationTicket.DestinationDisplayName + '";');
// ATRIBUTOS ESTENDIDOS // ATRIBUTOS ESTENDIDOS
// Obtm classe responsvel por mapeamento OO-DB para Relacionamento // Obtm classe responsvel por mapeamento OO-DB para Relacionamento
lRelationSQLPersistenceMapTicket := fMetaModelPersistenceMap.GetRelationsSQLPersistenceMapTicket(lRelationTicket); lRelationSQLPersistenceMapTicket := fMetaModelPersistenceMap.GetRelationsSQLPersistenceMapTicket(lRelationTicket);
if (lRelationSQLPersistenceMapTicket is acIndirectDBRelationMapTicket) then if (lRelationSQLPersistenceMapTicket is acIndirectDBRelationMapTicket) then
begin begin
bIndireta := true; bIndireta := true;
lsNomeTabelaAssociativa := ', "' + (lRelationSQLPersistenceMapTicket as acIndirectDBRelationMapTicket).TableName + '"'; lsNomeTabelaAssociativa := ', "' + (lRelationSQLPersistenceMapTicket as acIndirectDBRelationMapTicket).TableName + '"';
lsNomeFKA := ', "' + (lRelationSQLPersistenceMapTicket as acIndirectDBRelationMapTicket).FKOrigemName + '"'; lsNomeFKA := ', "' + (lRelationSQLPersistenceMapTicket as acIndirectDBRelationMapTicket).FKOrigemName + '"';
lsNomeFKB := ', "' + (lRelationSQLPersistenceMapTicket as acIndirectDBRelationMapTicket).FKDestinoName + '"'; lsNomeFKB := ', "' + (lRelationSQLPersistenceMapTicket as acIndirectDBRelationMapTicket).FKDestinoName + '"';
end end
else else
begin begin
bIndireta := false; bIndireta := false;
lsNomeFKA := ', "' + (lRelationSQLPersistenceMapTicket as acDirectDBRelationMapTicket).FKColumnName + '"'; lsNomeFKA := ', "' + (lRelationSQLPersistenceMapTicket as acDirectDBRelationMapTicket).FKColumnName + '"';
end; end;
// Lgica responsvel por selecionar o mtodo de relacionamento de acordo com a cardinalidade // Lgica responsvel por selecionar o mtodo de relacionamento de acordo com a cardinalidade
if lMultiplicityOrMax <= 1 then if lMultiplicityOrMax <= 1 then
begin begin
if lMultiplicityDsMax <= 1 then if lMultiplicityDsMax <= 1 then
begin begin
if bIndireta if bIndireta
then sMetodo := 'NewIndirectOneToOneDbRelationMapRegisterTicket' then sMetodo := 'NewIndirectOneToOneDbRelationMapRegisterTicket'
else sMetodo := 'NewOneToOneDbRelationMapRegisterTicket'; else sMetodo := 'NewOneToOneDbRelationMapRegisterTicket';
end end
else else
begin begin
if bIndireta if bIndireta
then sMetodo := 'NewIndirectOneToManyDbRelationMapRegisterTicket' then sMetodo := 'NewIndirectOneToManyDbRelationMapRegisterTicket'
else sMetodo := 'NewOneToManyDbRelationMapRegisterTicket'; else sMetodo := 'NewOneToManyDbRelationMapRegisterTicket';
end; end;
end end
else //lsMultiplicityOr = N else //lsMultiplicityOr = N
begin begin
if lMultiplicityDsMax <= 1 then if lMultiplicityDsMax <= 1 then
begin begin
if bIndireta if bIndireta
then sMetodo := 'NewIndirectOneToManyDbRelationMapRegisterTicket' then sMetodo := 'NewIndirectOneToManyDbRelationMapRegisterTicket'
else sMetodo := 'NewOneToManyDbRelationMapRegisterTicket'; else sMetodo := 'NewOneToManyDbRelationMapRegisterTicket';
end end
else sMetodo := 'NewManyToManyDbRelationMapRegisterTicket'; else sMetodo := 'NewManyToManyDbRelationMapRegisterTicket';
end; end;
piUnitRegisterMappings.WriteLine('if (lRelationTicket != null){');
piUnitRegisterMappings.WriteLine(#9+'piMetaModelPersistenceMap.'+sMetodo + '(lRelationTicket' + lsNomeFKA + lsNomeFKB + lsNomeTabelaAssociativa + ');');
piUnitRegisterMappings.WriteLine('}');
piUnitRegisterMappings.WriteLine();
lsNomeFKA := '';
lsNomeFKB := '';
lsNomeTabelaAssociativa := '';
piUnitRegisterMappings.WriteLine('if (lRelationTicket != null){');
piUnitRegisterMappings.WriteLine(#9+'piMetaModelPersistenceMap.'+sMetodo + '(lRelationTicket' + lsNomeFKA + lsNomeFKB + lsNomeTabelaAssociativa + ');');
piUnitRegisterMappings.WriteLine('}');
piUnitRegisterMappings.WriteLine();
lsNomeFKA := '';
lsNomeFKB := '';
lsNomeTabelaAssociativa := '';
end;
lEnumRelation.MoveNext; lEnumRelation.MoveNext;
end; end;
finally finally
...@@ -3401,7 +3533,7 @@ begin ...@@ -3401,7 +3533,7 @@ begin
begin begin
lUseCaseStateMachine := (lState as utSubMachineState).StateMachine as acUseCaseStateMachine; lUseCaseStateMachine := (lState as utSubMachineState).StateMachine as acUseCaseStateMachine;
result := Concat(result, format('lSubMachineState := utSubMachineState.Create(lStateMachine, ''%s'');', [lState.Name]), #13#10); result := Concat(result, format('lSubMachineState := utSubMachineState.Create(lStateMachine, ''%s'');', [lState.Name]), #13#10);
result := Concat(result, format('lSubMachineUseCaseTicket := piMetaModel.UseCaseTicketByCode[''%s''];', [lUseCaseStateMachine.UseCaseTicket.Code]), #13#10); result := Concat(result, format('lSubMachineUseCaseTicket := piMetaModel.GetUseCaseTicketByCode(''%s'');', [lUseCaseStateMachine.UseCaseTicket.Code]), #13#10);
result := Concat(result, format('lSubMachineState.StateMachine := acUseCaseStateMachine.Create(lSubMachineUseCaseTicket, lSubMachineState);', []), #13#10); result := Concat(result, format('lSubMachineState.StateMachine := acUseCaseStateMachine.Create(lSubMachineUseCaseTicket, lSubMachineState);', []), #13#10);
end end
else if lState is utFinalState then else if lState is utFinalState then
...@@ -3411,10 +3543,8 @@ begin ...@@ -3411,10 +3543,8 @@ begin
lStatesEnum.MoveNext; lStatesEnum.MoveNext;
end; end;
result := Concat(result, #13#10, '//Define o InitialState do StateMachine', #13#10);
result := Concat(result, format('lStateMachine.InitialState := lStateMachine.FindState(''%s'');', [piStateMachine.InitialState.Name]), #13#10); result := Concat(result, format('lStateMachine.InitialState := lStateMachine.FindState(''%s'');', [piStateMachine.InitialState.Name]), #13#10);
result := Concat(result, #13#10, '//Adiciona as transicoes dos estados', #13#10);
//Adiciona as transicoes de cada estado //Adiciona as transicoes de cada estado
lStatesEnum.MoveFirst; lStatesEnum.MoveFirst;
while not lStatesEnum.EOL do while not lStatesEnum.EOL do
...@@ -3481,7 +3611,7 @@ begin ...@@ -3481,7 +3611,7 @@ begin
end; end;
for I := 0 to lTransition.EffectsCount - 1 do for I := 0 to lTransition.EffectsCount - 1 do
result := Concat(result, format('lTransition.AddEffect(''%s'');', [lTransition.Effects[i]]), #13#10); result := Concat(result, format('lTransition.AddEffect(''%s'');', [lTransition.GetEffects(i)]), #13#10);
if Not piModelMappingsOptions.IgnoreXSDSchema then if Not piModelMappingsOptions.IgnoreXSDSchema then
begin begin
...@@ -3531,7 +3661,6 @@ begin ...@@ -3531,7 +3661,6 @@ begin
lState := utState(lStatesEnum.Current); lState := utState(lStatesEnum.Current);
if lState is utSubMachineState then if lState is utSubMachineState then
begin begin
result := Concat(result, format('// SUBSTATEMACHINE %s ///////////////////////', [utSubMachineState(lState).StateMachine.Name]), #13#10);
result := Concat(result, format('lStateMachine := lUseCaseTicket.FindStateMachine(''%s'');', [piStateMachine.Name]), #13#10); result := Concat(result, format('lStateMachine := lUseCaseTicket.FindStateMachine(''%s'');', [piStateMachine.Name]), #13#10);
result := Concat(result, format('lStateMachine := utSubMachineState(lStateMachine.FindState(''%s'')).StateMachine as acUseCaseStateMachine;', [lState.Name]), #13#10); result := Concat(result, format('lStateMachine := utSubMachineState(lStateMachine.FindState(''%s'')).StateMachine as acUseCaseStateMachine;', [lState.Name]), #13#10);
result := Concat(result, format('lStateMachine.Name := ''%s'';', [utSubMachineState(lState).StateMachine.Name]), #13#10); result := Concat(result, format('lStateMachine.Name := ''%s'';', [utSubMachineState(lState).StateMachine.Name]), #13#10);
...@@ -3622,8 +3751,10 @@ begin ...@@ -3622,8 +3751,10 @@ begin
end; end;
function TUtil.GerarBodyUseCases_CSharp(piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress; piStartAt, piEndAt: Integer; function TUtil.GerarBodyUseCases_CSharp(
piUnitRegisterMappings: PStringWriter): string; piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress;
piStartAt: Integer; piEndAt: Integer; piUnitRegisterMappings: PStringWriter
): string;
var var
lEnum: acEnumerator; lEnum: acEnumerator;
lUseCaseTicket: acUseCaseTicket; lUseCaseTicket: acUseCaseTicket;
...@@ -3691,8 +3822,10 @@ begin ...@@ -3691,8 +3822,10 @@ begin
result := result + GerarBodyStateMachines_CSharp(piModelMappingsOptions, piProgress, piStartAt, piEndAt, piUnitRegisterMappings); result := result + GerarBodyStateMachines_CSharp(piModelMappingsOptions, piProgress, piStartAt, piEndAt, piUnitRegisterMappings);
end; end;
function TUtil.GerarBodyUseCases_Java(piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress; piStartAt, piEndAt: Integer; function TUtil.GerarBodyUseCases_Java(
piUnitRegisterMappings: PStringWriter): string; piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress;
piStartAt: Integer; piEndAt: Integer; piUnitRegisterMappings: PStringWriter
): string;
var var
lEnum: acEnumerator; lEnum: acEnumerator;
lUseCaseTicket: acUseCaseTicket; lUseCaseTicket: acUseCaseTicket;
...@@ -3770,8 +3903,8 @@ begin ...@@ -3770,8 +3903,8 @@ begin
begin begin
lUseCaseTicket := acUseCaseTicket(lEnum.Current); lUseCaseTicket := acUseCaseTicket(lEnum.Current);
result := Concat(result, #13#10); result := Concat(result, #13#10);
result := Concat(result, format('//Gerando StateMachine para o caso de uso ''%s''', [lUseCaseTicket.Name]), #13#10); result := Concat(result, format('//UseCase ''%s''', [lUseCaseTicket.Name]), #13#10);
result := Concat(result, format('lUseCaseTicket := piMetaModel.UseCaseTicketByCode[''%s''];', [lUseCaseTicket.Code]), #13#10); result := Concat(result, format('lUseCaseTicket := piMetaModel.GetUseCaseTicketByCode(''%s'');', [lUseCaseTicket.Code]), #13#10);
result := Concat(result, 'lUseCaseTicket.StateMachine := acUseCaseStateMachine.Create(lUseCaseTicket);', #13#10, #13#10); result := Concat(result, 'lUseCaseTicket.StateMachine := acUseCaseStateMachine.Create(lUseCaseTicket);', #13#10, #13#10);
result := Concat(result, 'lStateMachine := lUseCaseTicket.StateMachine;', #13#10, #13#10); result := Concat(result, 'lStateMachine := lUseCaseTicket.StateMachine;', #13#10, #13#10);
result := Concat(result, format('lStateMachine.Name := ''%s'';', [lUseCaseTicket.StateMachine.Name]), #13#10); result := Concat(result, format('lStateMachine.Name := ''%s'';', [lUseCaseTicket.StateMachine.Name]), #13#10);
...@@ -3785,7 +3918,10 @@ begin ...@@ -3785,7 +3918,10 @@ begin
end; end;
end; end;
function TUtil.GerarBodyStateMachines_CSharp(piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress; piStartAt, piEndAt: Integer; piUnitRegisterMappings: PStringWriter): string; function TUtil.GerarBodyStateMachines_CSharp(
piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress;
piStartAt: Integer; piEndAt: Integer; piUnitRegisterMappings: PStringWriter
): string;
var var
lEnum: acEnumerator; lEnum: acEnumerator;
lUseCaseTicket: acUseCaseTicket; lUseCaseTicket: acUseCaseTicket;
...@@ -3808,8 +3944,8 @@ begin ...@@ -3808,8 +3944,8 @@ begin
begin begin
lUseCaseTicket := acUseCaseTicket(lEnum.Current); lUseCaseTicket := acUseCaseTicket(lEnum.Current);
result := Concat(result, #13#10); result := Concat(result, #13#10);
result := Concat(result, #9#9#9, format('//Gerando StateMachine para o caso de uso "%s"', [lUseCaseTicket.Name]), #13#10); result := Concat(result, #9#9#9, format('//UseCase "%s"', [lUseCaseTicket.Name]), #13#10);
result := Concat(result, #9#9#9, format('lUseCaseTicket = piMetaModel.get_UseCaseTicketByCode("%s");', [lUseCaseTicket.Code]), #13#10); result := Concat(result, #9#9#9, format('lUseCaseTicket = piMetaModel.GetUseCaseTicketByCode("%s");', [lUseCaseTicket.Code]), #13#10);
result := Concat(result, #9#9#9, 'lUseCaseTicket.StateMachine = new acUseCaseStateMachine(lUseCaseTicket);', #13#10, #13#10); result := Concat(result, #9#9#9, 'lUseCaseTicket.StateMachine = new acUseCaseStateMachine(lUseCaseTicket);', #13#10, #13#10);
result := Concat(result, #9#9#9, 'lStateMachine = lUseCaseTicket.StateMachine;', #13#10, #13#10); result := Concat(result, #9#9#9, 'lStateMachine = lUseCaseTicket.StateMachine;', #13#10, #13#10);
result := Concat(result, #9#9#9, format('lStateMachine.Name = "%s";', [lUseCaseTicket.StateMachine.Name]), #13#10); result := Concat(result, #9#9#9, format('lStateMachine.Name = "%s";', [lUseCaseTicket.StateMachine.Name]), #13#10);
...@@ -3823,8 +3959,10 @@ begin ...@@ -3823,8 +3959,10 @@ begin
end; end;
end; end;
function TUtil.GerarBodyStateMachines_Java(piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress; piStartAt, piEndAt: Integer; function TUtil.GerarBodyStateMachines_Java(
piUnitRegisterMappings: PStringWriter): string; piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress;
piStartAt: Integer; piEndAt: Integer; piUnitRegisterMappings: PStringWriter
): string;
var var
lEnum: acEnumerator; lEnum: acEnumerator;
lUseCaseTicket: acUseCaseTicket; lUseCaseTicket: acUseCaseTicket;
...@@ -3847,8 +3985,8 @@ begin ...@@ -3847,8 +3985,8 @@ begin
begin begin
lUseCaseTicket := acUseCaseTicket(lEnum.Current); lUseCaseTicket := acUseCaseTicket(lEnum.Current);
result := Concat(result, #13#10); result := Concat(result, #13#10);
result := Concat(result, #9#9#9, format('//Gerando StateMachine para o caso de uso "%s"', [lUseCaseTicket.Name]), #13#10); result := Concat(result, #9#9#9, format('//UseCase "%s"', [lUseCaseTicket.Name]), #13#10);
result := Concat(result, #9#9#9, format('lUseCaseTicket = piMetaModel.getUseCaseTicketByCode("%s");', [lUseCaseTicket.Code]), #13#10); result := Concat(result, #9#9#9, format('lUseCaseTicket = piMetaModel.GetUseCaseTicketByCode("%s");', [lUseCaseTicket.Code]), #13#10);
result := Concat(result, #9#9#9, 'lUseCaseTicket.setStateMachine(new acUseCaseStateMachine(lUseCaseTicket, null));', #13#10, #13#10); result := Concat(result, #9#9#9, 'lUseCaseTicket.setStateMachine(new acUseCaseStateMachine(lUseCaseTicket, null));', #13#10, #13#10);
result := Concat(result, #9#9#9, 'lStateMachine = lUseCaseTicket.getStateMachine();', #13#10, #13#10); result := Concat(result, #9#9#9, 'lStateMachine = lUseCaseTicket.getStateMachine();', #13#10, #13#10);
result := Concat(result, #9#9#9, format('lStateMachine.setName("%s");', [lUseCaseTicket.StateMachine.Name]), #13#10); result := Concat(result, #9#9#9, format('lStateMachine.setName("%s");', [lUseCaseTicket.StateMachine.Name]), #13#10);
...@@ -3885,7 +4023,7 @@ begin ...@@ -3885,7 +4023,7 @@ begin
begin begin
lUseCaseStateMachine := (lState as utSubMachineState).StateMachine as acUseCaseStateMachine; lUseCaseStateMachine := (lState as utSubMachineState).StateMachine as acUseCaseStateMachine;
result := Concat(result, #9#9#9, format('lSubMachineState = new utSubMachineState(lStateMachine, "%s");', [lState.Name]), #13#10); result := Concat(result, #9#9#9, format('lSubMachineState = new utSubMachineState(lStateMachine, "%s");', [lState.Name]), #13#10);
result := Concat(result, #9#9#9, format('lSubMachineUseCaseTicket = piMetaModel.get_UseCaseTicketByCode("%s");', [lUseCaseStateMachine.UseCaseTicket.Code]), #13#10); result := Concat(result, #9#9#9, format('lSubMachineUseCaseTicket = piMetaModel.GetUseCaseTicketByCode("%s");', [lUseCaseStateMachine.UseCaseTicket.Code]), #13#10);
result := Concat(result, #9#9#9, format('lSubMachineState.StateMachine = new acUseCaseStateMachine(lSubMachineUseCaseTicket, lSubMachineState);', []), #13#10); result := Concat(result, #9#9#9, format('lSubMachineState.StateMachine = new acUseCaseStateMachine(lSubMachineUseCaseTicket, lSubMachineState);', []), #13#10);
end end
else if lState is utFinalState then else if lState is utFinalState then
...@@ -3895,10 +4033,8 @@ begin ...@@ -3895,10 +4033,8 @@ begin
lStatesEnum.MoveNext; lStatesEnum.MoveNext;
end; end;
result := Concat(result, #13#10#9#9#9, '//Define o InitialState do StateMachine', #13#10);
result := Concat(result, #9#9#9, format('lStateMachine.InitialState = lStateMachine.FindState("%s");', [piStateMachine.InitialState.Name]), #13#10); result := Concat(result, #9#9#9, format('lStateMachine.InitialState = lStateMachine.FindState("%s");', [piStateMachine.InitialState.Name]), #13#10);
result := Concat(result, #13#10#9#9#9, '//Adiciona as transicoes dos estados', #13#10);
//Adiciona as transicoes de cada estado //Adiciona as transicoes de cada estado
lStatesEnum.MoveFirst; lStatesEnum.MoveFirst;
while not lStatesEnum.EOL do while not lStatesEnum.EOL do
...@@ -3965,7 +4101,7 @@ begin ...@@ -3965,7 +4101,7 @@ begin
end; end;
for I := 0 to lTransition.EffectsCount - 1 do for I := 0 to lTransition.EffectsCount - 1 do
result := Concat(result, #9#9#9, format('lTransition.AddEffect("%s");', [lTransition.Effects[i]]), #13#10); result := Concat(result, #9#9#9, format('lTransition.AddEffect("%s");', [lTransition.GetEffects(i)]), #13#10);
if Not piModelMappingsOptions.IgnoreXSDSchema then if Not piModelMappingsOptions.IgnoreXSDSchema then
begin begin
...@@ -4013,7 +4149,6 @@ begin ...@@ -4013,7 +4149,6 @@ begin
lState := utState(lStatesEnum.Current); lState := utState(lStatesEnum.Current);
if lState is utSubMachineState then if lState is utSubMachineState then
begin begin
result := Concat(result, #9#9#9, format('// SUBSTATEMACHINE %s ///////////////////////', [utSubMachineState(lState).StateMachine.Name]), #13#10);
result := Concat(result, #9#9#9, format('lStateMachine = lUseCaseTicket.FindStateMachine("%s");', [piStateMachine.Name]), #13#10); result := Concat(result, #9#9#9, format('lStateMachine = lUseCaseTicket.FindStateMachine("%s");', [piStateMachine.Name]), #13#10);
result := Concat(result, #9#9#9, format('lStateMachine = (acUseCaseStateMachine)(lStateMachine.FindState("%s") as utSubMachineState).StateMachine;', [lState.Name]), #13#10); result := Concat(result, #9#9#9, format('lStateMachine = (acUseCaseStateMachine)(lStateMachine.FindState("%s") as utSubMachineState).StateMachine;', [lState.Name]), #13#10);
result := Concat(result, #9#9#9, format('lStateMachine.Name = "%s";', [utSubMachineState(lState).StateMachine.Name]), #13#10); result := Concat(result, #9#9#9, format('lStateMachine.Name = "%s";', [utSubMachineState(lState).StateMachine.Name]), #13#10);
...@@ -4050,7 +4185,7 @@ begin ...@@ -4050,7 +4185,7 @@ begin
begin begin
lUseCaseStateMachine := (lState as utSubMachineState).StateMachine as acUseCaseStateMachine; lUseCaseStateMachine := (lState as utSubMachineState).StateMachine as acUseCaseStateMachine;
result := Concat(result, #9#9#9, format('lSubMachineState = new utSubMachineState(lStateMachine, "%s");', [lState.Name]), #13#10); result := Concat(result, #9#9#9, format('lSubMachineState = new utSubMachineState(lStateMachine, "%s");', [lState.Name]), #13#10);
result := Concat(result, #9#9#9, format('lSubMachineUseCaseTicket = piMetaModel.getUseCaseTicketByCode("%s");', [lUseCaseStateMachine.UseCaseTicket.Code]), #13#10); result := Concat(result, #9#9#9, format('lSubMachineUseCaseTicket = piMetaModel.GetUseCaseTicketByCode("%s");', [lUseCaseStateMachine.UseCaseTicket.Code]), #13#10);
result := Concat(result, #9#9#9, format('lSubMachineState.setStateMachine( new acUseCaseStateMachine(lSubMachineUseCaseTicket, lSubMachineState) );', []), #13#10); result := Concat(result, #9#9#9, format('lSubMachineState.setStateMachine( new acUseCaseStateMachine(lSubMachineUseCaseTicket, lSubMachineState) );', []), #13#10);
end end
else if lState is utFinalState then else if lState is utFinalState then
...@@ -4060,10 +4195,8 @@ begin ...@@ -4060,10 +4195,8 @@ begin
lStatesEnum.MoveNext; lStatesEnum.MoveNext;
end; end;
result := Concat(result, #13#10#9#9#9, '//Define o InitialState do StateMachine', #13#10);
result := Concat(result, #9#9#9, format('lStateMachine.setInitialState( lStateMachine.FindState("%s") );', [piStateMachine.InitialState.Name]), #13#10); result := Concat(result, #9#9#9, format('lStateMachine.setInitialState( lStateMachine.FindState("%s") );', [piStateMachine.InitialState.Name]), #13#10);
result := Concat(result, #13#10#9#9#9, '//Adiciona as transicoes dos estados', #13#10);
//Adiciona as transicoes de cada estado //Adiciona as transicoes de cada estado
lStatesEnum.MoveFirst; lStatesEnum.MoveFirst;
while not lStatesEnum.EOL do while not lStatesEnum.EOL do
...@@ -4130,7 +4263,7 @@ begin ...@@ -4130,7 +4263,7 @@ begin
end; end;
for I := 0 to lTransition.EffectsCount - 1 do for I := 0 to lTransition.EffectsCount - 1 do
result := Concat(result, #9#9#9, format('lTransition.AddEffect("%s");', [lTransition.Effects[i]]), #13#10); result := Concat(result, #9#9#9, format('lTransition.AddEffect("%s");', [lTransition.GetEffects(i)]), #13#10);
if Not piModelMappingsOptions.IgnoreXSDSchema then if Not piModelMappingsOptions.IgnoreXSDSchema then
begin begin
...@@ -4178,7 +4311,6 @@ begin ...@@ -4178,7 +4311,6 @@ begin
lState := utState(lStatesEnum.Current); lState := utState(lStatesEnum.Current);
if lState is utSubMachineState then if lState is utSubMachineState then
begin begin
result := Concat(result, #9#9#9, format('// SUBSTATEMACHINE %s ///////////////////////', [utSubMachineState(lState).StateMachine.Name]), #13#10);
result := Concat(result, #9#9#9, format('lStateMachine = lUseCaseTicket.FindStateMachine("%s");', [piStateMachine.Name]), #13#10); result := Concat(result, #9#9#9, format('lStateMachine = lUseCaseTicket.FindStateMachine("%s");', [piStateMachine.Name]), #13#10);
result := Concat(result, #9#9#9, format('lStateMachine = (acUseCaseStateMachine)( (utSubMachineState) lStateMachine.FindState("%s") ).getStateMachine();', [lState.Name]), #13#10); result := Concat(result, #9#9#9, format('lStateMachine = (acUseCaseStateMachine)( (utSubMachineState) lStateMachine.FindState("%s") ).getStateMachine();', [lState.Name]), #13#10);
result := Concat(result, #9#9#9, format('lStateMachine.setName( "%s" );', [utSubMachineState(lState).StateMachine.Name]), #13#10); result := Concat(result, #9#9#9, format('lStateMachine.setName( "%s" );', [utSubMachineState(lState).StateMachine.Name]), #13#10);
...@@ -4523,53 +4655,6 @@ begin ...@@ -4523,53 +4655,6 @@ begin
end; end;
procedure TUtil.GerarUnitRelationsAll(piModelMappingsOptions: TModelMappingsOptions; psFileName: string; piProgress: TFShowProgress);
var
lInstantCodeModule: TInstantCodeModule;
lInstantCodeProc: TInstantCodeProc;
lInstantCodeVar: TInstantCodeVar;
lInstantCodeBody: TInstantCodeBody;
// lInstantCodeWriter: TInstantCodeWriter;
// s: string;
begin
// Cria UNIT
lInstantCodeModule := TInstantCodeModule.Create(nil);
lInstantCodeModule.Name := 'RelationsAll';
// Section interface
lInstantCodeModule.InterfaceSection.AddUses.Name := 'acuframework';
lInstantCodeProc := lInstantCodeModule.InterfaceSection.AddProc;
lInstantCodeProc.Name := 'GenerateRelations';
lInstantCodeProc.Parameters.AddParameter('piMetaModel', 'acMetaModel', []);
lInstantCodeProc.Parameters.AddParameter('piMetaModelPersistenceMap', 'acMetaModelPersistenceMap', []);
// Section implementation
lInstantCodeModule.ImplementationSection.AddUses.Name := 'acuRepositorySQL';
lInstantCodeProc := lInstantCodeModule.ImplementationSection.AddProc;
lInstantCodeProc.Name := 'GenerateRelations';
lInstantCodeProc.Parameters.AddParameter('piMetaModel', 'acMetaModel', []);
lInstantCodeProc.Parameters.AddParameter('piMetaModelPersistenceMap', 'acMetaModelPersistenceMap', []);
lInstantCodeBody := lInstantCodeProc.Body;
lInstantCodeVar := lInstantCodeBody.Vars.Add;
lInstantCodeVar.Name := 'lRelationTicket';
lInstantCodeVar.TypeName := 'acRelationTicket';
lInstantCodeBody.Text := GerarBodyRelationsAll(piProgress);
// lInstantCodeModule.InitializationSection.CodeText := 'RegisterRelation()';
// Gerao de arquivo
lInstantCodeModule.SaveToFile(psFileName);
end;
function TUtil.GerarRelationsPartnerShips(piClassTicket: acClassTicket; piInstantCodeClass: TInstantCodeClass): string; function TUtil.GerarRelationsPartnerShips(piClassTicket: acClassTicket; piInstantCodeClass: TInstantCodeClass): string;
var li: Integer; var li: Integer;
lRelation: acRelationTicket; lRelation: acRelationTicket;
...@@ -4692,7 +4777,7 @@ begin ...@@ -4692,7 +4777,7 @@ begin
lParamsConstrutor := ''; lParamsConstrutor := '';
lsNomeClasse := piClass.Name; lsNomeClasse := piClass.Name;
lsNomeUnit := Copy(lsNomeClasse, 1, 2) + 'u' + Copy(lsNomeClasse, 3, Length(lsNomeClasse)-2); lsNomeUnit := Copy(lsNomeClasse, 1, 2) + 'u' + Copy(lsNomeClasse, 3, Length(lsNomeClasse)-2);
lClassTicket := MetaModel.ClassRegisterTicketByName[lsNomeClasse]; lClassTicket := MetaModel.GetClassTicketByName(lsNomeClasse);
lCodigoClasse := PStringWriter.Create; lCodigoClasse := PStringWriter.Create;
try try
...@@ -4881,7 +4966,7 @@ begin ...@@ -4881,7 +4966,7 @@ begin
lParamsConstrutor := ''; lParamsConstrutor := '';
lsNomeClasse := piClass.Name; lsNomeClasse := piClass.Name;
lsNomeUnit := Copy(lsNomeClasse, 1, 2) + 'u' + Copy(lsNomeClasse, 3, Length(lsNomeClasse)-2); lsNomeUnit := Copy(lsNomeClasse, 1, 2) + 'u' + Copy(lsNomeClasse, 3, Length(lsNomeClasse)-2);
lClassTicket := MetaModel.ClassRegisterTicketByName[lsNomeClasse]; lClassTicket := MetaModel.GetClassTicketByName(lsNomeClasse);
lCodigoClasse := PStringWriter.Create; lCodigoClasse := PStringWriter.Create;
try try
...@@ -5003,7 +5088,7 @@ begin ...@@ -5003,7 +5088,7 @@ begin
lsNomeClasse := piClass.Name; lsNomeClasse := piClass.Name;
lsNomeUnit := Copy(lsNomeClasse, 1, 2) + 'u' + Copy(lsNomeClasse, 3, Length(lsNomeClasse)-2); lsNomeUnit := Copy(lsNomeClasse, 1, 2) + 'u' + Copy(lsNomeClasse, 3, Length(lsNomeClasse)-2);
lClassTicket := MetaModel.ClassRegisterTicketByName[lsNomeClasse]; lClassTicket := MetaModel.GetClassTicketByName(lsNomeClasse);
lInstantCodeProject := TInstantCodeProject.Create; lInstantCodeProject := TInstantCodeProject.Create;
// Cria UNIT // Cria UNIT
...@@ -5363,10 +5448,10 @@ var ...@@ -5363,10 +5448,10 @@ var
end; end;
for i := 0 to lTransition.EffectsCount - 1 do for i := 0 to lTransition.EffectsCount - 1 do
if not assigned(lEffectObjectHash.ValueOf(lTransition.Effects[i])) then if not assigned(lEffectObjectHash.ValueOf(lTransition.GetEffects(i))) then
begin begin
AddMethod(lTransition.Effects[i]); AddMethod(lTransition.GetEffects(i));
lEffectObjectHash.Add(lTransition.Effects[i], lTransition); lEffectObjectHash.Add(lTransition.GetEffects(i), lTransition);
end; end;
lTransitionEnum.MoveNext; lTransitionEnum.MoveNext;
...@@ -5665,7 +5750,7 @@ begin ...@@ -5665,7 +5750,7 @@ begin
lsNomeTabela := Uppercase(Copy(lsNomeClasse, 0, 2)) + 'U' + Copy(lsNomeClasse, 3, Length(lsNomeClasse)-2); lsNomeTabela := Uppercase(Copy(lsNomeClasse, 0, 2)) + 'U' + Copy(lsNomeClasse, 3, Length(lsNomeClasse)-2);
lClassTicket := MetaModel.ClassRegisterTicketByName[lsNomeClasse]; lClassTicket := MetaModel.GetClassTicketByName(lsNomeClasse);
lClassToDBMapTicket := lMetaModelPersistenceMapSQL.GetClassToDBMapTicket(lClassTicket); lClassToDBMapTicket := lMetaModelPersistenceMapSQL.GetClassToDBMapTicket(lClassTicket);
lsResult := concat(lsResult, SQLScriptCreateDirectTable(lClassToDBMapTicket, piDBVendor)); lsResult := concat(lsResult, SQLScriptCreateDirectTable(lClassToDBMapTicket, piDBVendor));
...@@ -5682,8 +5767,8 @@ begin ...@@ -5682,8 +5767,8 @@ begin
(lAssociation.GetConnectionAt(1).Get_Participant as IUMLClass).Name; (lAssociation.GetConnectionAt(1).Get_Participant as IUMLClass).Name;
lClassOriginTicket := MetaModel.ClassRegisterTicketByName[((lAssociation.GetConnectionAt(0).Get_Participant as IUMLClass).Name)]; lClassOriginTicket := MetaModel.GetClassTicketByName(((lAssociation.GetConnectionAt(0).Get_Participant as IUMLClass).Name));
lClassDestTicket := MetaModel.ClassRegisterTicketByName[((lAssociation.GetConnectionAt(1).Get_Participant as IUMLClass).Name)]; lClassDestTicket := MetaModel.GetClassTicketByName(((lAssociation.GetConnectionAt(1).Get_Participant as IUMLClass).Name));
if (lAssociation.GetConnectionAt(1).Get_Multiplicity = '1') then if (lAssociation.GetConnectionAt(1).Get_Multiplicity = '1') then
......
...@@ -6,8 +6,8 @@ interface ...@@ -6,8 +6,8 @@ interface
uses uses
LCLIntf, LCLType, LMessages, Messages, SysUtils, Variants, Classes, Graphics, LCLIntf, LCLType, LMessages, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, StdCtrls, Dialogs, JvExControls, ComCtrls, ExtCtrls, Buttons, Controls, Forms, StdCtrls, Dialogs, ComCtrls, ExtCtrls, Buttons,
MaskEdit, JvBaseEdits, JvCheckBox, utuMessage, Grids, ValEdit, StarUMLintf, MaskEdit, utuMessage, Grids, ValEdit, StarUMLintf,
cxuCadastroDefinicaoClasse, IntegracaoDelphiSUML, acuModel; cxuCadastroDefinicaoClasse, IntegracaoDelphiSUML, acuModel;
type type
...@@ -473,7 +473,7 @@ begin ...@@ -473,7 +473,7 @@ begin
end; end;
end; end;
lClass := fUtil.MetaModel.ClassTicketByCode[fClassCode] as acClassTicket; lClass := fUtil.MetaModel.GetClassTicketByCode(fClassCode) as acClassTicket;
FillListViewClassData(lClass); FillListViewClassData(lClass);
lvCampos.Selected := nil; lvCampos.Selected := nil;
lvCamposClick(nil); lvCamposClick(nil);
......
...@@ -13,7 +13,7 @@ object DataBaseLogin: TDataBaseLogin ...@@ -13,7 +13,7 @@ object DataBaseLogin: TDataBaseLogin
OnShow = FormShow OnShow = FormShow
ParentFont = True ParentFont = True
Position = poOwnerFormCenter Position = poOwnerFormCenter
LCLVersion = '2.0.2.0' LCLVersion = '2.1.0.0'
object GroupBox2: TGroupBox object GroupBox2: TGroupBox
Left = 8 Left = 8
Height = 216 Height = 216
......
...@@ -103,7 +103,7 @@ begin ...@@ -103,7 +103,7 @@ begin
GetUserDSNList(cbODBCD_DSN.Items); GetUserDSNList(cbODBCD_DSN.Items);
GetDriverList(cbODBCD_DRIVERS.Items); GetDriverList(cbODBCD_DRIVERS.Items);
for lObj in gSQLDialectManager.InstancedObjects do for lObj in acSQLDialectManager.Instance.InstancedObjects do
begin begin
cbDialect.AddItem(acFactoredObject(lObj).Ticket.Code, lObj); cbDialect.AddItem(acFactoredObject(lObj).Ticket.Code, lObj);
end; end;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment