Skip to content
Open
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 @@ -52,6 +52,7 @@ import org.eclipse.set.model.planpro.Ortung.FMA_Anlage
import org.eclipse.set.model.planpro.Fahrstrasse.Fstr_Zug_Rangier
import org.eclipse.set.model.planpro.Ansteuerung_Element.Unterbringung
import org.eclipse.set.model.planpro.Ortung.Schaltmittel_Zuordnung
import org.eclipse.set.model.planpro.Signale.Signal_Signalbegriff

/**
* Transform basis objects to footnotes.
Expand Down Expand Up @@ -110,16 +111,15 @@ class FootnoteTransformation {
if (signalBefestigung === null) {
return #[]
}
return signalBefestigung?.signalBefestigungen?.filter [
IDBearbeitungsvermerk !== null
]?.flatMap [
val notes = IDBearbeitungsvermerk
val footnotes = signalBefestigung?.signalBefestigungen?.flatMap [
val notes = IDBearbeitungsvermerk ?: #[]
val objectStateNote = #[
signalBefestigung?.transformObjectStateEnum(
basisObjektAllg?.objektzustandBesonders?.wert)
signalBefestigung?.transformObjectStateEnum
].filterNull
return #[notes, objectStateNote].flatten
] ?: #[]

return footnotes.toList.withPrefix(signalBefestigung.prefix)
}

// Determine Footnotes for Ssks Table
Expand All @@ -128,14 +128,23 @@ class FootnoteTransformation {
val rahmenFootnotes = signalRahmen?.IDBearbeitungsvermerk?.filterNull
val objectStateNote = #[signalRahmen?.transformObjectStateEnum].
filterNull
val signalBegriffFootntoes = signalRahmen?.signalbegriffe?.flatMap [
val stateNote = #[transformObjectStateEnum].filterNull
return #[stateNote, IDBearbeitungsvermerk].filterNull.flatten
]?.filterNull
return #[rahmenFootnotes, objectStateNote, signalBegriffFootntoes].
filterNull.flatten
val signalRahmenFootnotes = #[rahmenFootnotes, objectStateNote].
filterNull.flatten.toList.withPrefix(signalRahmen.prefix)

val signalBegriffFootnotes = signalRahmen?.signalbegriffe?.flatMap [
referenceFootnotes
]
return #[signalRahmenFootnotes, signalBegriffFootnotes].filterNull.
flatten
}

// Determine Footnotes for Ssks Table
private def dispatch Iterable<ID_Bearbeitungsvermerk_TypeClass> getReferenceFootnotes(Signal_Signalbegriff signalBegriff) {
val signalBegriffFootnotes = signalBegriff?.IDBearbeitungsvermerk?.filterNull
val objectStateNote = #[signalBegriff?.transformObjectStateEnum].filterNull
return #[signalBegriffFootnotes, objectStateNote].filterNull.flatten.toList.withPrefix(signalBegriff.prefix)
}

// Determine Footnotes for Sskw Table
private def dispatch Iterable<ID_Bearbeitungsvermerk_TypeClass> getReferenceFootnotes(
W_Kr_Gsp_Element gspElement) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,17 @@
import org.eclipse.set.model.planpro.Basisobjekte.Bearbeitungsvermerk_Allg_AttributeGroup;
import org.eclipse.set.model.planpro.Basisobjekte.ENUMObjektzustandBesonders;
import org.eclipse.set.model.planpro.Basisobjekte.Ur_Objekt;
import org.eclipse.set.model.planpro.Signalbegriffe_Struktur.Signalbegriff_ID_TypeClass;
import org.eclipse.set.model.planpro.Signale.ENUMRahmenArt;
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.tablemodel.CellContent;
import org.eclipse.set.model.tablemodel.StringCellContent;
import org.eclipse.set.model.tablemodel.Table;
import org.eclipse.set.model.tablemodel.TableRow;
import org.eclipse.set.model.tablemodel.TablemodelFactory;
import org.eclipse.set.ppmodel.extensions.SignalRahmenExtensions;

/**
* Extension for table footnote
Expand Down Expand Up @@ -201,4 +207,140 @@ private static void fillValue(final TableRow row, final String value) {
stringCellContent.getValue().removeIf(String::isEmpty);
}
}

/**
* Generates a prefix for every footnote that is related to the provided
* basis objekt.
*
* @param obj
* the basis objekt for which the prefix shall be generated
* @return null as basis objekte don't have a prefix by default
*/
public static String getPrefix(final Basis_Objekt obj) {
return null;
}

