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
33e1ab0b
Commit
33e1ab0b
authored
Aug 12, 2020
by
Erika Segatto
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Inclui geração de classe hibernate JPA
parent
90c8807f
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
380 additions
and
283 deletions
+380
-283
IntegracaoDelphiSUML.pas
EvoUMLPlugin/src/IntegracaoDelphiSUML.pas
+380
-283
No files found.
EvoUMLPlugin/src/IntegracaoDelphiSUML.pas
View file @
33e1ab0b
...
@@ -75,6 +75,7 @@ type
...
@@ -75,6 +75,7 @@ type
fMetaModelPersistenceMap
:
acMetaModelPersistenceMapSQL
;
fMetaModelPersistenceMap
:
acMetaModelPersistenceMapSQL
;
function
FindLostClasses
(
out
poLostClasses
:
TStringList
):
integer
;
function
FindLostClasses
(
out
poLostClasses
:
TStringList
):
integer
;
procedure
PutMessage
(
piMessage
:
string
;
piElement
:
IElement
;
piMessageType
:
integer
=
0
);
procedure
PutMessage
(
piMessage
:
string
;
piElement
:
IElement
;
piMessageType
:
integer
=
0
);
function
ObterTipoAtributoJava
(
piTipoCurio
:
string
):
string
;
public
public
constructor
Create
;
constructor
Create
;
destructor
Destroy
;
override
;
destructor
Destroy
;
override
;
...
@@ -5075,39 +5076,95 @@ end;
...
@@ -5075,39 +5076,95 @@ end;
function
TUtil
.
GerarClassPreview_JavaHibernate
(
piClass
:
IUMLClass
):
string
;
function
TUtil
.
GerarClassPreview_JavaHibernate
(
piClass
:
IUMLClass
):
string
;
function
ObterTipoAtributo
(
piTipoCurio
:
string
):
string
;
procedure
EscreveGetterSetterClasse
(
const
piCodigoClasse
:
PStringWriter
;
piNomeAtributo
,
piTipoAtributo
:
String
;
piApenasGetter
:
Boolean
=
False
;
piLista
:
Boolean
=
False
);
begin
if
piTipoCurio
=
'acString'
then
Result
:=
'String'
else
if
piTipoCurio
=
'acText'
then
Result
:=
'String'
else
if
piTipoCurio
=
'acBlob'
then
Result
:=
'bynary[]'
else
if
piTipoCurio
=
'acGraphic'
then
Result
:=
'bynary[]'
else
if
piTipoCurio
=
'acDateTime'
then
Result
:=
'OffsetDateTime'
else
if
piTipoCurio
=
'acInt'
then
Result
:=
'Integer'
else
if
piTipoCurio
=
'acCurrency'
then
Result
:=
'BigDecimal'
else
if
piTipoCurio
=
'acDouble'
then
Result
:=
'BigDecimal'
else
if
piTipoCurio
=
'acBoolean'
then
Result
:=
'boolean'
else
Result
:=
piTipoCurio
;
end
;
procedure
EscreveGetterSetterClasse
(
const
piCodigoClasse
:
PStringWriter
;
piNomeAtributo
,
piTipoAtributo
:
String
;
piApenasGetter
:
Boolean
=
False
);
begin
begin
//Escreve getter and setter
//Escreve getter and setter
if
not
piLista
then
begin
piCodigoClasse
.
WriteLine
(
'public '
+
piTipoAtributo
+
' get'
+
piNomeAtributo
+
'() { return '
+
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
+
') { '
+
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
EscreverInicializacaoAtributo
(
const
piCodigoClasse
:
PStringWriter
;
piNomeAtributo
:
String
;
const
piMultiplicity
:
Integer
);
begin
if
(
piNomeAtributo
<>
''
)
then
begin
if
piMultiplicity
=
1
then
piCodigoClasse
.
WriteLine
(
piNomeAtributo
+
' = pi'
+
piNomeAtributo
+
';'
)
else
begin
piCodigoClasse
.
WriteLine
(
piNomeAtributo
+
' = new ArrayList<>();'
);
piCodigoClasse
.
WriteLine
(
'if (pi'
+
piNomeAtributo
+
' != null) { '
+
piNomeAtributo
+
'.addAll(pi'
+
piNomeAtributo
+
'); }'
);
end
;
end
;
end
;
procedure
IncluirImports
(
const
piCodigoClasse
:
PStringWriter
;
piClassTicket
:
acClassTicket
;
const
piTipoId
:
string
);
var
lAttributeTicket
:
acAttributeTicket
;
lHasImport
:
array
[
0..3
]
of
Boolean
;
index
:
integer
;
lsTipoAttribute
:
string
;
begin
piCodigoClasse
.
WriteLine
(
'import javax.persistence.*;'
);
piCodigoClasse
.
WriteLine
(
'import java.util.List;'
);
piCodigoClasse
.
WriteLine
(
'import java.util.ArrayList;'
);
for
index
:=
0
to
3
do
lHasImport
[
index
]
:=
False
;
if
piTipoId
=
'Long'
then
begin
piCodigoClasse
.
WriteLine
(
'import java.lang.Long;'
);
lHasImport
[
1
]
:=
True
;
end
;
for
index
:=
0
to
piClassTicket
.
Attributes
.
Count
-
1
do
begin
lAttributeTicket
:=
piClassTicket
.
Attributes
.
Objects
[
index
]
as
acAttributeTicket
;
lsTipoAttribute
:=
ObterTipoAtributoJava
(
lAttributeTicket
.
AttributeType
);
if
(
lsTipoAttribute
=
'BigDecimal'
)
and
(
not
lHasImport
[
0
])
then
begin
piCodigoClasse
.
WriteLine
(
'import java.math.BigDecimal;'
);
lHasImport
[
0
]
:=
True
;
end
else
if
(
lsTipoAttribute
=
'Long'
)
and
(
not
lHasImport
[
1
])
then
begin
piCodigoClasse
.
WriteLine
(
'import java.lang.Long;'
);
lHasImport
[
1
]
:=
True
;
end
else
if
(
lsTipoAttribute
=
'OffsetDateTime'
)
and
(
not
lHasImport
[
2
])
then
begin
piCodigoClasse
.
WriteLine
(
'import java.time.OffsetDateTime;'
);
lHasImport
[
2
]
:=
True
;
end
else
if
(
lsTipoAttribute
=
'Boolean'
)
and
(
not
lHasImport
[
3
])
then
begin
piCodigoClasse
.
WriteLine
(
'import java.lang.Boolean;'
);
lHasImport
[
2
]
:=
True
;
end
;
end
;
end
;
const
const
_NomeId
=
'Id'
;
_DBTipoId
=
'Long'
;
_DBTipoId
=
'Long'
;
var
var
lsNomeClasse
,
lsNomeClasseDominio
,
lsNomeClasseDB
,
lsNomeTabela
,
lsNomeTabela
,
lsNomeGeneratorId
,
lsNomeGeneratorId
,
lsAtributo
,
lsAtributo
,
lsTipoAttribute
:
string
;
lsTipoAttribute
:
string
;
index
:
integer
;
index
:
integer
;
lClassTicket
:
acClassTicket
;
lClassTicket
,
lClassTicketPai
:
acClassTicket
;
lAttributeTicket
:
acAttributeTicket
;
lAttributeTicket
:
acAttributeTicket
;
lMetaModelPersistenceMapSQL
:
acMetaModelPersistenceMapSQL
;
lMetaModelPersistenceMapSQL
:
acMetaModelPersistenceMapSQL
;
lClassToDBMapTicket
:
acClassToDBMapTicket
;
lClassToDBMapTicket
:
acClassToDBMapTicket
;
...
@@ -5117,58 +5174,30 @@ var
...
@@ -5117,58 +5174,30 @@ var
lRelation
:
acRelationTicket
;
lRelation
:
acRelationTicket
;
lRelationPersistenceMapTicket
:
acRelationSQLPersistenceMapTicket
;
lRelationPersistenceMapTicket
:
acRelationSQLPersistenceMapTicket
;
lColumnTicket
:
acDBColumnMapTicket
;
lColumnTicket
:
acDBColumnMapTicket
;
lHasImport
:
array
[
0..2
]
of
Boolean
;
lEhClasseHerdada
:
Boolean
;
lEhClasseHerdada
:
Boolean
;
lListaChamadaSuper
:
TStringList
;
begin
begin
Result
:=
''
;
Result
:=
''
;
lParamsConstrutor
:=
''
;
lParamsConstrutor
:=
''
;
lsNomeClasse
:=
piClass
.
Name
;
lsNomeClasse
Dominio
:=
piClass
.
Name
;
lClassTicket
:=
MetaModel
.
GetClassTicketByName
(
lsNomeClasse
);
lClassTicket
:=
MetaModel
.
GetClassTicketByName
(
lsNomeClasseDominio
);
lEhClasseHerdada
:=
Assigned
(
lClassTicket
.
ParentClassTicket
);
lEhClasseHerdada
:=
Assigned
(
lClassTicket
.
ParentClassTicket
);
for
index
:=
0
to
2
do
lsNomeClasseDB
:=
lsNomeClasseDominio
+
'Entity'
;
lHasImport
[
index
]
:=
False
;
// Obter ticket do banco
lMetaModelPersistenceMapSQL
:=
fMetaModelPersistenceMap
as
acMetaModelPersistenceMapSQL
;
lClassToDBMapTicket
:=
lMetaModelPersistenceMapSQL
.
GetClassToDBMapTicket
(
lClassTicket
);
lListaChamadaSuper
:=
TStringList
.
Create
;
lCodigoClasse
:=
PStringWriter
.
Create
;
lCodigoClasse
:=
PStringWriter
.
Create
;
try
try
lCodigoClasse
.
WriteLine
(
'package adapters.persistence.entities;'
);
//lCodigoClasse.WriteLine('package adapters.persistence.entities;');
lCodigoClasse
.
WriteLine
(
''
);
//lCodigoClasse.WriteLine('');
lCodigoClasse
.
WriteLine
(
'import javax.persistence.*;'
);
lCodigoClasse
.
WriteLine
(
'import java.util.List;'
);
// Imports de tipos
// Imports de tipos
if
_DBTipoId
=
'Long'
then
IncluirImports
(
lCodigoClasse
,
lClassTicket
,
_DBTipoId
);
begin
lCodigoClasse
.
WriteLine
(
'import java.lang.Long;'
);
lHasImport
[
1
]
:=
True
;
end
;
for
index
:=
0
to
lClassTicket
.
Attributes
.
Count
-
1
do
begin
lAttributeTicket
:=
lClassTicket
.
Attributes
.
Objects
[
index
]
as
acAttributeTicket
;
lsTipoAttribute
:=
ObterTipoAtributo
(
lAttributeTicket
.
AttributeType
);
if
(
lsTipoAttribute
=
'BigDecimal'
)
and
(
not
lHasImport
[
0
])
then
begin
lCodigoClasse
.
WriteLine
(
'import java.math.BigDecimal;'
);
lHasImport
[
0
]
:=
True
;
end
else
if
(
lsTipoAttribute
=
'Long'
)
and
(
not
lHasImport
[
1
])
then
begin
lCodigoClasse
.
WriteLine
(
'import java.lang.Long;'
);
lHasImport
[
1
]
:=
True
;
end
else
if
(
lsTipoAttribute
=
'OffsetDateTime'
)
and
(
not
lHasImport
[
2
])
then
begin
lCodigoClasse
.
WriteLine
(
'import java.time.OffsetDateTime;'
);
lHasImport
[
2
]
:=
True
;
end
;
end
;
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
''
);
// Obter ticket do banco
lsNomeTabela
:=
Uppercase
(
Copy
(
lsNomeClasse
,
0
,
2
))
+
'U'
+
Copy
(
lsNomeClasse
,
3
,
Length
(
lsNomeClasse
)-
2
);
lMetaModelPersistenceMapSQL
:=
fMetaModelPersistenceMap
as
acMetaModelPersistenceMapSQL
;
lClassToDBMapTicket
:=
lMetaModelPersistenceMapSQL
.
GetClassToDBMapTicket
(
lClassTicket
);
// Incio da classe
// Incio da classe
lsNomeGeneratorId
:=
'gen'
+
RightStr
(
lsNomeClasse
,
Length
(
lsNomeClasse
)-
2
);
lsNomeGeneratorId
:=
'gen'
+
RightStr
(
lsNomeClasse
Dominio
,
Length
(
lsNomeClasseDominio
)-
2
);
lsNomeTabela
:=
lClassToDBMapTicket
.
TableName
;
lsNomeTabela
:=
lClassToDBMapTicket
.
TableName
;
lsNomeClasse
:=
lsNomeClasse
+
'Entity'
;
lCodigoClasse
.
WriteLine
(
'@Entity'
);
lCodigoClasse
.
WriteLine
(
'@Entity'
);
lCodigoClasse
.
WriteLine
(
'@TableGenerator(name = "'
+
lsNomeGeneratorId
+
'", table = "SISBTNUMER", valueColumnName = "SISBNONUME",'
);
lCodigoClasse
.
WriteLine
(
'@TableGenerator(name = "'
+
lsNomeGeneratorId
+
'", table = "SISBTNUMER", valueColumnName = "SISBNONUME",'
);
lCodigoClasse
.
WriteLine
(
' pkColumnName = "SISBDSNUME", pkColumnValue = "'
+
lsNomeTabela
+
'", allocationSize = 1)'
);
lCodigoClasse
.
WriteLine
(
' pkColumnName = "SISBDSNUME", pkColumnValue = "'
+
lsNomeTabela
+
'", allocationSize = 1)'
);
...
@@ -5184,9 +5213,13 @@ begin
...
@@ -5184,9 +5213,13 @@ begin
lCodigoClasse
.
WriteLine
(
'@PrimaryKeyJoinColumn(name = "'
+
lClassToDBMapTicket
.
IdoDBMapTicket
.
GetIDOColumns
+
'")'
);
lCodigoClasse
.
WriteLine
(
'@PrimaryKeyJoinColumn(name = "'
+
lClassToDBMapTicket
.
IdoDBMapTicket
.
GetIDOColumns
+
'")'
);
end
;
end
;
lCodigoClasse
.
WriteLine
(
'@Table(name = "'
+
lsNomeTabela
+
'")'
);
lCodigoClasse
.
WriteLine
(
'@Table(name = "'
+
lsNomeTabela
+
'")'
);
if
lClassTicket
.
HasDescendants
then
lCodigoClasse
.
Write
(
'public abstract '
)
else
lCodigoClasse
.
Write
(
'public final '
);
lCodigoClasse
.
Write
(
'class '
+
lsNomeClasseDB
);
if
lEhClasseHerdada
if
lEhClasseHerdada
then
lCodigoClasse
.
WriteLine
(
'
public abstract class '
+
lsNomeClasse
+
'
extends '
+
lClassTicket
.
ParentClassTicket
.
DisplayName
+
'Entity {'
)
then
lCodigoClasse
.
WriteLine
(
' extends '
+
lClassTicket
.
ParentClassTicket
.
DisplayName
+
'Entity {'
)
else
lCodigoClasse
.
WriteLine
(
'
public abstract class '
+
lsNomeClasse
+
'
{'
);
else
lCodigoClasse
.
WriteLine
(
' {'
);
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
Indent
();
lCodigoClasse
.
Indent
();
...
@@ -5196,31 +5229,7 @@ begin
...
@@ -5196,31 +5229,7 @@ begin
lCodigoClasse
.
WriteLine
(
'@Id'
);
lCodigoClasse
.
WriteLine
(
'@Id'
);
lCodigoClasse
.
WriteLine
(
'@Column(name = "'
+
lClassToDBMapTicket
.
IdoDBMapTicket
.
GetIDOColumns
+
'")'
);
lCodigoClasse
.
WriteLine
(
'@Column(name = "'
+
lClassToDBMapTicket
.
IdoDBMapTicket
.
GetIDOColumns
+
'")'
);
lCodigoClasse
.
WriteLine
(
'@GeneratedValue(generator = "'
+
lsNomeGeneratorId
+
'")'
);
lCodigoClasse
.
WriteLine
(
'@GeneratedValue(generator = "'
+
lsNomeGeneratorId
+
'")'
);
lCodigoClasse
.
WriteLine
(
'private '
+
_DBTipoId
+
' id;'
);
lCodigoClasse
.
WriteLine
(
'private '
+
_DBTipoId
+
' '
+
_NomeId
+
';'
);
end
;
// Obtem parametros da classe pai
if
lEhClasseHerdada
then
begin
for
index
:=
0
to
lClassTicket
.
ParentClassTicket
.
Attributes
.
Count
-
1
do
begin
lAttributeTicket
:=
lClassTicket
.
Attributes
.
Objects
[
index
]
as
acAttributeTicket
;
lsAtributo
:=
lClassTicket
.
Attributes
.
Strings
[
index
];
lsTipoAttribute
:=
ObterTipoAtributo
(
lAttributeTicket
.
AttributeType
);
lParamsConstrutor
:=
lParamsConstrutor
+
lsTipoAttribute
+
' pi'
+
lsAtributo
+
', '
;
end
;
for
index
:=
0
to
lClassTicket
.
RelationTicketsIn
.
Count
-
1
do
begin
lRelation
:=
(
lClassTicket
.
RelationTicketsIn
.
Objects
[
index
]
as
acRelationTicket
);
if
(
lRelation
.
DestinationPropertyName
<>
''
)
then
begin
lsAtributo
:=
lRelation
.
DestinationPropertyName
;
if
lRelation
.
DestinationMaxMultiplicity
>
1
then
lsTipoAttribute
:=
'List<'
+
lRelation
.
OriginClassTicket
.
DisplayName
+
'Entity>'
else
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
+
'Entity'
;
lParamsConstrutor
:=
lParamsConstrutor
+
lsTipoAttribute
+
' pi'
+
lsAtributo
+
', '
;
end
;
end
;
end
;
end
;
// DECLARAO ATRIBUTOS: Percorre atributos da classe
// DECLARAO ATRIBUTOS: Percorre atributos da classe
...
@@ -5228,8 +5237,7 @@ begin
...
@@ -5228,8 +5237,7 @@ begin
begin
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
:=
ObterTipoAtributo
(
lAttributeTicket
.
AttributeType
);
lsTipoAttribute
:=
ObterTipoAtributoJava
(
lAttributeTicket
.
AttributeType
);
lParamsConstrutor
:=
lParamsConstrutor
+
lsTipoAttribute
+
' pi'
+
lsAtributo
+
', '
;
lColumnTicket
:=
acDBColumnMapTicket
(
lClassToDBMapTicket
.
Columns
.
ValueOf
(
UpCase
(
lsAtributo
)));
lColumnTicket
:=
acDBColumnMapTicket
(
lClassToDBMapTicket
.
Columns
.
ValueOf
(
UpCase
(
lsAtributo
)));
if
lAttributeTicket
.
DBType
=
'VARCHAR'
if
lAttributeTicket
.
DBType
=
'VARCHAR'
...
@@ -5245,24 +5253,26 @@ begin
...
@@ -5245,24 +5253,26 @@ begin
if
(
lRelation
.
DestinationPropertyName
<>
''
)
then
if
(
lRelation
.
DestinationPropertyName
<>
''
)
then
begin
begin
lsAtributo
:=
lRelation
.
DestinationPropertyName
;
lsAtributo
:=
lRelation
.
DestinationPropertyName
;
if
lRelation
.
DestinationMaxMultiplicity
>
1
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
+
'Entity'
;
then
lsTipoAttribute
:=
'List<'
+
lRelation
.
OriginClassTicket
.
DisplayName
+
'Entity>'
else
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
+
'Entity'
;
lParamsConstrutor
:=
lParamsConstrutor
+
lsTipoAttribute
+
' pi'
+
lsAtributo
+
', '
;
if
lRelation
.
DestinationMaxMultiplicity
=
1
then
if
lRelation
.
DestinationMaxMultiplicity
=
1
then
begin
begin
if
lRelation
.
OriginMaxMultiplicity
=
1
if
lRelation
.
OriginMaxMultiplicity
=
1
then
lCodigoClasse
.
WriteLine
(
'@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)'
)
then
lCodigoClasse
.
WriteLine
(
'@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)'
)
else
lCodigoClasse
.
WriteLine
(
'@
OneToMany(
cascade = CascadeType.ALL)'
);
else
lCodigoClasse
.
WriteLine
(
'@
ManyToOne(fetch = FetchType.LAZY,
cascade = CascadeType.ALL)'
);
end
end
else
else
begin
begin
lsTipoAttribute
:=
'final List<'
+
lsTipoAttribute
+
'>'
;
if
lRelation
.
OriginMaxMultiplicity
=
1
if
lRelation
.
OriginMaxMultiplicity
=
1
then
lCodigoClasse
.
WriteLine
(
'@
ManyToOne(fetch = FetchType.LAZY,
cascade = CascadeType.ALL)'
)
then
lCodigoClasse
.
WriteLine
(
'@
OneToMany(
cascade = CascadeType.ALL)'
)
else
lCodigoClasse
.
WriteLine
(
'@ManyToMany(cascade = CascadeType.ALL)'
);
else
lCodigoClasse
.
WriteLine
(
'@ManyToMany(cascade = CascadeType.ALL)'
);
end
;
end
;
if
lRelationPersistenceMapTicket
is
acDirectDBRelationMapTicket
if
lRelationPersistenceMapTicket
is
acDirectDBRelationMapTicket
then
lCodigoClasse
.
WriteLine
(
'@JoinColumn(name = "'
+
acDirectDBRelationMapTicket
(
lRelationPersistenceMapTicket
).
FKColumnName
+
'")'
);
then
lCodigoClasse
.
WriteLine
(
'@JoinColumn(name = "'
+
acDirectDBRelationMapTicket
(
lRelationPersistenceMapTicket
).
FKColumnName
+
'")'
)
else
lCodigoClasse
.
WriteLine
(
'@JoinTable(name = "'
+
acIndirectDBRelationMapTicket
(
lRelationPersistenceMapTicket
).
TableName
+
'"'
+
', joinColumns = { @JoinColumn(name = "'
+
acIndirectDBRelationMapTicket
(
lRelationPersistenceMapTicket
).
FKOrigemName
+
'") }'
+
', inverseJoinColumns = { @JoinColumn(name = "'
+
acIndirectDBRelationMapTicket
(
lRelationPersistenceMapTicket
).
FKDestinoName
+
'")'
+
'} )'
);
lCodigoClasse
.
WriteLine
(
'private '
+
lsTipoAttribute
+
' '
+
lsAtributo
+
';'
);
lCodigoClasse
.
WriteLine
(
'private '
+
lsTipoAttribute
+
' '
+
lsAtributo
+
';'
);
end
;
end
;
end
;
end
;
...
@@ -5273,95 +5283,184 @@ begin
...
@@ -5273,95 +5283,184 @@ begin
if
(
lRelation
.
OriginPropertyName
<>
''
)
then
if
(
lRelation
.
OriginPropertyName
<>
''
)
then
begin
begin
lsAtributo
:=
lRelation
.
OriginPropertyName
;
lsAtributo
:=
lRelation
.
OriginPropertyName
;
if
lRelation
.
OriginMaxMultiplicity
>
1
lsTipoAttribute
:=
lRelation
.
DestinationClassTicket
.
DisplayName
+
'Entity'
;
then
lsTipoAttribute
:=
'List<'
+
lRelation
.
DestinationClassTicket
.
DisplayName
+
'Entity>'
else
lsTipoAttribute
:=
lRelation
.
DestinationClassTicket
.
DisplayName
+
'Entity'
;
if
lRelation
.
OriginMaxMultiplicity
=
1
then
if
lRelation
.
OriginMaxMultiplicity
=
1
then
begin
begin
if
lRelation
.
DestinationMaxMultiplicity
=
1
if
lRelation
.
DestinationMaxMultiplicity
=
1
then
lCodigoClasse
.
Write
(
'@OneToOne(cascade = CascadeType.ALL'
)
then
lCodigoClasse
.
Write
(
'@OneToOne(cascade = CascadeType.ALL'
)
else
lCodigoClasse
.
Write
(
'@
OneToMany
(cascade = CascadeType.ALL'
);
else
lCodigoClasse
.
Write
(
'@
ManyToOne
(cascade = CascadeType.ALL'
);
end
end
else
else
begin
begin
lsTipoAttribute
:=
'final List<'
+
lsTipoAttribute
+
'>'
;
if
lRelation
.
DestinationMaxMultiplicity
=
1
if
lRelation
.
DestinationMaxMultiplicity
=
1
then
lCodigoClasse
.
Write
(
'@
ManyToOne
(cascade = CascadeType.ALL'
)
then
lCodigoClasse
.
Write
(
'@
OneToMany
(cascade = CascadeType.ALL'
)
else
lCodigoClasse
.
Write
(
'@ManyToMany(cascade = CascadeType.ALL'
);
else
lCodigoClasse
.
Write
(
'@ManyToMany(cascade = CascadeType.ALL'
);
end
;
end
;
if
lRelation
.
DestinationPropertyName
<>
''
if
lRelation
.
DestinationPropertyName
<>
''
then
lCodigoClasse
.
WriteLine
(
', mappedby = "'
+
lRelation
.
DestinationPropertyName
+
'")'
)
then
lCodigoClasse
.
WriteLine
(
', mappedBy = "'
+
lRelation
.
DestinationPropertyName
+
'")'
)
else
lCodigoClasse
.
WriteLine
(
')'
);
else
begin
lCodigoClasse
.
WriteLine
(
')'
);
if
(
lRelationPersistenceMapTicket
is
acDirectDBRelationMapTicket
)
and
(
acDirectDBRelationMapTicket
(
lRelationPersistenceMapTicket
).
FKColumnName
<>
''
)
then
if
(
lRelationPersistenceMapTicket
is
acDirectDBRelationMapTicket
)
and
(
acDirectDBRelationMapTicket
(
lRelationPersistenceMapTicket
).
FKColumnName
<>
''
)
then
lCodigoClasse
.
WriteLine
(
'@JoinColumn(name = "'
+
acDirectDBRelationMapTicket
(
lRelationPersistenceMapTicket
).
FKColumnName
+
'")'
);
lCodigoClasse
.
WriteLine
(
'@JoinColumn(name = "'
+
acDirectDBRelationMapTicket
(
lRelationPersistenceMapTicket
).
FKColumnName
+
'")'
)
else
if
(
lRelationPersistenceMapTicket
is
acIndirectDBRelationMapTicket
)
and
(
acIndirectDBRelationMapTicket
(
lRelationPersistenceMapTicket
).
TableName
<>
''
)
then
lCodigoClasse
.
WriteLine
(
'@JoinTable(name = "'
+
acIndirectDBRelationMapTicket
(
lRelationPersistenceMapTicket
).
TableName
+
'"'
+
', joinColumns = { @JoinColumn(name = "'
+
acIndirectDBRelationMapTicket
(
lRelationPersistenceMapTicket
).
FKDestinoName
+
'") }'
+
', inverseJoinColumns = { @JoinColumn(name = "'
+
acIndirectDBRelationMapTicket
(
lRelationPersistenceMapTicket
).
FKOrigemName
+
'")'
+
'} )'
);
end
;
lCodigoClasse
.
WriteLine
(
'private '
+
lsTipoAttribute
+
' '
+
lsAtributo
+
';'
);
lCodigoClasse
.
WriteLine
(
'private '
+
lsTipoAttribute
+
' '
+
lsAtributo
+
';'
);
end
;
end
;
end
;
end
;
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
''
);
// GETTER/SETTER: Percorre atributos da classe
// GETTER/SETTER: Percorre atributos da classe
if
not
lEhClasseHerdada
then
EscreveGetterSetterClasse
(
lCodigoClasse
,
_NomeId
,
_DBTipoId
,
True
);
for
index
:=
0
to
lClassTicket
.
Attributes
.
Count
-
1
do
for
index
:=
0
to
lClassTicket
.
Attributes
.
Count
-
1
do
begin
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
:=
ObterTipoAtributo
(
lAttributeTicket
.
AttributeType
);
lsTipoAttribute
:=
ObterTipoAtributo
Java
(
lAttributeTicket
.
AttributeType
);
EscreveGetterSetterClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
);
EscreveGetterSetterClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
);
end
;
end
;
// GETTER/SETTER: Percorre relacionamentos
// GETTER/SETTER: Percorre relacionamentos
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
+
'Entity>'
else
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
+
'Entity'
;
if
lRelation
.
DestinationMaxMultiplicity
=
1
then
begin
begin
EscreveGetterSetterClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
);
lsTipoAttribute
:=
lRelation
.
OriginClassTicket
.
DisplayName
+
'Entity'
;
end
;
if
lRelation
.
DestinationMaxMultiplicity
=
1
then
EscreveGetterSetterClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
)
else
EscreveGetterSetterClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
,
true
,
true
);
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
lsTipoAttribute
:=
lRelation
.
DestinationClassTicket
.
DisplayName
+
'Entity'
;
if
lRelation
.
OriginMaxMultiplicity
=
1
then
EscreveGetterSetterClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
)
else
EscreveGetterSetterClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
,
true
,
true
);
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
);
lParamsConstrutor
:=
lParamsConstrutor
+
lsTipoAttribute
+
' pi'
+
lsAtributo
+
', '
;
if
lClassTicketPai
.
ID
<>
lClassTicket
.
ID
then
lListaChamadaSuper
.
Add
(
'pi'
+
lsAtributo
);
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
if
lRelation
.
DestinationMaxMultiplicity
>
1
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
);
end
;
end
;
for
index
:=
0
to
lClassTicketPai
.
RelationTicketsOut
.
Count
-
1
do
begin
begin
lRelation
:=
(
lClassTicketPai
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
lsAtributo
:=
lRelation
.
OriginPropertyName
;
lsAtributo
:=
lRelation
.
OriginPropertyName
;
if
(
lsAtributo
<>
''
)
then
begin
if
lRelation
.
OriginMaxMultiplicity
>
1
if
lRelation
.
OriginMaxMultiplicity
>
1
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'
;
if
lRelation
.
OriginMaxMultiplicity
=
1
then
lParamsConstrutor
:=
lParamsConstrutor
+
lsTipoAttribute
+
' pi'
+
lsAtributo
+
', '
;
begi
n
if
lClassTicketPai
.
ID
<>
lClassTicket
.
ID
the
n
EscreveGetterSetterClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
);
lListaChamadaSuper
.
Add
(
'pi'
+
lsAtributo
);
end
;
end
;
end
;
end
;
lClassTicketPai
:=
lClassTicketPai
.
ParentClassTicket
;
end
;
end
;
// Escrever mtodos
// Escrever mtodos
// Escrever construtor vazio
// Escrever construtor vazio
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
'public '
+
lsNomeClasse
+
'() { }'
);
lCodigoClasse
.
WriteLine
(
'public '
+
lsNomeClasseDB
+
'() {'
);
lCodigoClasse
.
Indent
();
for
index
:=
0
to
lClassTicket
.
RelationTicketsIn
.
Count
-
1
do
begin
lRelation
:=
(
lClassTicket
.
RelationTicketsIn
.
Objects
[
index
]
as
acRelationTicket
);
lsAtributo
:=
lRelation
.
DestinationPropertyName
;
if
(
lsAtributo
<>
''
)
and
(
lRelation
.
DestinationMaxMultiplicity
>
1
)
then
lCodigoClasse
.
WriteLine
(
lsAtributo
+
' = new ArrayList<>();'
);
end
;
for
index
:=
0
to
lClassTicket
.
RelationTicketsOut
.
Count
-
1
do
begin
lRelation
:=
(
lClassTicket
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
lsAtributo
:=
lRelation
.
OriginPropertyName
;
if
(
lsAtributo
<>
''
)
and
(
lRelation
.
OriginMaxMultiplicity
>
1
)
then
lCodigoClasse
.
WriteLine
(
lsAtributo
+
' = new ArrayList<>();'
);
end
;
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
'}'
);
// Escrever construtor sem id com relacionamentos
// Escrever construtor sem id com relacionamentos
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
'public '
+
lsNomeClasse
+
'('
+
strutils
.
LeftStr
(
lParamsConstrutor
,
Length
(
lParamsConstrutor
)-
2
)+
') {'
);
lCodigoClasse
.
WriteLine
(
'public '
+
lsNomeClasse
DB
+
'('
+
strutils
.
LeftStr
(
lParamsConstrutor
,
Length
(
lParamsConstrutor
)-
2
)+
') {'
);
lCodigoClasse
.
Indent
();
lCodigoClasse
.
Indent
();
if
lEhClasseHerdada
then
lCodigoClasse
.
WriteLine
(
'super('
+
lListaChamadaSuper
.
CommaText
+
');'
);
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
+
' = pi'
+
lsAtributo
+
';'
);
EscreverInicializacaoAtributo
(
lCodigoClasse
,
lsAtributo
,
1
);
end
;
end
;
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
EscreverInicializacaoAtributo
(
lCodigoClasse
,
lRelation
.
DestinationPropertyName
,
lRelation
.
DestinationMaxMultiplicity
);
end
;
for
index
:=
0
to
lClassTicket
.
RelationTicketsOut
.
Count
-
1
do
begin
begin
lsAtributo
:=
lRelation
.
DestinationPropertyName
;
lRelation
:=
(
lClassTicket
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
if
lRelation
.
DestinationMaxMultiplicity
=
1
then
EscreverInicializacaoAtributo
(
lCodigoClasse
,
lRelation
.
OriginPropertyName
,
lRelation
.
OriginMaxMultiplicity
);
end
;
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
'}'
);
// Escrever construtor com id com relacionamentos
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
'public '
+
lsNomeClasseDB
+
'('
+
_DBTipoId
+
' piId, '
+
strutils
.
LeftStr
(
lParamsConstrutor
,
Length
(
lParamsConstrutor
)-
2
)+
') {'
);
lCodigoClasse
.
Indent
();
if
lEhClasseHerdada
then
lCodigoClasse
.
WriteLine
(
'super(piId, '
+
lListaChamadaSuper
.
CommaText
+
');'
)
else
lCodigoClasse
.
WriteLine
(
_NomeId
+
' = piId;'
);
for
index
:=
0
to
lClassTicket
.
Attributes
.
Count
-
1
do
begin
begin
lCodigoClasse
.
WriteLine
(
lsAtributo
+
' = pi'
+
lsAtributo
+
';'
);
lsAtributo
:=
lClassTicket
.
Attributes
.
Strings
[
index
];
EscreverInicializacaoAtributo
(
lCodigoClasse
,
lsAtributo
,
1
);
end
;
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
;
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
;
end
;
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
'}'
);
lCodigoClasse
.
WriteLine
(
'}'
);
...
@@ -5371,9 +5470,9 @@ begin
...
@@ -5371,9 +5470,9 @@ begin
lCodigoClasse
.
WriteLine
(
'@Override'
);
lCodigoClasse
.
WriteLine
(
'@Override'
);
lCodigoClasse
.
WriteLine
(
'public String toString() {'
);
lCodigoClasse
.
WriteLine
(
'public String toString() {'
);
lCodigoClasse
.
Indent
();
lCodigoClasse
.
Indent
();
lCodigoClasse
.
WriteLine
(
'return "'
+
lsNomeClasse
+
'{ " +'
);
lCodigoClasse
.
WriteLine
(
'return "'
+
lsNomeClasse
DB
+
'{ " +'
);
if
not
lEhClasseHerdada
then
if
not
lEhClasseHerdada
then
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
];
...
@@ -5391,26 +5490,12 @@ begin
...
@@ -5391,26 +5490,12 @@ begin
Result
:=
lCodigoClasse
.
AsString
;
Result
:=
lCodigoClasse
.
AsString
;
finally
finally
lCodigoClasse
.
Free
;
lCodigoClasse
.
Free
;
lListaChamadaSuper
.
Free
;
end
;
end
;
end
;
end
;
function
TUtil
.
GerarClassPreview_JavaDomain
(
piClass
:
IUMLClass
):
string
;
function
TUtil
.
GerarClassPreview_JavaDomain
(
piClass
:
IUMLClass
):
string
;
function
ObterTipoAtributo
(
piTipoCurio
:
string
):
string
;
begin
if
piTipoCurio
=
'acString'
then
Result
:=
'String'
else
if
piTipoCurio
=
'acText'
then
Result
:=
'String'
else
if
piTipoCurio
=
'acBlob'
then
Result
:=
'bynary[]'
else
if
piTipoCurio
=
'acGraphic'
then
Result
:=
'bynary[]'
else
if
piTipoCurio
=
'acDateTime'
then
Result
:=
'OffsetDateTime'
else
if
piTipoCurio
=
'acInt'
then
Result
:=
'Integer'
else
if
piTipoCurio
=
'acCurrency'
then
Result
:=
'BigDecimal'
else
if
piTipoCurio
=
'acDouble'
then
Result
:=
'BigDecimal'
else
if
piTipoCurio
=
'acBoolean'
then
Result
:=
'boolean'
else
Result
:=
piTipoCurio
;
end
;
procedure
EscreveAtributoClasse
(
const
piCodigoClasse
:
PStringWriter
;
piNomeAtributo
,
piTipoAtributo
:
String
;
piVisibility
:
Integer
);
procedure
EscreveAtributoClasse
(
const
piCodigoClasse
:
PStringWriter
;
piNomeAtributo
,
piTipoAtributo
:
String
;
piVisibility
:
Integer
);
begin
begin
//Escreve atributo
//Escreve atributo
...
@@ -5432,6 +5517,43 @@ function TUtil.GerarClassPreview_JavaDomain(piClass: IUMLClass): string;
...
@@ -5432,6 +5517,43 @@ function TUtil.GerarClassPreview_JavaDomain(piClass: IUMLClass): string;
piCodigoClasse
.
WriteLine
(
''
);
piCodigoClasse
.
WriteLine
(
''
);
end
;
end
;
procedure
IncluirImports
(
const
piCodigoClasse
:
PStringWriter
;
piClassTicket
:
acClassTicket
;
const
piTipoId
:
string
);
var
lAttributeTicket
:
acAttributeTicket
;
lHasImport
:
array
[
0..2
]
of
Boolean
;
index
:
integer
;
lsTipoAttribute
:
string
;
begin
piCodigoClasse
.
WriteLine
(
'import java.util.List;'
);
for
index
:=
0
to
2
do
lHasImport
[
index
]
:=
False
;
if
piTipoId
=
'Long'
then
begin
piCodigoClasse
.
WriteLine
(
'import java.lang.Long;'
);
lHasImport
[
1
]
:=
True
;
end
;
for
index
:=
0
to
piClassTicket
.
Attributes
.
Count
-
1
do
begin
lAttributeTicket
:=
piClassTicket
.
Attributes
.
Objects
[
index
]
as
acAttributeTicket
;
lsTipoAttribute
:=
ObterTipoAtributoJava
(
lAttributeTicket
.
AttributeType
);
if
(
lsTipoAttribute
=
'BigDecimal'
)
and
(
not
lHasImport
[
0
])
then
begin
piCodigoClasse
.
WriteLine
(
'import java.math.BigDecimal;'
);
lHasImport
[
0
]
:=
True
;
end
else
if
(
lsTipoAttribute
=
'Long'
)
and
(
not
lHasImport
[
1
])
then
begin
piCodigoClasse
.
WriteLine
(
'import java.lang.Long;'
);
lHasImport
[
1
]
:=
True
;
end
else
if
(
lsTipoAttribute
=
'OffsetDateTime'
)
and
(
not
lHasImport
[
2
])
then
begin
piCodigoClasse
.
WriteLine
(
'import java.time.OffsetDateTime;'
);
lHasImport
[
2
]
:=
True
;
end
;
end
;
end
;
const
const
_TipoId
=
'Long'
;
_TipoId
=
'Long'
;
_NomeId
=
'Id'
;
_NomeId
=
'Id'
;
...
@@ -5446,46 +5568,18 @@ var
...
@@ -5446,46 +5568,18 @@ var
lCodigoClasse
:
PStringWriter
;
lCodigoClasse
:
PStringWriter
;
lParamsConstrutor
:
string
;
lParamsConstrutor
:
string
;
lRelation
:
acRelationTicket
;
lRelation
:
acRelationTicket
;
lHasImport
:
array
[
0..2
]
of
Boolean
;
begin
begin
Result
:=
''
;
Result
:=
''
;
lParamsConstrutor
:=
''
;
lParamsConstrutor
:=
''
;
lsNomeClasse
:=
piClass
.
Name
;
lsNomeClasse
:=
piClass
.
Name
;
lClassTicket
:=
MetaModel
.
GetClassTicketByName
(
lsNomeClasse
);
lClassTicket
:=
MetaModel
.
GetClassTicketByName
(
lsNomeClasse
);
for
index
:=
0
to
2
do
lHasImport
[
index
]
:=
False
;
lCodigoClasse
:=
PStringWriter
.
Create
;
lCodigoClasse
:=
PStringWriter
.
Create
;
try
try
lCodigoClasse
.
WriteLine
(
'package domain;'
);
//lCodigoClasse.WriteLine('package domain;');
lCodigoClasse
.
WriteLine
(
''
);
//lCodigoClasse.WriteLine('');
lCodigoClasse
.
WriteLine
(
'import java.util.List;'
);
// Imports de tipos
// Imports de tipos
if
_TipoId
=
'Long'
then
IncluirImports
(
lCodigoClasse
,
lClassTicket
,
_TipoId
);
begin
lCodigoClasse
.
WriteLine
(
'import java.lang.Long;'
);
lHasImport
[
1
]
:=
True
;
end
;
for
index
:=
0
to
lClassTicket
.
Attributes
.
Count
-
1
do
begin
lAttributeTicket
:=
lClassTicket
.
Attributes
.
Objects
[
index
]
as
acAttributeTicket
;
lsTipoAttribute
:=
ObterTipoAtributo
(
lAttributeTicket
.
AttributeType
);
if
(
lsTipoAttribute
=
'BigDecimal'
)
and
(
not
lHasImport
[
0
])
then
begin
lCodigoClasse
.
WriteLine
(
'import java.math.BigDecimal;'
);
lHasImport
[
0
]
:=
True
;
end
else
if
(
lsTipoAttribute
=
'Long'
)
and
(
not
lHasImport
[
1
])
then
begin
lCodigoClasse
.
WriteLine
(
'import java.lang.Long;'
);
lHasImport
[
1
]
:=
True
;
end
else
if
(
lsTipoAttribute
=
'OffsetDateTime'
)
and
(
not
lHasImport
[
2
])
then
begin
lCodigoClasse
.
WriteLine
(
'import java.time.OffsetDateTime;'
);
lHasImport
[
2
]
:=
True
;
end
;
end
;
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
''
);
// Incio da classe
// Incio da classe
lCodigoClasse
.
WriteLine
(
'public class '
+
lsNomeClasse
+
' {'
);
lCodigoClasse
.
WriteLine
(
'public class '
+
lsNomeClasse
+
' {'
);
...
@@ -5499,7 +5593,7 @@ begin
...
@@ -5499,7 +5593,7 @@ begin
begin
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
:=
ObterTipoAtributo
(
lAttributeTicket
.
AttributeType
);
lsTipoAttribute
:=
ObterTipoAtributo
Java
(
lAttributeTicket
.
AttributeType
);
EscreveAtributoClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
,
lAttributeTicket
.
Visibility
);
EscreveAtributoClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
,
lAttributeTicket
.
Visibility
);
end
;
end
;
...
@@ -5536,7 +5630,7 @@ begin
...
@@ -5536,7 +5630,7 @@ begin
begin
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
:=
ObterTipoAtributo
(
lAttributeTicket
.
AttributeType
);
lsTipoAttribute
:=
ObterTipoAtributo
Java
(
lAttributeTicket
.
AttributeType
);
lParamsConstrutor
:=
lParamsConstrutor
+
lsTipoAttribute
+
' pi'
+
lsAtributo
+
', '
;
lParamsConstrutor
:=
lParamsConstrutor
+
lsTipoAttribute
+
' pi'
+
lsAtributo
+
', '
;
EscreveGetterSetterClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
);
EscreveGetterSetterClasse
(
lCodigoClasse
,
lsAtributo
,
lsTipoAttribute
);
...
@@ -5559,7 +5653,6 @@ begin
...
@@ -5559,7 +5653,6 @@ begin
lRelation
:=
(
lClassTicket
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
lRelation
:=
(
lClassTicket
.
RelationTicketsOut
.
Objects
[
index
]
as
acRelationTicket
);
if
(
lRelation
.
OriginPropertyName
<>
''
)
then
if
(
lRelation
.
OriginPropertyName
<>
''
)
then
begin
begin
//Escreve atributo
lsAtributo
:=
lRelation
.
OriginPropertyName
;
lsAtributo
:=
lRelation
.
OriginPropertyName
;
if
lRelation
.
OriginMaxMultiplicity
>
1
if
lRelation
.
OriginMaxMultiplicity
>
1
then
lsTipoAttribute
:=
'List<'
+
lRelation
.
DestinationClassTicket
.
DisplayName
+
'>'
then
lsTipoAttribute
:=
'List<'
+
lRelation
.
DestinationClassTicket
.
DisplayName
+
'>'
...
@@ -5573,7 +5666,7 @@ begin
...
@@ -5573,7 +5666,7 @@ begin
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
'public '
+
lsNomeClasse
+
'('
+
_TipoId
+
' piId, '
+
strutils
.
LeftStr
(
lParamsConstrutor
,
Length
(
lParamsConstrutor
)-
2
)+
') {'
);
lCodigoClasse
.
WriteLine
(
'public '
+
lsNomeClasse
+
'('
+
_TipoId
+
' piId, '
+
strutils
.
LeftStr
(
lParamsConstrutor
,
Length
(
lParamsConstrutor
)-
2
)+
') {'
);
lCodigoClasse
.
Indent
();
lCodigoClasse
.
Indent
();
lCodigoClasse
.
WriteLine
(
'f
Id
= piId;'
);
lCodigoClasse
.
WriteLine
(
'f
'
+
_NomeId
+
'
= piId;'
);
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
];
...
@@ -5622,8 +5715,87 @@ begin
...
@@ -5622,8 +5715,87 @@ begin
end
;
end
;
function
TUtil
.
GerarClassPreview_JavaMapper
(
piClass
:
IUMLClass
):
string
;
function
TUtil
.
GerarClassPreview_JavaMapper
(
piClass
:
IUMLClass
):
string
;
var
lsNomeClasseMapper
,
lsNomeClasseDominio
,
lsNomeClasseDB
,
lsUltAtributo
,
lsAttributo
:
string
;
index
:
integer
;
lClassTicket
,
lClassTicketPai
:
acClassTicket
;
lCodigoClasse
:
PStringWriter
;
lRelation
:
acRelationTicket
;
lAttributList
:
TStringList
;
begin
begin
Result
:=
''
;
Result
:=
''
;
lsNomeClasseDominio
:=
piClass
.
Name
;
lsNomeClasseDB
:=
lsNomeClasseDominio
+
'Entity'
;
lsNomeClasseMapper
:=
RightStr
(
lsNomeClasseDominio
,
Length
(
lsNomeClasseDominio
)-
2
)
+
'Mapper'
;
lClassTicket
:=
MetaModel
.
GetClassTicketByName
(
lsNomeClasseDominio
);
lCodigoClasse
:=
PStringWriter
.
Create
;
try
lCodigoClasse
.
WriteLine
(
'package adapters.persistence.mappers;'
);
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
'import adapters.persistence.entities.'
+
lsNomeClasseDB
+
';'
);
lCodigoClasse
.
WriteLine
(
'import domain.'
+
lsNomeClasseDominio
+
';'
);
lCodigoClasse
.
WriteLine
(
''
);
// Incio da classe
lCodigoClasse
.
WriteLine
(
'public final class '
+
lsNomeClasseMapper
+
' {'
);
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
Indent
();
// toDomain: Escrever mtodo toDomain
lCodigoClasse
.
WriteLine
(
''
);
lCodigoClasse
.
WriteLine
(
'public static '
+
lsNomeClasseDominio
+
' toDomain('
+
lsNomeClasseDB
+
' piDBObject) { '
);
lCodigoClasse
.
Indent
();
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
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
lAttributList
.
Add
(
Format
(
'piDBObject.get%s()'
,
[
lRelation
.
DestinationPropertyName
]));
end
;
lClassTicketPai
:=
lClassTicketPai
.
ParentClassTicket
;
end
;
// toDomain: escrever lista de atributos encontrados
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
(
'}'
);
// Escrever mtodo fromDomain
//Fim
lCodigoClasse
.
Outdent
();
lCodigoClasse
.
WriteLine
(
'}'
);
Result
:=
lCodigoClasse
.
AsString
;
finally
lCodigoClasse
.
Free
;
end
;
end
;
end
;
function
TUtil
.
GerarClassPreview_Pascal
(
piClass
:
IUMLClass
):
string
;
function
TUtil
.
GerarClassPreview_Pascal
(
piClass
:
IUMLClass
):
string
;
...
@@ -6081,7 +6253,6 @@ begin
...
@@ -6081,7 +6253,6 @@ begin
end
;
end
;
end
;
end
;
procedure
TUtil
.
CarregarMetodosNGU
(
pUMLClass
:
IUMLClass
;
pInstantCodeClass
:
TInstantCodeClass
);
procedure
TUtil
.
CarregarMetodosNGU
(
pUMLClass
:
IUMLClass
;
pInstantCodeClass
:
TInstantCodeClass
);
var
var
lMetCont
,
liCont
,
liCont2
,
liParCount
,
liParIndex
:
integer
;
lMetCont
,
liCont
,
liCont2
,
liParCount
,
liParIndex
:
integer
;
...
@@ -6158,7 +6329,6 @@ begin
...
@@ -6158,7 +6329,6 @@ begin
end
;
end
;
procedure
TUtil
.
ConvertXSDsToUseCaseXSD
(
piProgress
:
TFShowProgress
);
procedure
TUtil
.
ConvertXSDsToUseCaseXSD
(
piProgress
:
TFShowProgress
);
function
XSDExiste
(
piXSDFile
:
utXSDFile
;
piXSD
:
string
):
string
;
function
XSDExiste
(
piXSDFile
:
utXSDFile
;
piXSD
:
string
):
string
;
...
@@ -6397,7 +6567,6 @@ begin
...
@@ -6397,7 +6567,6 @@ begin
result
:=
lsResult
;
result
:=
lsResult
;
end
;
end
;
procedure
TUtil
.
Reversa
(
psNomePacote
,
psPrjPath
,
psSTARUMLprj
:
string
);
procedure
TUtil
.
Reversa
(
psNomePacote
,
psPrjPath
,
psSTARUMLprj
:
string
);
var
var
lEnum
:
acEnumerator
;
lEnum
:
acEnumerator
;
...
@@ -6630,93 +6799,7 @@ begin
...
@@ -6630,93 +6799,7 @@ begin
end
;
end
;
end
;
end
;
{
procedure TUtil.CriarUMLAttributes(piClassTicket: acClassTicket; piUMLClass: IUMLClass; piFactory: IUMLFactory);
var lindex, lNullable, llength, lprec, lscale: Integer;
lbVariable: boolean;
lAttribute: IUMLAttribute;
lsAttribute, lsTipoAttribute, lsDBTableName, lsDBTypeAttribute: String;
lClassToDBMapTicket: acClassToDBMapTicket;
lAttributeTicket: acAttributeTicket;
lAttributeVisibility: acAttributeVisibility;
qryUtil: TQuery;
begin
// ISQLMetaData.
qryUtil := TQuery.Create(nil);
qryUtil.DatabaseName := 'dbSGIES';
// Obtm classe responsvel por mapeamento OO-DB
lClassToDBMapTicket := (MetaModel.DefaultMetaModelPersistenceMap as acMetaModelPersistenceMapSQL).GetClassToDBMapTicket(piClassTicket);
lsDBTableName := lClassToDBMapTicket.TableName;
qryUtil.SQL.Text := 'select sysobjects.name as tablename,' +#13#10+
' syscolumns.name as columnname,' +#13#10+
' syscolumns.length,' +#13#10+
' syscolumns.xprec,' +#13#10+
' syscolumns.xscale,' +#13#10+
' syscolumns.isnullable,' +#13#10+
' systypes.name as typename,' +#13#10+
' systypes.variable as variable' +#13#10+
'from sysobjects, syscolumns, systypes' +#13#10+
'where sysobjects.id = syscolumns.id' +#13#10+
'and syscolumns.xtype = systypes.xtype' +#13#10+
'and sysobjects.type = ''U''' +#13#10+
'and sysobjects.name = '''+lsDBTableName+'''' +#13#10+
'and syscolumns.name = :column_name';
//Preenche a Classe UML criada com seus atributos
for lindex := 0 to (piClassTicket.Attributes.Count - 1) do
begin
lsAttribute := piClassTicket.Attributes.Strings[lindex];
lAttributeTicket := piClassTicket.Attributes.Objects[lindex] as acAttributeTicket;
lAttribute := piFactory.CreateAttribute(piUMLClass);
lAttribute.Name := lsAttribute;
// Obtm a string do tipo do atributo situado em ObjectClass de ClassTicket
lsTipoAttribute := piClassTicket.ObjectClass.GetPropType(lsAttribute).ClassName;
//*** lsTipoAttribute := lPropertyRegisterTicket.Tipo;
lAttributeVisibility := lAttributeTicket.Visibility;
// Atribui a string do tipo do atributo ao UML Atributo
lAttribute.SetType2(lsTipoAttribute);
case lAttributeVisibility of
pvPublic : lAttribute.Visibility := vkPublic;
pvProtected : lAttribute.Visibility := vkProtected;
pvPrivate : lAttribute.Visibility := vkPrivate;
else lAttribute.Visibility := vkPrivate;
end;
// Seta nome da coluna do BD como valor atribudo
lAttribute.SetTaggedValueAsString('DBMappings', 'DBAttributeMap', 'Name', lClassToDBMapTicket.ColumnTicket[lindex].ColumnName);
qryUtil.ParamByName('column_name').AsString := lClassToDBMapTicket.ColumnTicket[lindex].ColumnName;
qryUtil.Open;
if not qryUtil.IsEmpty then
begin
lNullable := qryUtil.FieldByName('isnullable').AsInteger;
if lNullable = 1 then
lAttribute.SetTaggedValueAsBoolean('DBMappings', 'DBAttributeMap', 'Mand', true)
else lAttribute.SetTaggedValueAsBoolean('DBMappings', 'DBAttributeMap', 'Mand', false);
llength := qryUtil.FieldByName('length').AsInteger;
lprec := qryUtil.FieldByName('xprec').AsInteger;
lscale := qryUtil.FieldByName('xscale').AsInteger;
lbVariable := qryUtil.FieldByName('variable').AsBoolean;
if lprec <> 0 then
begin
lAttribute.SetTaggedValueAsInteger('DBMappings', 'DBAttributeMap', 'FSize', lprec);
lAttribute.SetTaggedValueAsInteger('DBMappings', 'DBAttributeMap', 'VSize', lscale)
end else
begin
if lbVariable then
lAttribute.SetTaggedValueAsInteger('DBMappings', 'DBAttributeMap', 'VSize', llength)
else lAttribute.SetTaggedValueAsInteger('DBMappings', 'DBAttributeMap', 'FSize', llength);
end;
lsDBTypeAttribute := qryUtil.FieldByName('typename').AsString;
lAttribute.SetTaggedValueAsString('DBMappings', 'DBAttributeMap', 'Type', lsDBTypeAttribute);
end;
qryUtil.Close;
end;
end;
}
// Procedure responsvel por criar a estrutura de rvore de todo modelo (cria generalizaes e UML classes envolvidas)
// Procedure responsvel por criar a estrutura de rvore de todo modelo (cria generalizaes e UML classes envolvidas)
procedure
TUtil
.
CriarArvore
(
piIStarUMLApp
:
IStarUMLApplication
;
piUMLClass
:
IUMLClass
;
piUMLPackage
:
IUMLPackage
;
piClassTicket
:
acClassTicket
);
procedure
TUtil
.
CriarArvore
(
piIStarUMLApp
:
IStarUMLApplication
;
piUMLClass
:
IUMLClass
;
piUMLPackage
:
IUMLPackage
;
piClassTicket
:
acClassTicket
);
var
var
...
@@ -7123,6 +7206,20 @@ begin
...
@@ -7123,6 +7206,20 @@ begin
gStarUMLApp
.
AddMessageItem
(
piMessageType
,
piMessage
,
piElement
);
gStarUMLApp
.
AddMessageItem
(
piMessageType
,
piMessage
,
piElement
);
end
;
end
;
function
TUtil
.
ObterTipoAtributoJava
(
piTipoCurio
:
string
):
string
;
begin
if
piTipoCurio
=
'acString'
then
Result
:=
'String'
else
if
piTipoCurio
=
'acText'
then
Result
:=
'String'
else
if
piTipoCurio
=
'acBlob'
then
Result
:=
'bynary[]'
else
if
piTipoCurio
=
'acGraphic'
then
Result
:=
'bynary[]'
else
if
piTipoCurio
=
'acDateTime'
then
Result
:=
'OffsetDateTime'
else
if
piTipoCurio
=
'acInt'
then
Result
:=
'Integer'
else
if
piTipoCurio
=
'acCurrency'
then
Result
:=
'BigDecimal'
else
if
piTipoCurio
=
'acDouble'
then
Result
:=
'BigDecimal'
else
if
piTipoCurio
=
'acBoolean'
then
Result
:=
'Boolean'
else
Result
:=
piTipoCurio
;
end
;
function
TUtil
.
EncodeMultiplicity
(
piMultiplicity
:
Integer
):
string
;
function
TUtil
.
EncodeMultiplicity
(
piMultiplicity
:
Integer
):
string
;
begin
begin
if
(
piMultiplicity
=
N
)
if
(
piMultiplicity
=
N
)
...
...
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