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 @@ -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;
Expand All @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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,
this::transformRegelZeichnungen);

// konstruktive_Merkmale.Fundament.Hoehe
fillIterable(row, getFundamentHoeheColumn(), signalRahmen,
rahmen -> rahmen.stream()
Expand Down Expand Up @@ -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);

Expand Down Expand Up @@ -407,4 +418,46 @@ private String fillBefestigung(final Signal_Befestigung befestigung) {
};
}

protected Iterable<String> transformRegelZeichnungen(
final List<Signal_Rahmen> rahmen) {
final List<String> befestigungRegelzeichnungen = rahmen.stream()
.flatMap(r -> {
final List<Signal_Befestigung> result = new ArrayList<>();

final List<Signal_Befestigung> befestigungUtilFundament = SignalRahmenExtensions
.getBefestigungUntilFundament(r);
result.addAll(befestigungUtilFundament);
final Signal_Befestigung signalBefestigung = SignalRahmenExtensions
.getSignalBefestigung(r);
result.add(signalBefestigung);
return result.stream();
})
.flatMap(befesitung -> {
final Optional<EList<ID_Regelzeichnung_TypeClass>> 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<String> 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();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -682,22 +678,6 @@ 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 @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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) {
Expand Down
Loading