Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,12 @@
*/
package org.eclipse.set.feature.table.pt1.ssks;

import static org.eclipse.set.model.planpro.Signale.ENUMBefestigungArt.*;
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_SONDERANORDNUNG_MAST_HOCH;
import static org.eclipse.set.model.planpro.Signale.ENUMBefestigungArt.ENUM_BEFESTIGUNG_ART_SONDERANORDNUNG_MAST_NIEDRIG;

import java.math.BigDecimal;
import java.util.ArrayList;
Expand All @@ -21,7 +26,6 @@
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import org.eclipse.set.basis.graph.TopPoint;
import org.eclipse.set.core.services.enumtranslation.EnumTranslationService;
Expand All @@ -37,7 +41,6 @@
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;
Expand Down Expand Up @@ -257,21 +260,6 @@ protected void fillGenerallyColumns(final TableRow row,
.collect(Collectors.toSet()),
null);

// konstruktive_Merkmale.Anordnung.Regelzeichnung
fillIterable(row, getRegelzeichnungColumn(), 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);

// konstruktive_Merkmale.Fundament.Art_Regelzeichnung
fillIterable(row, getArtRegelzeichnungColumn(), signalRahmen,
rahmen -> transformRegelzeichnungArt(row, rahmen),
Expand Down Expand Up @@ -362,8 +350,6 @@ protected void fillAbstandMastMitte(final TableRow row,

protected abstract ColumnDescriptor getArtRegelzeichnungColumn();

protected abstract ColumnDescriptor getRegelzeichnungColumn();

protected abstract ColumnDescriptor getBefestigungColumn();

protected abstract Map<ENUMLinksRechts, ColumnDescriptor> getAbstandMastMitteColumn();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ import org.eclipse.set.model.planpro.Signalbegriffe_Ril_301.MsWsGeWs
import org.eclipse.set.model.planpro.Signalbegriffe_Ril_301.MsWsRtWs
import org.eclipse.set.model.planpro.Signalbegriffe_Ril_301.MsWsSwWs
import org.eclipse.set.model.planpro.Signalbegriffe_Ril_301.Ne14
import org.eclipse.set.model.planpro.Signalbegriffe_Ril_301.Ne2
import org.eclipse.set.model.planpro.Signalbegriffe_Ril_301.OzBk
import org.eclipse.set.model.planpro.Signalbegriffe_Ril_301.Sh1
import org.eclipse.set.model.planpro.Signalbegriffe_Ril_301.Vr0
Expand Down Expand Up @@ -91,6 +90,18 @@ import org.osgi.service.event.EventAdmin
import static org.eclipse.set.feature.table.pt1.ssks.SsksColumns.*
import static org.eclipse.set.model.planpro.Ansteuerung_Element.ENUMAussenelementansteuerungArt.*
import static org.eclipse.set.model.planpro.Signale.ENUMAnschaltdauer.*
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_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.model.planpro.Signale.ENUMBeleuchtet.*
import static org.eclipse.set.model.planpro.Signale.ENUMFiktivesSignalFunktion.*
import static org.eclipse.set.model.planpro.Signale.ENUMGeltungsbereich.*
Expand All @@ -112,18 +123,6 @@ import static extension org.eclipse.set.ppmodel.extensions.StellelementExtension
import static extension org.eclipse.set.ppmodel.extensions.UnterbringungExtensions.*
import static extension org.eclipse.set.ppmodel.extensions.UrObjectExtensions.*
import static extension org.eclipse.set.utils.math.BigDecimalExtensions.*
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_PFOSTEN_HOCH
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_DACH_DECKE
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_REGELANORDNUNG_MAST_NIEDRIG
import static org.eclipse.set.model.planpro.Signale.ENUMBefestigungArt.ENUM_BEFESTIGUNG_ART_WAND
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_PFOSTEN_NIEDRIG
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_OL_MAST
import static org.eclipse.set.model.planpro.Signale.ENUMBefestigungArt.ENUM_BEFESTIGUNG_ART_SONDERANORDNUNG_MAST_NIEDRIG

/**
* Table transformation for a Signaltabelle (Ssks).
Expand Down Expand Up @@ -269,6 +268,10 @@ 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,
Expand Down Expand Up @@ -679,6 +682,22 @@ class SsksTransformator extends AbstractSignalTableTransform {
ENUM_SIGNAL_FUNKTION_ALLEINSTEHENDES_ZUSATZSIGNAL)
}

private static def Iterable<String> transformRegelzeichnungen(TableRow row,
List<Signal_Rahmen> 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
Expand Down Expand Up @@ -992,26 +1011,11 @@ class SsksTransformator extends AbstractSignalTableTransform {

private static def List<String> fillSignalisierungWeitere(Signal signal,
List<Signal_Rahmen> signalRahmen) {
// 1.Case: Signal_Rahmen contains Ne2 or Ne14
val rahmen = signalRahmen.filter [
!signalbegriffe.filter [
signalbegriffID instanceof Ne2 ||
signalbegriffID instanceof Ne14
].empty
].toList
if (!rahmen.nullOrEmpty) {
return rahmen.map[IDRegelzeichnung?.value].filterNull.map [
fillRegelzeichnung
].toList
}

// 2.Case: It give another Signal Ne2/Ne14, which have same Mast with current Signal
val sameMastSignal = signalRahmen.map[IDSignalBefestigung?.value].
filterNull.flatMap [
attachmentSignal
].filter [
it !== signal && (hasSignalbegriffID(typeof(Ne2)) ||
hasSignalbegriffID(typeof(Ne14)))
it !== signal
].toList
if (sameMastSignal.nullOrEmpty) {
return #[]
Expand Down Expand Up @@ -1221,10 +1225,6 @@ class SsksTransformator extends AbstractSignalTableTransform {
return cols.getColumn(Lichtraumprofil)
}

override protected getRegelzeichnungColumn() {
return cols.getColumn(Anordnung_Regelzeichnung)
}

override protected getStreckeColumn() {
return cols.getColumn(Strecke)
}
Expand All @@ -1243,19 +1243,18 @@ class SsksTransformator extends AbstractSignalTableTransform {
[throw new RuntimeException(e)]
)
}

override protected getSideDistanceMastType() {
return List.of(ENUM_BEFESTIGUNG_ART_REGELANORDNUNG_MAST_HOCH,
ENUM_BEFESTIGUNG_ART_REGELANORDNUNG_MAST_NIEDRIG,
ENUM_BEFESTIGUNG_ART_REGELANORDNUNG_SONSTIGE_HOCH,
ENUM_BEFESTIGUNG_ART_REGELANORDNUNG_SONSTIGE_NIEDRIG,
ENUM_BEFESTIGUNG_ART_SONDERANORDNUNG_MAST_HOCH,
ENUM_BEFESTIGUNG_ART_SONDERANORDNUNG_MAST_NIEDRIG,
ENUM_BEFESTIGUNG_ART_PFOSTEN_HOCH,
ENUM_BEFESTIGUNG_ART_PFOSTEN_NIEDRIG,
ENUM_BEFESTIGUNG_ART_ARBEITSBUEHNE,
ENUM_BEFESTIGUNG_ART_OL_MAST, ENUM_BEFESTIGUNG_ART_WAND,
ENUM_BEFESTIGUNG_ART_DACH_DECKE);
ENUM_BEFESTIGUNG_ART_REGELANORDNUNG_MAST_NIEDRIG,
ENUM_BEFESTIGUNG_ART_REGELANORDNUNG_SONSTIGE_HOCH,
ENUM_BEFESTIGUNG_ART_REGELANORDNUNG_SONSTIGE_NIEDRIG,
ENUM_BEFESTIGUNG_ART_SONDERANORDNUNG_MAST_HOCH,
ENUM_BEFESTIGUNG_ART_SONDERANORDNUNG_MAST_NIEDRIG,
ENUM_BEFESTIGUNG_ART_PFOSTEN_HOCH,
ENUM_BEFESTIGUNG_ART_PFOSTEN_NIEDRIG,
ENUM_BEFESTIGUNG_ART_ARBEITSBUEHNE, ENUM_BEFESTIGUNG_ART_OL_MAST,
ENUM_BEFESTIGUNG_ART_WAND, ENUM_BEFESTIGUNG_ART_DACH_DECKE);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,10 @@
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;
Expand Down Expand Up @@ -169,6 +171,21 @@ 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,
Expand Down Expand Up @@ -223,11 +240,6 @@ protected ColumnDescriptor getArtRegelzeichnungColumn() {
return getColumn(cols, SskxColumns.Art_Regelzeichnung);
}

@Override
protected ColumnDescriptor getRegelzeichnungColumn() {
return getColumn(cols, SskxColumns.Regelzeichnung);
}

@Override
protected ColumnDescriptor getBefestigungColumn() {
return getColumn(cols, SskxColumns.Befestigung);
Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import static org.eclipse.set.model.planpro.Signale.ENUMBefestigungArt.*

import static extension org.eclipse.set.ppmodel.extensions.SignalBefestigungExtensions.*
import static extension org.eclipse.set.ppmodel.extensions.SignalbegriffExtensions.*
import java.util.List

/**
* This class extends {@link Signal_Rahmen}.
Expand Down Expand Up @@ -157,4 +158,18 @@ class SignalRahmenExtensions extends BasisObjektExtensions {
Signal_Rahmen signalRahmen) {
return new SignalBefestigungIterator(signalRahmen)
}

/**
* @param signalRahmen this Signalrahmen
*
* @returns chain of Signalbefestigungen until the fundament. The chain is excluding the fundament.
*/
def static List<Signal_Befestigung> getBefestigungUntilFundament(Signal_Rahmen signalRahmen) {
val befestigungen = signalRahmen?.signalBefestigungIterator?.takeWhile[
signalBefestigungAllg?.befestigungArt?.wert !=
ENUM_BEFESTIGUNG_ART_FUNDAMENT
].toList
return befestigungen;

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ schaltung​​​​​​​​​​​​​​​​​​​​​​​
(Zusatzanzeiger)​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​";"Nach-
geordnetes Signal​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​";Mastschild​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​;"Weitere
(z. B. ETCS-Halttafel,
Vorsignaltafel)​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​";Automatische Fahrtstellung​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​;"Dunkel-
Lf-Signal)​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​";Automatische Fahrtstellung​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​;"Dunkel-
schaltung​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​";Durchfahrt erlaubt​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​;Besetzte Ausfahrt​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​;Löschung Zs 1/Zs 7​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​;Überwachung​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​;Überwachung​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​;Bemerkung​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
;Bezeichnung Signal;Reales Signal​;Funktion ohne Signal​​;Fiktives Signal​​​;Strecke​​​​;km​​​​​;Sonstige zulässige Anordnung​​​​​​;"Lichtraum-
profil​​​​​​​";"Über-
Expand Down
Loading