Skip to content

Commit

Permalink
JNG-4767 JSL UI syntax (#181)
Browse files Browse the repository at this point in the history
* JNG-4767 initial commit

* JNG-4767 parameter tests fixed

* JNG-4767 test.jsl fixed

* JNG-4767 query fixes

* JNG-4767 [Release] Updating versions

* JNG-4767 fixes according to review

* JNG-4767 [Release] Updating versions
  • Loading branch information
gprivi authored Jun 18, 2023
1 parent f2dc5c8 commit e6f4bec
Show file tree
Hide file tree
Showing 56 changed files with 617 additions and 628 deletions.
2 changes: 1 addition & 1 deletion judo-tatami-jsl-jsl2psm/.classpath
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,15 @@
// created target to containers, so the best practice to create a special to clone.
operation Any equivalentWithPrefix(transformation : String, prefix : String) : Any {
var f = self.equivalent(transformation);
if (f.isUndefined()) {
throw "Could not instantiate equivalent Rule: " + transformation + " Prefix: " + prefix;
}
var id = f.getId();
var r = f.eResource;
if (r.isUndefined()) {
throw "Object is not added to resource Rule: " + transformation + " Prefix: " + prefix + " Id: " + id;
}

if (f.eContainer != null) {
f = ecoreUtil.copy(f);
r.contents.add(f);
Expand Down
22 changes: 20 additions & 2 deletions judo-tatami-jsl-jsl2psm/src/main/epsilon/operations/id.eol
Original file line number Diff line number Diff line change
@@ -1,8 +1,26 @@
operation Any setId(id: String) {
self.eResource.setId(self, id);
if (id.isUndefined()) {
throw "ID is not defined" + self;
}
if (self.isUndefined()) {
throw "Could not determinate ID of " + self;
}
var r = self.eResource;
if (r.isUndefined()) {
throw "Object is not added to resource " + self;
}
r.setId(self, id);
}

operation Any getId() : String {
return self.eResource.getId(self);
if (self.isUndefined()) {
throw "Could not determinate ID of " + self;
}
var r = self.eResource;
if (r.isUndefined()) {
throw "Object is not added to resource " + self;
}

return r.getId(self);
}

Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import "dataTypeDeclaration.eol";
import "entityDeclaration.eol";
import "entityFieldDeclaration.eol";
import "entityMemberDeclaration.eol";
import "entityRelationDeclaration.eol";
import "entityDerivedDeclaration.eol";
import "entityQueryDeclaration.eol";
import "entityIdentifierDeclaration.eol";
import "entityRelationOpposite.eol";
import "primitiveDeclaration.eol";
import "enumDeclaration.eol";
Expand All @@ -15,5 +14,6 @@ import "queryDeclaration.eol";
import "modelDeclaration.eol";
import "transferDeclaration.eol";
import "transferFieldDeclaration.eol";
import "transferRelationDeclaration.eol";
import "expression.eol";
import "navigation.eol";
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ operation JSL!DataTypeDeclaration getId(): String {

@cached
operation JSL!ModifierMaxFileSize value() : Integer {
switch (self.unit.literal) {
switch (self.measure) {
case "kB": return self.numeric * 1000;
case "MB": return self.numeric * 1000 * 1000;
case "GB": return self.numeric * 1000 * 1000 * 1000;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@cached
operation JSL!EntityDerivedDeclaration getId(): String {
operation JSL!EntityCalculatedMemberDeclaration getId(): String {
return (self.eContainer.getId() + "/" + self.name);
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@cached
operation JSL!EntityFieldDeclaration getId(): String {
operation JSL!EntityStoredFieldDeclaration getId(): String {
return (self.eContainer.getId() + "/" + self.name);
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
@cached
operation JSL!EntityMemberDeclaration getReferenceType() : JSL!SingleType {
return jslUtils.getReferenceType(self);
}

@cached
operation JSL!EntityMemberDeclaration isQuery() : Boolean {
return jslUtils.isQuery(self);
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@cached
operation JSL!EntityRelationDeclaration getId(): String {
operation JSL!EntityStoredRelationDeclaration getId(): String {
return (self.eContainer.getId() + "/" + self.name);
}
Original file line number Diff line number Diff line change
@@ -1,22 +1,32 @@
@cached
operation JSL!Expression isDefaultValueForEntity(): Boolean {
return (self.eContainer.isKindOf(JSL!EntityIdentifierDeclaration) or self.eContainer.isKindOf(JSL!EntityFieldDeclaration)) and self.eContainer.defaultExpression == self;
return self.eContainer.isKindOf(JSL!EntityStoredFieldDeclaration) and self.eContainer.defaultExpr == self;
}

@cached
operation JSL!Expression isDefaultValueForError(): Boolean {
return self.eContainer.isKindOf(JSL!ErrorField) and self.eContainer.defaultExpression == self;
return self.eContainer.isKindOf(JSL!ErrorField) and self.eContainer.defaultExpr == self;
}


@cached
operation JSL!Expression isExpressionForTransferFieldReads(): Boolean {
return self.eContainer.isKindOf(JSL!TransferFieldDeclaration) and self.eContainer.reads == self;
return self.eContainer.isKindOf(JSL!TransferFieldDeclaration) and self.eContainer.reads and self.eContainer.getterExpr == self;
}

@cached
operation JSL!Expression isExpressionForTransferFieldMaps(): Boolean {
return self.eContainer.isKindOf(JSL!TransferFieldDeclaration) and self.eContainer.maps == self;
return self.eContainer.isKindOf(JSL!TransferFieldDeclaration) and self.eContainer.maps and self.eContainer.getterExpr == self;
}

@cached
operation JSL!Expression isExpressionForTransferRelationReads(): Boolean {
return self.eContainer.isKindOf(JSL!TransferRelationDeclaration) and self.eContainer.reads and self.eContainer.getterExpr == self;
}

@cached
operation JSL!Expression isExpressionForTransferRelationMaps(): Boolean {
return self.eContainer.isKindOf(JSL!TransferRelationDeclaration) and self.eContainer.maps and self.eContainer.getterExpr == self;
}


Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
@cached
operation JSL!TransferDeclaration getPSMEquivalent(): JUDOPSM!TransferObjectType {

if (self.map.isUndefined() and not self.automap) {
return self.equivalent("CreateUnmappedTransferObjectType");
} else if (self.map.isDefined() and not self.automap) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
@cached
operation JSL!TransferRelationDeclaration getReferenceType() : JSL!TransferDeclaration {
return jslUtils.getReferenceType(self);
}

@cached
operation JSL!TransferRelationDeclaration isAggregation() : Boolean {
return jslUtils.isAggregation(self);
}

Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ rule CreateNamedOppositeAssociationEnd
to t: JUDOPSM!AssociationEnd
{
var relationAddedFrom = s.eContainer;
var entityToAdd = relationAddedFrom.referenceType;
var entityToAdd = relationAddedFrom.getReferenceType();

t.setId("(jsl/" + s.getId() + ")/CreateNamedOppositeAssociationEnd");
t.name = s.name;
Expand All @@ -20,14 +20,14 @@ rule CreateNamedOppositeAssociationEnd
}

rule CreateDeclaredAssociationEnd
transform s: JSL!EntityRelationDeclaration
transform s: JSL!EntityStoredRelationDeclaration
to t: JUDOPSM!AssociationEnd
{
guard: s.referenceType.isKindOf(JSL!EntityDeclaration)
guard: s.getReferenceType().isKindOf(JSL!EntityDeclaration)

t.setId("(jsl/" + s.getId() + ")/CreateDeclaredAssociationEnd");
t.name = s.name;
t.target = s.referenceType.getPSMEquivalent();
t.target = s.getReferenceType().getPSMEquivalent();
t.cardinality = s.equivalentWithPrefix("CreateCardinalityForRelationDeclaration", t.getId());

// Reverse cascade delete not supported yet
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
@lazy
rule CreateCardinalityForRelationDeclaration
transform s: JSL!EntityRelationDeclaration
transform s: JSL!EntityStoredRelationDeclaration
to t: JUDOPSM!Cardinality {
t.setId("(jsl/" + s.getId() + ")/CreateCardinalityForRelationDeclaration");

Expand All @@ -10,7 +10,7 @@ rule CreateCardinalityForRelationDeclaration

@lazy
rule CreateCardinalityForFieldDeclaration
transform s: JSL!EntityFieldDeclaration
transform s: JSL!EntityStoredFieldDeclaration
to t: JUDOPSM!Cardinality {
t.setId("(jsl/" + s.getId() + ")/CreateCardinalityForFieldDeclaration");

Expand All @@ -31,10 +31,10 @@ rule CreateCardinalityForOppositeAddedRelation

@lazy
rule CreateCardinalityForDerivedDeclaration
transform s : JSL!EntityDerivedDeclaration
transform s : JSL!EntityCalculatedRelationDeclaration
to t : JUDOPSM!Cardinality
{
guard: s.referenceType.isKindOf(JSL!EntityDeclaration)
guard: s.getReferenceType().isKindOf(JSL!EntityDeclaration)

t.setId("(jsl/" + s.getId() + ")/CreateCardinalityForDerivedDeclaration");

Expand All @@ -44,10 +44,10 @@ rule CreateCardinalityForDerivedDeclaration

@lazy
rule CreateCardinalityForEntityQueryDeclaration
transform s : JSL!EntityQueryDeclaration
transform s : JSL!EntityCalculatedRelationDeclaration
to t : JUDOPSM!Cardinality
{
guard: s.referenceType.isKindOf(JSL!EntityDeclaration)
guard: s.isQuery() and s.getReferenceType().isKindOf(JSL!EntityDeclaration)

t.setId("(jsl/" + s.getId() + ")/CreateCardinalityForEntityQueryDeclaration");

Expand All @@ -70,13 +70,11 @@ rule CreateCardinalityForStaticQueryDeclaration


@lazy
rule CreateCardinalityForTransferFieldDeclaration
transform s : JSL!TransferFieldDeclaration
rule CreateCardinalityForTransferRelationDeclaration
transform s : JSL!TransferRelationDeclaration
to t : JUDOPSM!Cardinality
{
guard: s.referenceType.isKindOf(JSL!TransferDeclaration)

t.setId("(jsl/" + s.getId() + ")/CreateCardinalityForTransferFieldDeclaration");
t.setId("(jsl/" + s.getId() + ")/CreateCardinalityForTransferRelationDeclaration");

t.lower = s.isRequired and not s.isMany ? 1 : 0;
t.upper = s.isMany ? -1 : 1;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import "../../../../operations/_importAll.eol";

rule CreateContainmentFromField
transform s: JSL!EntityFieldDeclaration
transform s: JSL!EntityStoredFieldDeclaration
to t: JUDOPSM!Containment
{
guard: s.referenceType.isKindOf(JSL!EntityDeclaration)
guard: s.getReferenceType().isKindOf(JSL!EntityDeclaration)

t.setId("(jsl/" + s.getId() + ")/CreateContainmentFromField");
t.name = s.name;
t.target = s.referenceType.getPSMEquivalent();
t.target = s.getReferenceType().getPSMEquivalent();
t.cardinality = s.equivalentWithPrefix("CreateCardinalityForFieldDeclaration", t.getId());

s.eContainer.getPSMEquivalent().relations.add(t);
Expand All @@ -22,7 +22,7 @@ rule CreateContainmentFromField
rule CreateReadsReferenceExpressionTypeForTransferRelationDeclaration
transform s : JSL!Expression
to t: JUDOPSM!ReferenceExpressionType {
guard: s.isExpressionForTransferFieldReads() and s.eContainer.referenceType.isKindOf(JSL!TransferDeclaration)
guard: s.isExpressionForTransferRelationReads() and s.eContainer.getReferenceType().isKindOf(JSL!TransferDeclaration)

t.setId("(jsl/" + s.getId() + ")/CreateReadsReferenceExpressionTypeForTransferRelationDeclaration");
t.expression = expressionUtils.getJqlForExpression(s, entityNamePrefix, entityNamePostfix);
Expand All @@ -40,13 +40,13 @@ rule CreateReadsReferenceExpressionTypeForTransferRelationDeclaration
rule CreateReadsStaticNavigationForUnmappedTransferObjectTransferRelationDeclaration
transform s : JSL!Expression
to t: JUDOPSM!StaticNavigation {
guard: s.isExpressionForTransferFieldReads() and s.eContainer.referenceType.isKindOf(JSL!TransferDeclaration)
guard: s.isExpressionForTransferRelationReads() and s.eContainer.getReferenceType().isKindOf(JSL!TransferDeclaration)
and s.eContainer.eContainer.map.isUndefined()

t.setId("(jsl/" + s.getId() + ")/CreateReadsStaticNavigationForUnmappedTransferObjectTransferRelationDeclaration");
t.name = defaultReadsNamePrefix + s.eContainer.name + defaultReadsNameMidfix + s.eContainer.eContainer.name + defaultReadsNamePostfix;
t.target = s.eContainer.referenceType.getPSMEquivalent().entityType;
t.cardinality = s.eContainer.equivalentWithPrefix("CreateCardinalityForTransferFieldDeclaration", t.getId());
t.target = s.eContainer.getReferenceType().getPSMEquivalent().entityType;
t.cardinality = s.eContainer.equivalentWithPrefix("CreateCardinalityForTransferRelationDeclaration", t.getId());

s.eContainer.eContainer.eContainer.getModelRoot().elements.add(t);

Expand All @@ -57,13 +57,13 @@ rule CreateReadsStaticNavigationForUnmappedTransferObjectTransferRelationDeclara
rule CreateReadsNavigationPropertyForMappedTransferObjectTransferRelationDeclaration
transform s : JSL!Expression
to t: JUDOPSM!NavigationProperty {
guard: s.isExpressionForTransferFieldReads() and s.eContainer.referenceType.isKindOf(JSL!TransferDeclaration)
guard: s.isExpressionForTransferRelationReads() and s.eContainer.getReferenceType().isKindOf(JSL!TransferDeclaration)
and s.eContainer.eContainer.map.isDefined()

t.setId("(jsl/" + s.getId() + ")/CreateReadsNavigationPropertyForMappedTransferObjectTransferRelationDeclaration");
t.name = defaultReadsNamePrefix + s.eContainer.name + defaultReadsNameMidfix + s.eContainer.eContainer.name + defaultReadsNamePostfix;
t.target = s.eContainer.referenceType.getPSMEquivalent().entityType;
t.cardinality = s.eContainer.equivalentWithPrefix("CreateCardinalityForTransferFieldDeclaration", t.getId());
t.target = s.eContainer.getReferenceType().getPSMEquivalent().entityType;
t.cardinality = s.eContainer.equivalentWithPrefix("CreateCardinalityForTransferRelationDeclaration", t.getId());

s.eContainer.eContainer.map.entity.getPSMEquivalent().navigationProperties.add(t);

Expand All @@ -78,9 +78,9 @@ rule CreateReadsNavigationPropertyForMappedTransferObjectTransferRelationDeclara
rule CreateDefaultReferenceExpressionTypeForMappedTransferObjectConstructor
transform s : JSL!TransferDefault
to t: JUDOPSM!ReferenceExpressionType {
guard: s.field.reference.referenceType.isKindOf(JSL!TransferDeclaration) and s.field.reference.eContainer.map.isDefined()
guard: s.member.reference.getReferenceType().isKindOf(JSL!TransferDeclaration) and s.member.reference.eContainer.map.isDefined()

t.setId("(jsl/" + s.field.reference.getId() + ")/CreateDefaultReferenceExpressionTypeForMappedTransferObjectConstructor");
t.setId("(jsl/" + s.member.reference.getId() + ")/CreateDefaultReferenceExpressionTypeForMappedTransferObjectConstructor");
t.expression = expressionUtils.getJqlForExpression(s.rightValue, entityNamePrefix, entityNamePostfix);
s.equivalent("CreateDefaultNavigationPropertyForMappedTransferObjectConstructor").getterExpression = t;

Expand All @@ -91,13 +91,13 @@ rule CreateDefaultReferenceExpressionTypeForMappedTransferObjectConstructor
rule CreateDefaultNavigationPropertyForMappedTransferObjectConstructor
transform s : JSL!TransferDefault
to t: JUDOPSM!NavigationProperty {
guard: s.field.reference.referenceType.isKindOf(JSL!TransferDeclaration) and s.field.reference.eContainer.map.isDefined()
guard: s.member.reference.getReferenceType().isKindOf(JSL!TransferDeclaration) and s.member.reference.eContainer.map.isDefined()

t.setId("(jsl/" + s.field.reference.getId() + ")/CreateDefaultNavigationPropertyForMappedTransferObjectConstructor");
t.name = defaultDefaultNamePrefix + s.field.reference.name + defaultDefaultNameMidfix + s.field.reference.eContainer.name + defaultDefaultNamePostfix;
t.target = s.field.reference.referenceType.getPSMEquivalent().entityType;
t.cardinality = s.field.reference.equivalentWithPrefix("CreateCardinalityForTransferFieldDeclaration", t.getId());
s.field.reference.eContainer.map.entity.getPSMEquivalent().navigationProperties.add(t);
t.setId("(jsl/" + s.member.reference.getId() + ")/CreateDefaultNavigationPropertyForMappedTransferObjectConstructor");
t.name = defaultDefaultNamePrefix + s.member.reference.name + defaultDefaultNameMidfix + s.member.reference.eContainer.name + defaultDefaultNamePostfix;
t.target = s.member.reference.getReferenceType().getPSMEquivalent().entityType;
t.cardinality = s.member.reference.equivalentWithPrefix("CreateCardinalityForTransferRelationDeclaration", t.getId());
s.member.reference.eContainer.map.entity.getPSMEquivalent().navigationProperties.add(t);

log.debug("Created NavigationProperty for Transfer Object Default Value: " + s);
}
Expand All @@ -106,9 +106,9 @@ rule CreateDefaultNavigationPropertyForMappedTransferObjectConstructor
rule CreateDefaultReferenceExpressionTypeForUnmappedTransferObjectConstructor
transform s : JSL!TransferDefault
to t: JUDOPSM!ReferenceExpressionType {
guard: s.field.reference.referenceType.isKindOf(JSL!TransferDeclaration) and s.field.reference.eContainer.map.isUndefined()
guard: s.member.reference.getReferenceType().isKindOf(JSL!TransferDeclaration) and s.member.reference.eContainer.map.isUndefined()

t.setId("(jsl/" + s.field.reference.getId() + ")/CreateDefaultReferenceExpressionTypeForUnmappedTransferObjectConstructor");
t.setId("(jsl/" + s.member.reference.getId() + ")/CreateDefaultReferenceExpressionTypeForUnmappedTransferObjectConstructor");
t.expression = expressionUtils.getJqlForExpression(s.rightValue, entityNamePrefix, entityNamePostfix);
s.equivalent("CreateDefaultStaticNavigationForUnmappedTransferObjectConstructor").getterExpression = t;

Expand All @@ -119,12 +119,12 @@ rule CreateDefaultReferenceExpressionTypeForUnmappedTransferObjectConstructor
rule CreateDefaultStaticNavigationForUnmappedTransferObjectConstructor
transform s : JSL!TransferDefault
to t: JUDOPSM!StaticNavigation {
guard: s.field.reference.referenceType.isKindOf(JSL!TransferDeclaration) and s.field.reference.eContainer.map.isUndefined()
guard: s.member.reference.getReferenceType().isKindOf(JSL!TransferDeclaration) and s.member.reference.eContainer.map.isUndefined()

t.setId("(jsl/" + s.field.reference.getId() + ")/CreateDefaultStaticNavigationForUnmappedTransferObjectConstructor");
t.name = defaultDefaultNamePrefix + s.field.reference.name + defaultDefaultNameMidfix + s.field.reference.eContainer.name + defaultDefaultNamePostfix;
t.target = s.field.reference.referenceType.getPSMEquivalent().entityType;
t.cardinality = s.field.reference.equivalentWithPrefix("CreateCardinalityForTransferFieldDeclaration", t.getId());
t.setId("(jsl/" + s.member.reference.getId() + ")/CreateDefaultStaticNavigationForUnmappedTransferObjectConstructor");
t.name = defaultDefaultNamePrefix + s.member.reference.name + defaultDefaultNameMidfix + s.member.reference.eContainer.name + defaultDefaultNamePostfix;
t.target = s.member.reference.getReferenceType().getPSMEquivalent().entityType;
t.cardinality = s.member.reference.equivalentWithPrefix("CreateCardinalityForTransferRelationDeclaration", t.getId());

s.eContainer.eContainer.eContainer.getModelRoot().elements.add(t);

Expand Down
Loading

0 comments on commit e6f4bec

Please sign in to comment.