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

Ajustes

parent 7b8e54f3
......@@ -10,28 +10,32 @@
</HEADER>
<BODY>
<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="Code Generator" actionId="6" beginGroup="TRUE"/>
<MAINITEM caption="Quick OQL" actionId="18" beginGroup="TRUE"/>
<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="Dynamo" actionId="20" beginGroup="TRUE"/>
<MAINITEM caption="Dynamo" beginGroup="TRUE">
<MAINITEM caption="Manage Forms..." actionId="20"/>
</MAINITEM> -->
</MAINITEM>
<MAINITEM caption="Curio" beginGroup="TRUE" availableWhen="MODEL_SELECTED">
<MAINITEM caption="Associations" beginGroup="TRUE">
<MAINITEM caption="Association code preview..." actionId="2" />
</MAINITEM>
<MAINITEM caption="Classes" beginGroup="TRUE">
<MAINITEM caption="Insert class..." actionId="9" />
<MAINITEM caption="Edit selected class..." actionId="10"/>
<MAINITEM caption="Class code preview..." actionId="2" beginGroup="TRUE" />
</MAINITEM>
<!-- <MAINITEM caption="Transitions" >
<MAINITEM caption="XSD Editor..." actionId="7" />
</MAINITEM>-->
</MAINITEM> -->
<MAINITEM caption="Usecases" beginGroup="TRUE">
<MAINITEM caption="Insert usecase..." actionId="8" />
......@@ -53,6 +57,7 @@
<POPUPITEM caption="Associations" >
<POPUPITEM caption="Association code preview..." actionId="2" />
</POPUPITEM>
<POPUPITEM caption="Classes" >
<POPUPITEM caption="Class code preview..." actionId="2" />
<POPUPITEM caption="Insert class..." actionId="9" beginGroup="TRUE" />
......@@ -61,13 +66,17 @@
<!-- <POPUPITEM caption="Transitions" >
<POPUPITEM caption="XSD Editor..." actionId="7" />
</POPUPITEM>-->
</POPUPITEM> -->
<POPUPITEM caption="Usecases" >
<POPUPITEM caption="Insert usecase..." actionId="8" />
<POPUPITEM caption="Edit selected usecase..." actionId="11"/>
<POPUPITEM caption="XSDs Editor..." actionId="13" beginGroup="TRUE" />
</POPUPITEM>
<POPUPITEM caption="Dynamo" >
<POPUPITEM caption="Manage Forms" actionId="20" />
</POPUPITEM>
</POPUPMENU>
</BODY>
</ADDINMENU>
......
......@@ -29,10 +29,12 @@ uses
utuLinksManager,
utuLinkSock,
acuFramework,
acuSystem,
acuSystemCurrentConfig,
acuApplicationLog,
acuPersistenceLog,
acuQuerySQLODBC,
ituExplorerV2,
acuAudit,
IntegracaoDelphiSUML in 'IntegracaoDelphiSUML.pas',
Mostra_Processamento in 'Mostra_Processamento.pas' {FMostra_Processamento},
InstantClasses in 'InstantCode\InstantClasses.pas',
......@@ -60,20 +62,21 @@ begin
end;
{$ifend}
gSystemConfig := acSystem.Create('');
if not assigned(gApplicationLog) then gApplicationLog := acApplicationLog.Create;
if not assigned(gPersistenceManager) then gPersistenceManager := acPersistenceManager.Create;
if not assigned(gAuditLog) then gAuditLog := acAuditLog.Create;
utuMessage.ChangeLocaleFormatSetting;
gDefaultDatabaseDriver := typeOf(acDatabaseSQLODBC);
if not assigned(acApplicationLog.Instance) then acApplicationLog.Instance := acApplicationLog.Create;
if not assigned(acPersistenceManager.Instance) then acPersistenceManager.Instance := acPersistenceManager.Create;
if not assigned(acPersistenceManager.Audit) then acPersistenceManager.Audit := acAudit.Create;
if not Assigned(acPersistenceLog.Instance) then acPersistenceLog.Instance := acPersistenceLog.Create;
if not Assigned(acSystemCurrentConfig.Instance) then acSystemCurrentConfig.Instance := acSystemCurrentConfig.Create;
mxMessage.ChangeLocaleFormatSetting;
acRepositorySQL.DefaultDatabaseDriver := typeOf(acDatabaseSQLODBC);
PersistenceManager.DefaultRepositoryClass := typeOf(acRepositorySQL);
PersistenceManager.RegisterClass(typeOf(acPersistentObject), acPersistentObjectClassFactory.Create);
gSQLDialectManager := acSQLDialectManager.Create;
gSQLDialectManager.RegisterSQLDialect('MS SQL Server', typeOf(acSQLDialectSQLServer), acSQLDialectSQLServerClassFactory.Create);
gSQLDialectManager.RegisterSQLDialect('Oracle', typeOf(acSQLDialectOracle), acSQLDialectOracleClassFactory.Create);
gSQLDialectManager.RegisterSQLDialect('DB2', typeOf(acSQLDialectDB2), acSQLDialectDB2ClassFactory.Create);
gLinksManager := utLinksManager.Create;
gLinksManager.RegisterLink('tcp/ip', typeOf(utLinkSock), utLinkSockClassFactory.Create);
if not Assigned(acSQLDialectManager.Instance) then acSQLDialectManager.Instance := acSQLDialectManager.Create;
acSQLDialectManager.Instance.RegisterSQLDialect('MS SQL Server', typeOf(acSQLDialectSQLServer), acSQLDialectSQLServerClassFactory.Create);
acSQLDialectManager.Instance.RegisterSQLDialect('Oracle', typeOf(acSQLDialectOracle), acSQLDialectOracleClassFactory.Create);
acSQLDialectManager.Instance.RegisterSQLDialect('DB2', typeOf(acSQLDialectDB2), acSQLDialectDB2ClassFactory.Create);
if not Assigned(utLinksManager.Instance) then utLinksManager.Instance := utLinksManager.Create;
utLinksManager.Instance.RegisterLink('tcp/ip', typeOf(utLinkSock), utLinkSockClassFactory.Create);
{$IFDEF DARWIN}
MainPool := Nil;
......
......@@ -98,9 +98,6 @@
<TargetOS Value="win32"/>
</CodeGeneration>
<Linking>
<Debugging>
<DebugInfoType Value="dsDwarf2Set"/>
</Debugging>
<Options>
<Win32>
<GraphicApplication Value="True"/>
......@@ -171,23 +168,30 @@
</PublishOptions>
<RunParams>
<FormatVersion Value="2"/>
<Modes Count="0"/>
</RunParams>
<RequiredPackages Count="5">
<RequiredPackages Count="7">
<Item1>
<PackageName Value="JvStdCtrlsLazR"/>
<PackageName Value="CurioApplication"/>
</Item1>
<Item2>
<PackageName Value="evoumlintf"/>
<PackageName Value="Curio"/>
</Item2>
<Item3>
<PackageName Value="curio"/>
<PackageName Value="CurioPersistence"/>
</Item3>
<Item4>
<PackageName Value="SynEdit"/>
<PackageName Value="CurioModeling"/>
</Item4>
<Item5>
<PackageName Value="LCL"/>
<PackageName Value="evoumlintf"/>
</Item5>
<Item6>
<PackageName Value="SynEdit"/>
</Item6>
<Item7>
<PackageName Value="LCL"/>
</Item7>
</RequiredPackages>
<Units Count="32">
<Unit0>
......
......@@ -65,6 +65,8 @@ type
CheckDBTableNameLength: boolean;
end;
{ TUtil }
TUtil = class(TObject)
private
{ Private declarations }
......@@ -98,13 +100,15 @@ type
procedure GerarUnitRegisterModelMappings(piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress);
procedure GerarUnitRegisterModelMappings_CSharp(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;
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);
function GerarBodyRelationsAll(piProgress: TFShowProgress): string;
procedure GerarBodyRelationsAll_CSharp(piProgress: TFShowProgress; piUnitRegisterMappings: PStringWriter);
procedure GerarBodyRelationsAll_Java(piProgress: TFShowProgress; piUnitRegisterMappings: PStringWriter);
procedure GerarUnitRelationsAll(piModelMappingsOptions: TModelMappingsOptions; psFileName: string; piProgress: TFShowProgress);
function GerarBodyRelationsAll(piProgress: TFShowProgress; piStartAt: Integer; piEndAt: Integer): string;
procedure GerarBodyRelationsAll_CSharp(piProgress: TFShowProgress; piStartAt: Integer; piEndAt: Integer; piUnitRegisterMappings: PStringWriter);
procedure GerarBodyRelationsAll_Java(piProgress: TFShowProgress; piStartAt: Integer; piEndAt: Integer; piUnitRegisterMappings: PStringWriter);
function GerarRelationsPartnerShips(piClassTicket: acClassTicket; piInstantCodeClass: TInstantCodeClass): string;
function GerarBodyUseCases(piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress; piStartAt: Integer; piEndAt: Integer; piInstantCodeImplementationSection: TInstantCodeImplementationSection): string;
......@@ -174,8 +178,8 @@ var gStarUMLApp: IStarUMLApplication;
implementation
uses dialogs, uDBAttributeParameters, acuUseCaseStateMachine, acuFramework, Forms, DelphiAddInObj,
Controls, strutils, utuMessage, utuXSD, acuModelMapping;
uses dialogs, uDBAttributeParameters, acuFramework, Forms, DelphiAddInObj,
Controls, strutils, utuMessage, utuXSD, acuModelMapping, acuUseCaseStateMachine;
function InitializeAddIn(AApplicationHandle: THandle; AStarUMLApplication: TObject): Integer; {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF}
begin
......@@ -422,7 +426,7 @@ function TUtil.SQLScriptCreateDirectTable(piClassToDBMapTicket: acClassToDBMapTi
for i := piClassDBTicket.ClassTicket.RelationTicketsIn.Count - 1 downto 0 do
begin
lRelationTicket := acRelationTicket(piClassDBTicket.ClassTicket.RelationTicketsIn.Objects[i]);
lRelationPersistenceMapTicket := lMetaModelPersistenceMapSQL.RelationsSQLPersistenceMapTicket[lRelationTicket];
lRelationPersistenceMapTicket := lMetaModelPersistenceMapSQL.GetRelationsSQLPersistenceMapTicket(lRelationTicket);
if (lRelationTicket.DestinationMaxMultiplicity <= 1) then
if (lRelationPersistenceMapTicket is acDirectDBRelationMapTicket)then
begin
......@@ -625,6 +629,31 @@ begin
piIndirectDBRelationMapTicket.FKDestinoName]),#13#10);
Result := concat(Result, 'exception when others then raise;', #13#10, '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
begin
Result := concat(Result, #13#10#13#10);
......@@ -636,10 +665,34 @@ begin
piIndirectDBRelationMapTicket.FKOrigemName]),#13#10);
Result := concat(Result, 'exception when others then raise;', #13#10, '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;
else
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,
lNomeConstraint,
piIndirectDBRelationMapTicket.FKOrigemName,
......@@ -666,7 +719,28 @@ begin
piIndirectDBRelationMapTicket.FKOrigemName,
piIndirectDBRelationMapTicket.FKDestinoName]));
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
Result := concat(Result, #13#10#13#10);
result := concat(result, Format('CREATE UNIQUE INDEX %s ON %s (%s, %s);',
......@@ -675,6 +749,27 @@ begin
piIndirectDBRelationMapTicket.FKDestinoName,
piIndirectDBRelationMapTicket.FKOrigemName]));
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;
......@@ -741,7 +836,7 @@ begin
for i := piClassToDBMapTicket.ClassTicket.RelationTicketsIn.Count - 1 downto 0 do
begin
lRelationTicket := acRelationTicket(piClassToDBMapTicket.ClassTicket.RelationTicketsIn.Objects[i]);
lRelationPersistenceMapTicket := lMetaModelPersistenceMapSQL.RelationsSQLPersistenceMapTicket[lRelationTicket];
lRelationPersistenceMapTicket := lMetaModelPersistenceMapSQL.GetRelationsSQLPersistenceMapTicket(lRelationTicket);
if (lRelationTicket.DestinationMaxMultiplicity <= 1) then
begin
if (lRelationPersistenceMapTicket is acDirectDBRelationMapTicket)then
......@@ -970,7 +1065,7 @@ begin
for i := piClassToDBMapTicket.ClassTicket.RelationTicketsIn.Count - 1 downto 0 do
begin
lRelationTicket := acRelationTicket(piClassToDBMapTicket.ClassTicket.RelationTicketsIn.Objects[i]);
lRelationPersistenceMapTicket := lMetaModelPersistenceMapSQL.RelationsSQLPersistenceMapTicket[lRelationTicket];
lRelationPersistenceMapTicket := lMetaModelPersistenceMapSQL.GetRelationsSQLPersistenceMapTicket(lRelationTicket);
if (lRelationTicket.DestinationMaxMultiplicity <= 1) then
begin
if (lRelationPersistenceMapTicket is acDirectDBRelationMapTicket)then
......@@ -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]));
end;
lUseCaseTicket := MetaModel.UseCaseTicketByCode[lUseCaseCode];
lUseCaseTicket := MetaModel.GetUseCaseTicketByCode(lUseCaseCode);
if not Assigned(lUseCaseTicket) then
begin
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
raise Exception.Create(Format('Need to define tagged value "Code" for UseCase "%s" in DBUseCaseMap Tag Definition.',[lUMLChildUseCase.Pathname]));
end;
lUseCaseTicket := poMetaModel.UseCaseTicketByCode[lUseCaseCode];
lUseCaseTicket := poMetaModel.GetUseCaseTicketByCode(lUseCaseCode);
if Assigned(lUseCaseTicket) then
begin
gStarUMLApp.SelectInModelExplorer(lUMLChildUseCase);
......@@ -2285,7 +2380,7 @@ begin
raise Exception.Create(Format('Need to define tagged value "Code" for UseCase "%s" in DBUseCaseMap Tag Definition.',[lUMLChildUseCase.Pathname]));
end;
lUseCaseTicket := poMetaModel.UseCaseTicketByCode[lUseCaseCode];
lUseCaseTicket := poMetaModel.GetUseCaseTicketByCode(lUseCaseCode);
// lUseCaseTicket := poMetaModel.NewUseCaseTicket(lUseCaseCode, nil, lUseCaseIsAuditable);
// lUseCaseTicket.Name := lUMLChildUseCase.Name;
// lUseCaseTicket.InheritsFrom := lUMLChildUseCase.GetGeneralizationAt(0).Parent.Name;
......@@ -2365,9 +2460,6 @@ begin
if lsTypeColumnName <> '' then
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
for index := 0 to lClassTicket.Attributes.Count - 1 do
begin
......@@ -2440,7 +2532,9 @@ begin
result := sRegisterMapping;
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
lEnum: acEnumerator;
lClassTicket: acClassTicket;
......@@ -2497,9 +2591,6 @@ begin
if lsTypeColumnName <> '' then
piUnitRegisterMappings.WriteLine('lClassToDBMapTicket.TypeColumnName = "'+ lsTypeColumnName +'";');
if lClassTicket.Attributes.Count > 0 then
piUnitRegisterMappings.WriteLine('// registrando os atributos da classe');
//Percorre atributos da classe
for index := 0 to lClassTicket.Attributes.Count - 1 do
begin
......@@ -2551,8 +2642,9 @@ begin
piUnitRegisterMappings.Outdent();
end;
procedure TUtil.GerarBodyRegisterMappings_Java(piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress; piStartAt, piEndAt: Integer;
piUnitRegisterMappings: PStringWriter);
procedure TUtil.GerarBodyRegisterMappings_Java(
piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress;
piStartAt: Integer; piEndAt: Integer; piUnitRegisterMappings: PStringWriter);
var
lEnum: acEnumerator;
lClassTicket: acClassTicket;
......@@ -2610,9 +2702,6 @@ begin
if lsTypeColumnName <> '' then
piUnitRegisterMappings.WriteLine('lClassToDBMapTicket.setTypeColumnName("'+ lsTypeColumnName +'");');
if lClassTicket.Attributes.Count > 0 then
piUnitRegisterMappings.WriteLine('// registrando os atributos da classe');
//Percorre atributos da classe
for index := 0 to lClassTicket.Attributes.Count - 1 do
begin
......@@ -2668,6 +2757,7 @@ procedure TUtil.GerarUnitRegisterModelMappings(piModelMappingsOptions: TModelMap
const
MAX_UC = 100;
MAX_CLASS = 200;
MAX_RELATIONS = 200;
var
lInstantCodeModule: TInstantCodeModule;
lInstantCodeProc: TInstantCodeProc;
......@@ -2677,6 +2767,7 @@ var
lI,
lTotalGroups: Integer;
lRegisterUseCasesCall,
lRegisterRelationsCall,
lRegisterClassCall: string;
lInstantCodeConsts: TInstantCodeConsts;
// lInstantCodeWriter: TInstantCodeWriter;
......@@ -2724,9 +2815,14 @@ begin
end;
lTotalGroups := (MetaModel.RelationTickets.Count div MAX_RELATIONS);
if (MetaModel.RelationTickets.Count mod MAX_RELATIONS) <> 0 then Inc(lTotalGroups);
for lI := 0 to lTotalGroups - 1 do
begin
//PROCEDURE RegisterClassRelationTickets //////////////////////////////////////////
lInstantCodeProc := lInstantCodeModule.ImplementationSection.AddProc;
lInstantCodeProc.Name := 'RegisterClassRelationTickets';
lInstantCodeProc.Name := 'RegisterClassRelationTickets' + IntToStr(lI + 1);
lInstantCodeProc.Parameters.AddParameter('piMetaModel', 'acMetaModel', []);
lInstantCodeProc.Parameters.AddParameter('piMetaModelPersistenceMap', 'acMetaModelPersistenceMapSQL', []);
lInstantCodeBody := lInstantCodeProc.Body;
......@@ -2734,7 +2830,11 @@ begin
lInstantCodeVar := lInstantCodeBody.Vars.Add;
lInstantCodeVar.Name := 'lRelationTicket';
lInstantCodeVar.TypeName := 'acRelationTicket';
lInstantCodeBody.Text := GerarBodyRelationsAll(piProgress);
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);
if (MetaModel.UseCaseTickets.Count mod MAX_UC) <> 0 then Inc(lTotalGroups);
......@@ -2786,7 +2886,7 @@ begin
lInstantCodeBody := lInstantCodeProc.Body;
lInstantCodeBody.Text := concat(' ', lRegisterClassCall, #13#10,
' ', 'RegisterClassRelationTickets(piMetaModelPersistenceMap.MetaModel, piMetaModelPersistenceMap);',#13#10,
' ', lRegisterRelationsCall,#13#10,
' ', lRegisterUseCasesCall);
// Gerao de arquivo
......@@ -2800,11 +2900,14 @@ procedure TUtil.GerarUnitRegisterModelMappings_CSharp(piModelMappingsOptions: TM
const
MAX_UC = 100;
MAX_CLASS = 200;
MAX_RELATIONS = 200;
var
lProcBody: String;
lI,
lTotalGroups: Integer;
lRegisterUseCasesCall,
lRegisterRelationsCall,
lRegisterClassCall: PStringWriter;
lArquivoRegisterModelMappings: PStringWriter;
......@@ -2813,17 +2916,14 @@ begin
lArquivoRegisterModelMappings := PStringWriter.Create();
lRegisterUseCasesCall := PStringWriter.Create();
lRegisterClassCall := PStringWriter.Create();
lRegisterRelationsCall := PStringWriter.Create();
try
lArquivoRegisterModelMappings.WriteLine('using acuFramework;');
lArquivoRegisterModelMappings.WriteLine('using acuRepositorySQL;');
lArquivoRegisterModelMappings.WriteLine('using System;');
lArquivoRegisterModelMappings.WriteLine('using acuRepositorySQL;');
lArquivoRegisterModelMappings.WriteLine('using acuModel;');
lArquivoRegisterModelMappings.WriteLine('using utuStateMachine;');
lArquivoRegisterModelMappings.WriteLine('using acuUseCaseStateMachine;');
lArquivoRegisterModelMappings.WriteLine();
lArquivoRegisterModelMappings.WriteLine('namespace acuRegisterModelMappings {');
lArquivoRegisterModelMappings.WriteLine();
lArquivoRegisterModelMappings.Indent();
lArquivoRegisterModelMappings.WriteLine('public sealed class acuRegisterModelMappings {');
lArquivoRegisterModelMappings.WriteLine();
......@@ -2846,11 +2946,19 @@ begin
end;
//PROCEDURE RegisterClassRelationTickets //////////////////////////////////////////
lTotalGroups := (MetaModel.RelationTickets.Count div MAX_RELATIONS);
if (MetaModel.RelationTickets.Count mod MAX_RELATIONS) <> 0 then Inc(lTotalGroups);
lArquivoRegisterModelMappings.WriteLine();
lArquivoRegisterModelMappings.WriteLine('internal static void RegisterClassRelationTickets(acMetaModel piMetaModel, acMetaModelPersistenceMapSQL piMetaModelPersistenceMap) {');
GerarBodyRelationsAll_CSharp(piProgress, lArquivoRegisterModelMappings);
for lI := 0 to lTotalGroups - 1 do
begin
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);
if (MetaModel.UseCaseTickets.Count mod MAX_UC) <> 0 then Inc(lTotalGroups);
for lI := 0 to lTotalGroups - 1 do
......@@ -2869,10 +2977,10 @@ begin
//PROCEDURE RegisterModelMappings //////////////////////////////////////////
lArquivoRegisterModelMappings.WriteLine();
lArquivoRegisterModelMappings.WriteLine('internal static void RegisterModelMappings(acMetaModelPersistenceMapSQL piMetaModelPersistenceMap) {');
lArquivoRegisterModelMappings.WriteLine('public static void RegisterModelMappings(acMetaModelPersistenceMapSQL piMetaModelPersistenceMap) {');
lArquivoRegisterModelMappings.Indent();
lArquivoRegisterModelMappings.Append(lRegisterClassCall);
lArquivoRegisterModelMappings.WriteLine('RegisterClassRelationTickets(piMetaModelPersistenceMap.MetaModel, piMetaModelPersistenceMap);');
lArquivoRegisterModelMappings.Append(lRegisterRelationsCall);
lArquivoRegisterModelMappings.Append(lRegisterUseCasesCall);
lArquivoRegisterModelMappings.Outdent();
lArquivoRegisterModelMappings.WriteLine('}');
......@@ -2881,9 +2989,6 @@ begin
lArquivoRegisterModelMappings.Outdent();
lArquivoRegisterModelMappings.WriteLine();
lArquivoRegisterModelMappings.WriteLine('}');
lArquivoRegisterModelMappings.Outdent();
lArquivoRegisterModelMappings.WriteLine();
lArquivoRegisterModelMappings.WriteLine('}');
// Gerao de arquivo
if assigned(piProgress) then piProgress.ChangeMessage('Saving file "'+ piModelMappingsOptions.FileName +'"...');
......@@ -2891,6 +2996,9 @@ begin
finally
lArquivoRegisterModelMappings.Free;
lRegisterUseCasesCall.Free;
lRegisterClassCall.Free;
lRegisterRelationsCall.Free;
end;
end;
......@@ -2898,11 +3006,13 @@ procedure TUtil.GerarUnitRegisterModelMappings_Java(piModelMappingsOptions: TMod
const
MAX_UC = 100;
MAX_CLASS = 200;
MAX_RELATIONS = 200;
var
lProcBody: String;
lI,
lTotalGroups: Integer;
lRegisterUseCasesCall,
lRegisterRelationsCall,
lRegisterClassCall: PStringWriter;
lArquivoRegisterModelMappings: PStringWriter;
......@@ -2911,11 +3021,12 @@ begin
lArquivoRegisterModelMappings := PStringWriter.Create();
lRegisterUseCasesCall := PStringWriter.Create();
lRegisterClassCall := PStringWriter.Create();
lRegisterRelationsCall := PStringWriter.Create();
try
lArquivoRegisterModelMappings.WriteLine('import acurepositorysql.*;');
lArquivoRegisterModelMappings.WriteLine('import acumodel.*;');
lArquivoRegisterModelMappings.WriteLine('import utustatemachine.*;');
lArquivoRegisterModelMappings.WriteLine('import acuusecasestatemachine.*;');
lArquivoRegisterModelMappings.WriteLine('import acuRepositorySQL.*;');
lArquivoRegisterModelMappings.WriteLine('import acuModel.*;');
lArquivoRegisterModelMappings.WriteLine('import utuStateMachine.*;');
lArquivoRegisterModelMappings.WriteLine('import acuUseCaseStateMachine.*;');
lArquivoRegisterModelMappings.WriteLine();
lArquivoRegisterModelMappings.Indent();
......@@ -2937,11 +3048,19 @@ begin
end;
//PROCEDURE RegisterClassRelationTickets //////////////////////////////////////////
lTotalGroups := (MetaModel.RelationTickets.Count div MAX_RELATIONS);
if (MetaModel.RelationTickets.Count mod MAX_RELATIONS) <> 0 then Inc(lTotalGroups);
lArquivoRegisterModelMappings.WriteLine();
for lI := 0 to lTotalGroups - 1 do
begin
lArquivoRegisterModelMappings.WriteLine();
lArquivoRegisterModelMappings.WriteLine('static void RegisterClassRelationTickets(acMetaModel piMetaModel, acMetaModelPersistenceMapSQL piMetaModelPersistenceMap) {');
GerarBodyRelationsAll_Java(piProgress, lArquivoRegisterModelMappings);
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);
if (MetaModel.UseCaseTickets.Count mod MAX_UC) <> 0 then Inc(lTotalGroups);
for lI := 0 to lTotalGroups - 1 do
......@@ -2960,10 +3079,10 @@ begin
//PROCEDURE RegisterModelMappings //////////////////////////////////////////
lArquivoRegisterModelMappings.WriteLine();
lArquivoRegisterModelMappings.WriteLine('static void RegisterModelMappings(acMetaModelPersistenceMapSQL piMetaModelPersistenceMap) {');
lArquivoRegisterModelMappings.WriteLine('public static void RegisterModelMappings(acMetaModelPersistenceMapSQL piMetaModelPersistenceMap) {');
lArquivoRegisterModelMappings.Indent();
lArquivoRegisterModelMappings.Append(lRegisterClassCall);
lArquivoRegisterModelMappings.WriteLine('RegisterClassRelationTickets(piMetaModelPersistenceMap.getMetaModel(), piMetaModelPersistenceMap);');
lArquivoRegisterModelMappings.Append(lRegisterRelationsCall);
lArquivoRegisterModelMappings.Append(lRegisterUseCasesCall);
lArquivoRegisterModelMappings.Outdent();
lArquivoRegisterModelMappings.WriteLine('}');
......@@ -2979,10 +3098,13 @@ begin
finally
lArquivoRegisterModelMappings.Free;
lRegisterUseCasesCall.Free;
lRegisterClassCall.Free;
lRegisterRelationsCall.Free;
end;
end;
function TUtil.GerarBodyRelationsAll(piProgress: TFShowProgress): string;
function TUtil.GerarBodyRelationsAll(piProgress: TFShowProgress; piStartAt: Integer; piEndAt: Integer): string;
var lEnumRelation: acEnumerator;
lRelationTicket: acRelationTicket;
lClassTicketOrigem, lClassTicketDestino: acClassTicket;
......@@ -2991,11 +3113,15 @@ var lEnumRelation: acEnumerator;
lRelationSQLPersistenceMapTicket: acRelationSQLPersistenceMapTicket;
bIndireta: boolean;
lMultiplicityOrMax, lMultiplicityDsMax, lMultiplicityOrMin, lMultiplicityDsMin: integer;
li: Integer;
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;
try
while not lEnumRelation.EOL do
while (not lEnumRelation.EOL) and (li <= piEndAt) do
begin
if (li >= piStartAt) then
begin
if assigned(piProgress) then piProgress.Inc;
lRelationTicket := acRelationTicket(lEnumRelation.Current);
......@@ -3046,7 +3172,6 @@ begin
lsNomeTabelaAssociativa := ', ''' + (lRelationSQLPersistenceMapTicket as acIndirectDBRelationMapTicket).TableName + '''';
lsNomeFKA := ', ''' + (lRelationSQLPersistenceMapTicket as acIndirectDBRelationMapTicket).FKOrigemName + '''';
lsNomeFKB := ', ''' + (lRelationSQLPersistenceMapTicket as acIndirectDBRelationMapTicket).FKDestinoName + '''';
end
else
begin
......@@ -3090,7 +3215,7 @@ begin
lsNomeFKA := '';
lsNomeFKB := '';
lsNomeTabelaAssociativa := '';
end;
lEnumRelation.MoveNext;
end;
finally
......@@ -3100,7 +3225,7 @@ begin
end;
procedure TUtil.GerarBodyRelationsAll_CSharp(piProgress: TFShowProgress; piUnitRegisterMappings: PStringWriter);
procedure TUtil.GerarBodyRelationsAll_CSharp(piProgress: TFShowProgress; piStartAt: Integer; piEndAt: Integer; piUnitRegisterMappings: PStringWriter);
var lEnumRelation: acEnumerator;
lRelationTicket: acRelationTicket;
lClassTicketOrigem, lClassTicketDestino: acClassTicket;
......@@ -3110,9 +3235,10 @@ var lEnumRelation: acEnumerator;
bIndireta: boolean;
lMultiplicityOrMax, lMultiplicityDsMax, lMultiplicityOrMin, lMultiplicityDsMin: integer;
lOriginPropertyName, lDetinationPropertyName: string;
// I,
li: integer;
lNumPropertyName: integer;
begin
li := 1;
lNumPropertyName:= 0;
if assigned(piProgress) then piProgress.ChangeMessage('Generating model mappings relation tickets...', 0, MetaModel.RelationTickets.Count);
piUnitRegisterMappings.Indent();
......@@ -3120,7 +3246,9 @@ begin
lEnumRelation := MetaModel.RelationTickets.GetEnumerator;
try
while not lEnumRelation.EOL do
while not lEnumRelation.EOL and (li <= piEndAt) do
begin
if li >= piStartAt then
begin
if assigned(piProgress) then piProgress.Inc;
lRelationTicket := acRelationTicket(lEnumRelation.Current);
......@@ -3150,22 +3278,22 @@ begin
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('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 + '";');
......@@ -3237,7 +3365,7 @@ begin
lsNomeFKA := '';
lsNomeFKB := '';
lsNomeTabelaAssociativa := '';
end;
lEnumRelation.MoveNext;
end;
finally
......@@ -3247,7 +3375,7 @@ begin
piUnitRegisterMappings.Outdent();
end;
procedure TUtil.GerarBodyRelationsAll_Java(piProgress: TFShowProgress; piUnitRegisterMappings: PStringWriter);
procedure TUtil.GerarBodyRelationsAll_Java(piProgress: TFShowProgress; piStartAt: Integer; piEndAt: Integer; piUnitRegisterMappings: PStringWriter);
var lEnumRelation: acEnumerator;
lRelationTicket: acRelationTicket;
lClassTicketOrigem, lClassTicketDestino: acClassTicket;
......@@ -3258,7 +3386,9 @@ var lEnumRelation: acEnumerator;
lMultiplicityOrMax, lMultiplicityDsMax, lMultiplicityOrMin, lMultiplicityDsMin: integer;
lOriginPropertyName, lDetinationPropertyName: string;
lNumPropertyName: integer;
li: Integer;
begin
li := 1;
lNumPropertyName:= 0;
if assigned(piProgress) then piProgress.ChangeMessage('Generating model mappings relation tickets...', 0, MetaModel.RelationTickets.Count);
piUnitRegisterMappings.Indent();
......@@ -3266,7 +3396,9 @@ begin
lEnumRelation := MetaModel.RelationTickets.GetEnumerator;
try
while not lEnumRelation.EOL do
while not lEnumRelation.EOL and (li <= piEndAt) do
begin
if li >= piStartAt then
begin
if assigned(piProgress) then piProgress.Inc;
lRelationTicket := acRelationTicket(lEnumRelation.Current);
......@@ -3367,7 +3499,7 @@ begin
lsNomeFKA := '';
lsNomeFKB := '';
lsNomeTabelaAssociativa := '';
end;
lEnumRelation.MoveNext;
end;
finally
......@@ -3401,7 +3533,7 @@ begin
begin
lUseCaseStateMachine := (lState as utSubMachineState).StateMachine as acUseCaseStateMachine;
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);
end
else if lState is utFinalState then
......@@ -3411,10 +3543,8 @@ begin
lStatesEnum.MoveNext;
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, #13#10, '//Adiciona as transicoes dos estados', #13#10);
//Adiciona as transicoes de cada estado
lStatesEnum.MoveFirst;
while not lStatesEnum.EOL do
......@@ -3481,7 +3611,7 @@ begin
end;
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
begin
......@@ -3531,7 +3661,6 @@ begin
lState := utState(lStatesEnum.Current);
if lState is utSubMachineState then
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 := utSubMachineState(lStateMachine.FindState(''%s'')).StateMachine as acUseCaseStateMachine;', [lState.Name]), #13#10);
result := Concat(result, format('lStateMachine.Name := ''%s'';', [utSubMachineState(lState).StateMachine.Name]), #13#10);
......@@ -3622,8 +3751,10 @@ begin
end;
function TUtil.GerarBodyUseCases_CSharp(piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress; piStartAt, piEndAt: Integer;
piUnitRegisterMappings: PStringWriter): string;
function TUtil.GerarBodyUseCases_CSharp(
piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress;
piStartAt: Integer; piEndAt: Integer; piUnitRegisterMappings: PStringWriter
): string;
var
lEnum: acEnumerator;
lUseCaseTicket: acUseCaseTicket;
......@@ -3691,8 +3822,10 @@ begin
result := result + GerarBodyStateMachines_CSharp(piModelMappingsOptions, piProgress, piStartAt, piEndAt, piUnitRegisterMappings);
end;
function TUtil.GerarBodyUseCases_Java(piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress; piStartAt, piEndAt: Integer;
piUnitRegisterMappings: PStringWriter): string;
function TUtil.GerarBodyUseCases_Java(
piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress;
piStartAt: Integer; piEndAt: Integer; piUnitRegisterMappings: PStringWriter
): string;
var
lEnum: acEnumerator;
lUseCaseTicket: acUseCaseTicket;
......@@ -3770,8 +3903,8 @@ begin
begin
lUseCaseTicket := acUseCaseTicket(lEnum.Current);
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('lUseCaseTicket := piMetaModel.UseCaseTicketByCode[''%s''];', [lUseCaseTicket.Code]), #13#10);
result := Concat(result, format('//UseCase ''%s''', [lUseCaseTicket.Name]), #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, 'lStateMachine := lUseCaseTicket.StateMachine;', #13#10, #13#10);
result := Concat(result, format('lStateMachine.Name := ''%s'';', [lUseCaseTicket.StateMachine.Name]), #13#10);
......@@ -3785,7 +3918,10 @@ begin
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
lEnum: acEnumerator;
lUseCaseTicket: acUseCaseTicket;
......@@ -3808,8 +3944,8 @@ begin
begin
lUseCaseTicket := acUseCaseTicket(lEnum.Current);
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('lUseCaseTicket = piMetaModel.get_UseCaseTicketByCode("%s");', [lUseCaseTicket.Code]), #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, '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, format('lStateMachine.Name = "%s";', [lUseCaseTicket.StateMachine.Name]), #13#10);
......@@ -3823,8 +3959,10 @@ begin
end;
end;
function TUtil.GerarBodyStateMachines_Java(piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress; piStartAt, piEndAt: Integer;
piUnitRegisterMappings: PStringWriter): string;
function TUtil.GerarBodyStateMachines_Java(
piModelMappingsOptions: TModelMappingsOptions; piProgress: TFShowProgress;
piStartAt: Integer; piEndAt: Integer; piUnitRegisterMappings: PStringWriter
): string;
var
lEnum: acEnumerator;
lUseCaseTicket: acUseCaseTicket;
......@@ -3847,8 +3985,8 @@ begin
begin
lUseCaseTicket := acUseCaseTicket(lEnum.Current);
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('lUseCaseTicket = piMetaModel.getUseCaseTicketByCode("%s");', [lUseCaseTicket.Code]), #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, '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, format('lStateMachine.setName("%s");', [lUseCaseTicket.StateMachine.Name]), #13#10);
......@@ -3885,7 +4023,7 @@ begin
begin
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('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);
end
else if lState is utFinalState then
......@@ -3895,10 +4033,8 @@ begin
lStatesEnum.MoveNext;
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, #13#10#9#9#9, '//Adiciona as transicoes dos estados', #13#10);
//Adiciona as transicoes de cada estado
lStatesEnum.MoveFirst;
while not lStatesEnum.EOL do
......@@ -3965,7 +4101,7 @@ begin
end;
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
begin
......@@ -4013,7 +4149,6 @@ begin
lState := utState(lStatesEnum.Current);
if lState is utSubMachineState then
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 = (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);
......@@ -4050,7 +4185,7 @@ begin
begin
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('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);
end
else if lState is utFinalState then
......@@ -4060,10 +4195,8 @@ begin
lStatesEnum.MoveNext;
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, #13#10#9#9#9, '//Adiciona as transicoes dos estados', #13#10);
//Adiciona as transicoes de cada estado
lStatesEnum.MoveFirst;
while not lStatesEnum.EOL do
......@@ -4130,7 +4263,7 @@ begin
end;
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
begin
......@@ -4178,7 +4311,6 @@ begin
lState := utState(lStatesEnum.Current);
if lState is utSubMachineState then
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 = (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);
......@@ -4523,53 +4655,6 @@ begin
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;
var li: Integer;
lRelation: acRelationTicket;
......@@ -4692,7 +4777,7 @@ begin
lParamsConstrutor := '';
lsNomeClasse := piClass.Name;
lsNomeUnit := Copy(lsNomeClasse, 1, 2) + 'u' + Copy(lsNomeClasse, 3, Length(lsNomeClasse)-2);
lClassTicket := MetaModel.ClassRegisterTicketByName[lsNomeClasse];
lClassTicket := MetaModel.GetClassTicketByName(lsNomeClasse);
lCodigoClasse := PStringWriter.Create;
try
......@@ -4881,7 +4966,7 @@ begin
lParamsConstrutor := '';
lsNomeClasse := piClass.Name;
lsNomeUnit := Copy(lsNomeClasse, 1, 2) + 'u' + Copy(lsNomeClasse, 3, Length(lsNomeClasse)-2);
lClassTicket := MetaModel.ClassRegisterTicketByName[lsNomeClasse];
lClassTicket := MetaModel.GetClassTicketByName(lsNomeClasse);
lCodigoClasse := PStringWriter.Create;
try
......@@ -5003,7 +5088,7 @@ begin
lsNomeClasse := piClass.Name;
lsNomeUnit := Copy(lsNomeClasse, 1, 2) + 'u' + Copy(lsNomeClasse, 3, Length(lsNomeClasse)-2);
lClassTicket := MetaModel.ClassRegisterTicketByName[lsNomeClasse];
lClassTicket := MetaModel.GetClassTicketByName(lsNomeClasse);
lInstantCodeProject := TInstantCodeProject.Create;
// Cria UNIT
......@@ -5363,10 +5448,10 @@ var
end;
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
AddMethod(lTransition.Effects[i]);
lEffectObjectHash.Add(lTransition.Effects[i], lTransition);
AddMethod(lTransition.GetEffects(i));
lEffectObjectHash.Add(lTransition.GetEffects(i), lTransition);
end;
lTransitionEnum.MoveNext;
......@@ -5665,7 +5750,7 @@ begin
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);
lsResult := concat(lsResult, SQLScriptCreateDirectTable(lClassToDBMapTicket, piDBVendor));
......@@ -5682,8 +5767,8 @@ begin
(lAssociation.GetConnectionAt(1).Get_Participant as IUMLClass).Name;
lClassOriginTicket := MetaModel.ClassRegisterTicketByName[((lAssociation.GetConnectionAt(0).Get_Participant as IUMLClass).Name)];
lClassDestTicket := MetaModel.ClassRegisterTicketByName[((lAssociation.GetConnectionAt(1).Get_Participant as IUMLClass).Name)];
lClassOriginTicket := MetaModel.GetClassTicketByName(((lAssociation.GetConnectionAt(0).Get_Participant as IUMLClass).Name));
lClassDestTicket := MetaModel.GetClassTicketByName(((lAssociation.GetConnectionAt(1).Get_Participant as IUMLClass).Name));
if (lAssociation.GetConnectionAt(1).Get_Multiplicity = '1') then
......
......@@ -6,8 +6,8 @@ interface
uses
LCLIntf, LCLType, LMessages, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, StdCtrls, Dialogs, JvExControls, ComCtrls, ExtCtrls, Buttons,
MaskEdit, JvBaseEdits, JvCheckBox, utuMessage, Grids, ValEdit, StarUMLintf,
Controls, Forms, StdCtrls, Dialogs, ComCtrls, ExtCtrls, Buttons,
MaskEdit, utuMessage, Grids, ValEdit, StarUMLintf,
cxuCadastroDefinicaoClasse, IntegracaoDelphiSUML, acuModel;
type
......@@ -473,7 +473,7 @@ begin
end;
end;
lClass := fUtil.MetaModel.ClassTicketByCode[fClassCode] as acClassTicket;
lClass := fUtil.MetaModel.GetClassTicketByCode(fClassCode) as acClassTicket;
FillListViewClassData(lClass);
lvCampos.Selected := nil;
lvCamposClick(nil);
......
......@@ -13,7 +13,7 @@ object DataBaseLogin: TDataBaseLogin
OnShow = FormShow
ParentFont = True
Position = poOwnerFormCenter
LCLVersion = '2.0.2.0'
LCLVersion = '2.1.0.0'
object GroupBox2: TGroupBox
Left = 8
Height = 216
......
......@@ -103,7 +103,7 @@ begin
GetUserDSNList(cbODBCD_DSN.Items);
GetDriverList(cbODBCD_DRIVERS.Items);
for lObj in gSQLDialectManager.InstancedObjects do
for lObj in acSQLDialectManager.Instance.InstancedObjects do
begin
cbDialect.AddItem(acFactoredObject(lObj).Ticket.Code, lObj);
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