From e79c1fd29e35f6bd26702d9383db8c43a54be103 Mon Sep 17 00:00:00 2001 From: Quang Truong Date: Thu, 23 Jul 2026 16:15:07 +0200 Subject: [PATCH 1/3] Sskx: fill Regelzeichung like Ssks --- .../ssks/AbstractSignalTableTransform.java | 54 +++++++++++++++++++ .../table/pt1/ssks/SsksTransformator.xtend | 24 ++------- .../table/pt1/sskx/SskxTransformator.java | 37 +++---------- 3 files changed, 65 insertions(+), 50 deletions(-) diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssks/AbstractSignalTableTransform.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssks/AbstractSignalTableTransform.java index 73889f77a2..3412fc7d03 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssks/AbstractSignalTableTransform.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssks/AbstractSignalTableTransform.java @@ -18,10 +18,13 @@ import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Optional; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; +import java.util.stream.Stream; +import org.eclipse.emf.common.util.EList; import org.eclipse.set.basis.graph.TopPoint; import org.eclipse.set.core.services.enumtranslation.EnumTranslationService; import org.eclipse.set.core.services.graph.BankService; @@ -37,6 +40,7 @@ import org.eclipse.set.model.planpro.Signale.Signal; import org.eclipse.set.model.planpro.Signale.Signal_Befestigung; import org.eclipse.set.model.planpro.Signale.Signal_Rahmen; +import org.eclipse.set.model.planpro.Verweise.ID_Regelzeichnung_TypeClass; import org.eclipse.set.model.tablemodel.ColumnDescriptor; import org.eclipse.set.model.tablemodel.Table; import org.eclipse.set.model.tablemodel.TableRow; @@ -50,6 +54,7 @@ import org.eclipse.set.ppmodel.extensions.container.MultiContainer_AttributeGroup; import org.eclipse.set.ppmodel.extensions.geometry.GEOKanteGeometryExtensions; import org.eclipse.set.utils.math.BigDecimalExtensions; +import org.eclipse.set.utils.table.AbstractTableModelTransformator; import org.eclipse.set.utils.table.RowFactory; import org.eclipse.set.utils.table.TMFactory; import org.eclipse.xtext.xbase.lib.Pair; @@ -266,6 +271,10 @@ protected void fillGenerallyColumns(final TableRow row, rahmen -> transformRegelzeichnungArt(row, rahmen), MIXED_STRING_COMPARATOR); + // konstruktive_Merkmale.Anordnung.Regelzeichnung + fillIterable(row, getAnordnungRegelzeichnungColumn(), signalRahmen, + rahmen -> transformRegelzeichnungArt(row, rahmen)); + // konstruktive_Merkmale.Fundament.Hoehe fillIterable(row, getFundamentHoeheColumn(), signalRahmen, rahmen -> rahmen.stream() @@ -368,6 +377,8 @@ protected void fillAbstandMastMitte(final TableRow row, final Signal signal, protected abstract ColumnDescriptor getBezeichnungColumn(); + protected abstract ColumnDescriptor getAnordnungRegelzeichnungColumn(); + protected abstract void handledThrowException(TMFactory row, Signal signal, Exception e); @@ -407,4 +418,47 @@ private String fillBefestigung(final Signal_Befestigung befestigung) { }; } + @SuppressWarnings("static-method") + protected Iterable transformRegelZeichnungen(final TableRow row, + final List rahmen) { + final List befestigungRegelzeichnungen = rahmen.stream() + .flatMap(r -> { + final List result = new ArrayList<>(); + + final List befestigungUtilFundament = SignalRahmenExtensions + .getBefestigungUntilFundament(r); + result.addAll(befestigungUtilFundament); + final Signal_Befestigung signalBefestigung = SignalRahmenExtensions + .getSignalBefestigung(r); + result.add(signalBefestigung); + return result.stream(); + }) + .flatMap(befesitung -> { + final Optional> nullableObject = EObjectExtensions + .getNullableObject(befesitung, + b -> b.getIDRegelzeichnung()); + if (nullableObject.isPresent()) { + return nullableObject.get().stream(); + } + return Stream.empty(); + }) + .map(id -> id.getValue()) + .filter(Objects::nonNull) + .map(AbstractTableModelTransformator::fillRegelzeichnung) + .toList(); + final List rahmenRegelzeichnungen = rahmen.stream() + .map(Signal_Rahmen::getIDRegelzeichnung) + .map(id -> EObjectExtensions + .getNullableObject(id, i -> i.getValue()) + .orElse(null)) + .filter(Objects::nonNull) + .map(AbstractTableModelTransformator::fillRegelzeichnung) + .toList(); + + return Stream + .concat(befestigungRegelzeichnungen.stream(), + rahmenRegelzeichnungen.stream()) + .toList(); + } + } 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 95494d1286..37089e502b 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 @@ -268,10 +268,6 @@ class SsksTransformator extends AbstractSignalTableTransform { ] ) - // R: Ssks.konstruktive_Merkmale.Anordnung.Regelzeichnung - fillIterable(row, cols.getColumn(Anordnung_Regelzeichnung), - signalRahmen, [transformRegelzeichnungen(row, it)], null); - // S: Ssks.konstruktive_Merkmale.Obere_Lichtpunkthoehe fillIterable( row, @@ -682,22 +678,6 @@ class SsksTransformator extends AbstractSignalTableTransform { ENUM_SIGNAL_FUNKTION_ALLEINSTEHENDES_ZUSATZSIGNAL) } - private static def Iterable transformRegelzeichnungen(TableRow row, - List rahmen) { - // transform all regelzeichnungen of the signal befestigungen until the - // fundament - val regelzeichnungen = rahmen.flatMap [ - #[#[it.signalBefestigung], it.befestigungUntilFundament].flatten - ].flatMap[IDRegelzeichnung].map[r|r?.value].filterNull.map [ - fillRegelzeichnung - ].toList(); - // transform all regelzeichnungen of the signal rahmen itself - val rahmenRegelzeichnungen = rahmen.map[IDRegelzeichnung?.value]. - filterNull.map[fillRegelzeichnung].toList(); - // collect them - return #[regelzeichnungen, rahmenRegelzeichnungen].flatten - } - private static def boolean hasSchaltkastenSeparatBezeichnung( Signal signal) { val stellelement = signal.stellelement @@ -1234,6 +1214,10 @@ class SsksTransformator extends AbstractSignalTableTransform { return cols.getColumn(Ueberhoehung) } + override protected getAnordnungRegelzeichnungColumn() { + return cols.getColumn(Anordnung_Regelzeichnung) + } + override protected handledThrowException(TMFactory factory, Signal signal, Exception e) { val TableRow row = factory.newTableRow(signal); diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskx/SskxTransformator.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskx/SskxTransformator.java index 8ae62387b7..63be546506 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskx/SskxTransformator.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskx/SskxTransformator.java @@ -10,19 +10,8 @@ */ package org.eclipse.set.feature.table.pt1.sskx; -import static org.eclipse.set.model.planpro.Signale.ENUMBefestigungArt.ENUM_BEFESTIGUNG_ART_ARBEITSBUEHNE; -import static org.eclipse.set.model.planpro.Signale.ENUMBefestigungArt.ENUM_BEFESTIGUNG_ART_DACH_DECKE; -import static org.eclipse.set.model.planpro.Signale.ENUMBefestigungArt.ENUM_BEFESTIGUNG_ART_OL_MAST; -import static org.eclipse.set.model.planpro.Signale.ENUMBefestigungArt.ENUM_BEFESTIGUNG_ART_PFOSTEN_HOCH; -import static org.eclipse.set.model.planpro.Signale.ENUMBefestigungArt.ENUM_BEFESTIGUNG_ART_PFOSTEN_NIEDRIG; -import static org.eclipse.set.model.planpro.Signale.ENUMBefestigungArt.ENUM_BEFESTIGUNG_ART_REGELANORDNUNG_MAST_HOCH; -import static org.eclipse.set.model.planpro.Signale.ENUMBefestigungArt.ENUM_BEFESTIGUNG_ART_REGELANORDNUNG_MAST_NIEDRIG; -import static org.eclipse.set.model.planpro.Signale.ENUMBefestigungArt.ENUM_BEFESTIGUNG_ART_REGELANORDNUNG_SONSTIGE_HOCH; -import static org.eclipse.set.model.planpro.Signale.ENUMBefestigungArt.ENUM_BEFESTIGUNG_ART_REGELANORDNUNG_SONSTIGE_NIEDRIG; -import static org.eclipse.set.model.planpro.Signale.ENUMBefestigungArt.ENUM_BEFESTIGUNG_ART_SCHIENENFUSS; -import static org.eclipse.set.model.planpro.Signale.ENUMBefestigungArt.ENUM_BEFESTIGUNG_ART_SONDERANORDNUNG_MAST_HOCH; -import static org.eclipse.set.model.planpro.Signale.ENUMBefestigungArt.ENUM_BEFESTIGUNG_ART_SONDERANORDNUNG_MAST_NIEDRIG; -import static org.eclipse.set.model.planpro.Signale.ENUMBefestigungArt.ENUM_BEFESTIGUNG_ART_WAND; +import static org.eclipse.set.feature.table.pt1.sskx.SskxColumns.Regelzeichnung; +import static org.eclipse.set.model.planpro.Signale.ENUMBefestigungArt.*; import java.util.LinkedList; import java.util.List; @@ -54,10 +43,8 @@ import org.eclipse.set.model.planpro.Signale.ENUMGeltungsbereich; import org.eclipse.set.model.planpro.Signale.ENUMSignalFunktion; import org.eclipse.set.model.planpro.Signale.Signal; -import org.eclipse.set.model.planpro.Signale.Signal_Befestigung; import org.eclipse.set.model.planpro.Signale.Signal_Rahmen; import org.eclipse.set.model.planpro.Signale.Signal_Signalbegriff; -import org.eclipse.set.model.planpro.Verweise.ID_Regelzeichnung_TypeClass; import org.eclipse.set.model.tablemodel.ColumnDescriptor; import org.eclipse.set.model.tablemodel.TableRow; import org.eclipse.set.model.tablemodel.extensions.FootnoteExtensions; @@ -171,21 +158,6 @@ protected void fillSpecifyColumns(final TableRow row, .toList(), MIXED_STRING_COMPARATOR); - // J: Sskx.konstruktive_Merkmale.Anordnung.Regelzeichnung - fillIterable(row, getColumn(cols, SskxColumns.Regelzeichnung), - signalRahmen, rahmen -> rahmen.stream().flatMap(r -> { - final Signal_Befestigung signalBefestigung = SignalRahmenExtensions - .getSignalBefestigung(r); - if (signalBefestigung == null) { - return Stream.empty(); - } - return signalBefestigung.getIDRegelzeichnung() - .stream() - .map(ID_Regelzeichnung_TypeClass::getValue) - .filter(Objects::nonNull) - .map(z -> fillRegelzeichnung(z)); - }).toList(), null); - // M: Sskx.Signalisierung.Signalbegriffe.Bezeichnung fillIterable(row, getColumn(cols, SskxColumns.Signalbegriffe_Bezeichnung), signal, @@ -291,6 +263,11 @@ protected ColumnDescriptor getBezeichnungColumn() { return getColumn(cols, SskxColumns.Bezeichnung_Signal); } + @Override + protected ColumnDescriptor getAnordnungRegelzeichnungColumn() { + return getColumn(cols, Regelzeichnung); + } + @Override protected void handledThrowException(final TMFactory factory, final Signal signal, final Exception e) { From 12758a41f90666497e14d7e96e29afa8080c7cf2 Mon Sep 17 00:00:00 2001 From: Quang Truong Date: Thu, 23 Jul 2026 16:20:14 +0200 Subject: [PATCH 2/3] fix call wrong method --- .../feature/table/pt1/ssks/AbstractSignalTableTransform.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssks/AbstractSignalTableTransform.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssks/AbstractSignalTableTransform.java index 3412fc7d03..55696b9075 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssks/AbstractSignalTableTransform.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssks/AbstractSignalTableTransform.java @@ -273,7 +273,7 @@ protected void fillGenerallyColumns(final TableRow row, // konstruktive_Merkmale.Anordnung.Regelzeichnung fillIterable(row, getAnordnungRegelzeichnungColumn(), signalRahmen, - rahmen -> transformRegelzeichnungArt(row, rahmen)); + this::transformRegelZeichnungen); // konstruktive_Merkmale.Fundament.Hoehe fillIterable(row, getFundamentHoeheColumn(), signalRahmen, @@ -419,7 +419,7 @@ private String fillBefestigung(final Signal_Befestigung befestigung) { } @SuppressWarnings("static-method") - protected Iterable transformRegelZeichnungen(final TableRow row, + protected Iterable transformRegelZeichnungen( final List rahmen) { final List befestigungRegelzeichnungen = rahmen.stream() .flatMap(r -> { From 6be30998e3b9dc9b916d792bc6a21febd1bbf8fe Mon Sep 17 00:00:00 2001 From: Quang Truong Date: Thu, 23 Jul 2026 16:31:46 +0200 Subject: [PATCH 3/3] remove static warning --- .../set/feature/table/pt1/ssks/AbstractSignalTableTransform.java | 1 - 1 file changed, 1 deletion(-) diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssks/AbstractSignalTableTransform.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssks/AbstractSignalTableTransform.java index 55696b9075..db96d1a321 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssks/AbstractSignalTableTransform.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssks/AbstractSignalTableTransform.java @@ -418,7 +418,6 @@ private String fillBefestigung(final Signal_Befestigung befestigung) { }; } - @SuppressWarnings("static-method") protected Iterable transformRegelZeichnungen( final List rahmen) { final List befestigungRegelzeichnungen = rahmen.stream()