Repository: eclipse-set/set
Pull request #1511: Rendere ENUM 'sonstige' 
Author: login: TruongQuangSB
Created: 2025-04-08T08:45:44Z | Merged: 2025-04-09T13:43:46Z

- Visualation `Bearbeitungsvermerk.Kurztext` instead of enum value, when the Enumerator have `sonstige` value


Diff:
diff --git a/java/bundles/org.eclipse.set.core.services/src/org/eclipse/set/core/services/enumtranslation/EnumTranslationService.java b/java/bundles/org.eclipse.set.core.services/src/org/eclipse/set/core/services/enumtranslation/EnumTranslationService.java
index d672a39df3..2f647bcd5c 100644
--- a/java/bundles/org.eclipse.set.core.services/src/org/eclipse/set/core/services/enumtranslation/EnumTranslationService.java
+++ b/java/bundles/org.eclipse.set.core.services/src/org/eclipse/set/core/services/enumtranslation/EnumTranslationService.java
@@ -13,6 +13,8 @@
 import org.eclipse.emf.common.util.Enumerator;
 import org.eclipse.set.basis.Translateable;
 import org.eclipse.set.basis.exceptions.NoEnumTranslationFound;
+import org.eclipse.set.model.planpro.BasisTypen.BasisAttribut_AttributeGroup;
+import org.eclipse.set.model.planpro.Basisobjekte.Basis_Objekt;
 
 /**
  * This service can translate enumerators.
@@ -62,4 +64,14 @@ EnumTranslation translate(Enumerator enumerator)
 	 * @return the translation
 	 */
 	EnumTranslation translate(Translateable translateable);
+
+	/**
+	 * @param owner
+	 *            the {@link Basis_Objekt}
+	 * @param obj
+	 *            the enum
+	 * @return the translation
+	 */
+	EnumTranslation translate(BasisAttribut_AttributeGroup owner,
+			Enumerator obj);
 }
diff --git a/java/bundles/org.eclipse.set.core/src/org/eclipse/set/core/enumtranslation/EnumTranslationServiceImpl.java b/java/bundles/org.eclipse.set.core/src/org/eclipse/set/core/enumtranslation/EnumTranslationServiceImpl.java
index bb94db01b1..6d1a562686 100644
--- a/java/bundles/org.eclipse.set.core/src/org/eclipse/set/core/enumtranslation/EnumTranslationServiceImpl.java
+++ b/java/bundles/org.eclipse.set.core/src/org/eclipse/set/core/enumtranslation/EnumTranslationServiceImpl.java
@@ -10,6 +10,8 @@
 
 import java.lang.reflect.Field;
 import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
 
 import org.eclipse.emf.common.util.Enumerator;
 import org.eclipse.set.basis.Translateable;
@@ -17,6 +19,7 @@
 import org.eclipse.set.core.Messages;
 import org.eclipse.set.core.services.enumtranslation.EnumTranslation;
 import org.eclipse.set.core.services.enumtranslation.EnumTranslationService;
+import org.eclipse.set.model.planpro.BasisTypen.BasisAttribut_AttributeGroup;
 import org.eclipse.set.utils.enums.EnumTranslationUtils;
 import org.osgi.service.component.annotations.Component;
 import org.osgi.service.component.annotations.Reference;
@@ -54,6 +57,50 @@ public EnumTranslation translate(final Enumerator obj) {
 		return translate(enumeratorName);
 	}
 
