From d5f9271edbcdbb64445e30a5d9da4bd0f9ac37ca Mon Sep 17 00:00:00 2001
From: Johannes Mey <johannes.mey@tu-dresden.de>
Date: Sun, 22 Mar 2020 11:09:35 +0100
Subject: [PATCH] add 'literal' attribute to EEnumLiteral type

---
 src/main/jastadd/XMI/XMIWriter.jadd                           | 3 +++
 src/main/jastadd/ecore.relast                                 | 2 +-
 src/main/java/de/tudresden/inf/st/e2j/parser/EcoreParser.java | 3 +++
 3 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/main/jastadd/XMI/XMIWriter.jadd b/src/main/jastadd/XMI/XMIWriter.jadd
index 72d3dd8..00c12a3 100644
--- a/src/main/jastadd/XMI/XMIWriter.jadd
+++ b/src/main/jastadd/XMI/XMIWriter.jadd
@@ -240,6 +240,9 @@ aspect XMIWriter {
     }
     // from ENamedElement
     b.append(" value=\"").append(getValue()).append("\"");
+    if (getLiteral() != null && !getLiteral().equals("")) {
+      b.append(" literal=\"").append(getLiteral()).append("\"");
+    }
 
     if (numContainedChildren() == 0) {
       b.append("/>\n");
diff --git a/src/main/jastadd/ecore.relast b/src/main/jastadd/ecore.relast
index ac69718..fab38ac 100644
--- a/src/main/jastadd/ecore.relast
+++ b/src/main/jastadd/ecore.relast
@@ -11,7 +11,7 @@ EAnnotation : EModelElement ::= <Source:String> Detail:EStringToStringMapEntry*;
 
 
 abstract EClassifier : ENamedElement ::= ETypeParameter* <InstanceClassName:String>;
-EEnumLiteral : ENamedElement ::= <Value:int>;
+EEnumLiteral : ENamedElement ::= <Value:int> <Literal:String>;
 abstract ETypedElement : ENamedElement ::= [EGenericType] <Ordered:boolean> <Unique:boolean> <LowerBound:int> <UpperBound:int>;
 
 EClass : EClassifier ::= EStructuralFeature* EOperation* EGenericSuperType:EGenericType* <Abstract:boolean> <Interface:boolean>;
diff --git a/src/main/java/de/tudresden/inf/st/e2j/parser/EcoreParser.java b/src/main/java/de/tudresden/inf/st/e2j/parser/EcoreParser.java
index 5c39b14..84ed860 100644
--- a/src/main/java/de/tudresden/inf/st/e2j/parser/EcoreParser.java
+++ b/src/main/java/de/tudresden/inf/st/e2j/parser/EcoreParser.java
@@ -562,6 +562,9 @@ public class EcoreParser {
           case "value":
             eEnumLiteral.setValue(Integer.valueOf(attribute.getValue()));
             break;
+          case "literal":
+            eEnumLiteral.setLiteral(attribute.getValue());
+            break;
           default:
             logger.warn("ignoring attribute {}:{}", attribute.getName().getPrefix(), attribute.getName().getLocalPart());
         }
-- 
GitLab