Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
StarUML Evológica Plugin
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
3
Merge Requests
3
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
evologica
StarUML Evológica Plugin
Commits
16b4251a
Commit
16b4251a
authored
Aug 14, 2020
by
Erika Segatto
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Inclui mais construtores nas classes para permitir mapeamento de relacionamento bidirecional
parent
33e1ab0b
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
576 additions
and
144 deletions
+576
-144
IntegracaoDelphiSUML.pas
EvoUMLPlugin/src/IntegracaoDelphiSUML.pas
+576
-144
No files found.
EvoUMLPlugin/src/IntegracaoDelphiSUML.pas
View file @
16b4251a
...
@@ -2351,7 +2351,6 @@ begin
...
@@ -2351,7 +2351,6 @@ begin
end
;
end
;
end
;
end
;
function
TUtil
.
AlimentarMetamodelUseCase
(
poRootUseCase
:
IUMLUseCase
;
piBaseStateMachine
:
IUMLStateMachine
;
function
TUtil
.
AlimentarMetamodelUseCase
(
poRootUseCase
:
IUMLUseCase
;
piBaseStateMachine
:
IUMLStateMachine
;
piBaseSubmachineState
:
IUMLSubmachineState
;
poMetaModel
:
acMetaModel
;
piProgress
:
TFShowProgress
):
string
;
piBaseSubmachineState
:
IUMLSubmachineState
;
poMetaModel
:
acMetaModel
;
piProgress
:
TFShowProgress
):
string
;
var
var
...
@@ -2412,8 +2411,6 @@ begin
...
@@ -2412,8 +2411,6 @@ begin
end
;
end
;
end
;
end
;
function
TUtil
.
GerarBodyRegisterMappings
(
piModelMappingsOptions
:
TModelMappingsOptions
;
const
piInstantCodeConsts
:
TInstantCodeConsts
;
piProgress
:
TFShowProgress
;
piStartAt
:
Integer
;
piEndAt
:
Integer
):
string
;
function
TUtil
.
GerarBodyRegisterMappings
(
piModelMappingsOptions
:
TModelMappingsOptions
;
const
piInstantCodeConsts
:
TInstantCodeConsts
;
piProgress
:
TFShowProgress
;
piStartAt
:
Integer
;
piEndAt
:
Integer
):
string
;
var
lEnum
:
acEnumerator
;
var
lEnum
:
acEnumerator
;
lClassTicket
:
acClassTicket
;
lClassTicket
:
acClassTicket
;
...
@@ -5076,7 +5073,7 @@ end;
...
@@ -5076,7 +5073,7 @@ end;
function
TUtil
.
GerarClassPreview_JavaHibernate
(
piClass
:
IUMLClass
):
string
;
function
TUtil
.
GerarClassPreview_JavaHibernate
(
piClass
:
IUMLClass
):
string
;
procedure
EscreveGetterSetterClasse
(
const
piCodigoClasse
:
PStringWriter
;
piNomeAtributo
,
piTipoAtributo
:
String
;
piApenasGetter
:
Boolean
=
False
;
piLista
:
Boolean
=
False
);
procedure
EscreveGetterSetterClasse
(
const
piCodigoClasse
:
PStringWriter
;
const
piNomeAtributo
,
piTipoAtributo
:
String
;
piApenasGetter
:
Boolean
=
False
;
piLista
:
Boolean
=
False
);
begin
begin
//Escreve getter and setter
//Escreve getter and setter
if
not
piLista
then
if
not
piLista
then
...
@@ -5088,13 +5085,17 @@ function TUtil.GerarClassPreview_JavaHibernate(piClass: IUMLClass): string;
...
@@ -5088,13 +5085,17 @@ function TUtil.GerarClassPreview_JavaHibernate(piClass: IUMLClass): string;
else
else
begin
begin
piCodigoClasse
.
WriteLine
(
'public List<'
+
piTipoAtributo
+
'> get'
+
piNomeAtributo
+
'() { return '
+
piNomeAtributo
+
'; }'
);
piCodigoClasse
.
WriteLine
(
'public List<'
+
piTipoAtributo
+
'> get'
+
piNomeAtributo
+
'() { return '
+
piNomeAtributo
+
'; }'
);
//piCodigoClasse.WriteLine('public void add'+piNomeAtributo+'('+piTipoAtributo+' piObject) { '+piNomeAtributo+'.add(piObject); }');
//piCodigoClasse.WriteLine('public void remove'+piNomeAtributo+'('+piTipoAtributo+' piObject) { '+piNomeAtributo+'.remove(piObject); }');
end
;
end
;
piCodigoClasse
.
WriteLine
(
''
);
piCodigoClasse
.
WriteLine
(
''
);
end
;
end
;
procedure
EscreverInicializacaoAtributo
(
const
piCodigoClasse
:
PStringWriter
;
piNomeAtributo
:
String
;
const
piMultiplicity
:
Integer
);
procedure
EscreverCriacaoLista
(
const
piCodigoClasse
:
PStringWriter
;
const
piNomeAtributo
:
String
;
const
piMultiplicity
:
Integer
);
begin
if
piMultiplicity
>
1
then
piCodigoClasse
.
WriteLine
(
piNomeAtributo
+
' = new ArrayList<>();'
);
end
;
procedure
EscreverInicializacaoAtributo
(
const
piCodigoClasse
:
PStringWriter
;
const
piNomeAtributo
:
String
;
const
piMultiplicity
:
Integer
);
begin
begin
if
(
piNomeAtributo
<>
''
)
then
if
(
piNomeAtributo
<>
''
)
then
begin
begin
...
@@ -5102,7 +5103,7 @@ function TUtil.GerarClassPreview_JavaHibernate(piClass: IUMLClass): string;
...
@@ -5102,7 +5103,7 @@ function TUtil.GerarClassPreview_JavaHibernate(piClass: IUMLClass): string;
piCodigoClasse
.
WriteLine
(
piNomeAtributo
+
' = pi'
+
piNomeAtributo
+
';'
)
piCodigoClasse
.
WriteLine
(
piNomeAtributo
+
' = pi'
+
piNomeAtributo
+
';'
)
else
else
begin
begin
piCodigoClasse
.
WriteLine
(
piNomeAtributo
+
' = new ArrayList<>();'
);
EscreverCriacaoLista
(
piCodigoClasse
,
piNomeAtributo
,
piMultiplicity
);
piCodigoClasse
.
WriteLine
(
'if (pi'
+
piNomeAtributo
+
' != null) { '
+
piNomeAtributo
+
'.addAll(pi'
+
piNomeAtributo
+
'); }'
);
piCodigoClasse
.
WriteLine
(
'if (pi'
+
piNomeAtributo
+
' != null) { '
+
piNomeAtributo
+
'.addAll(pi'
+
piNomeAtributo
+
'); }'
);
end
;
end
;
end
;
end
;
...
@@ -5161,7 +5162,8 @@ var
...
@@ -5161,7 +5162,8 @@ var
lsNomeTabela
,
lsNomeTabela
,
lsNomeGeneratorId
,
lsNomeGeneratorId
,
lsAtributo
,
lsAtributo
,
lsTipoAttribute
:
string
;
lsTipoAttribute
,
lPackageRef
:
string
;
index
:
integer
;
index
:
integer
;
lClassTicket
,
lClassTicket
,
lClassTicketPai
:
acClassTicket
;
lClassTicketPai
:
acClassTicket
;
...
@@ -5169,29 +5171,39 @@ var
...
@@ -5169,29 +5171,39 @@ var
lMetaModelPersistenceMapSQL
:
acMetaModelPersistenceMapSQL
;
lMetaModelPersistenceMapSQL
:
acMetaModelPersistenceMapSQL
;
lClassToDBMapTicket
:
acClassToDBMapTicket
;
lClassToDBMapTicket
:
acClassToDBMapTicket
;
lCodigoClasse
:
PStringWriter
;
lCodigoClasse
,
lParamsConstrutor
:
string
;
lCodigoConstrutor
,
lCodigoConstrutorSemRelOut
:
PStringWriter
;
lParamsConstrutor
,
lParamsConstrutorSemRelOut
:
string
;
lRelation
:
acRelationTicket
;
lRelation
:
acRelationTicket
;
lRelationPersistenceMapTicket
:
acRelationSQLPersistenceMapTicket
;
lRelationPersistenceMapTicket
:
acRelationSQLPersistenceMapTicket
;
lColumnTicket
:
acDBColumnMapTicket
;
lColumnTicket
:
acDBColumnMapTicket
;
lEhClasseHerdada
:
Boolean
;
lEhClasseHerdada
:
Boolean
;
lListaChamadaSuper
:
TStringList
;
lListaChamadaSuper
,
lListaChamadaSuperSemRelOut
:
TStringList
;
begin
begin
Result
:=
''
;
Result
:=
''
;
lParamsConstrutorSemRelOut
:=
''
;
lParamsConstrutor
:=
''
;
lParamsConstrutor
:=
''
;
lsNomeClasseDominio
:=
piClass
.
Name
;
lsNomeClasseDominio
:=
piClass
.
Name
;
lClassTicket
:=
MetaModel
.
GetClassTicketByName
(
lsNomeClasseDominio
);
lClassTicket
:=
MetaModel
.
GetClassTicketByName
(
lsNomeClasseDominio
);
lEhClasseHerdada
:=
Assigned
(
lClassTicket
.
ParentClassTicket
);
lEhClasseHerdada
:=
Assigned
(
lClassTicket
.
ParentClassTicket
);
lsNomeClasseDB
:=
lsNomeClasseDominio
+
'Entity'
;
lsNomeClasseDB
:=
lsNomeClasseDominio
+
'Entity'
;
lPackageRef
:=
StarUMLApp
.
ProjectManager
.
Project
.
Documentation
;
if
lPackageRef
<>
''
then
lPackageRef
:=
lPackageRef
+
'.'
;
// Obter ticket do banco
// Obter ticket do banco
lMetaModelPersistenceMapSQL
:=
fMetaModelPersistenceMap
as
acMetaModelPersistenceMapSQL
;
lMetaModelPersistenceMapSQL
:=
fMetaModelPersistenceMap
as
acMetaModelPersistenceMapSQL
;
lClassToDBMapTicket
:=
lMetaModelPersistenceMapSQL
.
GetClassToDBMapTicket
(
lClassTicket
);
lClassToDBMapTicket
:=
lMetaModelPersistenceMapSQL
.
GetClassToDBMapTicket
(
lClassTicket
);
lListaChamadaSuper
:=
TStringList
.
Create
;
lListaChamadaSuper
:=
TStringList
.
Create
;
lListaChamadaSuperSemRelOut
:=
TStringList
.
Create
;
lCodigoConstrutor
:=
PStringWriter
.
Create
;
lCodigoConstrutorSemRelOut
:=
PStringWriter
.
Create
;
lCodigoClasse
:=
PStringWriter
.
Create
;
lCodigoClasse
:=
PStringWriter
.
Create
;
try
try
//lCodigoClasse.WriteLine('package
adapters.persistence.entities;');
lCodigoClasse
.
WriteLine
(
'package '
+
lPackageRef
+
'
adapters.persistence.entities;'
);
//
lCodigoClasse.WriteLine('');
lCodigoClasse
.
WriteLine
(
''
);
// Imports de tipos
// Imports de tipos
IncluirImports
(
lCodigoClasse
,
lClassTicket
,
_DBTipoId
);
IncluirImports
(
lCodigoClasse
,
lClassTicket
,
_DBTipoId
);
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
''
);
...
@@ -5214,7 +5226,7 @@ begin
...
@@ -5214,7 +5226,7 @@ begin
end
;
end
;
lCodigoClasse
.
WriteLine
(
'@Table(name = "'
+
lsNomeTabela
+
'")'
);
lCodigoClasse
.
WriteLine
(
'@Table(name = "'
+
lsNomeTabela
+
'")'
);
if
lClassTicket
.
HasDescendants
if
lClassTicket
.
HasDescendants
then
lCodigoClasse
.
Write
(
'public
abstract '
)
then
lCodigoClasse
.
Write
(
'public
'
)
// abstract
else
lCodigoClasse
.
Write
(
'public final '
);
else
lCodigoClasse
.
Write
(
'public final '
);
lCodigoClasse
.
Write
(
'class '
+
lsNomeClasseDB
);
lCodigoClasse
.
Write
(
'class '
+
lsNomeClasseDB
);
if
lEhClasseHerdada
if
lEhClasseHerdada
...
@@ -5361,8 +5373,16 @@ begin
...
@@ -5361,8 +5373,16 @@ begin
lsAtributo
:=
lClassTicketPai
.
Attributes
.
Strings
[
index
];
lsAtributo
:=
lClassTicketPai
.
Attributes
.
Strings
[
index
];
lsTipoAttribute
:=
ObterTipoAtributoJava
(
lAttributeTicket
.
AttributeType
);
lsTipoAttribute
:=
ObterTipoAtributoJava
(
lAttributeTicket
.
AttributeType
);
lParamsConstrutor
:=
lParamsConstrutor
+
lsTipoAttribute
+
' pi'
+
lsAtributo
+
', '
;
lParamsConstrutor
:=
lParamsConstrutor
+
lsTipoAttribute
+
' pi'
+
lsAtributo
+
', '
;
if
lClassTicketPai
.
ID
<>
lClassTicket
.
ID
then
lParamsConstrutorSemRelOut
:=
lParamsConstrutorSemRelOut
+
lsTipoAttribute
+
' pi'
+
lsAtributo
+
', '
;
if
lClassTicketPai
.
ID
<>
lClassTicket
.
ID
then
begin
lListaChamadaSuper
.
Add
(
'pi'
+
lsAtributo
);
lListaChamadaSuper
.
Add
(
'pi'
+
lsAtributo
);
lListaChamadaSuperSemRelOut
.
Add
(
'pi'
+
lsAtributo
);
end
else
begin
EscreverInicializacaoAtributo
(
lCodigoConstrutor
,
lsAtributo
,
1
);
EscreverInicializacaoAtributo
(
lCodigoConstrutorSemRelOut
,
lsAtributo
,
1
);
end
;
end
;
end
;
for
index
:=
0
to
lClassTicketPai
.
RelationTicketsIn
.
Count
-
1
do
for
index
:=
0
to
lClassTicketPai
.
RelationTicketsIn
.
Count
-
1
do
begin
begin
...
@@ -5374,8 +5394,14 @@ begin
...
@@ -5374,8 +5394,14 @@ begin
then
lsTipoAttribute
:=
'List<'
+
lRelation
.
OriginClassTicket
.
DisplayName
+
'Entity>'
then
lsTipoAttribute
:=
'List<'
+
lRelation
.
OriginClassTicket
.
DisplayName
+
'Entity>'
else
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
+
'Entity'
;
else
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
+
'Entity'
;
lParamsConstrutor
:=
lParamsConstrutor
+
lsTipoAttribute
+
' pi'
+
lsAtributo
+
', '
;
lParamsConstrutor
:=
lParamsConstrutor
+
lsTipoAttribute
+
' pi'
+
lsAtributo
+
', '
;
if
lClassTicketPai
.
ID
<>
lClassTicket
.
ID
then
if
lClassTicketPai
.
ID
<>
lClassTicket
.
ID
then
begin
lListaChamadaSuper
.
Add
(
'pi'
+
lsAtributo
);
lListaChamadaSuper
.
Add
(
'pi'
+
lsAtributo
);
end
else
begin
EscreverInicializacaoAtributo
(
lCodigoConstrutor
,
lRelation
.
DestinationPropertyName
,
lRelation
.
DestinationMaxMultiplicity
);
EscreverCriacaoLista
(
lCodigoConstrutorSemRelOut
,
lRelation
.
DestinationPropertyName
,
lRelation
.
DestinationMaxMultiplicity
);
end
;
end
;
end
;
end
;
end
;
for
index
:=
0
to
lClassTicketPai
.
RelationTicketsOut
.
Count
-
1
do
for
index
:=
0
to
lClassTicketPai
.
RelationTicketsOut
.
Count
-
1
do
...
@@ -5388,13 +5414,16 @@ begin
...
@@ -5388,13 +5414,16 @@ begin
then
lsTipoAttribute
:=
'List<'
+
lRelation
.
DestinationClassTicket
.
DisplayName
+
'Entity>'
then
lsTipoAttribute
:=
'List<'
+
lRelation
.
DestinationClassTicket
.
DisplayName
+
'Entity>'
else
lsTipoAttribute
:=
lRelation
.
DestinationClassTicket
.
DisplayName
+
'Entity'
;
else
lsTipoAttribute
:=
lRelation
.
DestinationClassTicket
.
DisplayName
+
'Entity'
;
lParamsConstrutor
:=
lParamsConstrutor
+
lsTipoAttribute
+
' pi'
+
lsAtributo
+
', '
;
lParamsConstrutor
:=
lParamsConstrutor
+
lsTipoAttribute
+
' pi'
+
lsAtributo
+
', '
;
if
lClassTicketPai
.
ID
<>
lClassTicket
.
ID
then
if
lClassTicketPai
.
ID
<>
lClassTicket
.
ID
lListaChamadaSuper
.
Add
(
'pi'
+
lsAtributo
);
then
lListaChamadaSuper
.
Add
(
'pi'
+
lsAtributo
)
else
begin
EscreverInicializacaoAtributo
(
lCodigoConstrutor
,
lRelation
.
OriginPropertyName
,
lRelation
.
OriginMaxMultiplicity
);
EscreverCriacaoLista
(
lCodigoConstrutorSemRelOut
,
lRelation
.
OriginPropertyName
,
lRelation
.
OriginMaxMultiplicity
);
end
;
end
;
end
;
end
;
end
;
lClassTicketPai
:=
lClassTicketPai
.
ParentClassTicket
;
lClassTicketPai
:=
lClassTicketPai
.
ParentClassTicket
;
end
;
end
;
// Escrever mtodos
// Escrever mtodos
// Escrever construtor vazio
// Escrever construtor vazio
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
''
);
...
@@ -5412,7 +5441,7 @@ begin
...
@@ -5412,7 +5441,7 @@ begin
lRelation
:=
(
lClassTicket
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
lRelation
:=
(
lClassTicket
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
lsAtributo
:=
lRelation
.
OriginPropertyName
;
lsAtributo
:=
lRelation
.
OriginPropertyName
;
if
(
lsAtributo
<>
''
)
and
(
lRelation
.
OriginMaxMultiplicity
>
1
)
then
if
(
lsAtributo
<>
''
)
and
(
lRelation
.
OriginMaxMultiplicity
>
1
)
then
lCodigoClasse
.
WriteLine
(
lsAtributo
+
' = new ArrayList<>();'
);
EscreverCriacaoLista
(
lCodigoClasse
,
lsAtributo
,
lRelation
.
OriginMaxMultiplicity
);
end
;
end
;
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
'}'
);
lCodigoClasse
.
WriteLine
(
'}'
);
...
@@ -5422,21 +5451,7 @@ begin
...
@@ -5422,21 +5451,7 @@ begin
lCodigoClasse
.
Indent
();
lCodigoClasse
.
Indent
();
if
lEhClasseHerdada
then
if
lEhClasseHerdada
then
lCodigoClasse
.
WriteLine
(
'super('
+
lListaChamadaSuper
.
CommaText
+
');'
);
lCodigoClasse
.
WriteLine
(
'super('
+
lListaChamadaSuper
.
CommaText
+
');'
);
for
index
:=
0
to
lClassTicket
.
Attributes
.
Count
-
1
do
lCodigoClasse
.
Append
(
lCodigoConstrutor
);
begin
lsAtributo
:=
lClassTicket
.
Attributes
.
Strings
[
index
];
EscreverInicializacaoAtributo
(
lCodigoClasse
,
lsAtributo
,
1
);
end
;
for
index
:=
0
to
lClassTicket
.
RelationTicketsIn
.
Count
-
1
do
begin
lRelation
:=
(
lClassTicket
.
RelationTicketsIn
.
Objects
[
index
]
as
acRelationTicket
);
EscreverInicializacaoAtributo
(
lCodigoClasse
,
lRelation
.
DestinationPropertyName
,
lRelation
.
DestinationMaxMultiplicity
);
end
;
for
index
:=
0
to
lClassTicket
.
RelationTicketsOut
.
Count
-
1
do
begin
lRelation
:=
(
lClassTicket
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
EscreverInicializacaoAtributo
(
lCodigoClasse
,
lRelation
.
OriginPropertyName
,
lRelation
.
OriginMaxMultiplicity
);
end
;
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
'}'
);
lCodigoClasse
.
WriteLine
(
'}'
);
// Escrever construtor com id com relacionamentos
// Escrever construtor com id com relacionamentos
...
@@ -5447,36 +5462,35 @@ begin
...
@@ -5447,36 +5462,35 @@ begin
lCodigoClasse
.
WriteLine
(
'super(piId, '
+
lListaChamadaSuper
.
CommaText
+
');'
)
lCodigoClasse
.
WriteLine
(
'super(piId, '
+
lListaChamadaSuper
.
CommaText
+
');'
)
else
else
lCodigoClasse
.
WriteLine
(
_NomeId
+
' = piId;'
);
lCodigoClasse
.
WriteLine
(
_NomeId
+
' = piId;'
);
for
index
:=
0
to
lClassTicket
.
Attributes
.
Count
-
1
do
lCodigoClasse
.
Append
(
lCodigoConstrutor
);
begin
lCodigoClasse
.
Outdent
();
lsAtributo
:=
lClassTicket
.
Attributes
.
Strings
[
index
];
lCodigoClasse
.
WriteLine
(
'}'
);
EscreverInicializacaoAtributo
(
lCodigoClasse
,
lsAtributo
,
1
);
// Escrever construtor com id sem relacionamentos
end
;
lCodigoClasse
.
WriteLine
(
''
);
for
index
:=
0
to
lClassTicket
.
RelationTicketsIn
.
Count
-
1
do
if
lParamsConstrutorSemRelOut
<>
lParamsConstrutor
then
begin
lRelation
:=
(
lClassTicket
.
RelationTicketsIn
.
Objects
[
index
]
as
acRelationTicket
);
EscreverInicializacaoAtributo
(
lCodigoClasse
,
lRelation
.
DestinationPropertyName
,
lRelation
.
DestinationMaxMultiplicity
);
end
;
for
index
:=
0
to
lClassTicket
.
RelationTicketsOut
.
Count
-
1
do
begin
begin
lRelation
:=
(
lClassTicket
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
lCodigoClasse
.
WriteLine
(
'public '
+
lsNomeClasseDB
+
'('
+
_DBTipoId
+
' piId, '
+
strutils
.
LeftStr
(
lParamsConstrutorSemRelOut
,
Length
(
lParamsConstrutorSemRelOut
)-
2
)+
') {'
);
EscreverInicializacaoAtributo
(
lCodigoClasse
,
lRelation
.
OriginPropertyName
,
lRelation
.
OriginMaxMultiplicity
);
lCodigoClasse
.
Indent
();
end
;
if
lEhClasseHerdada
then
lCodigoClasse
.
WriteLine
(
'super(piId, '
+
lListaChamadaSuperSemRelOut
.
CommaText
+
');'
)
else
lCodigoClasse
.
WriteLine
(
_NomeId
+
' = piId;'
);
lCodigoClasse
.
Append
(
lCodigoConstrutorSemRelOut
);
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
'}'
);
lCodigoClasse
.
WriteLine
(
'}'
);
lCodigoClasse
.
WriteLine
(
''
);
end
;
// Escrever mtodo ToString
// Escrever mtodo ToString
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
'@Override'
);
lCodigoClasse
.
WriteLine
(
'@Override'
);
lCodigoClasse
.
WriteLine
(
'public String toString() {'
);
lCodigoClasse
.
WriteLine
(
'public String toString() {'
);
lCodigoClasse
.
Indent
();
lCodigoClasse
.
Indent
();
lCodigoClasse
.
WriteLine
(
'return "'
+
lsNomeClasseDB
+
'{ " +'
);
lCodigoClasse
.
WriteLine
(
'return "'
+
lsNomeClasseDB
+
'{ " +'
);
if
not
lEhClasseHerdada
then
if
not
lEhClasseHerdada
then
lCodigoClasse
.
WriteLine
(
'"id="+ '
+
_NomeId
+
' +'
);
lCodigoClasse
.
WriteLine
(
'"id="+ '
+
_NomeId
+
' +
", " +
'
);
for
index
:=
0
to
lClassTicket
.
Attributes
.
Count
-
1
do
for
index
:=
0
to
lClassTicket
.
Attributes
.
Count
-
1
do
begin
begin
lsAtributo
:=
lClassTicket
.
Attributes
.
Strings
[
index
];
lsAtributo
:=
lClassTicket
.
Attributes
.
Strings
[
index
];
lCodigoClasse
.
WriteLine
(
'" '
+
lsAtributo
+
'="+ '
+
lsAtributo
+
' +'
);
lCodigoClasse
.
WriteLine
(
'" '
+
lsAtributo
+
'="+ '
+
lsAtributo
+
'
+ ", "
+'
);
end
;
end
;
lCodigoClasse
.
WriteLine
(
'"}";'
);
lCodigoClasse
.
WriteLine
(
'"}";'
);
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
Outdent
();
...
@@ -5491,12 +5505,22 @@ begin
...
@@ -5491,12 +5505,22 @@ begin
finally
finally
lCodigoClasse
.
Free
;
lCodigoClasse
.
Free
;
lListaChamadaSuper
.
Free
;
lListaChamadaSuper
.
Free
;
lListaChamadaSuperSemRelOut
.
Free
;
lCodigoConstrutor
.
Free
;
lCodigoConstrutorSemRelOut
.
Free
;
end
;
end
;
end
;
end
;
function
TUtil
.
GerarClassPreview_JavaDomain
(
piClass
:
IUMLClass
):
string
;
function
TUtil
.
GerarClassPreview_JavaDomain
(
piClass
:
IUMLClass
):
string
;
procedure
EscreveAtributoClasse
(
const
piCodigoClasse
:
PStringWriter
;
piNomeAtributo
,
piTipoAtributo
:
String
;
piVisibility
:
Integer
);
function
ObterTipoAtributoRelacionamento
(
const
piMultiplicity
:
Integer
;
const
piPartnerAttributeName
:
string
):
string
;
begin
if
piMultiplicity
>
1
then
Result
:=
'List<'
+
piPartnerAttributeName
+
'>'
else
Result
:=
piPartnerAttributeName
;
end
;
procedure
EscreveAtributoClasse
(
const
piCodigoClasse
:
PStringWriter
;
const
piNomeAtributo
,
piTipoAtributo
:
String
;
piVisibility
:
Integer
);
begin
begin
//Escreve atributo
//Escreve atributo
case
piVisibility
of
case
piVisibility
of
...
@@ -5505,18 +5529,47 @@ function TUtil.GerarClassPreview_JavaDomain(piClass: IUMLClass): string;
...
@@ -5505,18 +5529,47 @@ function TUtil.GerarClassPreview_JavaDomain(piClass: IUMLClass): string;
acAttributeVisibility
.
pvPrivate
:
piCodigoClasse
.
Write
(
'private '
);
acAttributeVisibility
.
pvPrivate
:
piCodigoClasse
.
Write
(
'private '
);
else
piCodigoClasse
.
Write
(
'private '
);
else
piCodigoClasse
.
Write
(
'private '
);
end
;
end
;
piCodigoClasse
.
WriteLine
(
piTipoAtributo
+
'
f
'
+
piNomeAtributo
+
';'
);
piCodigoClasse
.
WriteLine
(
piTipoAtributo
+
' '
+
piNomeAtributo
+
';'
);
end
;
end
;
procedure
EscreveGetterSetterClasse
(
const
piCodigoClasse
:
PStringWriter
;
piNomeAtributo
,
piTipoAtributo
:
String
;
piApenasGetter
:
Boolean
=
False
);
procedure
EscreveGetterSetterClasse
(
const
piCodigoClasse
:
PStringWriter
;
const
piNomeAtributo
,
piTipoAtributo
:
String
;
piApenasGetter
:
Boolean
=
False
;
piLista
:
Boolean
=
False
);
begin
if
not
piLista
then
begin
begin
//Escreve getter and setter
//Escreve getter and setter
piCodigoClasse
.
WriteLine
(
'public '
+
piTipoAtributo
+
' get'
+
piNomeAtributo
+
'() { return '
+
' f'
+
piNomeAtributo
+
'; }'
);
piCodigoClasse
.
WriteLine
(
'public '
+
piTipoAtributo
+
' get'
+
piNomeAtributo
+
'() { return '
+
piNomeAtributo
+
'; }'
);
if
not
piApenasGetter
then
if
not
piApenasGetter
then
piCodigoClasse
.
WriteLine
(
'public void set'
+
piNomeAtributo
+
'('
+
piTipoAtributo
+
' pi'
+
piNomeAtributo
+
') { f'
+
piNomeAtributo
+
' = pi'
+
piNomeAtributo
+
'; }'
);
piCodigoClasse
.
WriteLine
(
'public void set'
+
piNomeAtributo
+
'('
+
piTipoAtributo
+
' pi'
+
piNomeAtributo
+
') { '
+
piNomeAtributo
+
' = pi'
+
piNomeAtributo
+
'; }'
);
end
else
begin
piCodigoClasse
.
WriteLine
(
'public List<'
+
piTipoAtributo
+
'> get'
+
piNomeAtributo
+
'() { return '
+
piNomeAtributo
+
'; }'
);
piCodigoClasse
.
WriteLine
(
'public void add'
+
piNomeAtributo
+
'('
+
piTipoAtributo
+
' piObject) { '
+
piNomeAtributo
+
'.add(piObject); }'
);
piCodigoClasse
.
WriteLine
(
'public void remove'
+
piNomeAtributo
+
'('
+
piTipoAtributo
+
' piObject) { '
+
piNomeAtributo
+
'.remove(piObject); }'
);
end
;
piCodigoClasse
.
WriteLine
(
''
);
piCodigoClasse
.
WriteLine
(
''
);
end
;
end
;
procedure
EscreverCriacaoLista
(
const
piCodigoClasse
:
PStringWriter
;
const
piNomeAtributo
:
String
;
const
piMultiplicity
:
Integer
);
begin
if
piMultiplicity
>
1
then
piCodigoClasse
.
WriteLine
(
piNomeAtributo
+
' = new ArrayList<>();'
);
end
;
procedure
EscreverInicializacaoAtributo
(
const
piCodigoClasse
:
PStringWriter
;
const
piNomeAtributo
:
String
;
const
piMultiplicity
:
Integer
);
begin
if
(
piNomeAtributo
<>
''
)
then
begin
if
piMultiplicity
=
1
then
piCodigoClasse
.
WriteLine
(
piNomeAtributo
+
' = pi'
+
piNomeAtributo
+
';'
)
else
begin
EscreverCriacaoLista
(
piCodigoClasse
,
piNomeAtributo
,
piMultiplicity
);
piCodigoClasse
.
WriteLine
(
'if (pi'
+
piNomeAtributo
+
' != null) { '
+
piNomeAtributo
+
'.addAll(pi'
+
piNomeAtributo
+
'); }'
);
end
;
end
;
end
;
procedure
IncluirImports
(
const
piCodigoClasse
:
PStringWriter
;
piClassTicket
:
acClassTicket
;
const
piTipoId
:
string
);
procedure
IncluirImports
(
const
piCodigoClasse
:
PStringWriter
;
piClassTicket
:
acClassTicket
;
const
piTipoId
:
string
);
var
var
lAttributeTicket
:
acAttributeTicket
;
lAttributeTicket
:
acAttributeTicket
;
...
@@ -5525,6 +5578,7 @@ function TUtil.GerarClassPreview_JavaDomain(piClass: IUMLClass): string;
...
@@ -5525,6 +5578,7 @@ function TUtil.GerarClassPreview_JavaDomain(piClass: IUMLClass): string;
lsTipoAttribute
:
string
;
lsTipoAttribute
:
string
;
begin
begin
piCodigoClasse
.
WriteLine
(
'import java.util.List;'
);
piCodigoClasse
.
WriteLine
(
'import java.util.List;'
);
piCodigoClasse
.
WriteLine
(
'import java.util.ArrayList;'
);
for
index
:=
0
to
2
do
for
index
:=
0
to
2
do
lHasImport
[
index
]
:=
False
;
lHasImport
[
index
]
:=
False
;
if
piTipoId
=
'Long'
then
if
piTipoId
=
'Long'
then
...
@@ -5560,30 +5614,56 @@ const
...
@@ -5560,30 +5614,56 @@ const
var
var
lsNomeClasse
,
lsNomeClasse
,
lsAtributo
,
lsAtributo
,
lsTipoAttribute
:
string
;
lsTipoAttribute
,
lPackageRef
:
string
;
index
:
integer
;
index
:
integer
;
lClassTicket
:
acClassTicket
;
lClassTicket
,
lClassTicketPai
:
acClassTicket
;
lAttributeTicket
:
acAttributeTicket
;
lAttributeTicket
:
acAttributeTicket
;
lCodigoClasse
:
PStringWriter
;
lCodigoClasse
,
lParamsConstrutor
:
string
;
lCodigoConstrutor
,
lCodigoConstrutorSemRelOut
:
PStringWriter
;
lRelation
:
acRelationTicket
;
lRelation
:
acRelationTicket
;
lListaParamsConstrutorSemRelOut
,
lListaParamsConstrutor
,
lListaChamadaSuper
,
lListaChamadaSuperSemRelOut
:
TStringList
;
lEhClasseHerdada
:
boolean
;
begin
begin
Result
:=
''
;
Result
:=
''
;
lParamsConstrutor
:=
''
;
lsNomeClasse
:=
piClass
.
Name
;
lsNomeClasse
:=
piClass
.
Name
;
lClassTicket
:=
MetaModel
.
GetClassTicketByName
(
lsNomeClasse
);
lClassTicket
:=
MetaModel
.
GetClassTicketByName
(
lsNomeClasse
);
lEhClasseHerdada
:=
Assigned
(
lClassTicket
.
ParentClassTicket
);
lPackageRef
:=
StarUMLApp
.
ProjectManager
.
Project
.
Documentation
;
if
lPackageRef
<>
''
then
lPackageRef
:=
lPackageRef
+
'.'
;
lListaParamsConstrutor
:=
TStringList
.
Create
;
lListaParamsConstrutorSemRelOut
:=
TStringList
.
Create
;
lListaChamadaSuper
:=
TStringList
.
Create
;
lListaChamadaSuperSemRelOut
:=
TStringList
.
Create
;
lCodigoClasse
:=
PStringWriter
.
Create
;
lCodigoClasse
:=
PStringWriter
.
Create
;
lCodigoConstrutor
:=
PStringWriter
.
Create
;
lCodigoConstrutorSemRelOut
:=
PStringWriter
.
Create
;
try
try
//lCodigoClasse.WriteLine('package domain;');
lListaParamsConstrutor
.
StrictDelimiter
:=
true
;
//lCodigoClasse.WriteLine('');
lListaParamsConstrutor
.
Delimiter
:=
','
;
lListaParamsConstrutorSemRelOut
.
StrictDelimiter
:=
true
;
lListaParamsConstrutor
.
Delimiter
:=
','
;
// Package
lCodigoClasse
.
WriteLine
(
'package '
+
lPackageRef
+
'domain;'
);
lCodigoClasse
.
WriteLine
(
''
);
// Imports de tipos
// Imports de tipos
IncluirImports
(
lCodigoClasse
,
lClassTicket
,
_TipoId
);
IncluirImports
(
lCodigoClasse
,
lClassTicket
,
_TipoId
);
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
''
);
// Incio da classe
// Incio da classe
lCodigoClasse
.
WriteLine
(
'public class '
+
lsNomeClasse
+
' {'
);
if
lClassTicket
.
HasDescendants
lCodigoClasse
.
WriteLine
(
''
);
then
lCodigoClasse
.
Write
(
'public '
)
// abstract
else
lCodigoClasse
.
Write
(
'public final '
);
lCodigoClasse
.
Write
(
'class '
+
lsNomeClasse
);
if
lEhClasseHerdada
then
lCodigoClasse
.
WriteLine
(
' extends '
+
lClassTicket
.
ParentClassTicket
.
DisplayName
+
' {'
)
else
lCodigoClasse
.
WriteLine
(
' {'
);
lCodigoClasse
.
Indent
();
lCodigoClasse
.
Indent
();
// Escreve atributo id
// Escreve atributo id
...
@@ -5601,24 +5681,20 @@ begin
...
@@ -5601,24 +5681,20 @@ begin
for
index
:=
0
to
lClassTicket
.
RelationTicketsIn
.
Count
-
1
do
for
index
:=
0
to
lClassTicket
.
RelationTicketsIn
.
Count
-
1
do
begin
begin
lRelation
:=
(
lClassTicket
.
RelationTicketsIn
.
Objects
[
index
]
as
acRelationTicket
);
lRelation
:=
(
lClassTicket
.
RelationTicketsIn
.
Objects
[
index
]
as
acRelationTicket
);
if
(
lRelation
.
DestinationPropertyName
<>
''
)
then
begin
lsAtributo
:=
lRelation
.
DestinationPropertyName
;
lsAtributo
:=
lRelation
.
DestinationPropertyName
;
if
lRelation
.
DestinationMaxMultiplicity
>
1
if
(
lsAtributo
<>
''
)
then
then
lsTipoAttribute
:=
'List<'
+
lRelation
.
OriginClassTicket
.
DisplayName
+
'>'
begin
else
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
;
lsTipoAttribute
:=
ObterTipoAtributoRelacionamento
(
lRelation
.
DestinationMaxMultiplicity
,
lRelation
.
OriginClassTicket
.
DisplayName
)
;
EscreveAtributoClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
,
acAttributeVisibility
.
pvProtected
);
EscreveAtributoClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
,
acAttributeVisibility
.
pvProtected
);
end
;
end
;
end
;
end
;
for
index
:=
0
to
lClassTicket
.
RelationTicketsOut
.
Count
-
1
do
for
index
:=
0
to
lClassTicket
.
RelationTicketsOut
.
Count
-
1
do
begin
begin
lRelation
:=
(
lClassTicket
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
lRelation
:=
(
lClassTicket
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
if
(
lRelation
.
OriginPropertyName
<>
''
)
then
begin
lsAtributo
:=
lRelation
.
OriginPropertyName
;
lsAtributo
:=
lRelation
.
OriginPropertyName
;
if
lRelation
.
OriginMaxMultiplicity
>
1
if
(
lsAtributo
<>
''
)
then
then
lsTipoAttribute
:=
'List<'
+
lRelation
.
DestinationClassTicket
.
DisplayName
+
'>'
begin
else
lsTipoAttribute
:=
lRelation
.
DestinationClassTicket
.
DisplayName
;
lsTipoAttribute
:=
ObterTipoAtributoRelacionamento
(
lRelation
.
OriginMaxMultiplicity
,
lRelation
.
DestinationClassTicket
.
DisplayName
)
;
EscreveAtributoClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
,
acAttributeVisibility
.
pvProtected
);
EscreveAtributoClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
,
acAttributeVisibility
.
pvProtected
);
end
;
end
;
end
;
end
;
...
@@ -5631,61 +5707,121 @@ begin
...
@@ -5631,61 +5707,121 @@ begin
lAttributeTicket
:=
lClassTicket
.
Attributes
.
Objects
[
index
]
as
acAttributeTicket
;
lAttributeTicket
:=
lClassTicket
.
Attributes
.
Objects
[
index
]
as
acAttributeTicket
;
lsAtributo
:=
lClassTicket
.
Attributes
.
Strings
[
index
];
lsAtributo
:=
lClassTicket
.
Attributes
.
Strings
[
index
];
lsTipoAttribute
:=
ObterTipoAtributoJava
(
lAttributeTicket
.
AttributeType
);
lsTipoAttribute
:=
ObterTipoAtributoJava
(
lAttributeTicket
.
AttributeType
);
lParamsConstrutor
:=
lParamsConstrutor
+
lsTipoAttribute
+
' pi'
+
lsAtributo
+
', '
;
EscreveGetterSetterClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
);
EscreveGetterSetterClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
);
end
;
end
;
// GETTER/SETTER: Escrever RelationsPartnerShips
// GETTER/SETTER: Escrever RelationsPartnerShips
for
index
:=
0
to
lClassTicket
.
RelationTicketsIn
.
Count
-
1
do
for
index
:=
0
to
lClassTicket
.
RelationTicketsIn
.
Count
-
1
do
begin
begin
lRelation
:=
(
lClassTicket
.
RelationTicketsIn
.
Objects
[
index
]
as
acRelationTicket
);
lRelation
:=
(
lClassTicket
.
RelationTicketsIn
.
Objects
[
index
]
as
acRelationTicket
);
if
(
lRelation
.
DestinationPropertyName
<>
''
)
then
begin
lsAtributo
:=
lRelation
.
DestinationPropertyName
;
lsAtributo
:=
lRelation
.
DestinationPropertyName
;
if
lRelation
.
DestinationMaxMultiplicity
>
1
if
(
lsAtributo
<>
''
)
then
then
lsTipoAttribute
:=
'List<'
+
lRelation
.
OriginClassTicket
.
DisplayName
+
'>'
begin
else
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
;
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
;
EscreveGetterSetterClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
);
EscreveGetterSetterClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
,
False
,
lRelation
.
DestinationMaxMultiplicity
>
1
);
end
;
end
;
end
;
end
;
for
index
:=
0
to
lClassTicket
.
RelationTicketsOut
.
Count
-
1
do
for
index
:=
0
to
lClassTicket
.
RelationTicketsOut
.
Count
-
1
do
begin
begin
lRelation
:=
(
lClassTicket
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
lRelation
:=
(
lClassTicket
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
if
(
lRelation
.
OriginPropertyName
<>
''
)
then
lsAtributo
:=
lRelation
.
OriginPropertyName
;
if
(
lsAtributo
<>
''
)
then
begin
begin
lsTipoAttribute
:=
lRelation
.
DestinationClassTicket
.
DisplayName
;
EscreveGetterSetterClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
,
False
,
lRelation
.
OriginMaxMultiplicity
>
1
);
end
;
end
;
// Obter parametros para incluir no construtor
lClassTicketPai
:=
lClassTicket
;
while
Assigned
(
lClassTicketPai
)
do
begin
for
index
:=
0
to
lClassTicketPai
.
Attributes
.
Count
-
1
do
begin
lAttributeTicket
:=
lClassTicketPai
.
Attributes
.
Objects
[
index
]
as
acAttributeTicket
;
lsAtributo
:=
lClassTicketPai
.
Attributes
.
Strings
[
index
];
lsTipoAttribute
:=
ObterTipoAtributoJava
(
lAttributeTicket
.
AttributeType
);
lListaParamsConstrutor
.
Add
(
lsTipoAttribute
+
' pi'
+
lsAtributo
);
lListaParamsConstrutorSemRelOut
.
Add
(
lsTipoAttribute
+
' pi'
+
lsAtributo
);
if
lClassTicketPai
.
ID
<>
lClassTicket
.
ID
then
begin
lListaChamadaSuper
.
Add
(
'pi'
+
lsAtributo
);
lListaChamadaSuperSemRelOut
.
Add
(
'pi'
+
lsAtributo
);
end
else
begin
EscreverInicializacaoAtributo
(
lCodigoConstrutor
,
lsAtributo
,
1
);
EscreverInicializacaoAtributo
(
lCodigoConstrutorSemRelOut
,
lsAtributo
,
1
);
end
;
end
;
for
index
:=
0
to
lClassTicketPai
.
RelationTicketsIn
.
Count
-
1
do
begin
lRelation
:=
(
lClassTicketPai
.
RelationTicketsIn
.
Objects
[
index
]
as
acRelationTicket
);
lsAtributo
:=
lRelation
.
DestinationPropertyName
;
if
(
lsAtributo
<>
''
)
then
begin
lsTipoAttribute
:=
ObterTipoAtributoRelacionamento
(
lRelation
.
DestinationMaxMultiplicity
,
lRelation
.
OriginClassTicket
.
DisplayName
);
lListaParamsConstrutor
.
Add
(
lsTipoAttribute
+
' pi'
+
lsAtributo
);
if
lClassTicketPai
.
ID
<>
lClassTicket
.
ID
then
begin
lListaChamadaSuper
.
Add
(
'pi'
+
lsAtributo
);
end
else
begin
EscreverInicializacaoAtributo
(
lCodigoConstrutor
,
lRelation
.
DestinationPropertyName
,
lRelation
.
DestinationMaxMultiplicity
);
EscreverCriacaoLista
(
lCodigoConstrutorSemRelOut
,
lRelation
.
DestinationPropertyName
,
lRelation
.
DestinationMaxMultiplicity
);
end
;
end
;
end
;
for
index
:=
0
to
lClassTicketPai
.
RelationTicketsOut
.
Count
-
1
do
begin
lRelation
:=
(
lClassTicketPai
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
lsAtributo
:=
lRelation
.
OriginPropertyName
;
lsAtributo
:=
lRelation
.
OriginPropertyName
;
if
lRelation
.
OriginMaxMultiplicity
>
1
if
(
lsAtributo
<>
''
)
then
then
lsTipoAttribute
:=
'List<'
+
lRelation
.
DestinationClassTicket
.
DisplayName
+
'>'
begin
else
lsTipoAttribute
:=
lRelation
.
DestinationClassTicket
.
DisplayName
;
lsTipoAttribute
:=
ObterTipoAtributoRelacionamento
(
lRelation
.
OriginMaxMultiplicity
,
lRelation
.
DestinationClassTicket
.
DisplayName
);
EscreveGetterSetterClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
,
lRelation
.
OriginMaxMultiplicity
>
1
);
lListaParamsConstrutor
.
Add
(
lsTipoAttribute
+
' pi'
+
lsAtributo
);
if
lClassTicketPai
.
ID
<>
lClassTicket
.
ID
then
lListaChamadaSuper
.
Add
(
'pi'
+
lsAtributo
)
else
begin
EscreverInicializacaoAtributo
(
lCodigoConstrutor
,
lRelation
.
OriginPropertyName
,
lRelation
.
OriginMaxMultiplicity
);
EscreverCriacaoLista
(
lCodigoConstrutorSemRelOut
,
lRelation
.
OriginPropertyName
,
lRelation
.
OriginMaxMultiplicity
);
end
;
end
;
end
;
end
;
end
;
lClassTicketPai
:=
lClassTicketPai
.
ParentClassTicket
;
end
;
//Escrever mtodos
//Escrever mtodos
//Escreve construtor
co
m id
//Escreve construtor
se
m id
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
'public '
+
lsNomeClasse
+
'('
+
_TipoId
+
' piId, '
+
strutils
.
LeftStr
(
lParamsConstrutor
,
Length
(
lParamsConstrutor
)-
2
)+
') {'
);
lCodigoClasse
.
WriteLine
(
'public '
+
lsNomeClasse
+
'('
+
lListaParamsConstrutor
.
DelimitedText
+
') {'
);
lCodigoClasse
.
Indent
();
lCodigoClasse
.
Indent
();
lCodigoClasse
.
WriteLine
(
'f'
+
_NomeId
+
' = piId;'
);
if
lEhClasseHerdada
for
index
:=
0
to
lClassTicket
.
Attributes
.
Count
-
1
do
then
lCodigoClasse
.
WriteLine
(
'super('
+
lListaChamadaSuper
.
CommaText
+
');'
);
begin
lCodigoClasse
.
Append
(
lCodigoConstrutor
);
lsAtributo
:=
lClassTicket
.
Attributes
.
Strings
[
index
];
lCodigoClasse
.
WriteLine
(
'f'
+
lsAtributo
+
' = pi'
+
lsAtributo
+
';'
);
end
;
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
'}'
);
lCodigoClasse
.
WriteLine
(
'}'
);
//Escreve construtor
se
m id
//Escreve construtor
co
m id
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
'public '
+
lsNomeClasse
+
'('
+
strutils
.
LeftStr
(
lParamsConstrutor
,
Length
(
lParamsConstrutor
)-
2
)+
') {'
);
lCodigoClasse
.
WriteLine
(
'public '
+
lsNomeClasse
+
'('
+
_TipoId
+
' piId,'
+
lListaParamsConstrutor
.
DelimitedText
+
') {'
);
lCodigoClasse
.
Indent
();
lCodigoClasse
.
Indent
();
//lCodigoClasse.WriteLine('fId = null;');
if
lEhClasseHerdada
for
index
:=
0
to
lClassTicket
.
Attributes
.
Count
-
1
do
then
lCodigoClasse
.
WriteLine
(
'super(piId, '
+
lListaChamadaSuper
.
CommaText
+
');'
)
else
lCodigoClasse
.
WriteLine
(
_NomeId
+
' = piId;'
);
lCodigoClasse
.
Append
(
lCodigoConstrutor
);
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
'}'
);
//Escreve construtor com id e sem relacionamentos
lCodigoClasse
.
WriteLine
(
''
);
if
lListaParamsConstrutorSemRelOut
.
Count
<>
lListaParamsConstrutor
.
Count
then
begin
begin
lsAtributo
:=
lClassTicket
.
Attributes
.
Strings
[
index
];
lCodigoClasse
.
WriteLine
(
'public '
+
lsNomeClasse
+
'('
+
_TipoId
+
' piId,'
+
lListaParamsConstrutorSemRelOut
.
DelimitedText
+
') {'
);
lCodigoClasse
.
WriteLine
(
'f'
+
lsAtributo
+
' = pi'
+
lsAtributo
+
';'
);
lCodigoClasse
.
Indent
();
end
;
if
lEhClasseHerdada
then
lCodigoClasse
.
WriteLine
(
'super(piId, '
+
lListaChamadaSuperSemRelOut
.
CommaText
+
');'
)
else
lCodigoClasse
.
WriteLine
(
_NomeId
+
' = piId;'
);
lCodigoClasse
.
Append
(
lCodigoConstrutorSemRelOut
);
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
'}'
);
lCodigoClasse
.
WriteLine
(
'}'
);
end
;
//Escrever mtodo ToString
//Escrever mtodo ToString
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
''
);
...
@@ -5693,11 +5829,11 @@ begin
...
@@ -5693,11 +5829,11 @@ begin
lCodigoClasse
.
WriteLine
(
'public String toString() {'
);
lCodigoClasse
.
WriteLine
(
'public String toString() {'
);
lCodigoClasse
.
Indent
();
lCodigoClasse
.
Indent
();
lCodigoClasse
.
WriteLine
(
'return "'
+
lsNomeClasse
+
'{ " +'
);
lCodigoClasse
.
WriteLine
(
'return "'
+
lsNomeClasse
+
'{ " +'
);
lCodigoClasse
.
WriteLine
(
'"id="+
id
+'
);
lCodigoClasse
.
WriteLine
(
'"id="+
'
+
_NomeId
+
' + ", "
+'
);
for
index
:=
0
to
lClassTicket
.
Attributes
.
Count
-
1
do
for
index
:=
0
to
lClassTicket
.
Attributes
.
Count
-
1
do
begin
begin
lsAtributo
:=
lClassTicket
.
Attributes
.
Strings
[
index
];
lsAtributo
:=
lClassTicket
.
Attributes
.
Strings
[
index
];
lCodigoClasse
.
WriteLine
(
'"'
+
lsAtributo
+
'="+ '
+
lsAtributo
+
' +'
);
lCodigoClasse
.
WriteLine
(
'"'
+
lsAtributo
+
'="+ '
+
lsAtributo
+
' +
", " +
'
);
end
;
end
;
lCodigoClasse
.
WriteLine
(
'"}";'
);
lCodigoClasse
.
WriteLine
(
'"}";'
);
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
Outdent
();
...
@@ -5711,52 +5847,191 @@ begin
...
@@ -5711,52 +5847,191 @@ begin
Result
:=
lCodigoClasse
.
AsString
;
Result
:=
lCodigoClasse
.
AsString
;
finally
finally
lCodigoClasse
.
Free
;
lCodigoClasse
.
Free
;
lCodigoConstrutor
.
Free
;
lCodigoConstrutorSemRelOut
.
Free
;
lListaParamsConstrutor
.
Free
;
lListaParamsConstrutorSemRelOut
.
Free
;
lListaChamadaSuper
.
Free
;
lListaChamadaSuperSemRelOut
.
Free
;
end
;
end
;
end
;
end
;
function
TUtil
.
GerarClassPreview_JavaMapper
(
piClass
:
IUMLClass
):
string
;
function
TUtil
.
GerarClassPreview_JavaMapper
(
piClass
:
IUMLClass
):
string
;
function
GetMapperClassName
(
const
piDomainClassName
:
string
):
string
;
begin
Result
:=
RightStr
(
piDomainClassName
,
Length
(
piDomainClassName
)-
2
)
+
'Mapper'
;
end
;
function
GetDBClassName
(
const
piDomainClassName
:
string
):
string
;
begin
Result
:=
piDomainClassName
+
'Entity'
;
end
;
var
var
lsNomeClasseMapper
,
lsNomeClasseMapper
,
lsNomeClasseDominio
,
lsNomeClasseDominio
,
lsNomeClasseDB
,
lsNomeClasseDB
,
lsUltAtributo
,
lsUltAtributo
,
lsAttributo
:
string
;
lsAttributo
,
lPackageRef
,
lsTipoAttribute
,
lOutParameters
:
string
;
index
:
integer
;
index
:
integer
;
lClassTicket
,
lClassTicket
,
lClassTicketPai
:
acClassTicket
;
lClassTicketPai
:
acClassTicket
;
lCodigoClasse
:
PStringWriter
;
lCodigoClasse
:
PStringWriter
;
lRelation
:
acRelationTicket
;
lRelation
:
acRelationTicket
;
lAttributList
:
TStringList
;
lAttributList
,
lListOutParameters
:
TStringList
;
begin
begin
Result
:=
''
;
Result
:=
''
;
lsNomeClasseDominio
:=
piClass
.
Name
;
lsNomeClasseDominio
:=
piClass
.
Name
;
lsNomeClasseDB
:=
lsNomeClasseDominio
+
'Entity'
;
lsNomeClasseDB
:=
GetDBClassName
(
lsNomeClasseDominio
)
;
lsNomeClasseMapper
:=
RightStr
(
lsNomeClasseDominio
,
Length
(
lsNomeClasseDominio
)-
2
)
+
'Mapper'
;
lsNomeClasseMapper
:=
GetMapperClassName
(
lsNomeClasseDominio
)
;
lClassTicket
:=
MetaModel
.
GetClassTicketByName
(
lsNomeClasseDominio
);
lClassTicket
:=
MetaModel
.
GetClassTicketByName
(
lsNomeClasseDominio
);
lPackageRef
:=
StarUMLApp
.
ProjectManager
.
Project
.
Documentation
;
if
lPackageRef
<>
''
then
lPackageRef
:=
lPackageRef
+
'.'
;
lCodigoClasse
:=
PStringWriter
.
Create
;
lCodigoClasse
:=
PStringWriter
.
Create
;
try
try
lCodigoClasse
.
WriteLine
(
'package adapters.persistence.mappers;'
);
lCodigoClasse
.
WriteLine
(
'package
'
+
lPackageRef
+
'
adapters.persistence.mappers;'
);
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
'import adapters.persistence.entities.'
+
lsNomeClasseDB
+
';'
);
lCodigoClasse
.
WriteLine
(
'import '
+
lPackageRef
+
'adapters.persistence.entities.'
+
lsNomeClasseDB
+
';'
);
lCodigoClasse
.
WriteLine
(
'import domain.'
+
lsNomeClasseDominio
+
';'
);
lCodigoClasse
.
WriteLine
(
'import '
+
lPackageRef
+
'domain.'
+
lsNomeClasseDominio
+
';'
);
lClassTicketPai
:=
lClassTicket
;
while
Assigned
(
lClassTicketPai
)
do
begin
for
index
:=
0
to
lClassTicketPai
.
RelationTicketsIn
.
Count
-
1
do
begin
lRelation
:=
(
lClassTicketPai
.
RelationTicketsIn
.
Objects
[
index
]
as
acRelationTicket
);
if
(
lRelation
.
DestinationPropertyName
<>
''
)
then
begin
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
;
lCodigoClasse
.
WriteLine
(
'import '
+
lPackageRef
+
'adapters.persistence.entities.'
+
GetDBClassName
(
lsTipoAttribute
)+
';'
);
lCodigoClasse
.
WriteLine
(
'import '
+
lPackageRef
+
'domain.'
+
lsTipoAttribute
+
';'
);
end
;
end
;
for
index
:=
0
to
lClassTicketPai
.
RelationTicketsOut
.
Count
-
1
do
begin
lRelation
:=
(
lClassTicketPai
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
if
(
lRelation
.
OriginPropertyName
<>
''
)
then
begin
lsTipoAttribute
:=
lRelation
.
DestinationClassTicket
.
DisplayName
;
lCodigoClasse
.
WriteLine
(
'import '
+
lPackageRef
+
'adapters.persistence.entities.'
+
GetDBClassName
(
lsTipoAttribute
)+
';'
);
lCodigoClasse
.
WriteLine
(
'import '
+
lPackageRef
+
'domain.'
+
lsTipoAttribute
+
';'
);
end
;
end
;
lClassTicketPai
:=
lClassTicketPai
.
ParentClassTicket
;
end
;
lCodigoClasse
.
WriteLine
(
'import java.util.stream.Collectors;'
);
lCodigoClasse
.
WriteLine
(
'import java.util.List;'
);
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
''
);
// Incio da classe
// Incio da classe
lCodigoClasse
.
WriteLine
(
'public final class '
+
lsNomeClasseMapper
+
' {'
);
lCodigoClasse
.
WriteLine
(
'public final class '
+
lsNomeClasseMapper
+
' {'
);
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
Indent
();
lCodigoClasse
.
Indent
();
// toDomain: Escrever mtodo toDomain
lCodigoClasse
.
WriteLine
(
''
);
// Obter lista de parametros Out para metodo toDomain
lListOutParameters
:=
TStringList
.
Create
;
try
lListOutParameters
.
StrictDelimiter
:=
true
;
lListOutParameters
.
Delimiter
:=
','
;
lClassTicketPai
:=
lClassTicket
;
while
Assigned
(
lClassTicketPai
)
do
begin
for
index
:=
0
to
lClassTicketPai
.
RelationTicketsIn
.
Count
-
1
do
begin
lRelation
:=
(
lClassTicketPai
.
RelationTicketsIn
.
Objects
[
index
]
as
acRelationTicket
);
if
(
lRelation
.
DestinationPropertyName
<>
''
)
then
begin
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
;
if
lRelation
.
DestinationMaxMultiplicity
=
1
then
lListOutParameters
.
Add
(
Format
(
'%s pi%s'
,
[
lsTipoAttribute
,
lRelation
.
DestinationPropertyName
]))
else
lListOutParameters
.
Add
(
Format
(
'List<%s> pi%s'
,
[
lsTipoAttribute
,
lRelation
.
DestinationPropertyName
]));
end
;
end
;
for
index
:=
0
to
lClassTicketPai
.
RelationTicketsOut
.
Count
-
1
do
begin
lRelation
:=
(
lClassTicketPai
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
if
(
lRelation
.
OriginPropertyName
<>
''
)
then
begin
lsTipoAttribute
:=
lRelation
.
DestinationClassTicket
.
DisplayName
;
if
lRelation
.
OriginMaxMultiplicity
=
1
then
lListOutParameters
.
Add
(
Format
(
'%s pi%s'
,
[
lsTipoAttribute
,
lRelation
.
OriginPropertyName
]))
else
lListOutParameters
.
Add
(
Format
(
'List<%s> pi%s'
,
[
lsTipoAttribute
,
lRelation
.
OriginPropertyName
]));
end
;
end
;
lClassTicketPai
:=
lClassTicketPai
.
ParentClassTicket
;
end
;
lOutParameters
:=
lListOutParameters
.
DelimitedText
;
finally
lListOutParameters
.
Free
;
end
;
// toDomain: Escrever mtodo toDomain apenas relacionamento In
if
lOutParameters
<>
''
then
begin
lCodigoClasse
.
WriteLine
(
'public static '
+
lsNomeClasseDominio
+
' toDomain('
+
lsNomeClasseDB
+
' piDBObject, '
+
lOutParameters
+
') { '
);
lCodigoClasse
.
Indent
();
lCodigoClasse
.
WriteLine
(
'if (piDBObject == null) return null;'
);
lCodigoClasse
.
WriteLine
(
'return new '
+
lsNomeClasseDominio
+
'('
);
lCodigoClasse
.
Indent
();
lAttributList
:=
TStringList
.
Create
;
try
lAttributList
.
Add
(
'piDBObject.getId()'
);
lClassTicketPai
:=
lClassTicket
;
while
Assigned
(
lClassTicketPai
)
do
begin
for
index
:=
0
to
lClassTicketPai
.
Attributes
.
Count
-
1
do
begin
lAttributList
.
Add
(
'piDBObject.get%s()'
,
[
lClassTicketPai
.
Attributes
.
Strings
[
index
]]);
end
;
for
index
:=
0
to
lClassTicketPai
.
RelationTicketsIn
.
Count
-
1
do
begin
lRelation
:=
(
lClassTicketPai
.
RelationTicketsIn
.
Objects
[
index
]
as
acRelationTicket
);
if
(
lRelation
.
DestinationPropertyName
<>
''
)
then
begin
lAttributList
.
Add
(
Format
(
'pi%s'
,
[
lRelation
.
DestinationPropertyName
]));
//lsTipoAttribute := lRelation.OriginClassTicket.DisplayName;
//if lRelation.DestinationMaxMultiplicity = 1
// then lAttributList.Add(Format('%s.toDomain(piDBObject.get%s())', [GetMapperClassName(lsTipoAttribute), lRelation.DestinationPropertyName]))
// else lAttributList.Add(Format('piDBObject.get%s().stream().map(%s::toDomain).collect(Collectors.toList())', [lRelation.DestinationPropertyName, GetMapperClassName(lsTipoAttribute)]));
end
;
end
;
for
index
:=
0
to
lClassTicketPai
.
RelationTicketsOut
.
Count
-
1
do
begin
lRelation
:=
(
lClassTicketPai
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
if
(
lRelation
.
OriginPropertyName
<>
''
)
then
lAttributList
.
Add
(
Format
(
'pi%s'
,
[
lRelation
.
OriginPropertyName
]));
end
;
lClassTicketPai
:=
lClassTicketPai
.
ParentClassTicket
;
end
;
lsUltAtributo
:=
lAttributList
.
Strings
[
lAttributList
.
Count
-
1
];
lAttributList
.
Delete
(
lAttributList
.
Count
-
1
);
for
lsAttributo
in
lAttributList
.
CommaText
.
Split
([
','
])
do
lCodigoClasse
.
WriteLine
(
lsAttributo
+
','
);
lCodigoClasse
.
WriteLine
(
lsUltAtributo
);
finally
lAttributList
.
Free
;
end
;
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
');'
);
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
'}'
);
end
;
// toDomain: Escrever mtodo toDomain completo
lCodigoClasse
.
WriteLine
(
'public static '
+
lsNomeClasseDominio
+
' toDomain('
+
lsNomeClasseDB
+
' piDBObject) { '
);
lCodigoClasse
.
WriteLine
(
'public static '
+
lsNomeClasseDominio
+
' toDomain('
+
lsNomeClasseDB
+
' piDBObject) { '
);
lCodigoClasse
.
Indent
();
lCodigoClasse
.
Indent
();
lCodigoClasse
.
WriteLine
(
'if (piDBObject == null) return null;'
);
lCodigoClasse
.
WriteLine
(
'return new '
+
lsNomeClasseDominio
+
'('
);
lCodigoClasse
.
WriteLine
(
'return new '
+
lsNomeClasseDominio
+
'('
);
lCodigoClasse
.
Indent
();
lCodigoClasse
.
Indent
();
lAttributList
:=
TStringList
.
Create
;
lAttributList
:=
TStringList
.
Create
;
try
try
lAttributList
.
Add
(
'piDBObject.getId()'
);
lAttributList
.
Add
(
'piDBObject.getId()'
);
// toDomain: obter lista de atributos da classe atual + classe pai
lClassTicketPai
:=
lClassTicket
;
lClassTicketPai
:=
lClassTicket
;
while
Assigned
(
lClassTicketPai
)
do
while
Assigned
(
lClassTicketPai
)
do
begin
begin
...
@@ -5768,16 +6043,174 @@ begin
...
@@ -5768,16 +6043,174 @@ begin
begin
begin
lRelation
:=
(
lClassTicketPai
.
RelationTicketsIn
.
Objects
[
index
]
as
acRelationTicket
);
lRelation
:=
(
lClassTicketPai
.
RelationTicketsIn
.
Objects
[
index
]
as
acRelationTicket
);
if
(
lRelation
.
DestinationPropertyName
<>
''
)
then
if
(
lRelation
.
DestinationPropertyName
<>
''
)
then
lAttributList
.
Add
(
Format
(
'piDBObject.get%s()'
,
[
lRelation
.
DestinationPropertyName
]));
begin
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
;
if
lRelation
.
DestinationMaxMultiplicity
=
1
then
lAttributList
.
Add
(
Format
(
'%s.toDomain(piDBObject.get%s())'
,
[
GetMapperClassName
(
lsTipoAttribute
),
lRelation
.
DestinationPropertyName
]))
else
lAttributList
.
Add
(
Format
(
'piDBObject.get%s().stream().map(%s::toDomain).collect(Collectors.toList())'
,
[
lRelation
.
DestinationPropertyName
,
GetMapperClassName
(
lsTipoAttribute
)]));
end
;
end
;
for
index
:=
0
to
lClassTicketPai
.
RelationTicketsOut
.
Count
-
1
do
begin
lRelation
:=
(
lClassTicketPai
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
if
(
lRelation
.
OriginPropertyName
<>
''
)
then
begin
lsTipoAttribute
:=
lRelation
.
DestinationClassTicket
.
DisplayName
;
if
lRelation
.
OriginMaxMultiplicity
=
1
then
lAttributList
.
Add
(
Format
(
'%s.toDomain(piDBObject.get%s())'
,
[
GetMapperClassName
(
lsTipoAttribute
),
lRelation
.
OriginPropertyName
]))
else
lAttributList
.
Add
(
Format
(
'piDBObject.get%s().stream().map(%s::toDomain).collect(Collectors.toList())'
,
[
lRelation
.
OriginPropertyName
,
GetMapperClassName
(
lsTipoAttribute
)]));
end
;
end
;
lClassTicketPai
:=
lClassTicketPai
.
ParentClassTicket
;
end
;
lsUltAtributo
:=
lAttributList
.
Strings
[
lAttributList
.
Count
-
1
];
lAttributList
.
Delete
(
lAttributList
.
Count
-
1
);
for
lsAttributo
in
lAttributList
.
CommaText
.
Split
([
','
])
do
lCodigoClasse
.
WriteLine
(
lsAttributo
+
','
);
lCodigoClasse
.
WriteLine
(
lsUltAtributo
);
finally
lAttributList
.
Free
;
end
;
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
');'
);
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
'}'
);
// Obter lista de parametros para metodo fromDomain
lListOutParameters
:=
TStringList
.
Create
;
try
lListOutParameters
.
StrictDelimiter
:=
true
;
lListOutParameters
.
Delimiter
:=
','
;
lClassTicketPai
:=
lClassTicket
;
while
Assigned
(
lClassTicketPai
)
do
begin
for
index
:=
0
to
lClassTicketPai
.
RelationTicketsIn
.
Count
-
1
do
begin
lRelation
:=
(
lClassTicketPai
.
RelationTicketsIn
.
Objects
[
index
]
as
acRelationTicket
);
if
(
lRelation
.
DestinationPropertyName
<>
''
)
then
begin
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
;
if
lRelation
.
DestinationMaxMultiplicity
=
1
then
lListOutParameters
.
Add
(
Format
(
'%s pi%s'
,
[
GetDBClassName
(
lsTipoAttribute
),
lRelation
.
DestinationPropertyName
]))
else
lListOutParameters
.
Add
(
Format
(
'List<%s> pi%s'
,
[
GetDBClassName
(
lsTipoAttribute
),
lRelation
.
DestinationPropertyName
]));
end
;
end
;
for
index
:=
0
to
lClassTicketPai
.
RelationTicketsOut
.
Count
-
1
do
begin
lRelation
:=
(
lClassTicketPai
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
if
(
lRelation
.
OriginPropertyName
<>
''
)
then
begin
lsTipoAttribute
:=
lRelation
.
DestinationClassTicket
.
DisplayName
;
if
lRelation
.
OriginMaxMultiplicity
=
1
then
lListOutParameters
.
Add
(
Format
(
'%s pi%s'
,
[
GetDBClassName
(
lsTipoAttribute
),
lRelation
.
OriginPropertyName
]))
else
lListOutParameters
.
Add
(
Format
(
'List<%s> pi%s'
,
[
GetDBClassName
(
lsTipoAttribute
),
lRelation
.
OriginPropertyName
]));
end
;
end
;
lClassTicketPai
:=
lClassTicketPai
.
ParentClassTicket
;
end
;
lOutParameters
:=
lListOutParameters
.
DelimitedText
;
finally
lListOutParameters
.
Free
;
end
;
// Escrever mtodo fromDomain apenas relacionamentos In
if
lOutParameters
<>
''
then
begin
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
'public static '
+
lsNomeClasseDB
+
' fromDomain('
+
lsNomeClasseDominio
+
' piDmObject, '
+
lOutParameters
+
') { '
);
lCodigoClasse
.
Indent
();
lCodigoClasse
.
WriteLine
(
'if (piDmObject == null) return null;'
);
lCodigoClasse
.
WriteLine
(
'return new '
+
lsNomeClasseDB
+
'('
);
lCodigoClasse
.
Indent
();
lAttributList
:=
TStringList
.
Create
;
try
lAttributList
.
Add
(
'piDmObject.getId()'
);
lClassTicketPai
:=
lClassTicket
;
while
Assigned
(
lClassTicketPai
)
do
begin
for
index
:=
0
to
lClassTicketPai
.
Attributes
.
Count
-
1
do
begin
lAttributList
.
Add
(
'piDmObject.get%s()'
,
[
lClassTicketPai
.
Attributes
.
Strings
[
index
]]);
end
;
for
index
:=
0
to
lClassTicketPai
.
RelationTicketsIn
.
Count
-
1
do
begin
lRelation
:=
(
lClassTicketPai
.
RelationTicketsIn
.
Objects
[
index
]
as
acRelationTicket
);
if
(
lRelation
.
DestinationPropertyName
<>
''
)
then
begin
lAttributList
.
Add
(
Format
(
'pi%s'
,
[
lRelation
.
DestinationPropertyName
]));
//lsTipoAttribute := lRelation.OriginClassTicket.DisplayName;
//if lRelation.DestinationMaxMultiplicity = 1
// then lAttributList.Add(Format('%s.fromDomain(piDmObject.get%s())', [GetMapperClassName(lsTipoAttribute), lRelation.DestinationPropertyName]))
// else lAttributList.Add(Format('piDmObject.get%s().stream().map(%s::fromDomain).collect(Collectors.toList())', [lRelation.DestinationPropertyName, GetMapperClassName(lsTipoAttribute)]));
end
;
end
;
for
index
:=
0
to
lClassTicketPai
.
RelationTicketsOut
.
Count
-
1
do
begin
lRelation
:=
(
lClassTicketPai
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
if
(
lRelation
.
OriginPropertyName
<>
''
)
then
lAttributList
.
Add
(
Format
(
'pi%s'
,
[
lRelation
.
OriginPropertyName
]));
end
;
lClassTicketPai
:=
lClassTicketPai
.
ParentClassTicket
;
end
;
lsUltAtributo
:=
lAttributList
.
Strings
[
lAttributList
.
Count
-
1
];
lAttributList
.
Delete
(
lAttributList
.
Count
-
1
);
for
lsAttributo
in
lAttributList
.
CommaText
.
Split
([
','
])
do
lCodigoClasse
.
WriteLine
(
lsAttributo
+
','
);
lCodigoClasse
.
WriteLine
(
lsUltAtributo
);
finally
lAttributList
.
Free
;
end
;
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
');'
);
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
'}'
);
end
;
// Escrever mtodo fromDomain completo
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
'public static '
+
lsNomeClasseDB
+
' fromDomain('
+
lsNomeClasseDominio
+
' piDmObject) { '
);
lCodigoClasse
.
Indent
();
lCodigoClasse
.
WriteLine
(
'if (piDmObject == null) return null;'
);
lCodigoClasse
.
WriteLine
(
'return new '
+
lsNomeClasseDB
+
'('
);
lCodigoClasse
.
Indent
();
lAttributList
:=
TStringList
.
Create
;
try
lAttributList
.
Add
(
'piDmObject.getId()'
);
lClassTicketPai
:=
lClassTicket
;
while
Assigned
(
lClassTicketPai
)
do
begin
for
index
:=
0
to
lClassTicketPai
.
Attributes
.
Count
-
1
do
begin
lAttributList
.
Add
(
'piDmObject.get%s()'
,
[
lClassTicketPai
.
Attributes
.
Strings
[
index
]]);
end
;
for
index
:=
0
to
lClassTicketPai
.
RelationTicketsIn
.
Count
-
1
do
begin
lRelation
:=
(
lClassTicketPai
.
RelationTicketsIn
.
Objects
[
index
]
as
acRelationTicket
);
if
(
lRelation
.
DestinationPropertyName
<>
''
)
then
begin
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
;
if
lRelation
.
DestinationMaxMultiplicity
=
1
then
lAttributList
.
Add
(
Format
(
'%s.fromDomain(piDmObject.get%s())'
,
[
GetMapperClassName
(
lsTipoAttribute
),
lRelation
.
DestinationPropertyName
]))
else
lAttributList
.
Add
(
Format
(
'piDmObject.get%s().stream().map(%s::fromDomain).collect(Collectors.toList())'
,
[
lRelation
.
DestinationPropertyName
,
GetMapperClassName
(
lsTipoAttribute
)]));
end
;
end
;
for
index
:=
0
to
lClassTicketPai
.
RelationTicketsOut
.
Count
-
1
do
begin
lRelation
:=
(
lClassTicketPai
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
if
(
lRelation
.
OriginPropertyName
<>
''
)
then
begin
lsTipoAttribute
:=
lRelation
.
DestinationClassTicket
.
DisplayName
;
if
lRelation
.
OriginMaxMultiplicity
=
1
then
lAttributList
.
Add
(
Format
(
'%s.fromDomain(piDmObject.get%s())'
,
[
GetMapperClassName
(
lsTipoAttribute
),
lRelation
.
OriginPropertyName
]))
else
lAttributList
.
Add
(
Format
(
'piDmObject.get%s().stream().map(%s::fromDomain).collect(Collectors.toList())'
,
[
lRelation
.
OriginPropertyName
,
GetMapperClassName
(
lsTipoAttribute
)]));
end
;
end
;
end
;
lClassTicketPai
:=
lClassTicketPai
.
ParentClassTicket
;
lClassTicketPai
:=
lClassTicketPai
.
ParentClassTicket
;
end
;
end
;
// toDomain: escrever lista de atributos encontrados
lsUltAtributo
:=
lAttributList
.
Strings
[
lAttributList
.
Count
-
1
];
lsUltAtributo
:=
lAttributList
.
Strings
[
lAttributList
.
Count
-
1
];
lAttributList
.
Delete
(
lAttributList
.
Count
-
1
);
lAttributList
.
Delete
(
lAttributList
.
Count
-
1
);
for
lsAttributo
in
lAttributList
.
CommaText
.
Split
([
','
])
do
for
lsAttributo
in
lAttributList
.
CommaText
.
Split
([
','
])
do
lCodigoClasse
.
WriteLine
(
lsAttributo
+
','
);
lCodigoClasse
.
WriteLine
(
lsAttributo
+
','
);
lCodigoClasse
.
WriteLine
(
lsUltAtributo
+
';'
);
lCodigoClasse
.
WriteLine
(
lsUltAtributo
);
finally
finally
lAttributList
.
Free
;
lAttributList
.
Free
;
end
;
end
;
...
@@ -5786,7 +6219,6 @@ begin
...
@@ -5786,7 +6219,6 @@ begin
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
'}'
);
lCodigoClasse
.
WriteLine
(
'}'
);
// Escrever mtodo fromDomain
//Fim
//Fim
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
Outdent
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment