Skip to content

Commit f166d74

Browse files
committed
JNG-599 Performance draft
1 parent fb1a178 commit f166d74

File tree

6 files changed

+69
-49
lines changed

6 files changed

+69
-49
lines changed

judo-tatami-asm2rdbms/src/main/epsilon/operations/asm/attribute.eol

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,8 @@ operation ASM!EAttribute fieldSqlName() : String {
1616
}
1717
return columnPrefix + abbreviate(self.sqlLongName(), columnNameMaxSize() - columnPrefix.length()).toUpperCase() ;
1818
}
19+
20+
@cached
21+
operation ASM!EAttribute getAttributeFQName() : String {
22+
return asmUtils.getAttributeFQName(self);
23+
}

judo-tatami-asm2rdbms/src/main/epsilon/operations/asm/class.eol

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,13 @@ operation ASM!EClass root() : ASM!EPackage {
4242
return self.ePackage.root();
4343
}
4444

45+
@cached
46+
operation ASM!EClass getClassifierFQName() : String {
47+
return asmUtils.getClassifierFQName(self);
48+
}
49+
50+
@cached
51+
operation ASM!EClass isEntityType() : Boolean {
52+
return asmUtils.isEntityType(self);
53+
}
54+

judo-tatami-asm2rdbms/src/main/epsilon/operations/asm/reference.eol

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
@cached
22
operation ASM!EReference toString() : String {
3-
var s = "Name: " + asmUtils.getReferenceFQName(self) + " Reference type: " + asmUtils.getClassifierFQName(self.eReferenceType) + " Containment: " + self.containment + " Container: " + self.container + " " + " Lower: " + self.lowerBound + " Upper: " + self.upperBound;
3+
var s = "Name: " + self.getReferenceFQName() + " Reference type: " + self.eReferenceType.getClassifierFQName() + " Containment: " + self.containment + " Container: " + self.container + " " + " Lower: " + self.lowerBound + " Upper: " + self.upperBound;
44
if (self.eOpposite.isDefined()) {
5-
s = s + " Opposite: " + asmUtils.getReferenceFQName(self.eOpposite);
5+
s = s + " Opposite: " + self.eOpposite.getReferenceFQName();
66
}
77
return s;
88
}
@@ -79,3 +79,8 @@ operation ASM!EReference ruleMapping() : RDBMS!Rule {
7979
return rule;
8080
}
8181

82+
@cached
83+
operation ASM!EReference getReferenceFQName() : String {
84+
return asmUtils.getReferenceFQName(self);
85+
}
86+

judo-tatami-asm2rdbms/src/main/epsilon/transformations/modules/attribute.etl

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
rule EAttributeToRdbmsField
33
transform s : ASM!EAttribute
44
to t : RDBMS!RdbmsField {
5-
guard : asmUtils.isEntityType(s.eContainingClass)
5+
guard : s.eContainingClass.isEntityType()
66
t.setId("(asm/" + s.getId() + ")/RdbmsField");
77
t.uuid = "(asm/" + s.getId() + ")/RdbmsField";
8-
log.debug(" Class: " + asmUtils.getClassifierFQName(s.eContainingClass));
8+
log.debug(" Class: " + s.eContainingClass.getClassifierFQName());
99

1010
if (s.eType.isKindOf(ASM!EEnum)) {
1111
// TODO: Make value constraints
@@ -20,45 +20,45 @@ rule EAttributeToRdbmsField
2020
}
2121
t.sqlName = s.fieldSqlName();
2222
t.mandatory = false; // s.required;
23-
t.name = asmUtils.getAttributeFQName(s);
23+
t.name = s.getAttributeFQName();
2424
}
2525

2626
rule EAttributeToTableValueField
2727
transform s : ASM!EAttribute
2828
to t : RDBMS!RdbmsValueField
2929
extends EAttributeToRdbmsField {
30-
guard : asmUtils.isEntityType(s.eContainingClass) and not s.derived
30+
guard : s.eContainingClass.isEntityType() and not s.derived
3131
t.setId("(asm/" + s.getId() + ")/TableValueField");
3232
s.eContainingClass.equivalent("EClassToRdbmsTable").fields.add(t);
33-
log.debug(" Add attribute: " + asmUtils.getAttributeFQName(s));
33+
log.debug(" Add attribute: " + s.getAttributeFQName());
3434
}
3535

