From 5a96b1e81f08f2c63a57cc866c5c83045143569c Mon Sep 17 00:00:00 2001 From: Marius Heine Date: Wed, 18 Mar 2026 11:18:33 +0100 Subject: [PATCH 1/4] properly check for zero abstand --- .../set/feature/table/pt1/sszw/SszwTransformator.xtend | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 afa270d21..47ae6053c 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 @@ -164,10 +164,10 @@ class SszwTransformator extends AbstractPlanPro2TableModelTransformator { [isSimpleTrackSwitch], [ punktObjektTOPKante.exists [ potk | - (potk.abstand.wert === BigDecimal.ZERO && + (potk.abstand.wert.compareTo(BigDecimal.ZERO) === 0 && potk.topKante.TOPAnschlussA === ENUMTOPAnschluss.ENUMTOP_ANSCHLUSS_LINKS) || - (potk.abstand.wert !== BigDecimal.ZERO && + (potk.abstand.wert.compareTo(BigDecimal.ZERO) !== 0 && potk.topKante.TOPAnschlussB === ENUMTOPAnschluss.ENUMTOP_ANSCHLUSS_LINKS) ] @@ -179,10 +179,10 @@ class SszwTransformator extends AbstractPlanPro2TableModelTransformator { [isSimpleTrackSwitch], [ punktObjektTOPKante.exists [ potk | - (potk.abstand.wert === BigDecimal.ZERO && + (potk.abstand.wert.compareTo(BigDecimal.ZERO) === 0 && potk.topKante.TOPAnschlussA === ENUMTOPAnschluss.ENUMTOP_ANSCHLUSS_RECHTS) || - (potk.abstand.wert !== BigDecimal.ZERO && + (potk.abstand.wert.compareTo(BigDecimal.ZERO) !== 0 && potk.topKante.TOPAnschlussB === ENUMTOPAnschluss.ENUMTOP_ANSCHLUSS_RECHTS) From 9350cbf28f07dd7828c2dcb40964c125e2c1011e Mon Sep 17 00:00:00 2001 From: Quang Truong Date: Wed, 18 Mar 2026 11:27:51 +0100 Subject: [PATCH 2/4] Use compareTo instead of equal for BigDecimal --- .../set/feature/siteplan/transform/TrackSwitchLeg.xtend | 2 +- .../set/ppmodel/extensions/BereichObjektExtensions.xtend | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/java/bundles/org.eclipse.set.feature.siteplan/src/org/eclipse/set/feature/siteplan/transform/TrackSwitchLeg.xtend b/java/bundles/org.eclipse.set.feature.siteplan/src/org/eclipse/set/feature/siteplan/transform/TrackSwitchLeg.xtend index 8ea065cf0..b79f00254 100644 --- a/java/bundles/org.eclipse.set.feature.siteplan/src/org/eclipse/set/feature/siteplan/transform/TrackSwitchLeg.xtend +++ b/java/bundles/org.eclipse.set.feature.siteplan/src/org/eclipse/set/feature/siteplan/transform/TrackSwitchLeg.xtend @@ -233,7 +233,7 @@ class TrackSwitchLeg { } } - if (length === null || length === BigDecimal.ZERO) { + if (length === null || length.compareTo(BigDecimal.ZERO) === 0) { length = DEFAULT_TRACKSWITCH_LEG_LENGTH } } diff --git a/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/BereichObjektExtensions.xtend b/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/BereichObjektExtensions.xtend index a258cfe11..694051966 100644 --- a/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/BereichObjektExtensions.xtend +++ b/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/BereichObjektExtensions.xtend @@ -563,14 +563,14 @@ class BereichObjektExtensions extends BasisObjektExtensions { // The teilbereich have same TOP_Kante with the point if (sameTopKante) { val clone = EcoreUtil.copy(teilbereich) - if (teilbereich.begrenzungA.wert !== BigDecimal.ZERO) { + if (teilbereich.begrenzungA.wert.compareTo(BigDecimal.ZERO) != 0) { val tolerantLimitA = teilbereich.begrenzungA.wert - tolerantBigDecimal clone.begrenzungA.wert = tolerantLimitA <= BigDecimal.ZERO ? BigDecimal.ZERO : tolerantLimitA } - if (teilbereich.begrenzungB.wert !== teilBereichTopKante.laenge) { + if (teilbereich.begrenzungB.wert.compareTo(teilBereichTopKante.laenge) != 0) { val tolerantLimitB = teilbereich.begrenzungB.wert + tolerantBigDecimal clone.begrenzungB.wert = tolerantLimitB >= @@ -580,8 +580,8 @@ class BereichObjektExtensions extends BasisObjektExtensions { } val isContains = clone.contains(singlePoint) - if (clone.begrenzungA.wert === BigDecimal.ZERO && - clone.begrenzungB.wert === teilBereichTopKante.laenge && + if (clone.begrenzungA.wert.compareTo(BigDecimal.ZERO) === 0 && + clone.begrenzungB.wert.compareTo(teilBereichTopKante.laenge) == 0 && !isContains) { throw new IllegalArgumentException('''The TOP_Kante: «teilbereich.IDTOPKante.wert» should contain the Punkt_Objekt: «singlePoint.identitaet»''') } From ee69840045e5c147a666131a3a782a3d9f2c7b05 Mon Sep 17 00:00:00 2001 From: Marius Heine Date: Wed, 18 Mar 2026 11:51:19 +0100 Subject: [PATCH 3/4] fix NPE exception in stellbereich column --- .../set/feature/table/pt1/sszw/SszwTransformator.xtend | 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/sszw/SszwTransformator.xtend b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sszw/SszwTransformator.xtend index 47ae6053c..cef54e07e 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 @@ -331,9 +331,9 @@ class SszwTransformator extends AbstractPlanPro2TableModelTransformator { IDAussenelementansteuerung?.value === outsideControl ]) { return #[ - outsideControl.oertlichkeitNamensgebend.bezeichnung?. + outsideControl?.oertlichkeitNamensgebend?.bezeichnung?. oertlichkeitAbkuerzung?.wert ?: - outsideControl.bezeichnung?.bezeichnungAEA?.wert] + outsideControl?.bezeichnung?.bezeichnungAEA?.wert] } return #[stellbereich?.oertlichkeitBezeichnung].filterNull ], From 9c14f4ba0e0470f057be6d2507fc43a32be0f5d0 Mon Sep 17 00:00:00 2001 From: Marius Heine Date: Wed, 18 Mar 2026 11:54:11 +0100 Subject: [PATCH 4/4] fix NPE when calculating switch speed --- .../set/feature/table/pt1/sszw/SszwTransformator.xtend | 6 ++++++ 1 file changed, 6 insertions(+) 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 cef54e07e..622148cfc 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 @@ -460,6 +460,9 @@ class SszwTransformator extends AbstractPlanPro2TableModelTransformator { val gspKomponent = gspElement?.WKrGspKomponenten?.findFirst [ zungenpaar?.kreuzungsgleis?.wert === leftRightCross ] + if (gspKomponent === null) { + return ""; + } return allowSpeedEKW_DKW?.apply(gspKomponent)?.toString ?: "" } case ENUMW_KR_ART_ABW, @@ -472,6 +475,9 @@ class SszwTransformator extends AbstractPlanPro2TableModelTransformator { case ENUMW_KR_ART_KR, case ENUMW_KR_ART_SONSTIGE: { val gspKomponent = gspElement?.WKrGspKomponenten?.firstOrNull + if (gspKomponent === null) { + return ""; + } return allowSpeed?.apply(gspKomponent)?.toString ?: "" } default: