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
becd55ca
Commit
becd55ca
authored
Aug 24, 2020
by
Erika Segatto
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Altera geração para exportar uma única classe java + melhorias na mesma
parent
37fa2646
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
78 additions
and
49 deletions
+78
-49
IntegracaoDelphiSUML.pas
EvoUMLPlugin/src/IntegracaoDelphiSUML.pas
+76
-49
formMemo.dfm
EvoUMLPlugin/src/formMemo.dfm
+2
-0
No files found.
EvoUMLPlugin/src/IntegracaoDelphiSUML.pas
View file @
becd55ca
...
...
@@ -5126,21 +5126,23 @@ function TUtil.GerarClassPreview_JavaHibernate(piClass: IUMLClass): string;
procedure
IncluirImports
(
const
piCodigoClasse
:
PStringWriter
;
piClassTicket
:
acClassTicket
;
const
piTipoId
:
string
);
var
lAttributeTicket
:
acAttributeTicket
;
lHasImport
:
array
[
0..
3
]
of
Boolean
;
lHasImport
:
array
[
0..
4
]
of
Boolean
;
index
:
integer
;
lsTipoAttribute
:
string
;
lClassTicketPai
:
acClassTicket
;
lDone
:
Boolean
;
begin
piCodigoClasse
.
WriteLine
(
'import javax.persistence.*;'
);
piCodigoClasse
.
WriteLine
(
'import java.util.List;'
);
piCodigoClasse
.
WriteLine
(
'import java.util.ArrayList;'
);
for
index
:=
0
to
3
do
for
index
:=
0
to
4
do
lHasImport
[
index
]
:=
False
;
if
piTipoId
=
'Long'
then
begin
piCodigoClasse
.
WriteLine
(
'import java.lang.Long;'
);
lHasImport
[
1
]
:=
True
;
end
;
lDone
:=
False
;
lClassTicketPai
:=
piClassTicket
;
while
Assigned
(
lClassTicketPai
)
do
begin
...
...
@@ -5166,10 +5168,37 @@ function TUtil.GerarClassPreview_JavaHibernate(piClass: IUMLClass): string;
else
if
(
lsTipoAttribute
=
'Boolean'
)
and
(
not
lHasImport
[
3
])
then
begin
piCodigoClasse
.
WriteLine
(
'import java.lang.Boolean;'
);
lHasImport
[
2
]
:=
True
;
lHasImport
[
3
]
:=
True
;
end
else
if
((
not
lDone
)
and
lAttributeTicket
.
Mandatory
)
and
(
not
lHasImport
[
4
])
then
begin
piCodigoClasse
.
WriteLine
(
'import javax.validation.constraints.NotNull;'
);
lHasImport
[
4
]
:=
True
;
end
;
end
;
lClassTicketPai
:=
lClassTicketPai
.
ParentClassTicket
;
lDone
:=
True
;
end
;
end
;
function
ObterTipoHeranca
(
const
piClassTicket
:
acClassTicket
;
const
piNomeTabela
:
string
):
string
;
var
lMetaModelPersistenceMapSQL
:
acMetaModelPersistenceMapSQL
;
lPossuiUmFilhoJoined
:
Boolean
;
index
:
Integer
;
begin
lMetaModelPersistenceMapSQL
:=
fMetaModelPersistenceMap
as
acMetaModelPersistenceMapSQL
;
lPossuiUmFilhoJoined
:=
False
;
Result
:=
'InheritanceType.JOINED'
;
for
index
:=
0
to
piClassTicket
.
DirectDescendants
.
Count
-
1
do
begin
if
lMetaModelPersistenceMapSQL
.
GetClassToDBMapTicket
(
piClassTicket
.
DirectDescendants
[
index
]
as
acClassTicket
).
TableName
=
piNomeTabela
then
Result
:=
'InheritanceType.SINGLE_TABLE'
else
lPossuiUmFilhoJoined
:=
True
;
end
;
if
lPossuiUmFilhoJoined
and
(
Result
=
'InheritanceType.SINGLE_TABLE'
)
then
begin
Result
:=
'Nao e possivel determinar o tipo de heranca da classe (InheritanceType.SINGLE_TABLE ou InheritanceType.JOINED).'
;
end
;
end
;
...
...
@@ -5186,7 +5215,6 @@ var
lInheritanceType
,
lPackageRef
:
string
;
index
:
integer
;
lPossuiUmFilhoJoined
:
Boolean
;
lClassTicket
,
lClassTicketPai
:
acClassTicket
;
lAttributeTicket
:
acAttributeTicket
;
...
...
@@ -5202,6 +5230,7 @@ var
lRelationPersistenceMapTicket
:
acRelationSQLPersistenceMapTicket
;
lColumnTicket
:
acDBColumnMapTicket
;
lEhClasseHerdada
:
Boolean
;
lListaChamadaConstr
,
lListaChamadaSuper
,
lListaChamadaSuperSemRelOut
:
TStringList
;
begin
...
...
@@ -5211,20 +5240,21 @@ begin
lsNomeClasseDominio
:=
piClass
.
Name
;
lClassTicket
:=
MetaModel
.
GetClassTicketByName
(
lsNomeClasseDominio
);
lEhClasseHerdada
:=
Assigned
(
lClassTicket
.
ParentClassTicket
);
lsNomeClasseDB
:=
lsNomeClasseDominio
+
'Entity'
;
lsNomeClasseDB
:=
lsNomeClasseDominio
;
lPackageRef
:=
StarUMLApp
.
ProjectManager
.
Project
.
Documentation
;
if
lPackageRef
<>
''
then
lPackageRef
:=
lPackageRef
+
'.'
;
// Obter ticket do banco
lMetaModelPersistenceMapSQL
:=
fMetaModelPersistenceMap
as
acMetaModelPersistenceMapSQL
;
lClassToDBMapTicket
:=
lMetaModelPersistenceMapSQL
.
GetClassToDBMapTicket
(
lClassTicket
);
lListaChamadaConstr
:=
TStringList
.
Create
;
lListaChamadaSuper
:=
TStringList
.
Create
;
lListaChamadaSuperSemRelOut
:=
TStringList
.
Create
;
lCodigoConstrutor
:=
PStringWriter
.
Create
;
lCodigoConstrutorSemRelOut
:=
PStringWriter
.
Create
;
lCodigoClasse
:=
PStringWriter
.
Create
;
try
lCodigoClasse
.
WriteLine
(
'package '
+
lPackageRef
+
'
adapters.persistence.entities
;'
);
lCodigoClasse
.
WriteLine
(
'package '
+
lPackageRef
+
'
domain
;'
);
lCodigoClasse
.
WriteLine
(
''
);
// Imports de tipos
IncluirImports
(
lCodigoClasse
,
lClassTicket
,
_DBTipoId
);
...
...
@@ -5237,19 +5267,7 @@ begin
lCodigoClasse
.
WriteLine
(
' pkColumnName = "SISBDSNUME", pkColumnValue = "'
+
lsNomeTabela
+
'", allocationSize = 1)'
);
if
lClassToDBMapTicket
.
TypeColumnName
<>
''
then
begin
lPossuiUmFilhoJoined
:=
False
;
lInheritanceType
:=
'InheritanceType.JOINED'
;
for
index
:=
0
to
lClassTicket
.
DirectDescendants
.
Count
-
1
do
begin
if
lMetaModelPersistenceMapSQL
.
GetClassToDBMapTicket
(
lClassTicket
.
DirectDescendants
[
index
]
as
acClassTicket
).
TableName
=
lsNomeTabela
then
lInheritanceType
:=
'InheritanceType.SINGLE_TABLE'
else
lPossuiUmFilhoJoined
:=
True
;
end
;
if
lPossuiUmFilhoJoined
and
(
lInheritanceType
=
'InheritanceType.SINGLE_TABLE'
)
then
begin
Result
:=
'Nao e possivel determinar o tipo de heranca da classe (SINGLE_TABLE ou JOINED).'
;
Exit
;
end
;
lInheritanceType
:=
ObterTipoHeranca
(
lClassTicket
,
lsNomeTabela
);
lCodigoClasse
.
WriteLine
(
'@Inheritance(strategy = '
+
lInheritanceType
+
')'
);
lCodigoClasse
.
WriteLine
(
'@DiscriminatorColumn(name = "'
+
lClassToDBMapTicket
.
TypeColumnName
+
'")'
);
end
...
...
@@ -5265,7 +5283,7 @@ begin
else
lCodigoClasse
.
Write
(
'public final '
);
lCodigoClasse
.
Write
(
'class '
+
lsNomeClasseDB
);
if
lEhClasseHerdada
then
lCodigoClasse
.
WriteLine
(
' extends '
+
lClassTicket
.
ParentClassTicket
.
DisplayName
+
'
Entity
{'
)
then
lCodigoClasse
.
WriteLine
(
' extends '
+
lClassTicket
.
ParentClassTicket
.
DisplayName
+
' {'
)
else
lCodigoClasse
.
WriteLine
(
' {'
);
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
Indent
();
...
...
@@ -5290,6 +5308,8 @@ begin
if
lAttributeTicket
.
DBType
=
'VARCHAR'
then
lCodigoClasse
.
WriteLine
(
'@Column(name = "'
+
lColumnTicket
.
ColumnName
+
'", length = '
+
IntToStr
(
lAttributeTicket
.
VarSize
)
+
')'
)
else
lCodigoClasse
.
WriteLine
(
'@Column(name = "'
+
lColumnTicket
.
ColumnName
+
'")'
);
if
lAttributeTicket
.
Mandatory
then
lCodigoClasse
.
WriteLine
(
'@NotNull'
);
EscreverDeclaracaoAtributo
(
lCodigoClasse
,
lsTipoAttribute
,
lsAtributo
,
lClassTicket
.
HasDescendants
);
end
;
// DECLARAO ATRIBUTOS: Percorre relacionamentos
...
...
@@ -5300,20 +5320,23 @@ begin
if
(
lRelation
.
DestinationPropertyName
<>
''
)
then
begin
lsAtributo
:=
lRelation
.
DestinationPropertyName
;
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
+
'Entity'
;
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
;
if
lRelation
.
DestinationMaxMultiplicity
=
1
then
begin
if
lRelation
.
OriginMaxMultiplicity
=
1
then
lCodigoClasse
.
Write
Line
(
'@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
'
)
else
lCodigoClasse
.
Write
Line
(
'@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
'
);
then
lCodigoClasse
.
Write
(
'@OneToOne(fetch = FetchType.EAGER
'
)
else
lCodigoClasse
.
Write
(
'@ManyToOne(fetch = FetchType.EAGER
'
);
end
else
begin
lsTipoAttribute
:=
'final List<'
+
lsTipoAttribute
+
'>'
;
if
lRelation
.
OriginMaxMultiplicity
=
1
then
lCodigoClasse
.
Write
Line
(
'@OneToMany(cascade = CascadeType.ALL)
'
)
else
lCodigoClasse
.
Write
Line
(
'@ManyToMany(cascade = CascadeType.ALL)
'
);
then
lCodigoClasse
.
Write
(
'@OneToMany(fetch = FetchType.LAZY
'
)
else
lCodigoClasse
.
Write
(
'@ManyToMany(fetch = FetchType.LAZY
'
);
end
;
if
lRelation
.
DestinationAggregation
=
acPropertyAggregation
.
pvComposite
then
lCodigoClasse
.
WriteLine
(
', cascade = CascadeType.ALL)'
)
else
lCodigoClasse
.
WriteLine
(
', cascade = CascadeType.DETACH)'
);
if
lRelationPersistenceMapTicket
is
acDirectDBRelationMapTicket
then
lCodigoClasse
.
WriteLine
(
'@JoinColumn(name = "'
+
acDirectDBRelationMapTicket
(
lRelationPersistenceMapTicket
).
FKColumnName
+
'")'
)
else
lCodigoClasse
.
WriteLine
(
'@JoinTable(name = "'
+
acIndirectDBRelationMapTicket
(
lRelationPersistenceMapTicket
).
TableName
+
'"'
+
...
...
@@ -5330,22 +5353,25 @@ begin
if
(
lRelation
.
OriginPropertyName
<>
''
)
then
begin
lsAtributo
:=
lRelation
.
OriginPropertyName
;
lsTipoAttribute
:=
lRelation
.
DestinationClassTicket
.
DisplayName
+
'Entity'
;
lsTipoAttribute
:=
lRelation
.
DestinationClassTicket
.
DisplayName
;
if
lRelation
.
OriginMaxMultiplicity
=
1
then
begin
if
lRelation
.
DestinationMaxMultiplicity
=
1
then
lCodigoClasse
.
Write
(
'@OneToOne(
cascade = CascadeType.ALL
'
)
else
lCodigoClasse
.
Write
(
'@ManyToOne(
cascade = CascadeType.ALL
'
);
then
lCodigoClasse
.
Write
(
'@OneToOne(
fetch = FetchType.LAZY
'
)
else
lCodigoClasse
.
Write
(
'@ManyToOne(
fetch = FetchType.LAZY
'
);
end
else
begin
lsTipoAttribute
:=
'final List<'
+
lsTipoAttribute
+
'>'
;
if
lRelation
.
DestinationMaxMultiplicity
=
1
then
lCodigoClasse
.
Write
(
'@OneToMany(
cascade = CascadeType.ALL
'
)
else
lCodigoClasse
.
Write
(
'@ManyToMany(
cascade = CascadeType.ALL
'
);
then
lCodigoClasse
.
Write
(
'@OneToMany(
fetch = FetchType.LAZY
'
)
else
lCodigoClasse
.
Write
(
'@ManyToMany(
fetch = FetchType.LAZY
'
);
end
;
if
lRelation
.
OriginAggregation
=
acPropertyAggregation
.
pvComposite
then
lCodigoClasse
.
Write
(
', cascade = CascadeType.ALL'
)
else
lCodigoClasse
.
Write
(
', cascade = CascadeType.DETACH'
);
if
lRelation
.
DestinationPropertyName
<>
''
then
lCodigoClasse
.
WriteLine
(
', mappedBy = "'
+
lRelation
.
DestinationPropertyName
+
'")'
)
then
lCodigoClasse
.
WriteLine
(
', mappedBy = "'
+
FirstLetterLowerCase
(
lRelation
.
DestinationPropertyName
)
+
'")'
)
else
begin
lCodigoClasse
.
WriteLine
(
')'
);
...
...
@@ -5379,7 +5405,7 @@ begin
lsAtributo
:=
lRelation
.
DestinationPropertyName
;
if
(
lsAtributo
<>
''
)
then
begin
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
+
'Entity'
;
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
;
if
lRelation
.
DestinationMaxMultiplicity
=
1
then
EscreveGetterSetterClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
)
else
EscreveGetterSetterClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
,
true
,
true
);
...
...
@@ -5391,7 +5417,7 @@ begin
lsAtributo
:=
lRelation
.
OriginPropertyName
;
if
(
lsAtributo
<>
''
)
then
begin
lsTipoAttribute
:=
lRelation
.
DestinationClassTicket
.
DisplayName
+
'Entity'
;
lsTipoAttribute
:=
lRelation
.
DestinationClassTicket
.
DisplayName
;
if
lRelation
.
OriginMaxMultiplicity
=
1
then
EscreveGetterSetterClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
)
else
EscreveGetterSetterClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
,
true
,
true
);
...
...
@@ -5415,6 +5441,7 @@ begin
lListaChamadaSuperSemRelOut
.
Add
(
'pi'
+
lsAtributo
);
end
else
begin
lListaChamadaConstr
.
Add
(
'pi'
+
lsAtributo
);
EscreverInicializacaoAtributo
(
lCodigoConstrutor
,
lsAtributo
,
1
);
EscreverInicializacaoAtributo
(
lCodigoConstrutorSemRelOut
,
lsAtributo
,
1
);
end
;
...
...
@@ -5426,14 +5453,15 @@ begin
if
(
lsAtributo
<>
''
)
then
begin
if
lRelation
.
DestinationMaxMultiplicity
>
1
then
lsTipoAttribute
:=
'List<'
+
lRelation
.
OriginClassTicket
.
DisplayName
+
'
Entity
>'
else
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
+
'Entity'
;
then
lsTipoAttribute
:=
'List<'
+
lRelation
.
OriginClassTicket
.
DisplayName
+
'>'
else
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
;
lParamsConstrutor
:=
lParamsConstrutor
+
lsTipoAttribute
+
' pi'
+
lsAtributo
+
', '
;
if
lClassTicketPai
.
ID
<>
lClassTicket
.
ID
then
begin
lListaChamadaSuper
.
Add
(
'pi'
+
lsAtributo
);
end
else
begin
lListaChamadaConstr
.
Add
(
'pi'
+
lsAtributo
);
EscreverInicializacaoAtributo
(
lCodigoConstrutor
,
lRelation
.
DestinationPropertyName
,
lRelation
.
DestinationMaxMultiplicity
);
EscreverCriacaoLista
(
lCodigoConstrutorSemRelOut
,
lRelation
.
DestinationPropertyName
,
lRelation
.
DestinationMaxMultiplicity
);
end
;
...
...
@@ -5446,12 +5474,13 @@ begin
if
(
lsAtributo
<>
''
)
then
begin
if
lRelation
.
OriginMaxMultiplicity
>
1
then
lsTipoAttribute
:=
'List<'
+
lRelation
.
DestinationClassTicket
.
DisplayName
+
'
Entity
>'
else
lsTipoAttribute
:=
lRelation
.
DestinationClassTicket
.
DisplayName
+
'Entity'
;
then
lsTipoAttribute
:=
'List<'
+
lRelation
.
DestinationClassTicket
.
DisplayName
+
'>'
else
lsTipoAttribute
:=
lRelation
.
DestinationClassTicket
.
DisplayName
;
lParamsConstrutor
:=
lParamsConstrutor
+
lsTipoAttribute
+
' pi'
+
lsAtributo
+
', '
;
if
lClassTicketPai
.
ID
<>
lClassTicket
.
ID
then
lListaChamadaSuper
.
Add
(
'pi'
+
lsAtributo
)
else
begin
lListaChamadaConstr
.
Add
(
'pi'
+
lsAtributo
);
EscreverInicializacaoAtributo
(
lCodigoConstrutor
,
lRelation
.
OriginPropertyName
,
lRelation
.
OriginMaxMultiplicity
);
EscreverCriacaoLista
(
lCodigoConstrutorSemRelOut
,
lRelation
.
OriginPropertyName
,
lRelation
.
OriginMaxMultiplicity
);
end
;
...
...
@@ -5462,7 +5491,10 @@ begin
// Escrever mtodos
// Escrever construtor vazio
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
'public '
+
lsNomeClasseDB
+
'() {'
);
if
lClassTicket
.
HasDescendants
then
lCodigoClasse
.
Write
(
'public '
)
else
lCodigoClasse
.
Write
(
'private '
);
lCodigoClasse
.
WriteLine
(
lsNomeClasseDB
+
'() {'
);
lCodigoClasse
.
Indent
();
for
index
:=
0
to
lClassTicket
.
RelationTicketsIn
.
Count
-
1
do
begin
...
...
@@ -5495,14 +5527,8 @@ begin
then
lCodigoClasse
.
WriteLine
(
'public '
+
lsNomeClasseDB
+
'('
+
_DBTipoId
+
' piId, '
+
strutils
.
LeftStr
(
lParamsConstrutor
,
Length
(
lParamsConstrutor
)-
2
)+
') {'
)
else
lCodigoClasse
.
WriteLine
(
'public '
+
lsNomeClasseDB
+
'('
+
_DBTipoId
+
' piId) {'
);
lCodigoClasse
.
Indent
();
if
lEhClasseHerdada
then
begin
if
lListaChamadaSuper
.
Count
>
0
then
lCodigoClasse
.
WriteLine
(
'super(piId, '
+
lListaChamadaSuper
.
CommaText
+
');'
)
else
lCodigoClasse
.
WriteLine
(
'super(piId);'
)
end
else
lCodigoClasse
.
WriteLine
(
FirstLetterLowerCase
(
_NomeId
)+
' = piId;'
);
lCodigoClasse
.
Append
(
lCodigoConstrutor
);
lCodigoClasse
.
WriteLine
(
'this('
+
lListaChamadaConstr
.
CommaText
+
')'
);
lCodigoClasse
.
WriteLine
(
FirstLetterLowerCase
(
_NomeId
)+
' = piId;'
);
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
'}'
);
// Escrever construtor com id sem relacionamentos
...
...
@@ -5557,6 +5583,7 @@ begin
lListaChamadaSuperSemRelOut
.
Free
;
lCodigoConstrutor
.
Free
;
lCodigoConstrutorSemRelOut
.
Free
;
lListaChamadaConstr
.
Free
;
end
;
end
;
...
...
EvoUMLPlugin/src/formMemo.dfm
View file @
becd55ca
...
...
@@ -3172,6 +3172,7 @@ object PreviewClassCode: TPreviewClassCode
Caption = 'Java Dominio'
ClientHeight = 504
ClientWidth = 785
TabVisible = False
inline mem_ClassJavaDomain: TSynEdit
Left = 0
Height = 504
...
...
@@ -3686,6 +3687,7 @@ object PreviewClassCode: TPreviewClassCode
Caption = 'Java Mapper'
ClientHeight = 504
ClientWidth = 785
TabVisible = False
inline mem_ClassJavaMapper: TSynEdit
Left = 0
Height = 504
...
...
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