3636
// rule EAttributeToUniqueKey
3737
// transform s : ASM!EAttribute
3838
// to u : RDBMS!RdbmsUniqueConstraint {
39-
// guard : asmUtils.isEntityType(s.eContainingClass) and asmUtils.isIdentifier(s) and not s.derived
40-
// log.debug(" Add uniquie constraint: " + asmUtils.getAttributeFQName(s));
39+
// guard : s.eContainingClass.isEntityType() and asmUtils.isIdentifier(s) and not s.derived
40+
// log.debug(" Add uniquie constraint: " + s.getAttributeFQName());
4141
//
4242
// u.setId("(asm/" + s.getId() + ")/UniqueKey");
43-
// u.uuid = asmUtils.getAttributeFQName(s) + "@uniqueConstraint";
43+
// u.uuid = s.getAttributeFQName() + "@uniqueConstraint";
4444
// s.eContainingClass.equivalent("EClassToRdbmsTable").uniqueConstraints.add(u);
4545
//
4646
// u.sqlName = ("UQ_" + md5(u.uuid));
47-
// u.name = asmUtils.getAttributeFQName(s);
47+
// u.name = s.getAttributeFQName();
4848
// u.fields.add(s.equivalent("EAttributeToTableValueField"));
4949
//}
5050

5151
rule EAttributeToIndex
5252
transform s : ASM!EAttribute
5353
to u : RDBMS!RdbmsIndex {
54-
guard : asmUtils.isEntityType(s.eContainingClass) and asmUtils.isIdentifier(s) and not s.derived
55-
log.debug(" Add index: " + asmUtils.getAttributeFQName(s));
54+
guard : s.eContainingClass.isEntityType() and asmUtils.isIdentifier(s) and not s.derived
55+
log.debug(" Add index: " + s.getAttributeFQName());
5656

5757
u.setId("(asm/" + s.getId() + ")/Index");
5858
u.uuid = "(asm/" + s.getId() + ")/Index";
5959
s.eContainingClass.equivalent("EClassToRdbmsTable").indexes.add(u);
6060

6161
u.sqlName = ("IDX_" + md5(u.uuid));
62-
u.name = asmUtils.getAttributeFQName(s);
62+
u.name = s.getAttributeFQName();
6363
u.fields.add(s.equivalent("EAttributeToTableValueField"));
6464
}

