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 1fda133e5..a9291fe46 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 @@ -19,7 +19,6 @@ import org.eclipse.set.feature.table.pt1.AbstractPlanPro2TableModelTransformator import org.eclipse.set.model.planpro.Ansteuerung_Element.Stell_Bereich import org.eclipse.set.model.planpro.Basisobjekte.Basis_Objekt import org.eclipse.set.model.planpro.Fahrstrasse.ENUMFstrMittelArt -import org.eclipse.set.model.planpro.Fahrstrasse.Fstr_Abhaengigkeit import org.eclipse.set.model.planpro.Fahrstrasse.Fstr_Signalisierung import org.eclipse.set.model.planpro.Fahrstrasse.Fstr_Zug_Rangier import org.eclipse.set.model.planpro.Gleis.ENUMGleisart @@ -51,7 +50,6 @@ import org.slf4j.LoggerFactory import static org.eclipse.set.feature.table.pt1.sslz.SslzColumns.* import static org.eclipse.set.model.planpro.Bahnuebergang.ENUMBUESicherungsart.* -import static org.eclipse.set.model.planpro.Fahrstrasse.ENUMFstrZugArt.* import static org.eclipse.set.model.planpro.Gleis.ENUMGleisart.* import static extension org.eclipse.set.ppmodel.extensions.BasisAttributExtensions.* @@ -95,494 +93,474 @@ class SslzTransformator extends AbstractPlanPro2TableModelTransformator { override transformTableContent(MultiContainer_AttributeGroup container, TMFactory factory, Stell_Bereich controlArea) { - val fstrZugRangierList = container.fstrZugRangier.filter [ - isPlanningObject - ].filterObjectsInControlArea(controlArea) - val fstrZugRangierListSorted = fstrZugRangierList - var current = 0 - for (fstrZugRangier : fstrZugRangierListSorted) { - current++ + for (fstrZugRangier : container.fstrZugRangier.filter [ + isPlanningObject && isZ + ].filterObjectsInControlArea(controlArea)) { if (Thread.currentThread.interrupted) { return null } - // Generalbedingung - val isZ = fstrZugRangier.isZ - - if (isZ) { - val instance = factory.newTableRow(fstrZugRangier) - - // A: Sslz.Grundsatzangaben.Bezeichnung - fill( - instance, - cols.getColumn(Grundsatzangaben_Bezeichnung), - fstrZugRangier, - [getZugFstrBezeichnung([isZ(it)])] - ) - - // B: Sslz.Grundsatzangaben.Fahrweg.Start - fill(instance, cols.getColumn(Start), fstrZugRangier, [ - fahrwegStart + val instance = factory.newTableRow(fstrZugRangier) + val nextBlockFstr = fstrZugRangier.nextBlockFstrZugRangier + + // A: Sslz.Grundsatzangaben.Bezeichnung + fill( + instance, + cols.getColumn(Grundsatzangaben_Bezeichnung), + fstrZugRangier, + [getZugFstrBezeichnung([isZ(it)])] + ) + + // B: Sslz.Grundsatzangaben.Fahrweg.Start + fill(instance, cols.getColumn(Start), fstrZugRangier, [ + fahrwegStart + ]) + + // C: Sslz.Grundsatzangaben.Fahrweg.Ziel + fillConditional( + instance, + cols.getColumn(Ziel), + fstrZugRangier, + [nextBlockFstr.nullOrEmpty], + [fahrwegZiel], + [fahrwegZielBlock(nextBlockFstr)] + ) + + // D: Sslz.Grundsatzangaben.Fahrweg.Nummer + fill( + instance, + cols.getColumn(Nummer), + fstrZugRangier, + [fahrwegNummer] + ) + + // E: Sslz.Grundsatzangaben.Fahrweg.Entscheidungsweiche + fillIterable( + instance, + cols.getColumn(Entscheidungsweiche), + fstrZugRangier, + [getEntscheidungsweichen(NOT_USABLE).map[bezeichnung]], + MIXED_STRING_COMPARATOR, + [it] + ) + + // F: Sslz.Grundsatzangaben.Durchrutschweg.Bezeichnung + fill(instance, cols.getColumn(Durchrutschweg_Bezeichnung), + fstrZugRangier, [ + val bezeichnung = fstrZugRangier?.fstrDWeg?.bezeichnung?. + bezeichnungFstrDWeg?.wert + if (bezeichnung === null) + return null + + val vorzug = fstrZugRangier?.fstrZug?.fstrZugDWeg?. + DWegVorzug?.wert + if (vorzug === null) + return '''«bezeichnung» «WARNING_SYMBOL»''' + if (vorzug) + return '''«bezeichnung»*''' + else + return bezeichnung ]) - // C: Sslz.Grundsatzangaben.Fahrweg.Ziel - fillConditional(instance, cols.getColumn(Ziel), - fstrZugRangier, [ - val zielSignal = IDFstrFahrweg?.value.IDZiel?.value - return zielSignal.container.contents.filter( - Fstr_Zug_Rangier).findFirst [ - fstrZug?.fstrZugArt?.wert === ENUM_FSTR_ZUG_ART_B && - IDFstrFahrweg?.value?.IDStart?.value == - zielSignal - ] === null - ], [fahrwegZiel], [fahrwegZielBlock]) - - // D: Sslz.Grundsatzangaben.Fahrweg.Nummer - fill( - instance, - cols.getColumn(Nummer), - fstrZugRangier, - [fahrwegNummer] - ) - - // E: Sslz.Grundsatzangaben.Fahrweg.Entscheidungsweiche - fillIterable( - instance, - cols.getColumn(Entscheidungsweiche), - fstrZugRangier, - [getEntscheidungsweichen(NOT_USABLE).map[bezeichnung]], - MIXED_STRING_COMPARATOR, - [it] - ) - - // F: Sslz.Grundsatzangaben.Durchrutschweg.Bezeichnung - fill(instance, cols.getColumn(Durchrutschweg_Bezeichnung), - fstrZugRangier, [ - val bezeichnung = fstrZugRangier?.fstrDWeg?. - bezeichnung?.bezeichnungFstrDWeg?.wert - if (bezeichnung === null) - return null - - val vorzug = fstrZugRangier?.fstrZug?.fstrZugDWeg?. - DWegVorzug?.wert - if (vorzug === null) - return '''«bezeichnung» «WARNING_SYMBOL»''' - if (vorzug) - return '''«bezeichnung»*''' - else - return bezeichnung - ]) - - // G: Sslz.Grundsatzangaben.Art - fill(instance, - cols.getColumn(Art), - fstrZugRangier, - [fstrZugArt] - ) - - // H: Sslz.Einstellung.Autom_Einstellung - fill(instance, cols.getColumn(Autom_Einstellung), - fstrZugRangier, [ - fstrZugRangier?.fstrZug?.automatischeEinstellung?. - translate ?: "" - ]) - - // I: Sslz.Einstellung.F_Bedienung - fill( - instance, - cols.getColumn(F_Bedienung), - fstrZugRangier, - [ - fstrZugRangier?.fstrZugRangierAllg?.FBedienung?.wert?. - translate ?: "" + // G: Sslz.Grundsatzangaben.Art + fill(instance, + cols.getColumn(Art), + fstrZugRangier, + [fstrZugArt] + ) + + // H: Sslz.Einstellung.Autom_Einstellung + fill(instance, cols.getColumn(Autom_Einstellung), fstrZugRangier, [ + fstrZugRangier?.fstrZug?.automatischeEinstellung?. + translate ?: "" + ]) + + // I: Sslz.Einstellung.F_Bedienung + fill( + instance, + cols.getColumn(F_Bedienung), + fstrZugRangier, + [ + fstrZugRangier?.fstrZugRangierAllg?.FBedienung?.wert?. + translate ?: "" + ] + ) + + // J: Sslz.Abhaengigkeiten.Inselgleis + fillIterable( + instance, + cols.getColumn(Inselgleis), + fstrZugRangier?.fstrFahrweg?.zielSignal?. + zgFahrtGleichzeitigVerbot ?: Collections.emptySet, + [fillInselgleis], + MIXED_STRING_COMPARATOR + ) + + // K: Sslz.Abhaengigkeiten.Ueberwachte_Ssp + fillIterable( + instance, + cols.getColumn(Ueberwachte_Ssp), + fstrZugRangier, + [ + fstrFahrweg?.abhaengigkeiten?.map [ + schluesselsperre?.bezeichnung?.bezeichnungTabelle?.wert ] - ) + ], + MIXED_STRING_COMPARATOR + ) - // J: Sslz.Abhaengigkeiten.Inselgleis - fillIterable( - instance, - cols.getColumn(Inselgleis), - fstrZugRangier?.fstrFahrweg?.zielSignal?. - zgFahrtGleichzeitigVerbot ?: Collections.emptySet, - [fillInselgleis], - MIXED_STRING_COMPARATOR - ) + if (logger.debugEnabled) { + logger. + debug('''IDBUEEinschaltung=«fstrZugRangier.fstrZug?.IDBUEEinschaltung»''') + } - // K: Sslz.Abhaengigkeiten.Ueberwachte_Ssp - fillIterable( - instance, - cols.getColumn(Ueberwachte_Ssp), - fstrZugRangier, + // L: Sslz.Abhaengigkeiten.Abhaengiger_BUe + fillIterable( + instance, + cols.getColumn(Abhaengiger_BUe), + fstrZugRangier, + [ + (fstrFahrweg.BUes + fstrZugRangier.BUesImGefahrraum).filter [ + !#{ + ENUMBUE_SICHERUNGSART_P, + ENUMBUE_SICHERUNGSART_PUND_LF, + ENUMBUE_SICHERUNGSART_UE, + ENUMBUE_SICHERUNGSART_UE_UND_P + }.contains(BUEAnlageAllg?.BUESicherungsart?.wert) + ].toSet.map[bezeichnung?.bezeichnungTabelle?.wert] + ], + MIXED_STRING_COMPARATOR + ) + + // M: Sslz.Abhaengigkeiten.Nichthaltfallabschnitt + fillIterable( + instance, + cols.getColumn(Nichthaltfallabschnitt), + fstrZugRangier, + [ + fstrNichthaltfall.map [ + fmaAnlage?.IDGleisAbschnitt?.value?.bezeichnung?. + bezeichnungTabelle?.wert + ] + ], + MIXED_STRING_COMPARATOR + ) + + // N: Sslz.Abhaengigkeiten.Zweites_Haltfallkrit + fill( + instance, + cols.getColumn(Zweites_Haltfallkrit), + fstrZugRangier, + [ + (fstrFahrweg?.start?.zweitesHaltfallkriterium?. + schalter as Zugeinwirkung)?.bezeichnung?. + bezeichnungTabelle?.wert + ] + ) + + // O: Sslz.Abhaengigkeiten.Anrueckverschluss + val schaltmittel = new Wrapper> + val gleisabschnitte = new Wrapper> + val zugeinwirkungen = new Wrapper> + fillSwitch( + instance, + cols.getColumn(Anrueckverschluss), + fstrZugRangier, + new Case( [ - fstrFahrweg?.abhaengigkeiten?.map [ - schluesselsperre?.bezeichnung?.bezeichnungTabelle?. - wert - ] + schaltmittel.value = fstrFahrweg?.start?. + anrueckverschluss?.map[schalter]?.toSet ?: + Collections.emptySet + gleisabschnitte.value = schaltmittel.value.filter( + FMA_Anlage).map[IDGleisAbschnitt?.value]. + filterNull.toSet + !gleisabschnitte.value.empty ], - MIXED_STRING_COMPARATOR - ) - - if (logger.debugEnabled) { - logger. - debug('''IDBUEEinschaltung=«fstrZugRangier.fstrZug?.IDBUEEinschaltung»''') - } - - // L: Sslz.Abhaengigkeiten.Abhaengiger_BUe - fillIterable( - instance, - cols.getColumn(Abhaengiger_BUe), - fstrZugRangier, [ - (fstrFahrweg.BUes + fstrZugRangier.BUesImGefahrraum). - filter [ - !#{ - ENUMBUE_SICHERUNGSART_P, - ENUMBUE_SICHERUNGSART_PUND_LF, - ENUMBUE_SICHERUNGSART_UE, - ENUMBUE_SICHERUNGSART_UE_UND_P - }.contains( - BUEAnlageAllg?.BUESicherungsart?.wert) - ].toSet.map[bezeichnung?.bezeichnungTabelle?.wert] + gleisabschnitte.value.map [ + bezeichnung?.bezeichnungTabelle?.wert + ].filterNull ], + ITERABLE_FILLING_SEPARATOR, MIXED_STRING_COMPARATOR - ) - - // M: Sslz.Abhaengigkeiten.Nichthaltfallabschnitt - fillIterable( - instance, - cols.getColumn(Nichthaltfallabschnitt), - fstrZugRangier, + ), + new Case( [ - fstrNichthaltfall.map [ - fmaAnlage?.IDGleisAbschnitt?.value?.bezeichnung?. - bezeichnungTabelle?.wert - ] + zugeinwirkungen.value = schaltmittel.value.filter( + Zugeinwirkung).map [ + bezeichnung?.bezeichnungTabelle?.wert + ].toSet + !zugeinwirkungen.value.empty ], + [ + zugeinwirkungen.value + ], + ITERABLE_FILLING_SEPARATOR, MIXED_STRING_COMPARATOR ) - - // N: Sslz.Abhaengigkeiten.Zweites_Haltfallkrit - fill( - instance, - cols.getColumn(Zweites_Haltfallkrit), - fstrZugRangier, - [ - (fstrFahrweg?.start?.zweitesHaltfallkriterium?. - schalter as Zugeinwirkung)?.bezeichnung?. - bezeichnungTabelle?.wert + ) + + // P: Sslz.Signalisierung.Geschwindigkeit_Startsignal.Hg + fill(instance, cols.getColumn(Hg), fstrZugRangier, [ + fstrZugRangier?.fstrFahrweg?.fstrVHg?.wert?.toString + ]) + + // Q: Sslz.Signalisierung.Geschwindigkeit_Startsignal.Fahrweg + fill( + instance, + cols.getColumn(Fahrweg), + fstrZugRangier, + [ + fstrZugRangier.geschwindigkeit.orElse(null)?.toString ?: "" + ] + ) + + // R: Sslz.Signalisierung.Geschwindigkeit_Startsignal.DWeg + fill(instance, cols.getColumn(DWeg), fstrZugRangier, [ + fstrZugRangier?.fstrDWeg?.fstrDWegSpezifisch?.DWegV?.wert?. + toString + ]) + + // S: Sslz.Signalisierung.Geschwindigkeit_Startsignal.Besonders + fill(instance, cols.getColumn(Besonders), fstrZugRangier, [ + fstrZugRangier?.fstrZugRangierAllg?.fstrV?.wert?.toString + ]) + + // T: Sslz.Signalisierung.Geschwindigkeit_Startsignal.Zs3 + fillIterable( + instance, + cols.getColumn(Geschwindigkeit_Startsignal_Zs3), + fstrZugRangier, + [signalBegriffZs3ByStartSignal], + SIGNALBEGRIFF_COMPARATOR + ) + + // U: Sslz.Signalisierung.Geschwindigkeit_Startsignal.Aufwertung_Mwtfstr + fill( + instance, + cols.getColumn(Aufwertung_Mwtfstr), + fstrZugRangier, + [ + fstrZugRangier?.fstrMittel?.fstrMittelVAufwertung?.wert?. + translate ?: "" + ] + ) + + // V: Sslz.Signalisierung.Sonstiges_Startsignal.Zusatzlicht + fillConditional( + instance, + cols.getColumn(Zusatzlicht), + fstrZugRangier, + [ r | + r.fstrFahrweg.start.signalbegriffe.exists [ + hasSignalbegriffID(typeof(ZlO)) && + r.fstrSignalisierung.map [ + signalSignalbegriff + ].toList.contains(it) ] - ) - - // O: Sslz.Abhaengigkeiten.Anrueckverschluss - val schaltmittel = new Wrapper> - val gleisabschnitte = new Wrapper> - val zugeinwirkungen = new Wrapper> - fillSwitch( - instance, - cols.getColumn(Anrueckverschluss), - fstrZugRangier, - new Case( - [ - schaltmittel.value = fstrFahrweg?.start?. - anrueckverschluss?.map[schalter]?.toSet ?: - Collections.emptySet - gleisabschnitte.value = schaltmittel.value.filter( - FMA_Anlage).map[IDGleisAbschnitt?.value]. - filterNull.toSet - !gleisabschnitte.value.empty - ], - [ - gleisabschnitte.value.map [ - bezeichnung?.bezeichnungTabelle?.wert - ].filterNull - ], - ITERABLE_FILLING_SEPARATOR, - MIXED_STRING_COMPARATOR - ), - new Case( - [ - zugeinwirkungen.value = schaltmittel.value.filter( - Zugeinwirkung).map [ - bezeichnung?.bezeichnungTabelle?.wert - ].toSet - !zugeinwirkungen.value.empty - ], - [ - zugeinwirkungen.value - ], - ITERABLE_FILLING_SEPARATOR, - MIXED_STRING_COMPARATOR - ) - ) - - // P: Sslz.Signalisierung.Geschwindigkeit_Startsignal.Hg - fill(instance, cols.getColumn(Hg), fstrZugRangier, [ - fstrZugRangier?.fstrFahrweg?.fstrVHg?.wert?.toString - ]) - - // Q: Sslz.Signalisierung.Geschwindigkeit_Startsignal.Fahrweg - fill( - instance, - cols.getColumn(Fahrweg), - fstrZugRangier, - [ - fstrZugRangier.geschwindigkeit.orElse(null)?.toString ?: - "" + ], + ["x"] + ) + + // W: Sslz.Signalisierung.Sonstiges_Startsignal.Zs3v + fillIterable( + instance, + cols.getColumn(Zs3v), + fstrZugRangier, + [ + + getRelevantSignalBegriffAtSignal(fstrFahrweg.start, + typeof(Zs3v)).map[signalBegriffSymbol] + ], + SIGNALBEGRIFF_COMPARATOR + ) + + // X: Sslz.Signalisierung.Sonstiges_Startsignal.Zs2 + fillIterable( + instance, + cols.getColumn(Zs2), + fstrZugRangier, + [ + fstrSignalisierung.getFstrSignalisierungSymbol(typeof(Zs2)) + ], + SIGNALBEGRIFF_COMPARATOR + ) + + // Y: Sslz.Signalisierung.Sonstiges_Startsignal.Zs2v* + fillIterable( + instance, + cols.getColumn(Zs2v), + fstrZugRangier, + [ + getRelevantSignalBegriffAtSignal(fstrFahrweg.start, + typeof(Zs2v)).map [ + signalbegriffID.symbol ] - ) - - // R: Sslz.Signalisierung.Geschwindigkeit_Startsignal.DWeg - fill(instance, cols.getColumn(DWeg), fstrZugRangier, [ - fstrZugRangier?.fstrDWeg?.fstrDWegSpezifisch?.DWegV?.wert?. - toString - ]) - - // S: Sslz.Signalisierung.Geschwindigkeit_Startsignal.Besonders - fill(instance, cols.getColumn(Besonders), fstrZugRangier, [ - fstrZugRangier?.fstrZugRangierAllg?.fstrV?.wert?.toString - ]) - - // T: Sslz.Signalisierung.Geschwindigkeit_Startsignal.Zs3 - fillIterable( - instance, - cols.getColumn(Geschwindigkeit_Startsignal_Zs3), - fstrZugRangier, - [signalBegriffZs3ByStartSignal], - SIGNALBEGRIFF_COMPARATOR - ) - - // U: Sslz.Signalisierung.Geschwindigkeit_Startsignal.Aufwertung_Mwtfstr - fill( - instance, - cols.getColumn(Aufwertung_Mwtfstr), - fstrZugRangier, - [ - fstrZugRangier?.fstrMittel?.fstrMittelVAufwertung?. - wert?.translate ?: "" + ], + SIGNALBEGRIFF_COMPARATOR + ) + + // Z: Sslz.Signalisierung.Sonstiges_Startsignal.Zs6 + fillConditional( + instance, + cols.getColumn(Sonstiges_Startsignal_Zs6), + fstrZugRangier, + [ + fstrFahrweg.start.signalbegriffe.exists [ + hasSignalbegriffID(typeof(Zs6)) ] - ) - - // V: Sslz.Signalisierung.Sonstiges_Startsignal.Zusatzlicht - fillConditional( - instance, - cols.getColumn(Zusatzlicht), - fstrZugRangier, - [ r | - r.fstrFahrweg.start.signalbegriffe.exists [ - hasSignalbegriffID(typeof(ZlO)) && - r.fstrSignalisierung.map [ - signalSignalbegriff - ].toList.contains(it) - ] - ], - ["x"] - ) - - // W: Sslz.Signalisierung.Sonstiges_Startsignal.Zs3v - fillIterable( - instance, - cols.getColumn(Zs3v), - fstrZugRangier, - [ - - getRelevantSignalBegriffAtSignal(fstrFahrweg.start, - typeof(Zs3v)).map[signalBegriffSymbol] - ], - SIGNALBEGRIFF_COMPARATOR - ) - - // X: Sslz.Signalisierung.Sonstiges_Startsignal.Zs2 - fillIterable( - instance, - cols.getColumn(Zs2), - fstrZugRangier, - [ - fstrSignalisierung. - getFstrSignalisierungSymbol(typeof(Zs2)) - ], - SIGNALBEGRIFF_COMPARATOR - ) - - // Y: Sslz.Signalisierung.Sonstiges_Startsignal.Zs2v* - fillIterable( - instance, - cols.getColumn(Zs2v), - fstrZugRangier, - [ - getRelevantSignalBegriffAtSignal(fstrFahrweg.start, - typeof(Zs2v)).map [ - signalbegriffID.symbol - ] - ], - SIGNALBEGRIFF_COMPARATOR - ) - - // Z: Sslz.Signalisierung.Sonstiges_Startsignal.Zs6 - fillConditional( - instance, - cols.getColumn(Sonstiges_Startsignal_Zs6), - fstrZugRangier, - [ - fstrFahrweg.start.signalbegriffe.exists [ - hasSignalbegriffID(typeof(Zs6)) - ] - ], - [ - val zs6Begriffes = fstrFahrweg.start.signalbegriffe. - filter[hasSignalbegriffID(typeof(Zs6))] - fstrSignalisierung.map[signalSignalbegriff].exists [ - zs6Begriffes.contains(it) - ].translate + ], + [ + val zs6Begriffes = fstrFahrweg.start.signalbegriffe.filter [ + hasSignalbegriffID(typeof(Zs6)) ] - ) - - // AA: Sslz.Signalisierung.Sonstiges_Startsignal.Zs13 - fillConditional( - instance, - cols.getColumn(Zs13), - fstrZugRangier, - [ - fstrSignalisierung.map [ - signalSignalbegriff - ].exists [ - signalbegriffID instanceof Zs13 + fstrSignalisierung.map[signalSignalbegriff].exists [ + zs6Begriffes.contains(it) + ].translate + ] + ) + + // AA: Sslz.Signalisierung.Sonstiges_Startsignal.Zs13 + fillConditional( + instance, + cols.getColumn(Zs13), + fstrZugRangier, + [ + fstrSignalisierung.map [ + signalSignalbegriff + ].exists [ + signalbegriffID instanceof Zs13 + ] + ], + ["x"] + ) + + // AB: Sslz.Signalisierung.Im_Fahrweg.Zs3 + fillIterable( + instance, + cols.getColumn(Im_Fahrweg_Zs3), + fstrZugRangier, + [ + val zs3NichtStartZiel = fstrZugRangier.fstrSignalisierung. + filter [ + signalSignalbegriff !== null && + signalSignalbegriff. + hasSignalbegriffID(typeof(Zs3)) && + signalSignalbegriff.signalRahmen.signal !== + fstrZugRangier.fstrFahrweg.start && + signalSignalbegriff.signalRahmen.signal !== + fstrZugRangier.fstrFahrweg.zielSignal + ].sortBy [ + signalSignalbegriff?.signalbegriffID?.symbol ] - ], - ["x"] - ) - - // AB: Sslz.Signalisierung.Im_Fahrweg.Zs3 - fillIterable( - instance, - cols.getColumn(Im_Fahrweg_Zs3), - fstrZugRangier, - [ - val zs3NichtStartZiel = fstrZugRangier.fstrSignalisierung. - filter [ - signalSignalbegriff !== null && - signalSignalbegriff. - hasSignalbegriffID(typeof(Zs3)) && - signalSignalbegriff.signalRahmen.signal !== - fstrZugRangier.fstrFahrweg.start && - signalSignalbegriff.signalRahmen.signal !== - fstrZugRangier.fstrFahrweg.zielSignal - ].sortBy [ - signalSignalbegriff?.signalbegriffID?.symbol - ] - zs3NichtStartZiel.map [ - '''«signalSignalbegriff?.signalRahmen?.signal?.bezeichnung?.bezeichnungTabelle?.wert»« + zs3NichtStartZiel.map [ + '''«signalSignalbegriff?.signalRahmen?.signal?.bezeichnung?.bezeichnungTabelle?.wert»« »(«signalSignalbegriff?.signalBegriffSymbol»)''' - ] - ], - null, - [it], - ITERABLE_FILLING_SEPARATOR - ) - - // Analysis: Sslz.Signalisierung.Im_Fahrweg.Zs6 - if (logger.debugEnabled) { - try { - logger. - debug('''signalbegriffeImFahrweg=«fstrZugRangier.fstrFahrweg.signalbegriffeImFahrweg.debugString»''') - logger. - debug('''fstrSignalisierung=«fstrZugRangier.fstrSignalisierung.debugString»''') - } catch (Exception e) { - logger.error(e.message) - } + ] + ], + null, + [it], + ITERABLE_FILLING_SEPARATOR + ) + + // Analysis: Sslz.Signalisierung.Im_Fahrweg.Zs6 + if (logger.debugEnabled) { + try { + logger. + debug('''signalbegriffeImFahrweg=«fstrZugRangier.fstrFahrweg.signalbegriffeImFahrweg.debugString»''') + logger. + debug('''fstrSignalisierung=«fstrZugRangier.fstrSignalisierung.debugString»''') + } catch (Exception e) { + logger.error(e.message) } - // AC: Sslz.Signalisierung.Im_Fahrweg.Zs6 - fill( - instance, - cols.getColumn(Im_Fahrweg_Zs6), - fstrZugRangier, - [ - fstrFahrweg.signalbegriffeImFahrweg.findFirst [ b1 | - b1.hasSignalbegriffID(typeof(Zs6)) && - fstrZugRangier.fstrSignalisierung.exists [ b2 | - b2.signalSignalbegriff === b1 - ] - ]?.signalRahmen?.signal?.bezeichnung?. + } + // AC: Sslz.Signalisierung.Im_Fahrweg.Zs6 + fill( + instance, + cols.getColumn(Im_Fahrweg_Zs6), + fstrZugRangier, + [ + fstrFahrweg.signalbegriffeImFahrweg.findFirst [ b1 | + b1.hasSignalbegriffID(typeof(Zs6)) && + fstrZugRangier.fstrSignalisierung.exists [ b2 | + b2.signalSignalbegriff === b1 + ] + ]?.signalRahmen?.signal?.bezeichnung?. + bezeichnungTabelle?.wert + ] + ) + + // AD: Sslz.Signalisierung.Im_Fahrweg.Kennlicht + fillIterable( + instance, + cols.getColumn(Kennlicht), + fstrZugRangier, + [ + fstrSignalisierung.getSignalberiffsWithType(typeof(Kl)).map [ + signalRahmen.signal?.bezeichnung?. bezeichnungTabelle?.wert ] - ) - - // AD: Sslz.Signalisierung.Im_Fahrweg.Kennlicht - fillIterable( - instance, - cols.getColumn(Kennlicht), - fstrZugRangier, - [ - fstrSignalisierung.getSignalberiffsWithType(typeof(Kl)). - map [ - signalRahmen.signal?.bezeichnung?. - bezeichnungTabelle?.wert - ] - ], - MIXED_STRING_COMPARATOR - ) - - // AE: Sslz.Signalisierung.Im_Fahrweg.Vorsignalisierung - fillIterable( - instance, - cols.getColumn(Vorsignalisierung), - fstrZugRangier, - [ - vorsignalisierung.map [ vorsignal | - getVorsignalBezeichnung(vorsignal) - ] - ], - MIXED_STRING_COMPARATOR - ) - - // AF: Sslz.Bemerkung - fillSwitch( - instance, - cols.getColumn(Bemerkung), - fstrZugRangier, - new Case([ - fstrZugRangier.container.contents.filter( - Fstr_Abhaengigkeit).map [ - IDBedienAnzeigeElement?.value?. - bedienAnzeigeElementAllg - ].findFirst [ - it?.taste !== null || it?.schalter !== null - ] !== null - ], [ - val bedAnzeigeElemente = fstrFahrweg?.abhaengigkeiten?. - map [ - bedienAnzeigeElement - ]?.filterNull ?: Collections.emptyList - - '''«FOR bae : bedAnzeigeElemente»«bae.comment[translate]»«bae» «ENDFOR»'''. - toString.trim - ]), - new Case([ - !IDFstrAusschlussBesonders.empty - ], [ - val fstrAusschlussBesonders = IDFstrAusschlussBesonders. - map [ - value?.getZugFstrBezeichnung([art|isZ(art)]) - ] + ], + MIXED_STRING_COMPARATOR + ) + + // AE: Sslz.Signalisierung.Im_Fahrweg.Vorsignalisierung + fillIterable( + instance, + cols.getColumn(Vorsignalisierung), + fstrZugRangier, + [ + vorsignalisierung.map [ vorsignal | + getVorsignalBezeichnung(vorsignal) + ] + ], + MIXED_STRING_COMPARATOR + ) + + // AF: Sslz.Bemerkung + fillSwitch( + instance, + cols.getColumn(Bemerkung), + fstrZugRangier, + new Case([ + fstrZugRangier.container.fstrAbhaengigkeit.map [ + IDBedienAnzeigeElement?.value?.bedienAnzeigeElementAllg + ].filterNull.findFirst [ + it?.taste !== null || it?.schalter !== null + ] !== null + ], [ + val bedAnzeigeElemente = fstrFahrweg?.abhaengigkeiten?.map [ + bedienAnzeigeElement + ]?.filterNull ?: Collections.emptyList + + '''«FOR bae : bedAnzeigeElemente»«bae.comment[translate]»«bae» «ENDFOR»'''. + toString.trim + ]), + new Case([ + !IDFstrAusschlussBesonders.empty + ], [ + val fstrAusschlussBesonders = IDFstrAusschlussBesonders.map [ + value?.getZugFstrBezeichnung([art|isZ(art)]) + ] - '''«FOR fstr : fstrAusschlussBesonders»«fstr» «ENDFOR»'''. - toString.trim - ]) - ) + '''«FOR fstr : fstrAusschlussBesonders»«fstr» «ENDFOR»'''. + toString.trim + ]) + ) - fillFootnotes(instance, fstrZugRangier) + fillFootnotes(instance, fstrZugRangier) - if (logger.debugEnabled) { - logger.debug(Utils.debugString( - instance - )) - logger. - debug('''rowGroups=«factory.table.tablecontent.rowgroups.size»''') - logger.debug('''rows=«factory.table.tablecontent.rowgroups.fold( + if (logger.debugEnabled) { + logger.debug(Utils.debugString( + instance + )) + logger. + debug('''rowGroups=«factory.table.tablecontent.rowgroups.size»''') + logger.debug('''rows=«factory.table.tablecontent.rowgroups.fold( 0, [sum,rg|sum+rg.rows.size])»''') - } - // Representation-GUIDs füllen } + // Representation-GUIDs füllen } return factory.table @@ -610,17 +588,11 @@ class SslzTransformator extends AbstractPlanPro2TableModelTransformator { } private def String fahrwegZielBlock( - Fstr_Zug_Rangier fstrZugRangier + Fstr_Zug_Rangier fstrZugRangier, + Iterable nextBlockFstr ) { val ziel = fstrZugRangier?.IDFstrFahrweg?.value?.IDZiel?.value as Signal - - val fahrwegeAbZiel = ziel.container.contents.filter(Fstr_Zug_Rangier). - filter [ - fstrZug?.fstrZugArt?.wert === ENUM_FSTR_ZUG_ART_B && - IDFstrFahrweg?.value?.IDStart?.value == ziel - ] - - val blockSignale = fahrwegeAbZiel.map [ + val blockSignale = nextBlockFstr.map [ (IDFstrFahrweg?.value?.IDZiel?.value as Signal)?.bezeichnung?. bezeichnungTabelle?.wert ].filterNull.join(" ") @@ -749,4 +721,4 @@ class SslzTransformator extends AbstractPlanPro2TableModelTransformator { return '''«signalBegriff.signalbegriffID?.symbol»« »«IF (signalBegriff.hasSignalbegriffID(typeof(Zs3)) || signalBegriff.hasSignalbegriffID(typeof(Zs3v))) && !signalBegriff.signalSignalbegriffAllg?.geschaltet?.wert»F«ENDIF»''' } -} +} \ No newline at end of file diff --git a/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/FstrZugRangierExtensions.xtend b/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/FstrZugRangierExtensions.xtend index c0e56afba..59e093738 100644 --- a/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/FstrZugRangierExtensions.xtend +++ b/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/FstrZugRangierExtensions.xtend @@ -473,9 +473,10 @@ class FstrZugRangierExtensions extends BasisObjektExtensions { return fstrZug?.fstrFahrweg?.zielSignal } - def static Fstr_Zug_Rangier getZielFstrZugRangier(Fstr_Zug_Rangier fstr) { - val zielSignal = fstr.IDFstrFahrweg?.value.IDZiel?.value - return zielSignal.container.contents.filter(Fstr_Zug_Rangier).findFirst [ + def static Iterable getNextBlockFstrZugRangier( + Fstr_Zug_Rangier it) { + val zielSignal = IDFstrFahrweg?.value.IDZiel?.value + return zielSignal.container.fstrZugRangier.filter [ IDFstrFahrweg?.value?.IDStart?.value == zielSignal && fstrZug?.fstrZugArt?.wert === ENUMFstrZugArt.ENUM_FSTR_ZUG_ART_B ] @@ -490,7 +491,7 @@ class FstrZugRangierExtensions extends BasisObjektExtensions { } val fstrZug = fstrZugRangier.fstrZug val fstrZugArt = fstrZug?.fstrZugArt?.wert?.literal - if (fstrZugRangier.zielFstrZugRangier !== null) { + if (!fstrZugRangier.nextBlockFstrZugRangier.nullOrEmpty) { return '''«fstrZugArt.substring(1) ?: ""»B''' }