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
Hide 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
end
;
end
;
function
TUtil
.
AlimentarMetamodelUseCase
(
poRootUseCase
:
IUMLUseCase
;
piBaseStateMachine
:
IUMLStateMachine
;
piBaseSubmachineState
:
IUMLSubmachineState
;
poMetaModel
:
acMetaModel
;
piProgress
:
TFShowProgress
):
string
;
var
...
...
@@ -2412,8 +2411,6 @@ begin
end
;
end
;
function
TUtil
.
GerarBodyRegisterMappings
(
piModelMappingsOptions
:
TModelMappingsOptions
;
const
piInstantCodeConsts
:
TInstantCodeConsts
;
piProgress
:
TFShowProgress
;
piStartAt
:
Integer
;
piEndAt
:
Integer
):
string
;
var
lEnum
:
acEnumerator
;
lClassTicket
:
acClassTicket
;
...
...
@@ -5076,7 +5073,7 @@ end;
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
//Escreve getter and setter
if
not
piLista
then
...
...
@@ -5088,13 +5085,17 @@ function TUtil.GerarClassPreview_JavaHibernate(piClass: IUMLClass): string;
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
(
''
);
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
;
piNomeAtributo
:
String
;
const
piMultiplicity
:
Integer
);
procedure
EscreverInicializacaoAtributo
(
const
piCodigoClasse
:
PStringWriter
;
const
piNomeAtributo
:
String
;
const
piMultiplicity
:
Integer
);
begin
if
(
piNomeAtributo
<>
''
)
then
begin
...
...
@@ -5102,7 +5103,7 @@ function TUtil.GerarClassPreview_JavaHibernate(piClass: IUMLClass): string;
piCodigoClasse
.
WriteLine
(
piNomeAtributo
+
' = pi'
+
piNomeAtributo
+
';'
)
else
begin
piCodigoClasse
.
WriteLine
(
piNomeAtributo
+
' = new ArrayList<>();'
);
EscreverCriacaoLista
(
piCodigoClasse
,
piNomeAtributo
,
piMultiplicity
);
piCodigoClasse
.
WriteLine
(
'if (pi'
+
piNomeAtributo
+
' != null) { '
+
piNomeAtributo
+
'.addAll(pi'
+
piNomeAtributo
+
'); }'
);
end
;
end
;
...
...
@@ -5161,7 +5162,8 @@ var
lsNomeTabela
,
lsNomeGeneratorId
,
lsAtributo
,
lsTipoAttribute
:
string
;
lsTipoAttribute
,
lPackageRef
:
string
;
index
:
integer
;
lClassTicket
,
lClassTicketPai
:
acClassTicket
;
...
...
@@ -5169,29 +5171,39 @@ var
lMetaModelPersistenceMapSQL
:
acMetaModelPersistenceMapSQL
;
lClassToDBMapTicket
:
acClassToDBMapTicket
;
lCodigoClasse
:
PStringWriter
;
lParamsConstrutor
:
string
;
lCodigoClasse
,
lCodigoConstrutor
,
lCodigoConstrutorSemRelOut
:
PStringWriter
;
lParamsConstrutor
,
lParamsConstrutorSemRelOut
:
string
;
lRelation
:
acRelationTicket
;
lRelationPersistenceMapTicket
:
acRelationSQLPersistenceMapTicket
;
lColumnTicket
:
acDBColumnMapTicket
;
lEhClasseHerdada
:
Boolean
;
lListaChamadaSuper
:
TStringList
;
lListaChamadaSuper
,
lListaChamadaSuperSemRelOut
:
TStringList
;
begin
Result
:=
''
;
lParamsConstrutorSemRelOut
:=
''
;
lParamsConstrutor
:=
''
;
lsNomeClasseDominio
:=
piClass
.
Name
;
lClassTicket
:=
MetaModel
.
GetClassTicketByName
(
lsNomeClasseDominio
);
lEhClasseHerdada
:=
Assigned
(
lClassTicket
.
ParentClassTicket
);
lsNomeClasseDB
:=
lsNomeClasseDominio
+
'Entity'
;
lPackageRef
:=
StarUMLApp
.
ProjectManager
.
Project
.
Documentation
;
if
lPackageRef
<>
''
then
lPackageRef
:=
lPackageRef
+
'.'
;
// Obter ticket do banco
lMetaModelPersistenceMapSQL
:=
fMetaModelPersistenceMap
as
acMetaModelPersistenceMapSQL
;
lClassToDBMapTicket
:=
lMetaModelPersistenceMapSQL
.
GetClassToDBMapTicket
(
lClassTicket
);
lListaChamadaSuper
:=
TStringList
.
Create
;
lListaChamadaSuperSemRelOut
:=
TStringList
.
Create
;
lCodigoConstrutor
:=
PStringWriter
.
Create
;
lCodigoConstrutorSemRelOut
:=
PStringWriter
.
Create
;
lCodigoClasse
:=
PStringWriter
.
Create
;
try
//lCodigoClasse.WriteLine('package
adapters.persistence.entities;');
//
lCodigoClasse.WriteLine('');
lCodigoClasse
.
WriteLine
(
'package '
+
lPackageRef
+
'
adapters.persistence.entities;'
);
lCodigoClasse
.
WriteLine
(
''
);
// Imports de tipos
IncluirImports
(
lCodigoClasse
,
lClassTicket
,
_DBTipoId
);
lCodigoClasse
.
WriteLine
(
''
);
...
...
@@ -5214,7 +5226,7 @@ begin
end
;
lCodigoClasse
.
WriteLine
(
'@Table(name = "'
+
lsNomeTabela
+
'")'
);
if
lClassTicket
.
HasDescendants
then
lCodigoClasse
.
Write
(
'public
abstract '
)
then
lCodigoClasse
.
Write
(
'public
'
)
// abstract
else
lCodigoClasse
.
Write
(
'public final '
);
lCodigoClasse
.
Write
(
'class '
+
lsNomeClasseDB
);
if
lEhClasseHerdada
...
...
@@ -5360,9 +5372,17 @@ begin
lAttributeTicket
:=
lClassTicketPai
.
Attributes
.
Objects
[
index
]
as
acAttributeTicket
;
lsAtributo
:=
lClassTicketPai
.
Attributes
.
Strings
[
index
];
lsTipoAttribute
:=
ObterTipoAtributoJava
(
lAttributeTicket
.
AttributeType
);
lParamsConstrutor
:=
lParamsConstrutor
+
lsTipoAttribute
+
' pi'
+
lsAtributo
+
', '
;
if
lClassTicketPai
.
ID
<>
lClassTicket
.
ID
then
lListaChamadaSuper
.
Add
(
'pi'
+
lsAtributo
);
lParamsConstrutor
:=
lParamsConstrutor
+
lsTipoAttribute
+
' pi'
+
lsAtributo
+
', '
;
lParamsConstrutorSemRelOut
:=
lParamsConstrutorSemRelOut
+
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
...
...
@@ -5374,8 +5394,14 @@ begin
then
lsTipoAttribute
:=
'List<'
+
lRelation
.
OriginClassTicket
.
DisplayName
+
'Entity>'
else
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
+
'Entity'
;
lParamsConstrutor
:=
lParamsConstrutor
+
lsTipoAttribute
+
' pi'
+
lsAtributo
+
', '
;
if
lClassTicketPai
.
ID
<>
lClassTicket
.
ID
then
lListaChamadaSuper
.
Add
(
'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
...
...
@@ -5388,13 +5414,16 @@ begin
then
lsTipoAttribute
:=
'List<'
+
lRelation
.
DestinationClassTicket
.
DisplayName
+
'Entity>'
else
lsTipoAttribute
:=
lRelation
.
DestinationClassTicket
.
DisplayName
+
'Entity'
;
lParamsConstrutor
:=
lParamsConstrutor
+
lsTipoAttribute
+
' pi'
+
lsAtributo
+
', '
;
if
lClassTicketPai
.
ID
<>
lClassTicket
.
ID
then
lListaChamadaSuper
.
Add
(
'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
;
lClassTicketPai
:=
lClassTicketPai
.
ParentClassTicket
;
end
;
// Escrever mtodos
// Escrever construtor vazio
lCodigoClasse
.
WriteLine
(
''
);
...
...
@@ -5412,7 +5441,7 @@ begin
lRelation
:=
(
lClassTicket
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
lsAtributo
:=
lRelation
.
OriginPropertyName
;
if
(
lsAtributo
<>
''
)
and
(
lRelation
.
OriginMaxMultiplicity
>
1
)
then
lCodigoClasse
.
WriteLine
(
lsAtributo
+
' = new ArrayList<>();'
);
EscreverCriacaoLista
(
lCodigoClasse
,
lsAtributo
,
lRelation
.
OriginMaxMultiplicity
);
end
;
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
'}'
);
...
...
@@ -5421,24 +5450,10 @@ begin
lCodigoClasse
.
WriteLine
(
'public '
+
lsNomeClasseDB
+
'('
+
strutils
.
LeftStr
(
lParamsConstrutor
,
Length
(
lParamsConstrutor
)-
2
)+
') {'
);
lCodigoClasse
.
Indent
();
if
lEhClasseHerdada
then
lCodigoClasse
.
WriteLine
(
'super('
+
lListaChamadaSuper
.
CommaText
+
');'
);
for
index
:=
0
to
lClassTicket
.
Attributes
.
Count
-
1
do
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
.
WriteLine
(
'super('
+
lListaChamadaSuper
.
CommaText
+
');'
);
lCodigoClasse
.
Append
(
lCodigoConstrutor
);
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
'}'
);
lCodigoClasse
.
WriteLine
(
'}'
);
// Escrever construtor com id com relacionamentos
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
'public '
+
lsNomeClasseDB
+
'('
+
_DBTipoId
+
' piId, '
+
strutils
.
LeftStr
(
lParamsConstrutor
,
Length
(
lParamsConstrutor
)-
2
)+
') {'
);
...
...
@@ -5447,36 +5462,35 @@ begin
lCodigoClasse
.
WriteLine
(
'super(piId, '
+
lListaChamadaSuper
.
CommaText
+
');'
)
else
lCodigoClasse
.
WriteLine
(
_NomeId
+
' = piId;'
);
for
index
:=
0
to
lClassTicket
.
Attributes
.
Count
-
1
do
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
.
Append
(
lCodigoConstrutor
);
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
'}'
);
// Escrever construtor com id sem relacionamentos
lCodigoClasse
.
WriteLine
(
''
);
if
lParamsConstrutorSemRelOut
<>
lParamsConstrutor
then
begin
lCodigoClasse
.
WriteLine
(
'public '
+
lsNomeClasseDB
+
'('
+
_DBTipoId
+
' piId, '
+
strutils
.
LeftStr
(
lParamsConstrutorSemRelOut
,
Length
(
lParamsConstrutorSemRelOut
)-
2
)+
') {'
);
lCodigoClasse
.
Indent
();
if
lEhClasseHerdada
then
lCodigoClasse
.
WriteLine
(
'super(piId, '
+
lListaChamadaSuperSemRelOut
.
CommaText
+
');'
)
else
lCodigoClasse
.
WriteLine
(
_NomeId
+
' = piId;'
);
lCodigoClasse
.
Append
(
lCodigoConstrutorSemRelOut
);
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
'}'
);
lCodigoClasse
.
WriteLine
(
''
);
end
;
// Escrever mtodo ToString
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
'@Override'
);
lCodigoClasse
.
WriteLine
(
'public String toString() {'
);
lCodigoClasse
.
Indent
();
lCodigoClasse
.
WriteLine
(
'return "'
+
lsNomeClasseDB
+
'{ " +'
);
if
not
lEhClasseHerdada
then
lCodigoClasse
.
WriteLine
(
'"id="+ '
+
_NomeId
+
' +'
);
lCodigoClasse
.
WriteLine
(
'"id="+ '
+
_NomeId
+
' +
", " +
'
);
for
index
:=
0
to
lClassTicket
.
Attributes
.
Count
-
1
do
begin
lsAtributo
:=
lClassTicket
.
Attributes
.
Strings
[
index
];
lCodigoClasse
.
WriteLine
(
'" '
+
lsAtributo
+
'="+ '
+
lsAtributo
+
' +'
);
lCodigoClasse
.
WriteLine
(
'" '
+
lsAtributo
+
'="+ '
+
lsAtributo
+
'
+ ", "
+'
);
end
;
lCodigoClasse
.
WriteLine
(
'"}";'
);
lCodigoClasse
.
Outdent
();
...
...
@@ -5491,12 +5505,22 @@ begin
finally
lCodigoClasse
.
Free
;
lListaChamadaSuper
.
Free
;
lListaChamadaSuperSemRelOut
.
Free
;
lCodigoConstrutor
.
Free
;
lCodigoConstrutorSemRelOut
.
Free
;
end
;
end
;
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
//Escreve atributo
case
piVisibility
of
...
...
@@ -5505,16 +5529,45 @@ function TUtil.GerarClassPreview_JavaDomain(piClass: IUMLClass): string;
acAttributeVisibility
.
pvPrivate
:
piCodigoClasse
.
Write
(
'private '
);
else
piCodigoClasse
.
Write
(
'private '
);
end
;
piCodigoClasse
.
WriteLine
(
piTipoAtributo
+
'
f
'
+
piNomeAtributo
+
';'
);
piCodigoClasse
.
WriteLine
(
piTipoAtributo
+
' '
+
piNomeAtributo
+
';'
);
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
//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
piCodigoClasse
.
WriteLine
(
'public void set'
+
piNomeAtributo
+
'('
+
piTipoAtributo
+
' pi'
+
piNomeAtributo
+
') { f'
+
piNomeAtributo
+
' = pi'
+
piNomeAtributo
+
'; }'
);
piCodigoClasse
.
WriteLine
(
''
);
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
(
''
);
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
);
...
...
@@ -5523,8 +5576,9 @@ function TUtil.GerarClassPreview_JavaDomain(piClass: IUMLClass): string;
lHasImport
:
array
[
0..2
]
of
Boolean
;
index
:
integer
;
lsTipoAttribute
:
string
;
begin
begin
piCodigoClasse
.
WriteLine
(
'import java.util.List;'
);
piCodigoClasse
.
WriteLine
(
'import java.util.ArrayList;'
);
for
index
:=
0
to
2
do
lHasImport
[
index
]
:=
False
;
if
piTipoId
=
'Long'
then
...
...
@@ -5560,30 +5614,56 @@ const
var
lsNomeClasse
,
lsAtributo
,
lsTipoAttribute
:
string
;
lsTipoAttribute
,
lPackageRef
:
string
;
index
:
integer
;
lClassTicket
:
acClassTicket
;
lClassTicket
,
lClassTicketPai
:
acClassTicket
;
lAttributeTicket
:
acAttributeTicket
;
lCodigoClasse
:
PStringWriter
;
lParamsConstrutor
:
string
;
lCodigoClasse
,
lCodigoConstrutor
,
lCodigoConstrutorSemRelOut
:
PStringWriter
;
lRelation
:
acRelationTicket
;
lListaParamsConstrutorSemRelOut
,
lListaParamsConstrutor
,
lListaChamadaSuper
,
lListaChamadaSuperSemRelOut
:
TStringList
;
lEhClasseHerdada
:
boolean
;
begin
Result
:=
''
;
lParamsConstrutor
:=
''
;
lsNomeClasse
:=
piClass
.
Name
;
lClassTicket
:=
MetaModel
.
GetClassTicketByName
(
lsNomeClasse
);
lCodigoClasse
:=
PStringWriter
.
Create
;
lsNomeClasse
:=
piClass
.
Name
;
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
;
lCodigoConstrutor
:=
PStringWriter
.
Create
;
lCodigoConstrutorSemRelOut
:=
PStringWriter
.
Create
;
try
//lCodigoClasse.WriteLine('package domain;');
//lCodigoClasse.WriteLine('');
lListaParamsConstrutor
.
StrictDelimiter
:=
true
;
lListaParamsConstrutor
.
Delimiter
:=
','
;
lListaParamsConstrutorSemRelOut
.
StrictDelimiter
:=
true
;
lListaParamsConstrutor
.
Delimiter
:=
','
;
// Package
lCodigoClasse
.
WriteLine
(
'package '
+
lPackageRef
+
'domain;'
);
lCodigoClasse
.
WriteLine
(
''
);
// Imports de tipos
IncluirImports
(
lCodigoClasse
,
lClassTicket
,
_TipoId
);
lCodigoClasse
.
WriteLine
(
''
);
// Incio da classe
lCodigoClasse
.
WriteLine
(
'public class '
+
lsNomeClasse
+
' {'
);
lCodigoClasse
.
WriteLine
(
''
);
if
lClassTicket
.
HasDescendants
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
();
// Escreve atributo id
...
...
@@ -5600,25 +5680,21 @@ begin
// DECLARAO ATRIBUTOS: Percorre relacionamentos
for
index
:=
0
to
lClassTicket
.
RelationTicketsIn
.
Count
-
1
do
begin
lRelation
:=
(
lClassTicket
.
RelationTicketsIn
.
Objects
[
index
]
as
acRelationTicket
);
if
(
lRelation
.
DestinationPropertyName
<>
''
)
then
lRelation
:=
(
lClassTicket
.
RelationTicketsIn
.
Objects
[
index
]
as
acRelationTicket
);
lsAtributo
:=
lRelation
.
DestinationPropertyName
;
if
(
lsAtributo
<>
''
)
then
begin
lsAtributo
:=
lRelation
.
DestinationPropertyName
;
if
lRelation
.
DestinationMaxMultiplicity
>
1
then
lsTipoAttribute
:=
'List<'
+
lRelation
.
OriginClassTicket
.
DisplayName
+
'>'
else
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
;
lsTipoAttribute
:=
ObterTipoAtributoRelacionamento
(
lRelation
.
DestinationMaxMultiplicity
,
lRelation
.
OriginClassTicket
.
DisplayName
);
EscreveAtributoClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
,
acAttributeVisibility
.
pvProtected
);
end
;
end
;
for
index
:=
0
to
lClassTicket
.
RelationTicketsOut
.
Count
-
1
do
begin
lRelation
:=
(
lClassTicket
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
if
(
lRelation
.
OriginPropertyName
<>
''
)
then
lRelation
:=
(
lClassTicket
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
lsAtributo
:=
lRelation
.
OriginPropertyName
;
if
(
lsAtributo
<>
''
)
then
begin
lsAtributo
:=
lRelation
.
OriginPropertyName
;
if
lRelation
.
OriginMaxMultiplicity
>
1
then
lsTipoAttribute
:=
'List<'
+
lRelation
.
DestinationClassTicket
.
DisplayName
+
'>'
else
lsTipoAttribute
:=
lRelation
.
DestinationClassTicket
.
DisplayName
;
lsTipoAttribute
:=
ObterTipoAtributoRelacionamento
(
lRelation
.
OriginMaxMultiplicity
,
lRelation
.
DestinationClassTicket
.
DisplayName
);
EscreveAtributoClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
,
acAttributeVisibility
.
pvProtected
);
end
;
end
;
...
...
@@ -5631,61 +5707,121 @@ begin
lAttributeTicket
:=
lClassTicket
.
Attributes
.
Objects
[
index
]
as
acAttributeTicket
;
lsAtributo
:=
lClassTicket
.
Attributes
.
Strings
[
index
];
lsTipoAttribute
:=
ObterTipoAtributoJava
(
lAttributeTicket
.
AttributeType
);
lParamsConstrutor
:=
lParamsConstrutor
+
lsTipoAttribute
+
' pi'
+
lsAtributo
+
', '
;
EscreveGetterSetterClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
);
end
;
// GETTER/SETTER: Escrever RelationsPartnerShips
for
index
:=
0
to
lClassTicket
.
RelationTicketsIn
.
Count
-
1
do
begin
lRelation
:=
(
lClassTicket
.
RelationTicketsIn
.
Objects
[
index
]
as
acRelationTicket
);
if
(
lRelation
.
DestinationPropertyName
<>
''
)
then
lRelation
:=
(
lClassTicket
.
RelationTicketsIn
.
Objects
[
index
]
as
acRelationTicket
);
lsAtributo
:=
lRelation
.
DestinationPropertyName
;
if
(
lsAtributo
<>
''
)
then
begin
lsAtributo
:=
lRelation
.
DestinationPropertyName
;
if
lRelation
.
DestinationMaxMultiplicity
>
1
then
lsTipoAttribute
:=
'List<'
+
lRelation
.
OriginClassTicket
.
DisplayName
+
'>'
else
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
;
EscreveGetterSetterClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
);
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
;
EscreveGetterSetterClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
,
False
,
lRelation
.
DestinationMaxMultiplicity
>
1
);
end
;
end
;
for
index
:=
0
to
lClassTicket
.
RelationTicketsOut
.
Count
-
1
do
begin
lRelation
:=
(
lClassTicket
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
if
(
lRelation
.
OriginPropertyName
<>
''
)
then
lRelation
:=
(
lClassTicket
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
lsAtributo
:=
lRelation
.
OriginPropertyName
;
if
(
lsAtributo
<>
''
)
then
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
;
if
lRelation
.
OriginMaxMultiplicity
>
1
then
lsTipoAttribute
:=
'List<'
+
lRelation
.
DestinationClassTicket
.
DisplayName
+
'>'
else
lsTipoAttribute
:=
lRelation
.
DestinationClassTicket
.
DisplayName
;
EscreveGetterSetterClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
,
lRelation
.
OriginMaxMultiplicity
>
1
);
if
(
lsAtributo
<>
''
)
then
begin
lsTipoAttribute
:=
ObterTipoAtributoRelacionamento
(
lRelation
.
OriginMaxMultiplicity
,
lRelation
.
DestinationClassTicket
.
DisplayName
);
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
;
lClassTicketPai
:=
lClassTicketPai
.
ParentClassTicket
;
end
;
//Escrever mtodos
//Escreve construtor sem id
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
'public '
+
lsNomeClasse
+
'('
+
lListaParamsConstrutor
.
DelimitedText
+
') {'
);
lCodigoClasse
.
Indent
();
if
lEhClasseHerdada
then
lCodigoClasse
.
WriteLine
(
'super('
+
lListaChamadaSuper
.
CommaText
+
');'
);
lCodigoClasse
.
Append
(
lCodigoConstrutor
);
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
'}'
);
//Escreve construtor com id
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
'public '
+
lsNomeClasse
+
'('
+
_TipoId
+
' piId, '
+
strutils
.
LeftStr
(
lParamsConstrutor
,
Length
(
lParamsConstrutor
)-
2
)+
') {'
);
lCodigoClasse
.
Indent
();
lCodigoClasse
.
WriteLine
(
'f'
+
_NomeId
+
' = piId;'
);
for
index
:=
0
to
lClassTicket
.
Attributes
.
Count
-
1
do
begin
lsAtributo
:=
lClassTicket
.
Attributes
.
Strings
[
index
];
lCodigoClasse
.
WriteLine
(
'f'
+
lsAtributo
+
' = pi'
+
lsAtributo
+
';'
);
end
;
lCodigoClasse
.
WriteLine
(
'public '
+
lsNomeClasse
+
'('
+
_TipoId
+
' piId,'
+
lListaParamsConstrutor
.
DelimitedText
+
') {'
);
lCodigoClasse
.
Indent
();
if
lEhClasseHerdada
then
lCodigoClasse
.
WriteLine
(
'super(piId, '
+
lListaChamadaSuper
.
CommaText
+
');'
)
else
lCodigoClasse
.
WriteLine
(
_NomeId
+
' = piId;'
);
lCodigoClasse
.
Append
(
lCodigoConstrutor
);
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
'}'
);
//Escreve construtor
sem id
//Escreve construtor
com id e sem relacionamentos
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
'public '
+
lsNomeClasse
+
'('
+
strutils
.
LeftStr
(
lParamsConstrutor
,
Length
(
lParamsConstrutor
)-
2
)+
') {'
);
lCodigoClasse
.
Indent
();
//lCodigoClasse.WriteLine('fId = null;');
for
index
:=
0
to
lClassTicket
.
Attributes
.
Count
-
1
do
if
lListaParamsConstrutorSemRelOut
.
Count
<>
lListaParamsConstrutor
.
Count
then
begin
lsAtributo
:=
lClassTicket
.
Attributes
.
Strings
[
index
];
lCodigoClasse
.
WriteLine
(
'f'
+
lsAtributo
+
' = pi'
+
lsAtributo
+
';'
);
lCodigoClasse
.
WriteLine
(
'public '
+
lsNomeClasse
+
'('
+
_TipoId
+
' piId,'
+
lListaParamsConstrutorSemRelOut
.
DelimitedText
+
') {'
);
lCodigoClasse
.
Indent
();
if
lEhClasseHerdada
then
lCodigoClasse
.
WriteLine
(
'super(piId, '
+
lListaChamadaSuperSemRelOut
.
CommaText
+
');'
)
else
lCodigoClasse
.
WriteLine
(
_NomeId
+
' = piId;'
);
lCodigoClasse
.
Append
(
lCodigoConstrutorSemRelOut
);
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
'}'
);
end
;
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
'}'
);
//Escrever mtodo ToString
lCodigoClasse
.
WriteLine
(
''
);
...
...
@@ -5693,11 +5829,11 @@ begin
lCodigoClasse
.
WriteLine
(
'public String toString() {'
);
lCodigoClasse
.
Indent
();
lCodigoClasse
.
WriteLine
(
'return "'
+
lsNomeClasse
+
'{ " +'
);
lCodigoClasse
.
WriteLine
(
'"id="+
id
+'
);
lCodigoClasse
.
WriteLine
(
'"id="+
'
+
_NomeId
+
' + ", "
+'
);
for
index
:=
0
to
lClassTicket
.
Attributes
.
Count
-
1
do
begin
lsAtributo
:=
lClassTicket
.
Attributes
.
Strings
[
index
];
lCodigoClasse
.
WriteLine
(
'"'
+
lsAtributo
+
'="+ '
+
lsAtributo
+
' +'
);
lCodigoClasse
.
WriteLine
(
'"'
+
lsAtributo
+
'="+ '
+
lsAtributo
+
' +
", " +
'
);
end
;
lCodigoClasse
.
WriteLine
(
'"}";'
);
lCodigoClasse
.
Outdent
();
...
...
@@ -5711,52 +5847,191 @@ begin
Result
:=
lCodigoClasse
.
AsString
;
finally
lCodigoClasse
.
Free
;
lCodigoConstrutor
.
Free
;
lCodigoConstrutorSemRelOut
.
Free
;
lListaParamsConstrutor
.
Free
;
lListaParamsConstrutorSemRelOut
.
Free
;
lListaChamadaSuper
.
Free
;
lListaChamadaSuperSemRelOut
.
Free
;
end
;
end
;
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
lsNomeClasseMapper
,
lsNomeClasseDominio
,
lsNomeClasseDB
,
lsUltAtributo
,
lsAttributo
:
string
;
lsAttributo
,
lPackageRef
,
lsTipoAttribute
,
lOutParameters
:
string
;
index
:
integer
;
lClassTicket
,
lClassTicketPai
:
acClassTicket
;
lCodigoClasse
:
PStringWriter
;
lRelation
:
acRelationTicket
;
lAttributList
:
TStringList
;
lAttributList
,
lListOutParameters
:
TStringList
;
begin
Result
:=
''
;
lsNomeClasseDominio
:=
piClass
.
Name
;
lsNomeClasseDB
:=
lsNomeClasseDominio
+
'Entity'
;
lsNomeClasseMapper
:=
RightStr
(
lsNomeClasseDominio
,
Length
(
lsNomeClasseDominio
)-
2
)
+
'Mapper'
;
lsNomeClasseDB
:=
GetDBClassName
(
lsNomeClasseDominio
)
;
lsNomeClasseMapper
:=
GetMapperClassName
(
lsNomeClasseDominio
)
;
lClassTicket
:=
MetaModel
.
GetClassTicketByName
(
lsNomeClasseDominio
);
lPackageRef
:=
StarUMLApp
.
ProjectManager
.
Project
.
Documentation
;
if
lPackageRef
<>
''
then
lPackageRef
:=
lPackageRef
+
'.'
;
lCodigoClasse
:=
PStringWriter
.
Create
;
try
lCodigoClasse
.
WriteLine
(
'package adapters.persistence.mappers;'
);
try
lCodigoClasse
.
WriteLine
(
'package
'
+
lPackageRef
+
'
adapters.persistence.mappers;'
);
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
'import adapters.persistence.entities.'
+
lsNomeClasseDB
+
';'
);
lCodigoClasse
.
WriteLine
(
'import domain.'
+
lsNomeClasseDominio
+
';'
);
lCodigoClasse
.
WriteLine
(
'import '
+
lPackageRef
+
'adapters.persistence.entities.'
+
lsNomeClasseDB
+
';'
);
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
(
''
);
// Incio da classe
lCodigoClasse
.
WriteLine
(
'public final class '
+
lsNomeClasseMapper
+
' {'
);
lCodigoClasse
.
WriteLine
(
''
);
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
.
Indent
();
lCodigoClasse
.
Indent
();
lCodigoClasse
.
WriteLine
(
'if (piDBObject == null) return null;'
);
lCodigoClasse
.
WriteLine
(
'return new '
+
lsNomeClasseDominio
+
'('
);
lCodigoClasse
.
Indent
();
lAttributList
:=
TStringList
.
Create
;
try
lAttributList
.
Add
(
'piDBObject.getId()'
);
// toDomain: obter lista de atributos da classe atual + classe pai
lAttributList
.
Add
(
'piDBObject.getId()'
);
lClassTicketPai
:=
lClassTicket
;
while
Assigned
(
lClassTicketPai
)
do
begin
...
...
@@ -5768,25 +6043,182 @@ begin
begin
lRelation
:=
(
lClassTicketPai
.
RelationTicketsIn
.
Objects
[
index
]
as
acRelationTicket
);
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
;
// toDomain: escrever lista de atributos encontrados
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
+
';'
);
lCodigoClasse
.
WriteLine
(
lsUltAtributo
);
finally
lAttributList
.
Free
;
end
;
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
');'
);
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
'}'
);
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
// 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
;
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
(
'}'
);
//Fim
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