judo-tatami-asm2rdbms/src/main/epsilon/transformations/modules/class.etl

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
rule EClassToTableIdField
33
transform s : ASM!EClass
44
to t : RDBMS!RdbmsIdentifierField {
5-
guard : asmUtils.isEntityType(s)
5+
guard : s.isEntityType()
66
t.setId("(asm/" + s.getId() + ")/TableIdField");
7-
t.name = asmUtils.getClassifierFQName(s) + "#_id";
7+
t.name = s.getClassifierFQName() + "#_id";
88
t.uuid = "(asm/" + s.getId() + ")/TableIdField";
99
log.debug(" Add primary key: " + t.name);
1010
var table = s.equivalent("EClassToRdbmsTable");
@@ -18,9 +18,9 @@ rule EClassToTableIdField
1818
rule EClassToTableTypeField
1919
transform s : ASM!EClass
2020
to t : RDBMS!RdbmsValueField {
21-
guard : asmUtils.isEntityType(s)
21+
guard : s.isEntityType()
2222
t.setId("(asm/" + s.getId() + ")/TableTypeField");
23-
t.name = asmUtils.getClassifierFQName(s) + "#_type";
23+
t.name = s.getClassifierFQName() + "#_type";
2424
t.uuid = "(asm/" + s.getId() + ")/TableTypeField";
2525
log.debug(" Add type: " + t.name);
2626
var table = s.equivalent("EClassToRdbmsTable");
@@ -33,9 +33,9 @@ rule EClassToTableTypeField
3333
rule EClassToTableVersionField
3434
transform s : ASM!EClass
3535
to t : RDBMS!RdbmsValueField {
36-
guard : asmUtils.isEntityType(s)
36+
guard : s.isEntityType()
3737
t.setId("(asm/" + s.getId() + ")/TableVersionField");
38-
t.name = asmUtils.getClassifierFQName(s) + "#_version";
38+
t.name = s.getClassifierFQName() + "#_version";
3939
t.uuid = "(asm/" + s.getId() + ")/TableVersionField";
4040
log.debug(" Add version: " + t.name);
4141
var table = s.equivalent("EClassToRdbmsTable");
@@ -48,9 +48,9 @@ rule EClassToTableVersionField
4848
rule EClassToTableCreateUsernameField
4949
transform s : ASM!EClass
5050
to t : RDBMS!RdbmsValueField {
51-
guard : asmUtils.isEntityType(s)
51+
guard : s.isEntityType()
5252
t.setId("(asm/" + s.getId() + ")/TableCreateUsernameField");
53-
t.name = asmUtils.getClassifierFQName(s) + "#_create_username";
53+
t.name = s.getClassifierFQName() + "#_create_username";
5454
t.uuid = "(asm/" + s.getId() + ")/TableCreateUsernameField";
5555
log.debug(" Add create username: " + t.name);
5656
var table = s.equivalent("EClassToRdbmsTable");
@@ -63,9 +63,9 @@ rule EClassToTableCreateUsernameField
6363
rule EClassToTableCreateUserIdField
6464
transform s : ASM!EClass
6565
to t : RDBMS!RdbmsValueField {
66-
guard : asmUtils.isEntityType(s)
66+
guard : s.isEntityType()
6767
t.setId("(asm/" + s.getId() + ")/TableCreateUserIdField");
68-
t.name = asmUtils.getClassifierFQName(s) + "#_create_user_id";
68+
t.name = s.getClassifierFQName() + "#_create_user_id";
6969
t.uuid = "(asm/" + s.getId() + ")/TableCreateUserIdField";
7070
log.debug(" Add create user ID: " + t.name);
7171
var table = s.equivalent("EClassToRdbmsTable");
@@ -78,9 +78,9 @@ rule EClassToTableCreateUserIdField
7878
rule EClassToTableCreateTimestampField
7979
transform s : ASM!EClass
8080
to t : RDBMS!RdbmsValueField {
81-
guard : asmUtils.isEntityType(s)
81+
guard : s.isEntityType()
8282
t.setId("(asm/" + s.getId() + ")/TableCreateTimestampField");
83-
t.name = asmUtils.getClassifierFQName(s) + "#_create_timestamp";
83+
t.name = s.getClassifierFQName() + "#_create_timestamp";
8484
t.uuid = "(asm/" + s.getId() + ")/TableCreateTimestampField";
8585
log.debug(" Add create timestamp: " + t.name);
8686
var table = s.equivalent("EClassToRdbmsTable");
@@ -93,9 +93,9 @@ rule EClassToTableCreateTimestampField
9393
rule EClassToTableUpdateUsernameField
9494
transform s : ASM!EClass
9595
to t : RDBMS!RdbmsValueField {
96-
guard : asmUtils.isEntityType(s)
96+
guard : s.isEntityType()
9797
t.setId("(asm/" + s.getId() + ")/TableUpdateUsernameField");
98-
t.name = asmUtils.getClassifierFQName(s) + "#_update_username";
98+
t.name = s.getClassifierFQName() + "#_update_username";
9999
t.uuid = "(asm/" + s.getId() + ")/TableUpdateUsernameField";
100100
log.debug(" Add update username: " + t.name);
101101
var table = s.equivalent("EClassToRdbmsTable");
@@ -108,9 +108,9 @@ rule EClassToTableUpdateUsernameField
108108
rule EClassToTableUpdateUserIdField
109109
transform s : ASM!EClass
110110
to t : RDBMS!RdbmsValueField {
111-
guard : asmUtils.isEntityType(s)
111+
guard : s.isEntityType()
112112
t.setId("(asm/" + s.getId() + ")/TableUpdateUserIdField");
113-
t.name = asmUtils.getClassifierFQName(s) + "#_update_user_id";
113+
t.name = s.getClassifierFQName() + "#_update_user_id";
114114
t.uuid = "(asm/" + s.getId() + ")/TableUpdateUserIdField";
115115
log.debug(" Add update user ID: " + t.name);
116116
var table = s.equivalent("EClassToRdbmsTable");
@@ -123,9 +123,9 @@ rule EClassToTableUpdateUserIdField
123123
rule EClassToTableUpdateTimestampField
124124
transform s : ASM!EClass
125125
to t : RDBMS!RdbmsValueField {
126-
guard : asmUtils.isEntityType(s)
126+
guard : s.isEntityType()
127127
t.setId("(asm/" + s.getId() + ")/TableUpdateTimestampField");
128-
t.name = asmUtils.getClassifierFQName(s) + "#_update_timestamp";
128+
t.name = s.getClassifierFQName() + "#_update_timestamp";
129129
t.uuid = "(asm/" + s.getId() + ")/TableUpdateTimestampField";
130130
log.debug(" Add update timestamp: " + t.name);
131131
var table = s.equivalent("EClassToRdbmsTable");
@@ -139,14 +139,14 @@ rule EClassToTableUpdateTimestampField
139139
rule EClassToRdbmsTable
140140
transform s : ASM!EClass
141141
to t : RDBMS!RdbmsTable {
142-
guard : asmUtils.isEntityType(s)
143-
log.debug(" Add table: " + asmUtils.getClassifierFQName(s));
142+
guard : s.isEntityType()
143+
log.debug(" Add table: " + s.getClassifierFQName());
144144
s.root().equivalent("rootPackegeToModel").rdbmsTables.add(t);
145145
t.setId("(asm/" + s.getId() + ")/Table");
146146
t.sqlName = s.tableSqlName();
147-
t.name = asmUtils.getClassifierFQName(s);
147+
t.name = s.getClassifierFQName();
148148
t.uuid = "(asm/" + s.getId() + ")/Table";
149-
for (sup in s.eSuperTypes.select(sup | asmUtils.isEntityType(sup))) {
149+
for (sup in s.eSuperTypes.select(sup | sup.isEntityType())) {
150150
t.parents.add(sup.equivalent("EClassToRdbmsTable"));
151151
}
152152
}

judo-tatami-asm2rdbms/src/main/epsilon/transformations/modules/reference.etl

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
rule EReferenceToRdbmsTableForeignKey
22
transform s : ASM!EReference
33
to fk : RDBMS!RdbmsForeignKey {
4-
guard: asmUtils.isEntityType(s.eReferenceType) and asmUtils.isEntityType(s.eContainingClass) and s.ruleMapping().foreignKey and not s.derived
4+
guard: s.eReferenceType.isEntityType() and s.eContainingClass.isEntityType() and s.ruleMapping().foreignKey and not s.derived
55

6-
log.debug(" Add foreign key: " + asmUtils.getReferenceFQName(s));
6+
log.debug(" Add foreign key: " + s.getReferenceFQName());
77

88
s.eContainingClass.equivalent("EClassToRdbmsTable").fields.add(fk);
99
fk.setId("(asm/" + s.getId() + ")/TableForeignKey");
@@ -28,9 +28,9 @@ rule EReferenceToRdbmsTableForeignKey
2828
rule EReferenceToRdbmsTableInverseForeignKey
2929
transform s : ASM!EReference
3030
to fk : RDBMS!RdbmsForeignKey {
31-
guard: asmUtils.isEntityType(s.eReferenceType) and asmUtils.isEntityType(s.eContainingClass) and s.ruleMapping().inverseForeignKey and not s.derived
31+
guard: s.eReferenceType.isEntityType() and s.eContainingClass.isEntityType() and s.ruleMapping().inverseForeignKey and not s.derived
3232

33-
log.debug(" Add inverse foreign key: " + asmUtils.getReferenceFQName(s));
33+
log.debug(" Add inverse foreign key: " + s.getReferenceFQName());
3434

3535
s.eReferenceType.equivalent("EClassToRdbmsTable").fields.add(fk);
3636

@@ -52,16 +52,16 @@ rule EReferenceToRdbmsTableInverseForeignKey
5252
rule EReferenceToRdbmsJunctionTable
5353
transform s : ASM!EReference
5454
to t : RDBMS!RdbmsJunctionTable {
55-
guard: asmUtils.isEntityType(s.eReferenceType) and asmUtils.isEntityType(s.eContainingClass)
55+
guard: s.eReferenceType.isEntityType() and s.eContainingClass.isEntityType()
5656

5757
s.eReferenceType.root().equivalent("rootPackegeToModel").rdbmsTables.add(t);
5858
t.setId("(asm/" + s.getId() + ")/JunctionTable");
5959
t.sqlName = s.referenceManyToManyTableSqlName();
6060
if (s.eOpposite.isDefined()) {
61-
t.name = asmUtils.getReferenceFQName(s) + " to " + asmUtils.getReferenceFQName(s.eOpposite);
61+
t.name = s.getReferenceFQName() + " to " + s.eOpposite.getReferenceFQName();
6262
t.uuid = "(asm/" + s.getId() + ")/JunctionTable";
6363
} else {
64-
t.name = asmUtils.getReferenceFQName(s) + " to " + asmUtils.getClassifierFQName(s.eReferenceType);
64+
t.name = s.getReferenceFQName() + " to " + s.eReferenceType.getClassifierFQName();
6565
t.uuid = "(asm/" + s.getId() + ")/JunctionTable";
6666
}
6767

@@ -71,9 +71,9 @@ rule EReferenceToRdbmsJunctionTable
7171
rule EReferenceToRdbmsJunctionTablePrimaryKey
7272
transform s : ASM!EReference
7373
to p : RDBMS!RdbmsIdentifierField {
74-
guard : asmUtils.isEntityType(s.eReferenceType) and asmUtils.isEntityType(s.eContainingClass) and s.ruleMapping().joinTable and s.ruleMapping().first and not s.derived
74+
guard : s.eReferenceType.isEntityType() and s.eContainingClass.isEntityType() and s.ruleMapping().joinTable and s.ruleMapping().first and not s.derived
7575

76-
log.debug(" Add junction table: " + asmUtils.getReferenceFQName(s));
76+
log.debug(" Add junction table: " + s.getReferenceFQName());
7777
var table = s.equivalent("EReferenceToRdbmsJunctionTable");
7878
table.fields.add(p);
7979
table.primaryKey = p;
@@ -88,9 +88,9 @@ rule EReferenceToRdbmsJunctionTablePrimaryKey
8888
rule EReferenceToRdbmsJunctionTableForeignKeyBidirectional
8989
transform s : ASM!EReference
9090
to fk : RDBMS!RdbmsForeignKey {
91-
guard : asmUtils.isEntityType(s.eReferenceType) and asmUtils.isEntityType(s.eContainingClass) and s.ruleMapping().joinTable and s.eOpposite.isDefined() and not s.derived
91+
guard : s.eReferenceType.isEntityType() and s.eContainingClass.isEntityType() and s.ruleMapping().joinTable and s.eOpposite.isDefined() and not s.derived
9292

93-
log.debug(" Add junction foreign bidirectional key: " + asmUtils.getReferenceFQName(s));
93+
log.debug(" Add junction foreign bidirectional key: " + s.getReferenceFQName());
9494

9595
var mainReference;
9696
if (s.name.compareTo(s.eOpposite.name) <= 0) {
@@ -119,9 +119,9 @@ rule EReferenceToRdbmsJunctionTableForeignKeyBidirectional
119119
rule EReferenceToRdbmsJunctionTableForeignKeyUnidirectional
120120
transform s : ASM!EReference
121121
to fk1 : RDBMS!RdbmsForeignKey, fk2 : RDBMS!RdbmsForeignKey {
122-
guard : asmUtils.isEntityType(s.eReferenceType) and asmUtils.isEntityType(s.eContainingClass) and s.ruleMapping().joinTable and s.eOpposite.isUndefined() and not s.derived
122+
guard : s.eReferenceType.isEntityType() and s.eContainingClass.isEntityType() and s.ruleMapping().joinTable and s.eOpposite.isUndefined() and not s.derived
123123

124-
log.debug(" Add junction foreign unidirectional key: " + asmUtils.getReferenceFQName(s));
124+
log.debug(" Add junction foreign unidirectional key: " + s.getReferenceFQName());
125125

126126
var junctionTable = s.equivalent("EReferenceToRdbmsJunctionTable");
127127

0 commit comments

Comments
 (0)