/**
* Generates a prefix for every footnote that is related to the provided
* signal befestigung.
*
* @param signalBefestigung
* the signal befestigung for which the prefix shall be generated
* @return the prefix or null if not possible to create prefix
*/
public static String getPrefix(final Signal_Befestigung signalBefestigung) {
if (signalBefestigung == null) {
return null;
}
final EnumTranslationService enumTranslationService = Services
.getEnumTranslationService();
return enumTranslationService
.translate(signalBefestigung.getSignalBefestigungAllg()
.getBefestigungArt()
.getWert())
.getPresentation();
}

/**
* Generates a prefix for every footnote that is related to the provided
* signal rahmen.
*
* @param signalRahmen
* the signal rahmen for which the prefix shall be generated
* @return the prefix or null if not possible to create prefix
*/
public static String getPrefix(final Signal_Rahmen signalRahmen) {
if (signalRahmen == null || signalRahmen.getRahmenArt() == null
|| signalRahmen.getRahmenArt().getWert() == null) {
return null;
}
final ENUMRahmenArt rahmenArt = signalRahmen.getRahmenArt().getWert();
final EnumTranslationService enumTranslationService = Services
.getEnumTranslationService();
final String prefix = enumTranslationService.translate(rahmenArt)
.getPresentation();
if (rahmenArt.equals(ENUMRahmenArt.ENUM_RAHMEN_ART_BLECHTAFEL)
|| rahmenArt
.equals(ENUMRahmenArt.ENUM_RAHMEN_ART_ZUSATZANZEIGER)) {
final List<String> signalBegriffe = SignalRahmenExtensions
.getSignalbegriffe(signalRahmen)
.stream()
.map((signalBegriff) -> getPrefix(signalBegriff, false))
.filter(begriff -> begriff != null)
.collect(Collectors.toSet())
.stream()
.sorted()
.toList();
if (signalBegriffe.size() > 0) {
return prefix + " " + String.join(", ", signalBegriffe); //$NON-NLS-1$ //$NON-NLS-2$
}
}
return prefix;
}

/**
* Generates a prefix for every footnote that is related to the provided
* signal begriff.
*
* @param signalBegriff
* the signal begriff for which the prefix shall be generated
* @return the prefix or null if not possible to create prefix
*/
public static String getPrefix(final Signal_Signalbegriff signalBegriff) {
return getPrefix(signalBegriff, true);
}

private static String getPrefix(final Signal_Signalbegriff signalBegriff,
final boolean withSymbol) {
if (signalBegriff == null
|| signalBegriff.getSignalbegriffID() == null) {
return null;
}
final Signalbegriff_ID_TypeClass signalBegriffId = signalBegriff
.getSignalbegriffID();
// TODO: Properly determine name of Signalbegriff_ID
final String prefix = signalBegriffId.getClass()
.getSimpleName()
.replace("Impl", ""); //$NON-NLS-1$ //$NON-NLS-2$
if (withSymbol && signalBegriffId.getSymbol() != null) {
return prefix + " " + signalBegriffId.getSymbol(); //$NON-NLS-1$
}
return prefix;
}

/**
* Adds the given prefix to all the bearbeitungsvermerke.
* Bearbeitungsvermerke are cloned so that the original bearbeitungsvermerke
* stay untouched.
*
* @param bearbeitungsVermerke
* the bearbeitungsvermerke to prefix
* @param prefix
* the prefix to for the kommentar of bearbeitungsvermerk or null
* if no prefix should be added
* @return the extend bearbeitungsvermerke
*/
public static List<ID_Bearbeitungsvermerk_TypeClass> withPrefix(
final List<ID_Bearbeitungsvermerk_TypeClass> bearbeitungsVermerke,
final String prefix) {
if (prefix == null) {
return bearbeitungsVermerke;
}
return bearbeitungsVermerke.stream().map(bv -> {
final Bearbeitungsvermerk bearbeitungsvermerk = createBearbeitungsvermerkWithoutGuid(
prefix + ": " //$NON-NLS-1$
+ bv.getValue()
.getBearbeitungsvermerkAllg()
.getKommentar()
.getWert());
bearbeitungsvermerk.setIdentitaet(
BasisobjekteFactory.eINSTANCE.createIdentitaet_TypeClass());
bearbeitungsvermerk.getIdentitaet()
.setWert(bv.getValue().getIdentitaet().getWert());
final ID_Bearbeitungsvermerk_TypeClass idBv = BasisTypenFactory.eINSTANCE
.createID_Bearbeitungsvermerk_TypeClass();
idBv.setValue(bearbeitungsvermerk);
return idBv;
}).toList();
}
}
Loading