Skip to content

Commit 3e2bffc

Browse files
author
Bob Garner
committed
Added support for T tags on groups of attributes and relationships to reduce redundancy.
1 parent 8742dcb commit 3e2bffc

File tree

3 files changed

+79
-10
lines changed

3 files changed

+79
-10
lines changed

src/main/antlr4/org/entityc/compiler/EntityLanguage.g4

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,8 @@ attributes
364364

365365
attributesBody
366366
:
367-
( attribute
367+
( tagStatement
368+
| attribute
368369
)*
369370
;
370371

@@ -411,7 +412,8 @@ relationships
411412

412413
relationshipsBody
413414
:
414-
( relationshipStatement
415+
( tagStatement
416+
| relationshipStatement
415417
)*
416418
;
417419

@@ -835,7 +837,8 @@ domainAttributes
835837

836838
domainAttributesBody
837839
:
838-
( domainAttributesRenameTo
840+
( tagStatement
841+
| domainAttributesRenameTo
839842
| domainAttributesRenameAppendPrepend
840843
| domainAttributeReplaces
841844
| domainAttributeExclude
@@ -901,7 +904,8 @@ domainRelationships
901904

902905
domainRelationshipsBody
903906
:
904-
( domainRelationship
907+
( tagStatement
908+
| domainRelationship
905909
)*
906910
;
907911

src/main/java/org/entityc/compiler/ASTVisitor.java

Lines changed: 69 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ public class ASTVisitor extends EntityLanguageBaseVisitor {
113113
private MTDEInterface currentDomainEntityInterface;
114114
private MTDEInterfaceOperation currentDomainEntityInterfaceOperation;
115115
private MTSpace foundSpace;
116+
private List<Vector<String>> inheritedTags;
116117

117118
public MTSpace getFoundSpace() {
118119
return foundSpace;
@@ -1309,6 +1310,19 @@ public MTTagSet visitViewTaggedListItem(EntityLanguageParser.ViewTaggedListItemC
13091310
return tagSet;
13101311
}
13111312

1313+
@Override
1314+
public Object visitRelationshipsBody(EntityLanguageParser.RelationshipsBodyContext ctx) {
1315+
if (ctx.tagStatement() != null) {
1316+
inheritedTags = tagStringsFromTagStatements(ctx.tagStatement());
1317+
}
1318+
1319+
Object object = super.visitRelationshipsBody(ctx);
1320+
1321+
inheritedTags = null;
1322+
1323+
return object;
1324+
}
1325+
13121326
@Override
13131327
public MTRelationship visitRelationshipStatement(EntityLanguageParser.RelationshipStatementContext ctx) {
13141328
HalfRelationshipPlurality toPlurality = HalfRelationshipPlurality.ONE;
@@ -1350,6 +1364,9 @@ public MTRelationship visitRelationshipStatement(EntityLanguageParser.Relationsh
13501364
toEntityName, optional, parent, reverseName, toEntityIdName,
13511365
null);
13521366

1367+
if (inheritedTags != null) {
1368+
relationship.addTagsWithValues(inheritedTags);
1369+
}
13531370
if (instantiation != null) {
13541371
relationship.getTo().setTemplateInstantiation(instantiation);
13551372
}
@@ -1909,12 +1926,26 @@ public Object visitDomainVirtualAttribute(EntityLanguageParser.DomainVirtualAttr
19091926
return null;
19101927
}
19111928

1929+
@Override
1930+
public Object visitDomainAttributesBody(EntityLanguageParser.DomainAttributesBodyContext ctx) {
1931+
if (ctx.tagStatement() != null) {
1932+
inheritedTags = tagStringsFromTagStatements(ctx.tagStatement());
1933+
}
1934+
Object object = super.visitDomainAttributesBody(ctx);
1935+
inheritedTags = null;
1936+
1937+
return object;
1938+
}
1939+
19121940
@Override
19131941
public Object visitDomainAttribute(EntityLanguageParser.DomainAttributeContext ctx) {
19141942
String attributeName = ctx.id().getText();
19151943
if (currentDomainEntity != null) {
1916-
MTDEAttribute domainEntityAttribute = currentDomainEntity.addDomainAttributeWithName(
1944+
MTDEAttribute domainEntityAttribute = currentDomainEntity.addDomainAttributeWithName(
19171945
attributeName);
1946+
if (inheritedTags != null) {
1947+
domainEntityAttribute.addTagsWithValues(inheritedTags);
1948+
}
19181949
EntityLanguageParser.DomainAttributeBodyContext bodyContext = ctx.domainAttributeBody();
19191950
if (bodyContext != null) {
19201951
if (bodyContext.descriptionStatement() != null) {
@@ -1928,19 +1959,35 @@ public Object visitDomainAttribute(EntityLanguageParser.DomainAttributeContext c
19281959
return null;
19291960
}
19301961

1962+
@Override
1963+
public Object visitDomainRelationshipsBody(EntityLanguageParser.DomainRelationshipsBodyContext ctx) {
1964+
if (ctx.tagStatement() != null) {
1965+
inheritedTags = tagStringsFromTagStatements(ctx.tagStatement());
1966+
}
1967+
1968+
Object object = super.visitDomainRelationshipsBody(ctx);
1969+
1970+
inheritedTags = null;
1971+
1972+
return object;
1973+
}
1974+
19311975
@Override
19321976
public Object visitDomainRelationship(EntityLanguageParser.DomainRelationshipContext ctx) {
19331977
String relationshipName = ctx.id().getText();
19341978
if (currentDomainEntity != null) {
1935-
MTDERelationship domainEntityAttribute = currentDomainEntity.addDomainRelationshipWithName(
1979+
MTDERelationship domainEntityRelationship = currentDomainEntity.addDomainRelationshipWithName(
19361980
relationshipName);
1981+
if (inheritedTags != null) {
1982+
domainEntityRelationship.addTagsWithValues(inheritedTags);
1983+
}
19371984
EntityLanguageParser.DomainRelationshipBodyContext bodyContext = ctx.domainRelationshipBody();
19381985
if (bodyContext != null) {
19391986
if (bodyContext.descriptionStatement() != null) {
1940-
setNodeDescription(domainEntityAttribute, bodyContext.descriptionStatement(), false);
1987+
setNodeDescription(domainEntityRelationship, bodyContext.descriptionStatement(), false);
19411988
}
19421989
if (bodyContext.tagStatement() != null) {
1943-
domainEntityAttribute.addTagsWithValues(tagStringsFromTagStatements(bodyContext.tagStatement()));
1990+
domainEntityRelationship.addTagsWithValues(tagStringsFromTagStatements(bodyContext.tagStatement()));
19441991
}
19451992
}
19461993
}
@@ -1980,6 +2027,20 @@ public Object visitDomainAttributeAdd(EntityLanguageParser.DomainAttributeAddCon
19802027
return null;
19812028
}
19822029

2030+
@Override
2031+
public Object visitAttributesBody(EntityLanguageParser.AttributesBodyContext ctx) {
2032+
2033+
if (ctx.tagStatement() != null) {
2034+
inheritedTags = tagStringsFromTagStatements(ctx.tagStatement());
2035+
}
2036+
2037+
Object object = super.visitAttributesBody(ctx);
2038+
2039+
inheritedTags = null;
2040+
2041+
return object;
2042+
}
2043+
19832044
@Override
19842045
public MTAttribute visitAttribute(EntityLanguageParser.AttributeContext ctx) {
19852046
String attributeName = ctx.id(0).getText();
@@ -2065,6 +2126,10 @@ public MTAttribute visitAttribute(EntityLanguageParser.AttributeContext ctx) {
20652126
}
20662127
}
20672128

2129+
if (inheritedTags != null) {
2130+
attribute.addTagsWithValues(inheritedTags);
2131+
}
2132+
20682133
EntityLanguageParser.AttributeBodyContext bodyContext = ctx.attributeBody();
20692134
if (bodyContext != null) {
20702135
if (bodyContext.descriptionStatement() != null) {

src/main/java/org/entityc/compiler/EntityCompiler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@
5252

5353
public class EntityCompiler {
5454

55-
public static final String COMPILER_VERSION = "0.16.0";
56-
public static final String LANGUAGE_VERSION = "0.13.0";
55+
public static final String COMPILER_VERSION = "0.17.0";
56+
public static final String LANGUAGE_VERSION = "0.14.0";
5757
private static final Map<String, String> defineValues = new HashMap<>();
5858
private static final Set<String> templateSearchPath = new HashSet<>();
5959
private static CommandLine commandLine;

0 commit comments

Comments
 (0)