Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenrik Rentz-Reichert2019-11-25 14:44:15 +0000
committerGerrit Code Review @ Eclipse.org2019-11-25 14:44:15 +0000
commitd9c23deb55a485355b1e3f728235e7dffa0bb465 (patch)
treeb0d6630f33a2df95f817b7134cb85efbfdfce9ce /plugins
parent4d8f6213573792f201e205032469015d72b155d6 (diff)
parenteead6b73fbfddd3e7ed7936b91bb0d293ef85d9a (diff)
downloadorg.eclipse.etrice-d9c23deb55a485355b1e3f728235e7dffa0bb465.tar.gz
org.eclipse.etrice-d9c23deb55a485355b1e3f728235e7dffa0bb465.tar.xz
org.eclipse.etrice-d9c23deb55a485355b1e3f728235e7dffa0bb465.zip
Merge "Bug 545524 - [c.gen] Translated enums are generated multi line"
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/DetailCodeTranslator.java46
1 files changed, 33 insertions, 13 deletions
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/DetailCodeTranslator.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/DetailCodeTranslator.java
index f59a39238..c34a28a35 100644
--- a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/DetailCodeTranslator.java
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/DetailCodeTranslator.java
@@ -15,9 +15,11 @@
package org.eclipse.etrice.generator.base;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
+import java.util.stream.Collectors;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.etrice.core.fsm.fSM.AbstractInterfaceItem;
@@ -255,7 +257,6 @@ public class DetailCodeTranslator extends FSMDetailCodeTranslator {
return text;
ITranslationProvider prov = (ITranslationProvider) provider;
-
if (prov.translateEnums()) {
RoomCrossReferencer crossReferencer = new RoomCrossReferencer();
@@ -270,22 +271,41 @@ public class DetailCodeTranslator extends FSMDetailCodeTranslator {
else if (container instanceof ProtocolClass)
enumClasses = crossReferencer.getReferencedEnumClasses((ProtocolClass)container);
- if (enumClasses!=null) {
- for (EnumerationType et : enumClasses) {
- for (EnumLiteral lit : et.getLiterals()) {
- String pattern = et.getName()+"."+lit.getName();
- if (text.contains(pattern)) {
- String replacement = prov.getEnumText(lit);
- text = text.replace(pattern, replacement);
- }
- }
- }
- }
- return text;
+ return replaceAllEnums(text, enumClasses);
}
else
return text;
}
+
+ private String replaceAllEnums(String text, Set<EnumerationType> enumClasses) {
+ return Arrays.stream(text.split("\n")) //
+ .map(line -> replaceEnums(line, enumClasses)) //
+ .collect(Collectors.joining("\n"));
+ }
+
+ private String replaceEnums(String line, Set<EnumerationType> enumClasses) {
+ // only do replacements before // (iff)
+ int pos = line.indexOf("//");
+ String input = pos<0 ? line : line.substring(0, pos);
+
+ ITranslationProvider prov = (ITranslationProvider) provider;
+
+ for (EnumerationType et : enumClasses) {
+ for (EnumLiteral lit : et.getLiterals()) {
+ String pattern = et.getName()+"."+lit.getName();
+ if (input.contains(pattern)) {
+ String replacement = prov.getEnumText(lit);
+ input = input.replace(pattern, replacement);
+ }
+ }
+ }
+
+ if (pos>=0) {
+ input += line.substring(pos);
+ }
+
+ return input;
+ }
@Override
protected boolean argsMatching(EObject amsg, ArrayList<String> args) {

Back to the top