+	@Override
+	public EnumTranslation translate(final BasisAttribut_AttributeGroup owner,
+			final Enumerator enumerator) {
+		final EnumTranslation translate = translate(enumerator);
+
+		if (!translate.getAlternative().equals("sonstige")) { //$NON-NLS-1$
+			return translate;
+		}
+		final String notes = owner.getIDBearbeitungsvermerk()
+				.stream()
+				.map(note -> Optional.ofNullable(note.getValue()
+						.getBearbeitungsvermerkAllg()
+						.getKurztext()
+						.getWert()))
+				.filter(Optional::isPresent)
+				.map(Optional::get)
+				.collect(Collectors.joining(",\r\n")); //$NON-NLS-1$
+		if (notes.isBlank() || notes.isEmpty()) {
+			return translate;
+		}
+		return new EnumTranslation() {
+
+			@Override
+			public String getSorting() {
+				return notes;
+			}
+
+			@Override
+			public String getPresentation() {
+				return notes;
+			}
+
+			@Override
+			public String getKeyBasis() {
+				return "sonstige"; //$NON-NLS-1$
+			}
+
+			@Override
+			public String getAlternative() {
+				return notes;
+			}
+		};
+	}
+
 	@Override
 	public <C extends Enumerator> List<EnumTranslation> translate(
 			final List<C> enums) {
diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/AbstractPlanPro2TableModelTransformator.xtend b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/AbstractPlanPro2TableModelTransformator.xtend
index b13d7d1989..722f2da155 100644
--- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/AbstractPlanPro2TableModelTransformator.xtend
+++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/AbstractPlanPro2TableModelTransformator.xtend
@@ -9,17 +9,19 @@
 package org.eclipse.set.feature.table.pt1
 
 import java.util.Comparator
+import java.util.Set
 import org.eclipse.emf.common.util.Enumerator
 import org.eclipse.set.basis.constants.ToolboxConstants
 import org.eclipse.set.core.services.enumtranslation.EnumTranslationService
-import org.eclipse.set.ppmodel.extensions.container.MultiContainer_AttributeGroup
-import org.eclipse.set.utils.table.AbstractTableModelTransformator
+import org.eclipse.set.model.planpro.BasisTypen.BasisAttribut_AttributeGroup
+import org.eclipse.set.model.planpro.Basisobjekte.Basis_Objekt
 import org.eclipse.set.model.tablemodel.ColumnDescriptor
-import java.util.Set
-import org.eclipse.set.utils.table.TMFactory
 import org.eclipse.set.model.tablemodel.TableRow
-import org.eclipse.set.model.planpro.Basisobjekte.Basis_Objekt
 import org.eclipse.set.model.tablemodel.TablemodelFactory
+import org.eclipse.set.ppmodel.extensions.container.MultiContainer_AttributeGroup
+import org.eclipse.set.utils.table.AbstractTableModelTransformator
+import org.eclipse.set.utils.table.TMFactory
+
 import static extension org.eclipse.set.model.tablemodel.extensions.TableRowExtensions.*
 
 abstract class AbstractPlanPro2TableModelTransformator extends AbstractTableModelTransformator<MultiContainer_AttributeGroup> {
@@ -44,7 +46,9 @@ abstract class AbstractPlanPro2TableModelTransformator extends AbstractTableMode
 		footnoteTransformation.transform(object, row)
 
 		// Ensure a cell exists for the last column to fill footnotes into
-		val column = this.cols.filter[columnPosition !== null].sortBy[columnPosition].last
+		val column = this.cols.filter[columnPosition !== null].sortBy [
+			columnPosition
+		].last
 		val cell = row.getCell(column)
 		if (cell.content === null)
 			cell.content = TablemodelFactory.eINSTANCE.createStringCellContent
@@ -57,11 +61,31 @@ abstract class AbstractPlanPro2TableModelTransformator extends AbstractTableMode
 	 * 
 	 * @return the translation or <code>null</code>, if the enumerator is <code>null</code>
 	 */
-	def String translate(Enumerator enumerator) {
-		if (enumerator === null) {
-			return null
+	def String translateEnum(BasisAttribut_AttributeGroup owner) {
+		try {
+			if (owner === null) {
+				return null
+			}
+			val wertField = owner.class.declaredFields.findFirst [
+				it.name === "wert"
+			]
+			if (wertField === null) {
+				throw new NullPointerException
+			}
+			wertField.accessible = true
+			if (!(wertField.get(owner) instanceof Enumerator)) {
+				throw new IllegalArgumentException
+			}
+			if (wertField.get(owner) === null) {
+				return null
+			}
+
+			return enumTranslationService.translate(owner,
+				wertField.get(owner) as Enumerator).alternative
+		} catch (Exception e) {
+			throw new RuntimeException(e)
 		}
-		return enumTranslationService.translate(enumerator).alternative
+
 	}
 
 	/**
@@ -87,7 +111,7 @@ abstract class AbstractPlanPro2TableModelTransformator extends AbstractTableMode
 		}
 		return column;
 	}
-	
+
 	override transformTableContent(MultiContainer_AttributeGroup container,
 		TMFactory factory) {
 		return transformTableContent(container, factory, null)
diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssbb/SsbbTransformator.xtend b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssbb/SsbbTransformator.xtend
index 49a8ccf1e1..74e2977152 100644
--- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssbb/SsbbTransformator.xtend
+++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssbb/SsbbTransformator.xtend
@@ -130,8 +130,8 @@ class SsbbTransformator extends AbstractPlanPro2TableModelTransformator {
 			cols.getColumn(Bauart),
 			einrichtung,
 			[
-				bedienEinrichtOertlichAllg?.bedienEinrichtBauart?.wert?.
-					translate ?: ""
+				bedienEinrichtOertlichAllg?.bedienEinrichtBauart.
+					translateEnum ?: ""
 			]
 		)
 
@@ -141,8 +141,8 @@ class SsbbTransformator extends AbstractPlanPro2TableModelTransformator {
 			cols.getColumn(Befestigung_Art),
 			einrichtung,
 			[
-				unterbringung?.unterbringungAllg?.unterbringungBefestigung?.
-					wert?.translate ?: ""
+				unterbringung?.unterbringungAllg?.unterbringungBefestigung.
+					translateEnum ?: ""
 			]
 		)
 
diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssit/SsitTransformator.xtend b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssit/SsitTransformator.xtend
index 448966b9c7..f4e6b04bb3 100644
--- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssit/SsitTransformator.xtend
+++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssit/SsitTransformator.xtend
@@ -97,8 +97,8 @@ class SsitTransformator extends AbstractPlanPro2TableModelTransformator {
 			cols.getColumn(Bauart),
 			einrichtung,
 			[
-				bedienEinrichtOertlichAllg?.bedienEinrichtBauart?.wert?.
-					translate ?: ""
+				bedienEinrichtOertlichAllg?.bedienEinrichtBauart?.
+					translateEnum ?: ""
 			]
 		)
 
@@ -108,7 +108,7 @@ class SsitTransformator extends AbstractPlanPro2TableModelTransformator {
 			einrichtung,
 			[
 				unterbringung?.unterbringungAllg?.unterbringungBefestigung?.
-					wert?.translate ?: ""
+					translateEnum ?: ""
 			]
 		)
 
@@ -146,8 +146,9 @@ class SsitTransformator extends AbstractPlanPro2TableModelTransformator {
 			cols.getColumn(Melder),
 			einrichtung,
 			[
-				lBedienAnzeigeElementAllg.map[melder?.wert?.translate].toSet.
-					filterNull
+				lBedienAnzeigeElementAllg.map [ bedienAnzeigeAllg |
+					bedienAnzeigeAllg.melder?.translateEnum
+				].toSet.filterNull
 			],
 			null,
 			[it]
@@ -158,8 +159,9 @@ class SsitTransformator extends AbstractPlanPro2TableModelTransformator {
 			cols.getColumn(Schalter),
 			einrichtung,
 			[
-				lBedienAnzeigeElementAllg.map[schalter?.wert?.translate].toSet.
-					filterNull
+				lBedienAnzeigeElementAllg.map [ bedienAnzeigeAllg |
+					bedienAnzeigeAllg.schalter?.translateEnum
+				].toSet.filterNull
 			],
 			null,
 			[it]
@@ -170,8 +172,9 @@ class SsitTransformator extends AbstractPlanPro2TableModelTransformator {
 			cols.getColumn(Taste),
 			einrichtung,
 			[
-				lBedienAnzeigeElementAllg.map[taste?.wert?.translate].toSet.
-					filterNull
+				lBedienAnzeigeElementAllg.map [ bedienAnzeigeAllg |
+					bedienAnzeigeAllg.taste?.translateEnum
+				].toSet.filterNull
 			],
 			null,
 			[it]
diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sska/SskaTransformator.xtend b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sska/SskaTransformator.xtend
index 831da6c769..e9f345e3a7 100644
--- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sska/SskaTransformator.xtend
+++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sska/SskaTransformator.xtend
@@ -60,7 +60,8 @@ class SskaTransformator extends AbstractPlanPro2TableModelTransformator {
 		elementList.addAll(estwzentraleinheitList);
 		elementList.addAll(aussenelementansteuerungList);
 		// Basis_Objekt
-		for (element : elementList.filter[isPlanningObject].filterObjectsInControlArea(controlArea)) {
+		for (element : elementList.filter[isPlanningObject].
+			filterObjectsInControlArea(controlArea)) {
 			if (Thread.currentThread.interrupted) {
 				return null
 			}
@@ -95,7 +96,10 @@ class SskaTransformator extends AbstractPlanPro2TableModelTransformator {
 				instance,
 				cols.getColumn(Unterbringung_Art),
 				element,
-				[unterbringung.art.translate ?: ""]
+				[
+					unterbringung?.unterbringungAllg?.unterbringungArt?.
+						translateEnum ?: ""
+				]
 			)
 
 			// E: Sska.Grundsatzangaben.Unterbringung.Ort
@@ -132,7 +136,10 @@ class SskaTransformator extends AbstractPlanPro2TableModelTransformator {
 				instance,
 				cols.getColumn(Unterbringung_Tueranschlag),
 				element,
-				[unterbringung.tueranschlag.translate ?: ""]
+				[
+					unterbringung?.unterbringungAllg?.tueranschlag?.
+						translateEnum ?: ""
+				]
 			)
 
 			// I: Sska.Verknüpfungen.Information.primaer
@@ -262,7 +269,7 @@ class SskaTransformator extends AbstractPlanPro2TableModelTransformator {
 
 	private def dispatch String getElementArt(
 		Aussenelementansteuerung element) {
-		return element?.AEAAllg?.aussenelementansteuerungArt?.wert?.translate ?:
+		return element?.AEAAllg?.aussenelementansteuerungArt?.translateEnum ?:
 			"";
 	}
 
@@ -350,8 +357,8 @@ class SskaTransformator extends AbstractPlanPro2TableModelTransformator {
 			val energiePrimaer = element.elementEnergiePrimaer
 			return energiePrimaer.bezeichner
 		} else {
-			return element?.AEAEnergieversorgung?.energieversorgungArt?.wert?.
-				translate ?: "";
+			return element?.AEAEnergieversorgung?.energieversorgungArt.
+				translateEnum ?: "";
 		}
 	}
 
@@ -360,8 +367,8 @@ class SskaTransformator extends AbstractPlanPro2TableModelTransformator {
 		if (element.ESTWZEEnergieversorgung?.IDEnergiePrimaer !== null) {
 			return element.elementEnergiePrimaer.bezeichner
 		}
-		return element?.ESTWZEEnergieversorgung?.energieversorgungArt?.wert?.
-			translate ?: ""
+		return element?.ESTWZEEnergieversorgung?.energieversorgungArt.
+			translateEnum ?: ""
 	}
 
 	private def dispatch String getElementVerknuepfungenEnergieSekundaer(
@@ -375,8 +382,8 @@ class SskaTransformator extends AbstractPlanPro2TableModelTransformator {
 			val energieSekundaer = element.elementEnergieSekundaer
 			return energieSekundaer.bezeichner
 		}
-		return element?.AEAEnergieversorgung?.energieversorgungArtErsatz?.wert?.
-			translate ?: "";
+		return element?.AEAEnergieversorgung?.energieversorgungArtErsatz.
+			translateEnum ?: "";
 	}
 
 	private def dispatch String getElementVerknuepfungenEnergieSekundaer(
@@ -384,8 +391,8 @@ class SskaTransformator extends AbstractPlanPro2TableModelTransformator {
 		if (element?.ESTWZEEnergieversorgung?.IDEnergieSekundaer !== null) {
 			return element.elementEnergieSekundaer.bezeichner
 		}
-		return element?.ESTWZEEnergieversorgung?.energieversorgungArtErsatz?.
-			wert?.translate ?: ""
+		return element?.ESTWZEEnergieversorgung?.energieversorgungArtErsatz.
+			translateEnum ?: ""
 	}
 
 	private def dispatch String getElementVerknuepfungenBedienungLokal(
@@ -553,7 +560,7 @@ class SskaTransformator extends AbstractPlanPro2TableModelTransformator {
 	private dispatch def String ipAdressangabenGFKKategorie(
 		Aussenelementansteuerung ansteuerung
 	) {
-		return ansteuerung?.AEAGFKIPAdressblock?.GFKKategorie?.wert?.translate
+		return ansteuerung?.AEAGFKIPAdressblock?.GFKKategorie?.translateEnum
 	}
 
 	private dispatch def String ipAdressangabenGFKKategorie(
@@ -571,8 +578,7 @@ class SskaTransformator extends AbstractPlanPro2TableModelTransformator {
 	private dispatch def String ipAdressangabenRegionalbereich(
 		Aussenelementansteuerung ansteuerung
 	) {
-		return ansteuerung?.AEAGFKIPAdressblock?.regionalbereich?.wert?.
-			translate
+		return ansteuerung?.AEAGFKIPAdressblock?.regionalbereich?.translateEnum
 	}
 
 	private dispatch def String ipAdressangabenRegionalbereich(
diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskf/SskfTransformator.xtend b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskf/SskfTransformator.xtend
index 698f7c6e84..dc5e2cc3a3 100644
--- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskf/SskfTransformator.xtend
+++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskf/SskfTransformator.xtend
@@ -86,7 +86,7 @@ class SskfTransformator extends AbstractPlanPro2TableModelTransformator {
 				instance,
 				cols.getColumn(Unterbringung_Art),
 				fmaAnlage,
-				[FMAAnlageAllg?.FMAArt?.wert?.translate ?: ""]
+				[FMAAnlageAllg?.FMAArt?.translateEnum ?: ""]
 			)
 
 			// E: Grundsatzangaben.Typ			
@@ -303,7 +303,7 @@ class SskfTransformator extends AbstractPlanPro2TableModelTransformator {
 				fmaAnlage,
 				[
 					schaltmittelZuordnungen.map [
-						schaltmittelFunktion.wert.translate
+						schaltmittelFunktion?.translateEnum
 					]
 				],
 				null
diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskg/SskgTransformator.xtend b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskg/SskgTransformator.xtend
index b0df0d7637..11ab7769a7 100644
--- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskg/SskgTransformator.xtend
+++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskg/SskgTransformator.xtend
@@ -73,7 +73,10 @@ class SskgTransformator extends AbstractPlanPro2TableModelTransformator {
 				row,
 				cols.getColumn(Art),
 				ein,
-				[translate(ein?.zugeinwirkungAllg?.zugeinwirkungArt.wert) ?: ""]
+				[
+					ein?.zugeinwirkungAllg?.zugeinwirkungArt?.translateEnum ?:
+						""
+				]
 			)
 
 			// C: Sskg.Grundsatzangaben.Typ
@@ -170,7 +173,7 @@ class SskgTransformator extends AbstractPlanPro2TableModelTransformator {
 				ein,
 				[
 					ein?.schaltMittelZuordnung.map [
-						schaltmittelFunktion?.wert?.translate ?: ""
+						schaltmittelFunktion?.translateEnum ?: ""
 					]
 				],
 				null
@@ -181,9 +184,9 @@ class SskgTransformator extends AbstractPlanPro2TableModelTransformator {
 			instances.add(row);
 		}
 
-		for (FMA_Komponente fma : container.FMAKomponente
-			.filter [isPlanningObject]
-			.filterObjectsInControlArea(controlArea)) {
+		for (FMA_Komponente fma : container.FMAKomponente.filter [
+			isPlanningObject
+		].filterObjectsInControlArea(controlArea)) {
 			if (fma.FMAKomponenteAchszaehlpunkt !== null) {
 				val TableRow row = factory.newTableRow(fma);
 				// A: Sskg.Grundsatzangaben.Bezeichnung
@@ -255,8 +258,8 @@ class SskgTransformator extends AbstractPlanPro2TableModelTransformator {
 					cols.getColumn(Schienenprofil),
 					fma,
 					[
-						fma?.FMAKomponenteAchszaehlpunkt?.
-							FMAKomponenteSchienenprofil?.wert?.translate ?: ""
+						FMAKomponenteAchszaehlpunkt?.
+							FMAKomponenteSchienenprofil?.translateEnum ?: ""
 					]
 				)
 
@@ -313,8 +316,8 @@ class SskgTransformator extends AbstractPlanPro2TableModelTransformator {
 					cols.getColumn(Funktion),
 					fma,
 					[
-						fma?.schaltmittelZuordnung?.schaltmittelFunktion?.wert?.
-							translate ?: ""
+						schaltmittelZuordnung?.schaltmittelFunktion?.
+							translateEnum ?: ""
 					]
 				)
 
diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssko/SskoTransformator.xtend b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssko/SskoTransformator.xtend
index e25c34e488..a7b0e5269b 100644
--- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssko/SskoTransformator.xtend
+++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssko/SskoTransformator.xtend
@@ -49,9 +49,10 @@ class SskoTransformator extends AbstractPlanPro2TableModelTransformator {
 
 	override transformTableContent(MultiContainer_AttributeGroup container,
 		TMFactory factory, Stell_Bereich controlArea) {
-		for (Schloss schloss : container.getObjectInControlArea(controlArea).filter [
-			isPlanningObject
-		]) {
+		for (Schloss schloss : container.getObjectInControlArea(controlArea).
+			filter [
+				isPlanningObject
+			]) {
 			if (Thread.currentThread.interrupted) {
 				return null
 			}
@@ -113,7 +114,9 @@ class SskoTransformator extends AbstractPlanPro2TableModelTransformator {
 				instance,
 				cols.getColumn(Schluessel_Bartform),
 				schloss,
-				[schluesel?.schluesselAllg?.schluesselBartform?.wert?.translate]
+				[
+					schluesel?.schluesselAllg?.schluesselBartform?.translateEnum
+				]
 			)
 
 			// F: Ssko.Schluessel.Gruppe
@@ -121,7 +124,9 @@ class SskoTransformator extends AbstractPlanPro2TableModelTransformator {
 				instance,
 				cols.getColumn(Schluessel_Gruppe),
 				schloss,
-				[schluesel?.schluesselAllg?.schluesselGruppe?.wert?.translate]
+				[
+					schluesel?.schluesselAllg?.schluesselGruppe?.translateEnum
+				]
 			)
 
 			// G: Ssko.Fahrweg.Bezeichnung.Zug
@@ -175,15 +180,15 @@ class SskoTransformator extends AbstractPlanPro2TableModelTransformator {
 				schloss,
 				new Case<Schloss>(
 					[schlossBUE !== null],
-					[schlossBUE.BUELage?.wert?.translate ?: ""]
+					[schlossBUE.BUELage?.translateEnum ?: ""]
 				),
 				new Case<Schloss>(
 					[schlossGsp !== null],
-					[schlossGsp.gspLage?.wert?.translate ?: ""]
+					[schlossGsp.gspLage?.translateEnum ?: ""]
 				),
 				new Case<Schloss>(
 					[schlossW !== null],
-					[schlossW.WLage?.wert?.translate ?: ""]
+					[schlossW.WLage?.translateEnum ?: ""]
 				)
 			)
 
@@ -192,7 +197,7 @@ class SskoTransformator extends AbstractPlanPro2TableModelTransformator {
 				instance,
 				cols.getColumn(Verschl_Element_Anbaulage),
 				schloss,
-				[schlossW?.WAnbaulage?.wert?.translate ?: ""]
+				[schlossW?.WAnbaulage?.translateEnum ?: ""]
 			)
 
 			// L: Ssko.W_Gsp_Bue.Verschl_Element.Ort
@@ -200,7 +205,7 @@ class SskoTransformator extends AbstractPlanPro2TableModelTransformator {
 				instance,
 				cols.getColumn(Verschl_Element_Ort),
 				schloss,
-				[schlossW?.verschlussOrt?.wert?.translate ?: ""]
+				[schlossW?.verschlussOrt?.translateEnum ?: ""]
 			)
 
 			// M: Ssko.W_Gsp_Bue.Schlossart
@@ -208,7 +213,7 @@ class SskoTransformator extends AbstractPlanPro2TableModelTransformator {
 				instance,
 				cols.getColumn(Schlossart),
 				schloss,
-				[schloss?.schlossW?.schlossArt?.wert?.translate ?: ""]
+				[schlossW?.schlossArt?.translateEnum ?: ""]
 			)
 
 			// N: Ssko.Sk_Ssp.Bezeichnung
@@ -243,14 +248,14 @@ class SskoTransformator extends AbstractPlanPro2TableModelTransformator {
 					[schlossSk !== null],
 					[
 						schlossKombination?.unterbringung?.unterbringungAllg?.
-							unterbringungArt?.wert?.translate
+							unterbringungArt?.translateEnum
 					]
 				),
 				new Case<Schloss>(
 					[schlossSsp !== null],
 					[
 						schluesselsperre?.unterbringung?.unterbringungAllg?.
-							unterbringungArt?.wert?.translate
+							unterbringungArt?.translateEnum
 					]
 				)
 			)
@@ -339,7 +344,7 @@ class SskoTransformator extends AbstractPlanPro2TableModelTransformator {
 					[
 						'''
 							«sonderanlage?.bezeichnung?.bezeichnungTabelle?.wert»
-							(«schlossSonderanlage?.sonderanlageLage.wert.translate»)
+							(«schlossSonderanlage?.sonderanlageLage?.translateEnum ?: ""»)
 						'''
 					]
 				),
@@ -351,7 +356,7 @@ class SskoTransformator extends AbstractPlanPro2TableModelTransformator {
 					[
 						'''
 							«schlossSonderanlage?.beschreibungSonderanlage?.wert»
-							(«schlossSonderanlage?.sonderanlageLage.wert.translate»)
+							(«schlossSonderanlage?.sonderanlageLage?.translateEnum ?: ""»)
 						'''
 					]
 				)
@@ -409,7 +414,7 @@ class SskoTransformator extends AbstractPlanPro2TableModelTransformator {
 			ssp.exists[it === schloss.schlossSsp.IDSchluesselsperre.value]
 		].map[schluesel].filterNull
 		result.addAll(schluessels.flatMap[schloesser])
-		
+
 		// 2.Condition
 		result.filter[schlossSk?.hauptschloss.wert].flatMap [ schloss |
 			schloss.schlossSk.IDSchlosskombination?.value.schloesser.filter [
diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskp/SskpTransformator.xtend b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskp/SskpTransformator.xtend
index 0351fa9da1..ad18b4fc89 100644
--- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskp/SskpTransformator.xtend
+++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskp/SskpTransformator.xtend
@@ -117,7 +117,7 @@ class SskpTransformator extends AbstractPlanPro2TableModelTransformator {
 			instance,
 			cols.getColumn(Wirkfrequenz),
 			pzb,
-			[PZBArt?.wert?.translate]
+			[PZBArt?.translateEnum]
 		)
 
 		val isPZB2000 = pzb.PZBArt?.wert === ENUMPZBArt.ENUMPZB_ART_2000_HZ ||
@@ -215,11 +215,11 @@ class SskpTransformator extends AbstractPlanPro2TableModelTransformator {
 			cols.getColumn(Wirksamkeit),
 			pzb,
 			[
-				PZBElementZuordnungBP.map [
-					switch (wirksamkeit?.wert) {
+				PZBElementZuordnungBP.map [ pzbZuordnungBp |
+					switch (pzbZuordnungBp.wirksamkeit?.wert) {
 						case ENUM_WIRKSAMKEIT_SCHALTBAR_VON_SIGNAL,
 						case ENUM_WIRKSAMKEIT_SONSTIGE: {
-							wirksamkeit?.wert?.translate
+							pzbZuordnungBp.wirksamkeit?.translateEnum
 						}
 						case ENUM_WIRKSAMKEIT_STAENDIG_WIRKSAM: {
 							// IMPROVE: Special case due to model limitatations. A future model should introduce 
@@ -259,10 +259,11 @@ class SskpTransformator extends AbstractPlanPro2TableModelTransformator {
 						])
 				],
 				[
-					PZBElementZuordnungFstr.map [
-						val wirksamKeit = wirksamkeitFstr?.wert?.translate
-						val fstrZugRangier = IDFstrZugRangier?.value?.
-							fstrZugRangierBezeichnung
+					PZBElementZuordnungFstr.map [ pzbZuordnung |
+						val wirksamKeit = pzbZuordnung.wirksamkeitFstr?.
+							translateEnum
+						val fstrZugRangier = pzbZuordnung.IDFstrZugRangier?.
+							value?.fstrZugRangierBezeichnung
 						return '''«wirksamKeit» «fstrZugRangier»'''
 					]
 				],
@@ -506,7 +507,7 @@ class SskpTransformator extends AbstractPlanPro2TableModelTransformator {
 				pzb,
 				[pzbGUEs],
 				null,
-				[messfehler?.wert.translate]
+				[messfehler?.translateEnum]
 			)
 
 			// U: Sskp.Gue.Messstrecke
@@ -526,7 +527,7 @@ class SskpTransformator extends AbstractPlanPro2TableModelTransformator {
 				pzb,
 				[pzbGUEs],
 				null,
-				[GUEAnordnung?.wert.translate]
+				[GUEAnordnung?.translateEnum]
 			)
 
 			// W: Sskp.Gue.GUE_Bauart
@@ -536,7 +537,7 @@ class SskpTransformator extends AbstractPlanPro2TableModelTransformator {
 				pzb,
 				[pzbGUEs],
 				null,
-				[GUEBauart?.wert.translate]
+				[GUEBauart?.translateEnum]
 			)
 
 			// X: SSkp.Gue.Montageort_Schaltkastens
@@ -546,7 +547,7 @@ class SskpTransformator extends AbstractPlanPro2TableModelTransformator {
 				pzb,
 				[
 					IDUnterbringung?.value?.unterbringungAllg?.
-						unterbringungBefestigung?.wert.translate
+						unterbringungBefestigung?.translateEnum ?: ""
 				]
 			)
 
@@ -557,7 +558,7 @@ class SskpTransformator extends AbstractPlanPro2TableModelTransformator {
 				pzb,
 				[pzbGUEs],
 				null,
-				[GUEEnergieversorgung?.wert.translate]
+				[GUEEnergieversorgung?.translateEnum]
 			)
 		} else {
 			for (var i = 15; i < 23; i++) {
diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssks/SsksTransformator.xtend b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssks/SsksTransformator.xtend
index f86f13b48f..6608424d63 100644
--- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssks/SsksTransformator.xtend
+++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssks/SsksTransformator.xtend
@@ -214,8 +214,8 @@ class SsksTransformator extends AbstractPlanPro2TableModelTransformator {
 							new Case<Signal>(
 								[isHauptbefestigung],
 								[
-									signal?.signalReal?.signalRealAktivSchirm?.
-										signalArt?.wert?.translate
+									signalReal?.signalRealAktivSchirm?.
+										signalArt?.translateEnum
 								]
 							)
 						)
@@ -227,8 +227,7 @@ class SsksTransformator extends AbstractPlanPro2TableModelTransformator {
 							signal,
 							[isHauptbefestigung],
 							[
-								signal?.signalReal?.funktionOhneSignal?.wert?.
-									translate
+								signalReal?.funktionOhneSignal?.translateEnum
 							]
 						)
 
@@ -238,10 +237,9 @@ class SsksTransformator extends AbstractPlanPro2TableModelTransformator {
 							cols.getColumn(Fiktives_Signal),
 							signal,
 							[
-								signal?.signalFiktiv?.fiktivesSignalFunktion?.
-									map [
-										wert?.translate
-									] ?: Collections.emptyList
+								signalFiktiv?.fiktivesSignalFunktion?.map [ fiktivSignalFunktion |
+									fiktivSignalFunktion?.translateEnum
+								] ?: Collections.emptyList
 							],
 							null
 						)
@@ -260,7 +258,7 @@ class SsksTransformator extends AbstractPlanPro2TableModelTransformator {
 							MIXED_STRING_COMPARATOR,
 							ITERABLE_FILLING_SEPARATOR
 						)
-						
+
 						// F: Ssks.Standortmerkmale.Standort.km
 						if (isFindGeometryComplete ||
 							streckAndKm.flatMap[value].exists[!nullOrEmpty]) {
@@ -274,8 +272,8 @@ class SsksTransformator extends AbstractPlanPro2TableModelTransformator {
 								null
 							)
 						} else {
-													val routeThroughBereichObjekt = signal.singlePoint.
-							streckenThroughBereichObjekt
+							val routeThroughBereichObjekt = signal.singlePoint.
+								streckenThroughBereichObjekt
 							row.fillStreckeKm(signal, routeThroughBereichObjekt)
 						}
 
@@ -285,8 +283,8 @@ class SsksTransformator extends AbstractPlanPro2TableModelTransformator {
 							cols.getColumn(Sonstige_Zulaessige_Anordnung),
 							signal,
 							[
-								signal?.signalReal?.signalRealAktiv?.
-									sonstigeZulaessigeAnordnung?.wert?.translate
+								signalReal?.signalRealAktiv?.
+									sonstigeZulaessigeAnordnung?.translateEnum
 							]
 						)
 
@@ -297,9 +295,10 @@ class SsksTransformator extends AbstractPlanPro2TableModelTransformator {
 							signal,
 							[
 								val s = it
-								val lichtraeume = it.container.gleisLichtraum.filter [ contains(s) ]
+								val lichtraeume = it.container.gleisLichtraum.
+									filter[contains(s)]
 								lichtraeume.map [
-									lichtraumprofil?.wert?.translate
+									lichtraumprofil?.translateEnum
 								].toSet.toList.sort
 							],
 							null
@@ -487,7 +486,7 @@ class SsksTransformator extends AbstractPlanPro2TableModelTransformator {
 							[isHauptbefestigung],
 							[
 								signalReal?.signalRealAktivSchirm?.
-									streuscheibeArt?.wert?.translate
+									streuscheibeArt?.translateEnum ?: ""
 							]
 						)
 
@@ -499,8 +498,8 @@ class SsksTransformator extends AbstractPlanPro2TableModelTransformator {
 							[isHauptbefestigung],
 							[
 								signalReal?.signalRealAktivSchirm?.
-									streuscheibeBetriebsstellung?.wert?.
-									translate
+									streuscheibeBetriebsstellung?.
+									translateEnum ?: ""
 							]
 						)
 
@@ -516,8 +515,8 @@ class SsksTransformator extends AbstractPlanPro2TableModelTransformator {
 									].filterNull
 								val fundament = map[
 									fundament?.signalBefestigungAllg?.
-										fundamentArt?.wert
-								].filterNull.map[translate].filterNull
+										fundamentArt
+								].filterNull.map[translateEnum].filterNull
 								return (regelzeichnung + fundament).toSet
 							],
 							null,
@@ -983,8 +982,8 @@ class .simpleName»: «e.message» - failed to transform table contents''', e)
 			case ENUM_BEFESTIGUNG_ART_SONSTIGE:
 				return befestigung.fillBearbeitungsvermerke
 			default:
-				return befestigung.signalBefestigungAllg.befestigungArt.wert.
-					translate
+				return befestigung?.signalBefestigungAllg?.befestigungArt?.
+					translateEnum
 		}
 	}
 
@@ -1466,8 +1465,10 @@ class .simpleName»: «e.message» - failed to transform table contents''', e)
 		val bemerkungen = new LinkedList
 		bemerkungen.addAll(
 			signalRahmen.map[signalbegriffe].flatten.map [
-				signalSignalbegriffAllg?.beleuchtet?.wert
-			].filterNull.filter[it != ENUM_BELEUCHTET_NEIN].toSet.map[translate]
+				signalSignalbegriffAllg?.beleuchtet
+			].filterNull.filter[wert != ENUM_BELEUCHTET_NEIN].toSet.map [
+				translateEnum
+			]
 		)
 
 		bemerkungen.addAll(
diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskt/SsktTransformator.xtend b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskt/SsktTransformator.xtend
index 312ad3f2f1..25f55ebc9d 100644
--- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskt/SsktTransformator.xtend
+++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskt/SsktTransformator.xtend
@@ -127,7 +127,7 @@ class SsktTransformator extends AbstractPlanPro2TableModelTransformator {
 		fill(
 			cols.getColumn(IP_Regionalbereich),
 			standort,
-			[TSOIPAdressblock?.regionalbereich?.wert?.translate]
+			[TSOIPAdressblock?.regionalbereich?.translateEnum]
 		)
 
 		// I: Sskt.IP_Adressangaben.Adressblock_Blau.IPv4_Blau
@@ -162,7 +162,7 @@ class SsktTransformator extends AbstractPlanPro2TableModelTransformator {
 		fill(
 			cols.getColumn(IP_Teilsystem_Art),
 			standort,
-			[ts?.TSOTeilsystemArt?.wert?.translate]
+			[ts?.TSOTeilsystemArt?.translateEnum]
 		)
 
 		// N: Sskt.IP_Adressangaben.Teilsystem.TS_Blau
@@ -218,7 +218,7 @@ class SsktTransformator extends AbstractPlanPro2TableModelTransformator {
 		fill(
 			cols.getColumn(IP_Regionalbereich),
 			standort,
-			[BSOIPAdressblock?.regionalbereich?.wert?.translate]
+			[BSOIPAdressblock?.regionalbereich?.translateEnum]
 		)
 
 		// I: Sskt.IP_Adressangaben.Adressblock_Blau.IPv4_Blau
@@ -253,7 +253,7 @@ class SsktTransformator extends AbstractPlanPro2TableModelTransformator {
 		fill(
 			cols.getColumn(IP_Teilsystem_Art),
 			standort,
-			[bs?.BSOTeilsystemArt?.wert?.translate]
+			[bs?.BSOTeilsystemArt?.translateEnum]
 		)
 
 		// N: Sskt.IP_Adressangaben.Teilsystem.TS_Blau
@@ -286,7 +286,10 @@ class SsktTransformator extends AbstractPlanPro2TableModelTransformator {
 			row,
 			cols.getColumn(Unterbringung_Art),
 			standort,
-			[unterbringung?.unterbringungAllg?.unterbringungArt?.wert?.translate]
+			[
+				unterbringung?.unterbringungAllg?.unterbringungArt?.
+					translateEnum
+			]
 		)
 
 		// E: Sskt.Grundsatzangaben.Unterbringung.Ort
diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskw/SskwTransformator.xtend b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskw/SskwTransformator.xtend
index a114007443..23ce245714 100644
--- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskw/SskwTransformator.xtend
+++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskw/SskwTransformator.xtend
@@ -22,8 +22,8 @@ import org.eclipse.set.model.planpro.Geodaten.TOP_Kante
 import org.eclipse.set.model.planpro.Gleis.Gleis_Abschnitt
 import org.eclipse.set.model.planpro.Regelzeichnung.Regelzeichnung
 import org.eclipse.set.model.planpro.Signalbegriffe_Ril_301.Zs3
-import org.eclipse.set.model.planpro.Weichen_und_Gleissperren.ENUMElektrischerAntriebLage
 import org.eclipse.set.model.planpro.Weichen_und_Gleissperren.ENUMElementLage
+import org.eclipse.set.model.planpro.Weichen_und_Gleissperren.Elektrischer_Antrieb_Lage_TypeClass
 import org.eclipse.set.model.planpro.Weichen_und_Gleissperren.Kreuzung_AttributeGroup
 import org.eclipse.set.model.planpro.Weichen_und_Gleissperren.W_Kr_Gsp_Element
 import org.eclipse.set.model.planpro.Weichen_und_Gleissperren.W_Kr_Gsp_Komponente
@@ -118,7 +118,7 @@ class SskwTransformator extends AbstractPlanPro2TableModelTransformator {
 				cols.getColumn(Art),
 				element,
 				[IDWKrAnlage !== null],
-				[WKrAnlage?.WKrAnlageAllg?.WKrArt?.wert.translate]
+				[WKrAnlage?.WKrAnlageAllg?.WKrArt?.translateEnum]
 			)
 
 			// C: Sskw.Weiche_Kreuzung_Gleissperre_Sonderanlage.Form
@@ -233,11 +233,14 @@ class SskwTransformator extends AbstractPlanPro2TableModelTransformator {
 				element,
 				new Case<W_Kr_Gsp_Element>(
 					[weicheElement?.weicheVorzugslage?.wert !== null],
-					[weicheElement.weicheVorzugslage.wert.translate]
+					[weicheElement?.weicheVorzugslage?.translateEnum ?: ""]
 				),
 				new Case<W_Kr_Gsp_Element>(
 					[gleissperreElement?.gleissperreVorzugslage?.wert !== null],
-					[gleissperreElement.gleissperreVorzugslage.wert.translate]
+					[
+						gleissperreElement?.gleissperreVorzugslage?.
+							translateEnum ?: ""
+					]
 				)
 			)
 
@@ -271,7 +274,7 @@ class SskwTransformator extends AbstractPlanPro2TableModelTransformator {
 					transformMultiColorContent(
 						elementKomponenten,
 						[zungenpaar?.elektrischerAntriebAnzahl?.wert],
-						[zungenpaar?.elektrischerAntriebLage?.wert]
+						[zungenpaar?.elektrischerAntriebLage]
 					)
 				],
 				"+"
@@ -279,13 +282,15 @@ class SskwTransformator extends AbstractPlanPro2TableModelTransformator {
 
 			// L: Sskw.Weiche.Weichensignal
 			val weichensignal = elementKomponenten.map [
-				zungenpaar?.weichensignal?.wert
+				zungenpaar?.weichensignal
 			].filterNull
 			fillIterable(
 				instance,
 				cols.getColumn(Weiche_Weichensignal),
 				element,
-				[weichensignal.map[translate].toSet],
+				[
+					weichensignal.map[translateEnum].toSet
+				],
 				null
 			)
 
@@ -548,7 +553,7 @@ class SskwTransformator extends AbstractPlanPro2TableModelTransformator {
 				element,
 				[
 					WKrGspKomponenten.map[entgleisungsschuh].filterNull.map [
-						gleissperrensignal?.wert?.translate ?: "o"
+						gleissperrensignal?.translateEnum ?: "o"
 					].toSet
 				],
 				null
@@ -564,10 +569,10 @@ class SskwTransformator extends AbstractPlanPro2TableModelTransformator {
 				],
 				[
 					val auswurfrichtung = WKrGspKomponenten.map [
-						entgleisungsschuh?.auswurfrichtung?.wert
+						entgleisungsschuh?.auswurfrichtung
 					].filterNull.toList
 					if (!auswurfrichtung.nullOrEmpty) {
-						return auswurfrichtung.first.translate
+						return auswurfrichtung.first.translateEnum
 					}
 					val potk = WKrGspKomponenten.flatMap[singlePoints].filter [
 						it !== null && seitlicheLage?.wert !== null &&
@@ -631,7 +636,7 @@ class SskwTransformator extends AbstractPlanPro2TableModelTransformator {
 				element,
 				[
 					wKrGspKomponenten.map [
-						besonderesFahrwegelement?.wert?.translate
+						besonderesFahrwegelement?.translateEnum
 					].filterNull
 				],
 				null
@@ -662,7 +667,7 @@ class SskwTransformator extends AbstractPlanPro2TableModelTransformator {
 		val elektrischerAntriebAnzahl = element.WKrGspKomponenten.map [
 			kreuzung?.elektrischerAntriebAnzahl?.wert
 		].filterNull.map[intValue]
-		val fillFunc = [ (W_Kr_Gsp_Komponente)=>BigInteger actuatorCount, (W_Kr_Gsp_Komponente)=>ENUMElektrischerAntriebLage actuatorPosition |
+		val fillFunc = [ (W_Kr_Gsp_Komponente)=>BigInteger actuatorCount, (W_Kr_Gsp_Komponente)=>Elektrischer_Antrieb_Lage_TypeClass actuatorPosition |
 			fillMultiColorIterable(
 				row,
 				cols.getColumn(Herzstueck_Antriebe),
@@ -681,7 +686,7 @@ class SskwTransformator extends AbstractPlanPro2TableModelTransformator {
 			fillFunc.apply([zungenpaar?.herzstueckAntriebe?.wert], [null])
 		} else if (elektrischerAntriebAnzahl.exists[it > 0]) {
 			fillFunc.apply([kreuzung?.elektrischerAntriebAnzahl?.wert], [
-				kreuzung?.elektrischerAntriebLage?.wert
+				kreuzung?.elektrischerAntriebLage
 			])
 		} else {
 			fill(
@@ -785,7 +790,7 @@ class SskwTransformator extends AbstractPlanPro2TableModelTransformator {
 	private def List<MultiColorContent> transformMultiColorContent(
 		Iterable<W_Kr_Gsp_Komponente> components,
 		(W_Kr_Gsp_Komponente)=>BigInteger actuatorNumberSelector,
-		(W_Kr_Gsp_Komponente)=>ENUMElektrischerAntriebLage actuatorPositionSelector
+		(W_Kr_Gsp_Komponente)=>Elektrischer_Antrieb_Lage_TypeClass actuatorPositionSelector
 	) {
 		return components.map [
 			val multiColorContent = TablemodelFactory.eINSTANCE.
@@ -808,10 +813,10 @@ class SskwTransformator extends AbstractPlanPro2TableModelTransformator {
 	private def String getPosition(
 		W_Kr_Gsp_Komponente component,
 		BigInteger actuator,
-		(W_Kr_Gsp_Komponente)=>ENUMElektrischerAntriebLage actuatorPositionSelector
+		(W_Kr_Gsp_Komponente)=>Elektrischer_Antrieb_Lage_TypeClass actuatorPositionSelector
 	) {
 		if (actuator != BigInteger.ZERO) {
-			return actuatorPositionSelector.apply(component).translate ?:
+			return actuatorPositionSelector.apply(component)?.translateEnum ?:
 				"keine Lage"
 		} else {
 			return null
diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskz/SskzTransformator.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskz/SskzTransformator.java
index b6c23e8001..5b66c8bfcb 100644
--- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskz/SskzTransformator.java
+++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskz/SskzTransformator.java
@@ -29,13 +29,13 @@
 import org.eclipse.set.feature.table.pt1.AbstractPlanPro2TableModelTransformator;
 import org.eclipse.set.model.planpro.Ansteuerung_Element.Aussenelementansteuerung;
 import org.eclipse.set.model.planpro.Ansteuerung_Element.ENUMAussenelementansteuerungArt;
-import org.eclipse.set.model.planpro.Ansteuerung_Element.ENUMTueranschlag;
-import org.eclipse.set.model.planpro.Ansteuerung_Element.ENUMUnterbringungBefestigung;
 import org.eclipse.set.model.planpro.Ansteuerung_Element.Stell_Bereich;
 import org.eclipse.set.model.planpro.Ansteuerung_Element.Stellelement;
+import org.eclipse.set.model.planpro.Ansteuerung_Element.Tueranschlag_TypeClass;
+import org.eclipse.set.model.planpro.Ansteuerung_Element.Unterbringung_Befestigung_TypeClass;
 import org.eclipse.set.model.planpro.Basisobjekte.Ur_Objekt;
 import org.eclipse.set.model.planpro.Ortung.FMA_Komponente;
-import org.eclipse.set.model.planpro.PZB.ENUMPZBArt;
+import org.eclipse.set.model.planpro.PZB.PZB_Art_TypeClass;
 import org.eclipse.set.model.planpro.PZB.PZB_Element;
 import org.eclipse.set.model.planpro.Schluesselabhaengigkeiten.Schluesselsperre;
 import org.eclipse.set.model.planpro.Signale.Signal;
@@ -155,27 +155,26 @@ private Table transform(final Iterable<Aussenelementansteuerung> controls,
 			// D: Sskz.Tueranschlag
 			fill(row, getColumn(cols, Tueranschlag), control,
 					(final Aussenelementansteuerung element) -> {
-						final ENUMTueranschlag enumTueranschlag = getNullableObject(
+						final Tueranschlag_TypeClass enumTueranschlag = getNullableObject(
 								element,
 								e -> e.getIDUnterbringung()
 										.getValue()
 										.getUnterbringungAllg()
-										.getTueranschlag()
-										.getWert()).orElse(null);
-						return translate(enumTueranschlag);
+										.getTueranschlag()).orElse(null);
+						return translateEnum(enumTueranschlag);
 					});
 
 			// E: Sskz.Montage
 			fill(row, getColumn(cols, Montage), control,
 					(final Aussenelementansteuerung element) -> {
-						final ENUMUnterbringungBefestigung befestigung = getNullableObject(
+						final Unterbringung_Befestigung_TypeClass befestigung = getNullableObject(
 								element,
 								e -> e.getIDUnterbringung()
 										.getValue()
 										.getUnterbringungAllg()
-										.getUnterbringungBefestigung()
-										.getWert()).orElse(null);
-						return translate(befestigung);
+										.getUnterbringungBefestigung())
+												.orElse(null);
+						return translateEnum(befestigung);
 					});
 
 			// F: Sskz.Blattnummer
@@ -277,8 +276,8 @@ private String getFieldElementDesignation(final Ur_Objekt object) {
 
 	@SuppressWarnings("nls")
 	private String getPzbDesignation(final PZB_Element pzb) {
-		final ENUMPZBArt pzbArt = getNullableObject(pzb,
-				ele -> ele.getPZBArt().getWert()).orElse(null);
+		final PZB_Art_TypeClass pzbArt = getNullableObject(pzb,
+				ele -> ele.getPZBArt()).orElse(null);
 		if (pzbArt == null) {
 			return "";
 		}
@@ -297,7 +296,7 @@ private String getPzbDesignation(final PZB_Element pzb) {
 				})
 				.toList();
 		if (pzb.getPZBElementGM() != null) {
-			return String.format("%s (%s)", translate(pzbArt),
+			return String.format("%s (%s)", translateEnum(pzbArt),
 					String.join(",", pzbElementBezugspunkt));
 		}
 
@@ -307,7 +306,7 @@ private String getPzbDesignation(final PZB_Element pzb) {
 					gue -> gue.getPruefgeschwindigkeit().getWert())
 							.orElse(null);
 			if (speedCheck != null) {
-				final String[] pzbArtEnum = translate(pzbArt).split("/");
+				final String[] pzbArtEnum = translateEnum(pzbArt).split("/");
 				final List<String> shortPzbArt = Stream.of(pzbArtEnum)
 						.map(ele -> {
 							try {
diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslb/SslbTransformator.xtend b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslb/SslbTransformator.xtend
index fd1c20508d..07ac46a223 100644
--- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslb/SslbTransformator.xtend
+++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslb/SslbTransformator.xtend
@@ -51,7 +51,8 @@ class SslbTransformator extends AbstractPlanPro2TableModelTransformator {
 	var TMFactory factory = null
 	val TopologicalGraphService topGraph
 	// Minimum overlap distance between free reporting section and track route in meter
-	static final BigDecimal MIN_OVERLAP_DISTANCE = BigDecimal.valueOf(10) 
+	static final BigDecimal MIN_OVERLAP_DISTANCE = BigDecimal.valueOf(10)
+
 	new(Set<ColumnDescriptor> cols,
 		EnumTranslationService enumTranslationService,
 		TopologicalGraphService topGraphService) {
@@ -201,8 +202,7 @@ class SslbTransformator extends AbstractPlanPro2TableModelTransformator {
 			cols.getColumn(Betriebsfuehrung),
 			blockElement,
 			[
-				blockStrecke?.blockStreckeAllg?.betriebsfuehrung?.wert?.
-					translate
+				blockStrecke?.blockStreckeAllg?.betriebsfuehrung?.translateEnum
 			]
 		)
 
@@ -220,7 +220,7 @@ class SslbTransformator extends AbstractPlanPro2TableModelTransformator {
 		fill(
 			cols.getColumn(Bauform_Start),
 			blockElement,
-			[blockElement?.blockElementAllg?.blockBauform?.wert?.translate]
+			[blockElement?.blockElementAllg?.blockBauform?.translateEnum]
 		)
 
 		// H: Sslb.Grundsatzangaben.von.Streckenfreimeldung
@@ -270,7 +270,7 @@ class SslbTransformator extends AbstractPlanPro2TableModelTransformator {
 		fill(
 			cols.getColumn(Bauform_Ziel),
 			otherBlockElement,
-			[blockElementAllg?.blockBauform?.wert?.translate]
+			[blockElementAllg?.blockBauform?.translateEnum]
 		)
 
 		// K: Sslb.Grundsatzangaben.Blockschaltung
@@ -278,7 +278,7 @@ class SslbTransformator extends AbstractPlanPro2TableModelTransformator {
 			cols.getColumn(Blockschaltung),
 			blockAnlage,
 			[
-				blockAnlageAllg?.schaltung?.wert?.translate
+				blockAnlageAllg?.schaltung?.translateEnum
 			]
 		)
 
diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslf/SslfTransformator.xtend b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslf/SslfTransformator.xtend
index c012d10db7..f5bc04ba78 100644
--- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslf/SslfTransformator.xtend
+++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslf/SslfTransformator.xtend
@@ -46,11 +46,9 @@ class SslfTransformator extends AbstractPlanPro2TableModelTransformator {
 		TMFactory factory,
 		Stell_Bereich controlArea
 	) {
-		val flaSchutzList = container.flaSchutz
-			.filter[isPlanningObject]
-			.filterObjectsInControlArea(controlArea)
-			.filter[generalbedingung]
-			.sortBy[wLageNbGrenze]
+		val flaSchutzList = container.flaSchutz.filter[isPlanningObject].
+			filterObjectsInControlArea(controlArea).filter[generalbedingung].
+			sortBy[wLageNbGrenze]
 
 		for (flaSchutz : flaSchutzList) {
 			if (Thread.currentThread.interrupted) {
@@ -85,7 +83,7 @@ class SslfTransformator extends AbstractPlanPro2TableModelTransformator {
 				instance,
 				cols.getColumn(Weiche_Gleissperre_Lage),
 				flaSchutz,
-				[flaSchutzWGsp?.flaWLage?.wert?.translate ?: ""]
+				[flaSchutzWGsp?.flaWLage?.translateEnum ?: ""]
 			)
 
 			// E: Sslf.Unmittelbarer_Flankenschutz.Weiche_Gleissperre.Zwieschutz
diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssln/SslnTransformator.xtend b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssln/SslnTransformator.xtend
index 943ada02df..10cde1dce5 100644
--- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssln/SslnTransformator.xtend
+++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssln/SslnTransformator.xtend
@@ -64,8 +64,8 @@ class SslnTransformator extends AbstractPlanPro2TableModelTransformator {
 
 	private def Table create factory.table transform(
 		MultiContainer_AttributeGroup container, Stell_Bereich controlArea) {
-		container.NBZone.filter[isPlanningObject]
-			.filterObjectsInControlArea(controlArea).forEach [ it |
+		container.NBZone.filter[isPlanningObject].
+			filterObjectsInControlArea(controlArea).forEach [ it |
 				if (Thread.currentThread.interrupted) {
 					return
 				}
@@ -84,7 +84,7 @@ class SslnTransformator extends AbstractPlanPro2TableModelTransformator {
 		fill(
 			cols.getColumn(Art),
 			nbZone,
-			[nb?.NBArt?.wert?.translate]
+			[nb?.NBArt?.translateEnum]
 		)
 
 		// C: Ssln.Unterstellungsverhaeltnis.untergeordnet
@@ -107,7 +107,7 @@ class SslnTransformator extends AbstractPlanPro2TableModelTransformator {
 		fill(
 			cols.getColumn(Aufloesung_Grenze),
 			nbZone,
-			[NBZoneAllg?.NBVerhaeltnisBesonders?.wert?.translate]
+			[NBZoneAllg?.NBVerhaeltnisBesonders?.translateEnum]
 		)
 
 		// F: Ssln.Grenze.Bez_Grenze
@@ -133,7 +133,7 @@ class SslnTransformator extends AbstractPlanPro2TableModelTransformator {
 				]
 
 				nBZoneElemente.filterMultipleNbElements.map [
-					'''«(nbElement as W_Kr_Gsp_Komponente)?.WKrGspElement?.bezeichnung?.bezeichnungTabelle?.wert» («NBZoneElementAllg?.NBRueckgabevoraussetzung?.wert?.translate»)'''
+					'''«(nbElement as W_Kr_Gsp_Komponente)?.WKrGspElement?.bezeichnung?.bezeichnungTabelle?.wert» («NBZoneElementAllg?.NBRueckgabevoraussetzung?.translateEnum»)'''
 				]
 			],
 			MIXED_STRING_COMPARATOR,
@@ -149,7 +149,7 @@ class SslnTransformator extends AbstractPlanPro2TableModelTransformator {
 					!first?.NBZoneElementAllg?.freieStellbarkeit?.wert &&
 						second instanceof W_Kr_Gsp_Komponente
 				].map [
-					'''«(second as W_Kr_Gsp_Komponente).WKrGspElement?.bezeichnung?.bezeichnungTabelle?.wert» («first?.NBZoneElementAllg?.WGspLage?.wert?.translate ?: "-"»)'''
+					'''«(second as W_Kr_Gsp_Komponente).WKrGspElement?.bezeichnung?.bezeichnungTabelle?.wert» («first?.NBZoneElementAllg?.WGspLage?.translateEnum ?: "-"»)'''
 				]
 			],
 			MIXED_STRING_COMPARATOR,
@@ -165,7 +165,7 @@ class SslnTransformator extends AbstractPlanPro2TableModelTransformator {
 					first?.NBZoneElementAllg?.freieStellbarkeit?.wert &&
 						second instanceof Signal
 				].map [
-					'''«(second as Signal)?.bezeichnung?.bezeichnungTabelle?.wert» («first?.NBZoneElementAllg?.NBRueckgabevoraussetzung?.wert?.translate»)'''
+					'''«(second as Signal)?.bezeichnung?.bezeichnungTabelle?.wert» («first?.NBZoneElementAllg?.NBRueckgabevoraussetzung?.translateEnum»)'''
 				]
 			],
 			MIXED_STRING_COMPARATOR,
diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslr/SslrTransformator.xtend b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslr/SslrTransformator.xtend
index 498a6447b7..6d142a385a 100644
--- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslr/SslrTransformator.xtend
+++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslr/SslrTransformator.xtend
@@ -59,8 +59,8 @@ class SslrTransformator extends AbstractPlanPro2TableModelTransformator {
 
 	private def Table create factory.table transform(
 		MultiContainer_AttributeGroup container, Stell_Bereich controlArea) {
-		container.fstrZugRangier.filter[isPlanningObject]
-			.filterObjectsInControlArea(controlArea).filter[isR].forEach [ it |
+		container.fstrZugRangier.filter[isPlanningObject].
+			filterObjectsInControlArea(controlArea).filter[isR].forEach [ it |
 				if (Thread.currentThread.interrupted) {
 					return
 				}
@@ -123,7 +123,7 @@ class SslrTransformator extends AbstractPlanPro2TableModelTransformator {
 			cols.getColumn(Art),
 			fstrZugRangier,
 			[
-				fstrRangier?.fstrRangierArt?.wert?.translate?.substring(0, 1)
+				fstrRangier?.fstrRangierArt?.translateEnum?.substring(0, 1)
 			]
 		)
 
@@ -131,7 +131,7 @@ class SslrTransformator extends AbstractPlanPro2TableModelTransformator {
 		fill(
 			cols.getColumn(Autom_Einstellung),
 			fstrZugRangier,
-			[fstrZug?.automatischeEinstellung?.wert?.translate]
+			[fstrZug?.automatischeEinstellung?.translateEnum]
 		)
 
 		// H: Sslr.Einstellung.F_Bedienung
@@ -230,7 +230,7 @@ class SslrTransformator extends AbstractPlanPro2TableModelTransformator {
 					val ssp = schluesselsperre?.bezeichnung?.
 						bezeichnungTabelle?.wert
 					val aufloesungZielgleis = fstrAbhaengigkeitSsp?.
-						aufloesungSspZielgleis?.wert?.translate
+						aufloesungSspZielgleis?.translateEnum
 					'''«ssp» («aufloesungZielgleis»)'''
 				]
 			],
@@ -275,7 +275,7 @@ class SslrTransformator extends AbstractPlanPro2TableModelTransformator {
 				val bedAnzeigeElemente = fstrFahrweg?.abhaengigkeiten?.map [
 					bedienAnzeigeElement
 				]?.filterNull ?: Collections.emptyList
-				'''«FOR bae : bedAnzeigeElemente.map[comment[translate]].filterNull SEPARATOR ", "»«bae»«ENDFOR»'''.
+				'''«FOR bae : bedAnzeigeElemente.map[comment[translateEnum]].filterNull SEPARATOR ", "»«bae»«ENDFOR»'''.
 					toString.trim
 			]
 		)
@@ -300,11 +300,11 @@ class SslrTransformator extends AbstractPlanPro2TableModelTransformator {
 			new Case<Fstr_Zug_Rangier>(
 				[
 					!bedAnzeigeElemente.empty && !bedAnzeigeElemente.map [
-						comment[translate]
+						comment[translateEnum]
 					].filterNull.empty
 				],
 				[
-					'''«FOR bae : bedAnzeigeElemente.map[comment[translate]].filterNull SEPARATOR ", "»«bae»«ENDFOR»'''.
+					'''«FOR bae : bedAnzeigeElemente.map[comment[translateEnum]].filterNull SEPARATOR ", "»«bae»«ENDFOR»'''.
 						toString.trim
 				]
 			),
diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslw/SslwTransformator.xtend b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslw/SslwTransformator.xtend
index 2469e0ad25..c314d57337 100644
--- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslw/SslwTransformator.xtend
+++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslw/SslwTransformator.xtend
@@ -136,7 +136,7 @@ class SslwTransformator extends AbstractPlanPro2TableModelTransformator {
 			flaZwieSchutz,
 			[
 				flaZwieschutzElement?.IDFlaSchutz(isLeft)?.flaSchutzWGsp?.
-					flaWLage?.wert?.translate
+						flaWLage?.translateEnum
 			]
 		)
 
@@ -345,9 +345,8 @@ class SslwTransformator extends AbstractPlanPro2TableModelTransformator {
 	def Fla_Schutz IDFlaWeitergabeLR(
 		Fla_Schutz_Weitergabe_AttributeGroup flaWeitergabe,
 		boolean isWeitergabeLeft) {
-		return isWeitergabeLeft
-			? flaWeitergabe?.IDFlaWeitergabeL?.value
-			: flaWeitergabe?.IDFlaWeitergabeR?.value
+		return isWeitergabeLeft ? flaWeitergabe?.IDFlaWeitergabeL?.
+			value : flaWeitergabe?.IDFlaWeitergabeR?.value
 	}
 
 	def Massnahme_TypeClass massnameLR(
@@ -357,9 +356,8 @@ class SslwTransformator extends AbstractPlanPro2TableModelTransformator {
 
 	def Fla_Schutz IDFlaSchutz(Fla_Zwieschutz_Element_AttributeGroup element,
 		boolean isLeft) {
-		return isLeft
-			? element.IDFlaSchutzL?.value
-			: element.IDFlaSchutzR?.value
+		return isLeft ? element.IDFlaSchutzL?.value : element.IDFlaSchutzR?.
+			value
 	}
 
 }
diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslz/SslzTransformator.xtend b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslz/SslzTransformator.xtend
index 85f38ac2c8..f3f564f0e8 100644
--- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslz/SslzTransformator.xtend
+++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslz/SslzTransformator.xtend
@@ -194,8 +194,7 @@ class SslzTransformator extends AbstractPlanPro2TableModelTransformator {
 				// H: Sslz.Einstellung.Autom_Einstellung
 				fill(instance, cols.getColumn(Autom_Einstellung),
 					fstrZugRangier, [
-						fstrZugRangier?.fstrZug?.automatischeEinstellung?.wert?.
-							translate ?: ""
+						fstrZugRangier?.fstrZug?.automatischeEinstellung?.translateEnum ?: ""
 					])
 
 				// I: Sslz.Einstellung.F_Bedienung
@@ -626,7 +625,7 @@ class SslzTransformator extends AbstractPlanPro2TableModelTransformator {
 								bedienAnzeigeElement
 							]?.filterNull ?: Collections.emptyList
 
-						'''«FOR bae : bedAnzeigeElemente»«bae.comment[translate]»«bae» «ENDFOR»'''.
+						'''«FOR bae : bedAnzeigeElemente»«bae.comment[translateEnum]»«bae» «ENDFOR»'''.
 							toString.trim
 					]),
 					new Case<Fstr_Zug_Rangier>([
@@ -739,7 +738,7 @@ class SslzTransformator extends AbstractPlanPro2TableModelTransformator {
 			signalSignalbegriffZiel.hasSignalbegriffID(typeof(Zs2v)) ||
 				signalSignalbegriffZiel.hasSignalbegriffID(typeof(Zs3v))
 		].toList
-		
+
 		val zs2vSymbols = relevantFstrSignalisierung.
 			getFstrSignalisierungSymbol(typeof(Zs2v))
 		val zs3vSymbols = relevantFstrSignalisierung.
diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssvu/SsvuTransformator.xtend b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssvu/SsvuTransformator.xtend
index 0c797cfe10..c3bfe63d69 100644
--- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssvu/SsvuTransformator.xtend
+++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssvu/SsvuTransformator.xtend
@@ -59,7 +59,8 @@ class SsvuTransformator extends AbstractPlanPro2TableModelTransformator {
 
 	private def Table create factory.table transform(
 		MultiContainer_AttributeGroup container, Stell_Bereich controlArea) {
-		container.uebertragungsweg.filter[isPlanningObject].filterObjectsInControlArea(controlArea).forEach [ it |
+		container.uebertragungsweg.filter[isPlanningObject].
+			filterObjectsInControlArea(controlArea).forEach [ it |
 				if (Thread.currentThread.interrupted) {
 					return
 				}
@@ -147,7 +148,7 @@ class SsvuTransformator extends AbstractPlanPro2TableModelTransformator {
 	}
 
 	private def String createVerwendung(Uebertragungsweg uebertragungsweg) {
-		return uebertragungsweg?.uebertragungswegArt?.wert?.translate
+		return uebertragungsweg?.uebertragungswegArt?.translateEnum
 	}
 
 	private def String create createNetzart(uebertragungsweg) transformToNetzart(
@@ -157,8 +158,7 @@ class SsvuTransformator extends AbstractPlanPro2TableModelTransformator {
 	}
 
 	private def String createNetzart(Uebertragungsweg uebertragungsweg) {
-		return uebertragungsweg?.uebertragungswegTechnik?.netzArt?.wert?.
-			translate
+		return uebertragungsweg?.uebertragungswegTechnik?.netzArt?.translateEnum
 	}
 
 	private def String create createTechnikart(uebertragungsweg) transformToTechnikart(
@@ -168,8 +168,8 @@ class SsvuTransformator extends AbstractPlanPro2TableModelTransformator {
 	}
 
 	private def String createTechnikart(Uebertragungsweg uebertragungsweg) {
-		return uebertragungsweg?.uebertragungswegTechnik?.technikArt?.wert?.
-			translate
+		return uebertragungsweg?.uebertragungswegTechnik?.technikArt?.
+			translateEnum
 	}
 
 	private def String create createSchnitstelle(uebertragungsweg) transformToSchnitstelle(
@@ -179,8 +179,8 @@ class SsvuTransformator extends AbstractPlanPro2TableModelTransformator {
 	}
 
 	private def String createSchnitstelle(Uebertragungsweg uebertragungsweg) {
-		return uebertragungsweg?.uebertragungswegTechnik?.mediumArt?.wert?.
-			translate
+		return uebertragungsweg?.uebertragungswegTechnik?.mediumArt?.
+			translateEnum
 	}
 
 	private def String create createBandbreite(uebertragungsweg) transformToBandbreite(
@@ -190,8 +190,8 @@ class SsvuTransformator extends AbstractPlanPro2TableModelTransformator {
 	}
 
 	private def String createBandbreite(Uebertragungsweg uebertragungsweg) {
-		return uebertragungsweg?.uebertragungswegTechnik?.bandbreite?.wert?.
-			translate
+		return uebertragungsweg?.uebertragungswegTechnik?.bandbreite?.
+			translateEnum
 	}
 
 	private def String create createBemerkung(uebertragungsweg, row) transformToBemerkung(
diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssza/SszaTransformator.xtend b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssza/SszaTransformator.xtend
index d5871b0947..41e74f1c8b 100644
--- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssza/SszaTransformator.xtend
+++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssza/SszaTransformator.xtend
@@ -4,7 +4,7 @@
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v2.0 which is available at
  * https://www.eclipse.org/legal/epl-2.0.
- * 
+ *
  * SPDX-License-Identifier: EPL-2.0
  * 
  */
@@ -162,7 +162,7 @@ class SszaTransformator extends AbstractPlanPro2TableModelTransformator {
 				BUE_Einschaltung,
 				[
 					schaltmittelZuordnung.map [
-						'''«schaltmittelFunktion?.wert.translate» «getSwitchName(IDSchalter?.value)»'''
+						'''«schaltmittelFunktion?.translateEnum» «getSwitchName(IDSchalter?.value)»'''
 					]
 				]
 			),
@@ -181,7 +181,7 @@ class SszaTransformator extends AbstractPlanPro2TableModelTransformator {
 			bezugspunktCase(
 				PZB_Element,
 				[
-					'''GM «PZBArt?.wert?.translate» «IDPZBElementZuordnung?.value?.PZBElementZuordnungBP?.map[fillBezugsElement(IDPZBElementBezugspunkt?.value)].join»'''
+					'''GM «PZBArt?.translateEnum» «IDPZBElementZuordnung?.value?.PZBElementZuordnungBP?.map[fillBezugsElement(IDPZBElementBezugspunkt?.value)].join»'''
 				]
 			),
 			bezugspunktCase(
@@ -552,6 +552,6 @@ class SszaTransformator extends AbstractPlanPro2TableModelTransformator {
 			geoKantemetadata, nearestPoint.distance, BigDecimal.ZERO,
 			ENUMWirkrichtung.ENUM_WIRKRICHTUNG_BEIDE)
 		return pointCoordinate.coordinate.
-			getStreckeKmThroughProjection(strecke).toTableDecimal	
+			getStreckeKmThroughProjection(strecke).toTableDecimal
 	}
 }
diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sszs/SszsTransformator.xtend b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sszs/SszsTransformator.xtend
index 074b65cae5..6c5283cfc5 100644
--- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sszs/SszsTransformator.xtend
+++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sszs/SszsTransformator.xtend
@@ -4,7 +4,7 @@
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v2.0 which is available at
  * https://www.eclipse.org/legal/epl-2.0.
- * 
+ *
  * SPDX-License-Identifier: EPL-2.0
  * 
  */
@@ -483,7 +483,7 @@ class SszsTransformator extends AbstractPlanPro2TableModelTransformator {
 				row,
 				cols.getColumn(Ausstieg_ETCS_Sperre),
 				etcsSignal,
-				[ETCSSignalAllg?.ausstiegETCSSperre?.wert.translate]
+				[ETCSSignalAllg?.ausstiegETCSSperre?.translateEnum]
 			)
 
 			// Y: Sszs.Sonstige_Funktionen.d_Haltfall
diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sszw/SszwTransformator.xtend b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sszw/SszwTransformator.xtend
index b352d97559..332e3a55c0 100644
--- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sszw/SszwTransformator.xtend
+++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sszw/SszwTransformator.xtend
@@ -4,7 +4,7 @@
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v2.0 which is available at
  * https://www.eclipse.org/legal/epl-2.0.
- *
+ * 
  * SPDX-License-Identifier: EPL-2.0
  * 
  */
@@ -101,7 +101,7 @@ class SszwTransformator extends AbstractPlanPro2TableModelTransformator {
 			row,
 			cols.getColumn(Art),
 			refWKrAnlage,
-			[WKrAnlageArt.translate ?: ""]
+			[WKrAnlageAllg?.WKrArt?.translateEnum ?: ""]
 		)
 
 		// C: Sszw.W_Kr.Form
diff --git a/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/BedienAnzeigeElementExtensions.xtend b/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/BedienAnzeigeElementExtensions.xtend
index 76b54f7599..fc989ae56d 100644
--- a/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/BedienAnzeigeElementExtensions.xtend
+++ b/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/BedienAnzeigeElementExtensions.xtend
@@ -8,13 +8,13 @@
  */
 package org.eclipse.set.ppmodel.extensions
 
+import java.util.List
 import org.eclipse.set.model.planpro.Bahnuebergang.BUE_Bedien_Anzeige_Element
+import org.eclipse.set.model.planpro.BasisTypen.BasisAttribut_AttributeGroup
 import org.eclipse.set.model.planpro.Basisobjekte.Basis_Objekt
 import org.eclipse.set.model.planpro.Bedienung.Bedien_Anzeige_Element
 import org.eclipse.set.model.planpro.Bedienung.Bedien_Einrichtung_Oertlich
 import org.eclipse.set.model.planpro.Nahbedienung.NB_Bedien_Anzeige_Element
-import java.util.List
-import org.eclipse.emf.common.util.Enumerator
 
 /**
  * Extensions for {@link Bedien_Anzeige_Element}.
@@ -76,11 +76,11 @@ class BedienAnzeigeElementExtensions extends BasisObjektExtensions {
 	 * @return the comment
 	 */
 	def static String comment(Bedien_Anzeige_Element bedAnzeigeElement,
-		(Enumerator)=>String translation) {
+		(BasisAttribut_AttributeGroup)=>String translation) {
 		val taste = translation.apply(
-			bedAnzeigeElement?.bedienAnzeigeElementAllg?.taste?.wert)
+			bedAnzeigeElement?.bedienAnzeigeElementAllg?.taste)
 		val schalter = translation.apply(
-			bedAnzeigeElement?.bedienAnzeigeElementAllg?.schalter?.wert)
+			bedAnzeigeElement?.bedienAnzeigeElementAllg?.schalter)
 		if (taste !== null || schalter !== null) {
 			val tasteSchalter = '''«taste ?: ""»«schalter ?: ""»'''
 			val bezeichner = bedAnzeigeElement?.bezeichnung?.


Reviews:
user: login: mariusheine
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-09T11:25:15Z
user: login: TruongQuangSB
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-09T11:53:52Z
user: login: mariusheine
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-09T13:13:56Z
user: login: TruongQuangSB
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-09T13:22:58Z
user: login: mariusheine
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-09T13:43:22Z
user: login: mariusheine
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-09T13:43:36Z

Review comments:
diff_hunk: @@ -123,15 +123,15 @@ class SslrTransformator extends AbstractPlanPro2TableModelTransformator {
 			cols.getColumn(Art),
 			fstrZugRangier,
 			[
-				fstrRangier?.fstrRangierArt?.wert?.translate?.substring(0, 1)
+				fstrRangier?.fstrRangierArt?.translateEnum?.substring(0, 1)
path: java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslr/SslrTransformator.xtend
user: login: mariusheine
body: @TruongQuangSB This seems falsy to me for the case when we return with the note text
created_at: 2025-04-09T11:23:18Z
author_association: CONTRIBUTOR
diff_hunk: @@ -123,15 +123,15 @@ class SslrTransformator extends AbstractPlanPro2TableModelTransformator {
 			cols.getColumn(Art),
 			fstrZugRangier,
 			[
-				fstrRangier?.fstrRangierArt?.wert?.translate?.substring(0, 1)
+				fstrRangier?.fstrRangierArt?.translateEnum?.substring(0, 1)
path: java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslr/SslrTransformator.xtend
user: login: TruongQuangSB
body: @mariusheine what do you mean ?
created_at: 2025-04-09T11:53:52Z
author_association: CONTRIBUTOR
diff_hunk: @@ -123,15 +123,15 @@ class SslrTransformator extends AbstractPlanPro2TableModelTransformator {
 			cols.getColumn(Art),
 			fstrZugRangier,
 			[
-				fstrRangier?.fstrRangierArt?.wert?.translate?.substring(0, 1)
+				fstrRangier?.fstrRangierArt?.translateEnum?.substring(0, 1)
path: java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslr/SslrTransformator.xtend
user: login: mariusheine
body: @TruongQuangSB I mean what if `fstrRangierArt.wert` is `sonstige` and it has a note, then we would run `substring(0, 1)` on that note which might not be what we and the user wants asthe first letter of the note might be equal to the first letter of any real existing `fstrRangierArt`.
created_at: 2025-04-09T13:13:56Z
author_association: CONTRIBUTOR
diff_hunk: @@ -123,15 +123,15 @@ class SslrTransformator extends AbstractPlanPro2TableModelTransformator {
 			cols.getColumn(Art),
 			fstrZugRangier,
 			[
-				fstrRangier?.fstrRangierArt?.wert?.translate?.substring(0, 1)
+				fstrRangier?.fstrRangierArt?.translateEnum?.substring(0, 1)
path: java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslr/SslrTransformator.xtend
user: login: TruongQuangSB
body: @mariusheine  u are right, but it given't `sonstige` for this Enum 😄 
created_at: 2025-04-09T13:22:57Z
author_association: CONTRIBUTOR
diff_hunk: @@ -123,15 +123,15 @@ class SslrTransformator extends AbstractPlanPro2TableModelTransformator {
 			cols.getColumn(Art),
 			fstrZugRangier,
 			[
-				fstrRangier?.fstrRangierArt?.wert?.translate?.substring(0, 1)
+				fstrRangier?.fstrRangierArt?.translateEnum?.substring(0, 1)
path: java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslr/SslrTransformator.xtend
user: login: mariusheine
body: @TruongQuangSB Haha this is good 😄 
created_at: 2025-04-09T13:43:22Z
author_association: CONTRIBUTOR

PR comments:
user: login: github-actions[bot]
created_at: 2025-04-08T08:56:53Z
body: ## Test Results
121 tests   121 ✅  16s ⏱️
 28 suites    0 💤
 28 files      0 ❌

Results for commit 7be1923e.

[test-results]:data:application/gzip;base64,H4sIANPk9GcC/13MyQ7CIBSF4VdpWLvgQgPoyximmxDbYhhWxneX1oHW5fef5DwIhslnchmYOg0k11C6XE26hLg0g2huU1lHYPDVNVdr/9Mt3Fuiv4A6TIfgU4rpU1Jd+ueK4+W79MfNu8PN+z8b5zmUBiKNhzPjXjqlQIBXlHsHSnMzokWq5SiQIjPk+QJwPqToBgEAAA==

author_association: NONE
user: login: mariusheine
created_at: 2025-04-09T11:42:04Z
body: @TruongQuangSB If we achieve to resolve all table differences from #1515 by today I would like to wait until this before merging. If not I will merge it in the evening.
author_association: CONTRIBUTOR
user: login: mariusheine
created_at: 2025-04-09T11:44:30Z
body: > @TruongQuangSB If we achieve to resolve all table differences from #1515 by today I would like to wait until this before merging. If not I will merge it in the evening.

@TruongQuangSB Nevermind. SWT Bot is comparing against current state of the main branch and not the reference tables so we don't have any differences in PPHN. Despite my comment above everything is fine then 
author_association: CONTRIBUTOR