diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssit/SsitTransformationService.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssit/SsitTransformationService.java index 1e9a3cb18..993e6d26d 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssit/SsitTransformationService.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssit/SsitTransformationService.java @@ -8,11 +8,7 @@ */ package org.eclipse.set.feature.table.pt1.ssit; -import static org.eclipse.nebula.widgets.nattable.sort.SortDirectionEnum.ASC; -import static org.eclipse.set.utils.table.sorting.ComparatorBuilder.CellComparatorType.LEXICOGRAPHICAL; - import java.util.Collections; -import java.util.Comparator; import java.util.List; import java.util.Map; @@ -23,10 +19,8 @@ import org.eclipse.set.feature.table.pt1.messages.Messages; import org.eclipse.set.model.planpro.Basisobjekte.Strecke_Km_TypeClass; import org.eclipse.set.model.planpro.Verweise.ID_Strecke_TypeClass; -import org.eclipse.set.model.tablemodel.RowGroup; import org.eclipse.set.ppmodel.extensions.utils.TableNameInfo; import org.eclipse.set.utils.table.TableInfo.Pt1TableCategory; -import org.eclipse.set.utils.table.sorting.TableRowGroupComparator; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; import org.osgi.service.event.EventAdmin; @@ -54,13 +48,6 @@ public AbstractPlanPro2TableModelTransformator createTransformator() { return new SsitTransformator(cols, enumTranslationService, eventAdmin); } - @Override - public Comparator getRowGroupComparator() { - return TableRowGroupComparator.builder() - .sort("A", LEXICOGRAPHICAL, ASC) //$NON-NLS-1$ - .build(); - } - @Override public TableNameInfo getTableNameInfo() { return new TableNameInfo(messages.ToolboxTableNameSsitLong, diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sska/SskaTransformationService.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sska/SskaTransformationService.java index e67cbaa78..f82029442 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sska/SskaTransformationService.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sska/SskaTransformationService.java @@ -16,6 +16,7 @@ import java.util.List; import java.util.Map; +import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.core.services.enumtranslation.EnumTranslationService; import org.eclipse.set.feature.table.PlanPro2TableTransformationService; import org.eclipse.set.feature.table.pt1.AbstractPlanPro2TableModelTransformator; @@ -66,8 +67,9 @@ public AbstractPlanPro2TableModelTransformator createTransformator() { } @Override - public Comparator getRowGroupComparator() { - return TableRowGroupComparator.builder() + public Comparator getRowGroupComparator( + final TableType tableType) { + return TableRowGroupComparator.builder(tableType) .sort(ESTW_Zentraleinheit.class, Aussenelementansteuerung.class) .sort("A", LEXICOGRAPHICAL, ASC) //$NON-NLS-1$ .build(); diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskf/SskfTransformationService.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskf/SskfTransformationService.java index d4db821c9..dc54ddcf5 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskf/SskfTransformationService.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskf/SskfTransformationService.java @@ -16,6 +16,7 @@ import java.util.List; import java.util.Map; +import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.core.services.enumtranslation.EnumTranslationService; import org.eclipse.set.feature.table.PlanPro2TableTransformationService; import org.eclipse.set.feature.table.pt1.AbstractPlanPro2TableModelTransformator; @@ -62,8 +63,9 @@ public AbstractPlanPro2TableModelTransformator createTransformator() { } @Override - public Comparator getRowGroupComparator() { - return TableRowGroupComparator.builder() + public Comparator getRowGroupComparator( + final TableType tableType) { + return TableRowGroupComparator.builder(tableType) .sort("A", MIXED_STRING, ASC) //$NON-NLS-1$ .build(); } diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskg/SskgTransformationService.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskg/SskgTransformationService.java index 076987364..7ede0b7b6 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskg/SskgTransformationService.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskg/SskgTransformationService.java @@ -15,6 +15,7 @@ import java.util.List; import java.util.Map; +import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.core.services.enumtranslation.EnumTranslationService; import org.eclipse.set.core.services.graph.TopologicalGraphService; import org.eclipse.set.feature.table.PlanPro2TableTransformationService; @@ -68,15 +69,19 @@ public AbstractPlanPro2TableModelTransformator createTransformator() { } @Override - public Comparator getRowGroupComparator() { + public Comparator getRowGroupComparator( + final TableType tableType) { // It can be directly compare by Column J/K but for consistent // with another table the CompareRouteAndKm will be used. - return TableRowGroupComparator.builder().sortByRouteAndKm(obj -> { - if (obj instanceof final Punkt_Objekt po) { - return po; - } - return null; - }).sort(SskgColumns.Bezeichnung, LEXICOGRAPHICAL, ASC).build(); + return TableRowGroupComparator.builder(tableType) + .sortByRouteAndKm(obj -> { + if (obj instanceof final Punkt_Objekt po) { + return po; + } + return null; + }) + .sort(SskgColumns.Bezeichnung, LEXICOGRAPHICAL, ASC) + .build(); } @Override diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskp/SskpTransformationService.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskp/SskpTransformationService.java index 912ed3ee2..06961ec9c 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskp/SskpTransformationService.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskp/SskpTransformationService.java @@ -19,6 +19,7 @@ import java.util.function.Function; import org.eclipse.nebula.widgets.nattable.sort.SortDirectionEnum; +import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.core.services.enumtranslation.EnumTranslationService; import org.eclipse.set.core.services.graph.TopologicalGraphService; import org.eclipse.set.feature.table.PlanPro2TableTransformationService; @@ -127,19 +128,21 @@ private static String getCellContent(final TableCell cell) { } @Override - public Comparator getRowGroupComparator() { - return TableRowGroupComparator.builder().sortByRouteAndKm(obj -> { - if (obj instanceof final PZB_Element pzb) { - final List bezugPunkts = PZBElementExtensions - .getPZBElementBezugspunkt(pzb); - - if (!bezugPunkts.isEmpty() && bezugPunkts - .getFirst() instanceof final Punkt_Objekt po) { - return po; - } - } - return null; - }) + public Comparator getRowGroupComparator( + final TableType tableType) { + return TableRowGroupComparator.builder(tableType) + .sortByRouteAndKm(obj -> { + if (obj instanceof final PZB_Element pzb) { + final List bezugPunkts = PZBElementExtensions + .getPZBElementBezugspunkt(pzb); + + if (!bezugPunkts.isEmpty() && bezugPunkts + .getFirst() instanceof final Punkt_Objekt po) { + return po; + } + } + return null; + }) .sort(Bezugselement, CellComparatorType.LEXICOGRAPHICAL, SortDirectionEnum.ASC) .sort(Wirkfrequenz, diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssks/SsksTransformationService.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssks/SsksTransformationService.java index 125785476..8cd8b3faa 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssks/SsksTransformationService.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssks/SsksTransformationService.java @@ -19,6 +19,7 @@ import org.eclipse.e4.core.services.events.IEventBroker; import org.eclipse.set.basis.constants.Events; +import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.core.services.enumtranslation.EnumTranslationService; import org.eclipse.set.core.services.graph.BankService; import org.eclipse.set.feature.table.PlanPro2TableTransformationService; @@ -112,8 +113,9 @@ public void handleEvent(final Event event) { } @Override - public Comparator getRowGroupComparator() { - return TableRowGroupComparator.builder() + public Comparator getRowGroupComparator( + final TableType tableType) { + return TableRowGroupComparator.builder(tableType) .sort(Reales_Signal, EMPTY_LAST, ASC) .sort(Fiktives_Signal, EMPTY_LAST, ASC) // It can be directly compare by Column E/F but for consistent diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskt/SsktTransformationService.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskt/SsktTransformationService.java index 12787bb6e..039a2cc30 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskt/SsktTransformationService.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskt/SsktTransformationService.java @@ -16,6 +16,7 @@ import java.util.List; import java.util.Map; +import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.core.services.enumtranslation.EnumTranslationService; import org.eclipse.set.feature.table.PlanPro2TableTransformationService; import org.eclipse.set.feature.table.pt1.AbstractPlanPro2TableModelTransformator; @@ -62,8 +63,9 @@ public AbstractPlanPro2TableModelTransformator createTransformator() { } @Override - public Comparator getRowGroupComparator() { - return TableRowGroupComparator.builder() + public Comparator getRowGroupComparator( + final TableType tableType) { + return TableRowGroupComparator.builder(tableType) .sort(Technik_Standort.class, Bedien_Standort.class) .sort("A", MIXED_STRING, ASC) //$NON-NLS-1$ .build(); diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskw/SskwTransformationService.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskw/SskwTransformationService.java index 48b180c44..92d01eb60 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskw/SskwTransformationService.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskw/SskwTransformationService.java @@ -17,6 +17,7 @@ import java.util.List; import java.util.Map; +import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.core.services.enumtranslation.EnumTranslationService; import org.eclipse.set.core.services.session.SessionService; import org.eclipse.set.feature.table.PlanPro2TableTransformationService; @@ -68,8 +69,9 @@ public AbstractPlanPro2TableModelTransformator createTransformator() { } @Override - public Comparator getRowGroupComparator() { - return TableRowGroupComparator.builder() + public Comparator getRowGroupComparator( + final TableType tableType) { + return TableRowGroupComparator.builder(tableType) .sort("A", MIXED_STRING, ASC) //$NON-NLS-1$ .build(); } diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskx/SskxTransformationService.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskx/SskxTransformationService.java index 475e1d51e..1422792be 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskx/SskxTransformationService.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sskx/SskxTransformationService.java @@ -18,6 +18,7 @@ import org.eclipse.e4.core.services.events.IEventBroker; import org.eclipse.nebula.widgets.nattable.sort.SortDirectionEnum; import org.eclipse.set.basis.constants.Events; +import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.core.services.enumtranslation.EnumTranslationService; import org.eclipse.set.core.services.graph.BankService; import org.eclipse.set.feature.table.PlanPro2TableTransformationService; @@ -128,13 +129,15 @@ protected Pt1TableCategory getTableCategory() { } @Override - public Comparator getRowGroupComparator() { - return TableRowGroupComparator.builder().sortByRouteAndKm(obj -> { - if (obj instanceof final Signal signal) { - return signal; - } - return null; - }) + public Comparator getRowGroupComparator( + final TableType tableType) { + return TableRowGroupComparator.builder(tableType) + .sortByRouteAndKm(obj -> { + if (obj instanceof final Signal signal) { + return signal; + } + return null; + }) .sort(SskxColumns.Bezeichnung_Signal, CellComparatorType.LEXICOGRAPHICAL, SortDirectionEnum.ASC) diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssla/SslaTransformationService.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssla/SslaTransformationService.java index c1362e250..4040f6dfe 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssla/SslaTransformationService.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssla/SslaTransformationService.java @@ -9,7 +9,12 @@ package org.eclipse.set.feature.table.pt1.ssla; import static org.eclipse.nebula.widgets.nattable.sort.SortDirectionEnum.ASC; -import static org.eclipse.set.feature.table.pt1.ssla.SslaColumns.*; +import static org.eclipse.set.feature.table.pt1.ssla.SslaColumns.Art; +import static org.eclipse.set.feature.table.pt1.ssla.SslaColumns.Bezeichnung; +import static org.eclipse.set.feature.table.pt1.ssla.SslaColumns.Durchrutschweg_Ziel; +import static org.eclipse.set.feature.table.pt1.ssla.SslaColumns.Fahrweg_Start; +import static org.eclipse.set.feature.table.pt1.ssla.SslaColumns.Fahrweg_Ziel; +import static org.eclipse.set.feature.table.pt1.ssla.SslaColumns.Unterwegssignal; import static org.eclipse.set.utils.table.sorting.ComparatorBuilder.CellComparatorType.LEXICOGRAPHICAL; import java.util.Collections; @@ -18,6 +23,7 @@ import java.util.Map; import org.eclipse.nebula.widgets.nattable.sort.SortDirectionEnum; +import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.core.services.enumtranslation.EnumTranslationService; import org.eclipse.set.feature.table.PlanPro2TableTransformationService; import org.eclipse.set.feature.table.pt1.AbstractPlanPro2TableModelTransformator; @@ -66,8 +72,9 @@ public AbstractPlanPro2TableModelTransformator createTransformator() { } @Override - public Comparator getRowGroupComparator() { - return TableRowGroupComparator.builder() + public Comparator getRowGroupComparator( + final TableType tableType) { + return TableRowGroupComparator.builder(tableType) // Zugstraße - Z first, then Rangierstraßen - R .sort(Art, LEXICOGRAPHICAL, SortDirectionEnum.DESC) .sortByRouteAndKm(obj -> { diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslb/SslbTransformationService.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslb/SslbTransformationService.java index c1fedbe5d..1dc058e91 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslb/SslbTransformationService.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslb/SslbTransformationService.java @@ -18,6 +18,7 @@ import java.util.Optional; import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.core.services.enumtranslation.EnumTranslationService; import org.eclipse.set.core.services.graph.TopologicalGraphService; import org.eclipse.set.feature.table.PlanPro2TableTransformationService; @@ -86,8 +87,9 @@ public AbstractPlanPro2TableModelTransformator createTransformator() { } @Override - public Comparator getRowGroupComparator() { - return TableRowGroupComparator.builder() + public Comparator getRowGroupComparator( + final TableType tableType) { + return TableRowGroupComparator.builder(tableType) .sort("F", LEXICOGRAPHICAL, ASC) //$NON-NLS-1$ .sort("I", LEXICOGRAPHICAL, ASC) //$NON-NLS-1$ .build(); diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssld/SsldTransformationService.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssld/SsldTransformationService.java index c6f109bd5..3bf9aeb3f 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssld/SsldTransformationService.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssld/SsldTransformationService.java @@ -9,7 +9,13 @@ package org.eclipse.set.feature.table.pt1.ssld; import static org.eclipse.nebula.widgets.nattable.sort.SortDirectionEnum.ASC; -import static org.eclipse.set.feature.table.pt1.ssld.SsldColumns.*; +import static org.eclipse.set.feature.table.pt1.ssld.SsldColumns.Aufloeseabschnitt_Laenge; +import static org.eclipse.set.feature.table.pt1.ssld.SsldColumns.Bezeichnung; +import static org.eclipse.set.feature.table.pt1.ssld.SsldColumns.Freigemeldet; +import static org.eclipse.set.feature.table.pt1.ssld.SsldColumns.Laenge_Ist; +import static org.eclipse.set.feature.table.pt1.ssld.SsldColumns.massgebende_Neigung; +import static org.eclipse.set.feature.table.pt1.ssld.SsldColumns.v_Aufwertung_Verzicht; +import static org.eclipse.set.feature.table.pt1.ssld.SsldColumns.von; import static org.eclipse.set.utils.table.sorting.ComparatorBuilder.CellComparatorType.MIXED_STRING; import java.util.Collections; @@ -17,6 +23,7 @@ import java.util.List; import java.util.Map; +import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.core.services.enumtranslation.EnumTranslationService; import org.eclipse.set.core.services.graph.TopologicalGraphService; import org.eclipse.set.feature.table.PlanPro2TableTransformationService; @@ -70,14 +77,16 @@ public AbstractPlanPro2TableModelTransformator createTransformator() { } @Override - public Comparator getRowGroupComparator() { - return TableRowGroupComparator.builder().sortByRouteAndKm(obj -> { - if (obj instanceof final Fstr_DWeg fstr) { - return FahrwegExtensions - .getStart(DwegExtensions.getFstrFahrweg(fstr)); - } - return null; - }) + public Comparator getRowGroupComparator( + final TableType tableType) { + return TableRowGroupComparator.builder(tableType) + .sortByRouteAndKm(obj -> { + if (obj instanceof final Fstr_DWeg fstr) { + return FahrwegExtensions + .getStart(DwegExtensions.getFstrFahrweg(fstr)); + } + return null; + }) .sort(von, MIXED_STRING, ASC) .sort(Bezeichnung, MIXED_STRING, ASC) .build(); diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslf/SslfTransformationService.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslf/SslfTransformationService.java index d4bdb8200..22a3cf20b 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslf/SslfTransformationService.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslf/SslfTransformationService.java @@ -16,6 +16,7 @@ import java.util.List; import java.util.Map; +import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.core.services.enumtranslation.EnumTranslationService; import org.eclipse.set.feature.table.PlanPro2TableTransformationService; import org.eclipse.set.feature.table.pt1.AbstractPlanPro2TableModelTransformator; @@ -62,8 +63,9 @@ public AbstractPlanPro2TableModelTransformator createTransformator() { } @Override - public Comparator getRowGroupComparator() { - return TableRowGroupComparator.builder() + public Comparator getRowGroupComparator( + final TableType tableType) { + return TableRowGroupComparator.builder(tableType) .sort("A", MIXED_STRING, ASC) //$NON-NLS-1$ .sort("B", MIXED_STRING, ASC) //$NON-NLS-1$ .build(); diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssli/SsliTransformationService.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssli/SsliTransformationService.java index 8bf78ebdf..a037235dd 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssli/SsliTransformationService.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssli/SsliTransformationService.java @@ -16,6 +16,7 @@ import java.util.List; import java.util.Map; +import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.core.services.enumtranslation.EnumTranslationService; import org.eclipse.set.core.services.graph.TopologicalGraphService; import org.eclipse.set.feature.table.PlanPro2TableTransformationService; @@ -59,8 +60,9 @@ public AbstractPlanPro2TableModelTransformator createTransformator() { } @Override - public Comparator getRowGroupComparator() { - return TableRowGroupComparator.builder() + public Comparator getRowGroupComparator( + final TableType tableType) { + return TableRowGroupComparator.builder(tableType) .sort("A", MIXED_STRING, ASC) //$NON-NLS-1$ .build(); } diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssln/SslnTransformationService.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssln/SslnTransformationService.java index 659d5dc67..12debb3fd 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssln/SslnTransformationService.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssln/SslnTransformationService.java @@ -16,6 +16,7 @@ import java.util.List; import java.util.Map; +import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.core.services.enumtranslation.EnumTranslationService; import org.eclipse.set.feature.table.PlanPro2TableTransformationService; import org.eclipse.set.feature.table.pt1.AbstractPlanPro2TableModelTransformator; @@ -55,8 +56,9 @@ public AbstractPlanPro2TableModelTransformator createTransformator() { } @Override - public Comparator getRowGroupComparator() { - return TableRowGroupComparator.builder() + public Comparator getRowGroupComparator( + final TableType tableType) { + return TableRowGroupComparator.builder(tableType) .sort("A", MIXED_STRING, ASC) //$NON-NLS-1$ .build(); } diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslr/SslrTransformationService.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslr/SslrTransformationService.java index 0edfe9408..7cce9c606 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslr/SslrTransformationService.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslr/SslrTransformationService.java @@ -9,7 +9,11 @@ package org.eclipse.set.feature.table.pt1.sslr; import static org.eclipse.nebula.widgets.nattable.sort.SortDirectionEnum.ASC; -import static org.eclipse.set.feature.table.pt1.sslr.SslrColumns.*; +import static org.eclipse.set.feature.table.pt1.sslr.SslrColumns.Abhaengiger_BUe; +import static org.eclipse.set.feature.table.pt1.sslr.SslrColumns.Fahrweg_Entscheidungsweiche; +import static org.eclipse.set.feature.table.pt1.sslr.SslrColumns.Fahrweg_Nummer; +import static org.eclipse.set.feature.table.pt1.sslr.SslrColumns.Fahrweg_Start; +import static org.eclipse.set.feature.table.pt1.sslr.SslrColumns.Fahrweg_Ziel; import static org.eclipse.set.utils.table.sorting.ComparatorBuilder.CellComparatorType.MIXED_STRING; import java.util.Collections; @@ -17,6 +21,7 @@ import java.util.List; import java.util.Map; +import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.core.services.enumtranslation.EnumTranslationService; import org.eclipse.set.feature.table.PlanPro2TableTransformationService; import org.eclipse.set.feature.table.pt1.AbstractPlanPro2TableModelTransformator; @@ -58,14 +63,16 @@ public AbstractPlanPro2TableModelTransformator createTransformator() { } @Override - public Comparator getRowGroupComparator() { - return TableRowGroupComparator.builder().sortByRouteAndKm(obj -> { - if (obj instanceof final Fstr_Zug_Rangier fstr) { - return FahrwegExtensions.getStart( - FstrZugRangierExtensions.getFstrFahrweg(fstr)); - } - return null; - }) + public Comparator getRowGroupComparator( + final TableType tableType) { + return TableRowGroupComparator.builder(tableType) + .sortByRouteAndKm(obj -> { + if (obj instanceof final Fstr_Zug_Rangier fstr) { + return FahrwegExtensions.getStart( + FstrZugRangierExtensions.getFstrFahrweg(fstr)); + } + return null; + }) .sort(Fahrweg_Start, MIXED_STRING, ASC) .sort(Fahrweg_Ziel, MIXED_STRING, ASC) .sort(Fahrweg_Nummer, MIXED_STRING, ASC) diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslw/SslwTransformationService.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslw/SslwTransformationService.java index 911981290..c14a278df 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslw/SslwTransformationService.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslw/SslwTransformationService.java @@ -16,6 +16,7 @@ import java.util.List; import java.util.Map; +import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.core.services.enumtranslation.EnumTranslationService; import org.eclipse.set.feature.table.PlanPro2TableTransformationService; import org.eclipse.set.feature.table.pt1.AbstractPlanPro2TableModelTransformator; @@ -62,8 +63,9 @@ public AbstractPlanPro2TableModelTransformator createTransformator() { } @Override - public Comparator getRowGroupComparator() { - return TableRowGroupComparator.builder() + public Comparator getRowGroupComparator( + final TableType tableType) { + return TableRowGroupComparator.builder(tableType) .sort("A", MIXED_STRING, ASC) //$NON-NLS-1$ .build(); } diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslz/SslzTransformationService.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslz/SslzTransformationService.java index 5fa1ec058..1ca5649cf 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslz/SslzTransformationService.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sslz/SslzTransformationService.java @@ -9,7 +9,18 @@ package org.eclipse.set.feature.table.pt1.sslz; import static org.eclipse.nebula.widgets.nattable.sort.SortDirectionEnum.ASC; -import static org.eclipse.set.feature.table.pt1.sslz.SslzColumns.*; +import static org.eclipse.set.feature.table.pt1.sslz.SslzColumns.Abhaengiger_BUe; +import static org.eclipse.set.feature.table.pt1.sslz.SslzColumns.Durchrutschweg_Bezeichnung; +import static org.eclipse.set.feature.table.pt1.sslz.SslzColumns.Entscheidungsweiche; +import static org.eclipse.set.feature.table.pt1.sslz.SslzColumns.Fahrweg; +import static org.eclipse.set.feature.table.pt1.sslz.SslzColumns.Geschwindigkeit_Startsignal_Zs3; +import static org.eclipse.set.feature.table.pt1.sslz.SslzColumns.Im_Fahrweg_Zs3; +import static org.eclipse.set.feature.table.pt1.sslz.SslzColumns.Im_Fahrweg_Zs6; +import static org.eclipse.set.feature.table.pt1.sslz.SslzColumns.Kennlicht; +import static org.eclipse.set.feature.table.pt1.sslz.SslzColumns.Nummer; +import static org.eclipse.set.feature.table.pt1.sslz.SslzColumns.Start; +import static org.eclipse.set.feature.table.pt1.sslz.SslzColumns.Vorsignalisierung; +import static org.eclipse.set.feature.table.pt1.sslz.SslzColumns.Ziel; import static org.eclipse.set.utils.table.sorting.ComparatorBuilder.CellComparatorType.LEXICOGRAPHICAL; import java.util.Collections; @@ -17,6 +28,7 @@ import java.util.List; import java.util.Map; +import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.core.services.enumtranslation.EnumTranslationService; import org.eclipse.set.feature.table.PlanPro2TableTransformationService; import org.eclipse.set.feature.table.pt1.AbstractPlanPro2TableModelTransformator; @@ -85,14 +97,16 @@ protected String getShortcut() { } @Override - public Comparator getRowGroupComparator() { - return TableRowGroupComparator.builder().sortByRouteAndKm(obj -> { - if (obj instanceof final Fstr_Zug_Rangier fstr) { - return FahrwegExtensions.getStart( - FstrZugRangierExtensions.getFstrFahrweg(fstr)); - } - return null; - }) + public Comparator getRowGroupComparator( + final TableType tableType) { + return TableRowGroupComparator.builder(tableType) + .sortByRouteAndKm(obj -> { + if (obj instanceof final Fstr_Zug_Rangier fstr) { + return FahrwegExtensions.getStart( + FstrZugRangierExtensions.getFstrFahrweg(fstr)); + } + return null; + }) .sort(Start, LEXICOGRAPHICAL, ASC) .sort(Ziel, LEXICOGRAPHICAL, ASC) .sort(Nummer, LEXICOGRAPHICAL, ASC) diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssvu/SsvuTransformationService.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssvu/SsvuTransformationService.java index 7bfd9a510..5fac5f9c4 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssvu/SsvuTransformationService.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/ssvu/SsvuTransformationService.java @@ -16,6 +16,7 @@ import java.util.List; import java.util.Map; +import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.core.services.enumtranslation.EnumTranslationService; import org.eclipse.set.feature.table.PlanPro2TableTransformationService; import org.eclipse.set.feature.table.pt1.AbstractPlanPro2TableModelTransformator; @@ -62,8 +63,9 @@ public AbstractPlanPro2TableModelTransformator createTransformator() { } @Override - public Comparator getRowGroupComparator() { - return TableRowGroupComparator.builder() + public Comparator getRowGroupComparator( + final TableType tableType) { + return TableRowGroupComparator.builder(tableType) .sort("A", MIXED_STRING, ASC) //$NON-NLS-1$ .build(); } diff --git a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sxxx/SxxxTransformationService.java b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sxxx/SxxxTransformationService.java index c3f26ff46..bffdab644 100644 --- a/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sxxx/SxxxTransformationService.java +++ b/java/bundles/org.eclipse.set.feature.table.pt1/src/org/eclipse/set/feature/table/pt1/sxxx/SxxxTransformationService.java @@ -18,6 +18,7 @@ import java.util.List; import java.util.Map; +import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.core.services.enumtranslation.EnumTranslationService; import org.eclipse.set.feature.table.PlanPro2TableTransformationService; import org.eclipse.set.feature.table.pt1.AbstractPlanPro2TableTransformationService; @@ -81,8 +82,9 @@ public TableModelTransformator createTransformato } @Override - public Comparator getRowGroupComparator() { - return TableRowGroupComparator.builder() + public Comparator getRowGroupComparator( + final TableType tableType) { + return TableRowGroupComparator.builder(tableType) .sort(SxxxColumns.Text_Content, LEXICOGRAPHICAL, ASC) .sort(SxxxColumns.Reference_Object, LEXICOGRAPHICAL, ASC) .build(); diff --git a/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/ToolboxTableView.java b/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/ToolboxTableView.java index 053095f0a..936a5dd72 100644 --- a/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/ToolboxTableView.java +++ b/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/ToolboxTableView.java @@ -881,7 +881,7 @@ private String getRowReferenceObjectGuid(final int rowPosition) { */ private void subcribeTriggerResortEvent() { final Comparator comparator = tableService - .getRowGroupComparator(tableInfo); + .getRowGroupComparator(tableInfo, tableType); if (table != null && comparator instanceof final TableRowGroupComparator rowGroupComparator) { // This is new instance of Comparator, therefore need call sort here @@ -909,7 +909,7 @@ private void subcribeTriggerResortEvent() { .size() && triggeredEvents .containsAll(triggerComparisonEvent)) { - tableService.sortTable(table, tableInfo); + tableService.sortTable(table, tableInfo, tableType); tableInstances.clear(); tableInstances.addAll( TableExtensions.getTableRows(table)); diff --git a/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/internal/TableServiceImpl.java b/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/internal/TableServiceImpl.java index 31881e8ec..a82f63249 100644 --- a/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/internal/TableServiceImpl.java +++ b/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/internal/TableServiceImpl.java @@ -317,7 +317,7 @@ private Object loadTransform(final TableInfo tableInfo, } // sorting - sortTable(transformedTable, tableInfo); + sortTable(transformedTable, tableInfo, tableType); saveTableToCache(transformedTable, modelSession, tableInfo); return transformedTable; } @@ -430,7 +430,7 @@ public Table transformToTable(final TableInfo tableInfo, modelSession, getModelService(tableInfo), controlAreaIds); TableServiceUtils.clearEmptyRow(resultTable); getModelService(tableInfo).addAdditionRow((Table) table, resultTable); - sortTable(resultTable, tableInfo); + sortTable(resultTable, tableInfo, tableType); return resultTable; } @@ -682,7 +682,7 @@ public Table createDiffTable(final TableInfo tableInfo, final Table compareTable = diffServiceMap .get(TableCompareType.PROJECT) .createDiffTable(mainSessionTable, compareSessionTable); - sortTable(compareTable, tableInfo); + sortTable(compareTable, tableInfo, tableType); return compareTable; } catch (final Exception e) { @@ -694,17 +694,18 @@ public Table createDiffTable(final TableInfo tableInfo, } @Override - public void sortTable(final Table table, final TableInfo tableInfo) { + public void sortTable(final Table table, final TableInfo tableInfo, + final TableType tableType) { final Comparator comparator = getModelService(tableInfo) - .getRowGroupComparator(); + .getRowGroupComparator(tableType); ECollections.sort(table.getTablecontent().getRowgroups(), comparator); } @Override public TableRowGroupComparator getRowGroupComparator( - final TableInfo tableInfo) { + final TableInfo tableInfo, final TableType tableType) { final Comparator comparator = getModelService(tableInfo) - .getRowGroupComparator(); + .getRowGroupComparator(tableType); if (comparator instanceof final TableRowGroupComparator rowGroupComparator) { return rowGroupComparator; } diff --git a/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/overview/TableErrorTableView.java b/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/overview/TableErrorTableView.java index 6a850ba31..4dd389426 100644 --- a/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/overview/TableErrorTableView.java +++ b/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/overview/TableErrorTableView.java @@ -107,7 +107,7 @@ private Table getTable() { final Table table = service.transform(tableErrors); ECollections.sort(table.getTablecontent().getRowgroups(), - service.getRowGroupComparator()); + service.getRowGroupComparator(null)); return table; } diff --git a/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/overview/TableErrorTransformationService.java b/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/overview/TableErrorTransformationService.java index b7f719922..b988d12bc 100644 --- a/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/overview/TableErrorTransformationService.java +++ b/java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/overview/TableErrorTransformationService.java @@ -14,6 +14,7 @@ import java.util.Collection; import java.util.Comparator; +import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.core.services.enumtranslation.EnumTranslationService; import org.eclipse.set.feature.table.messages.Messages; import org.eclipse.set.model.tablemodel.ColumnDescriptor; @@ -65,9 +66,10 @@ public ColumnDescriptor fillHeaderDescriptions( } @Override - public Comparator getRowGroupComparator() { + public Comparator getRowGroupComparator( + final TableType tableType) { // default comparator - return TableRowGroupComparator.builder() + return TableRowGroupComparator.builder(tableType) .sort("A", NUMERIC, ASC) //$NON-NLS-1$ .build(); } diff --git a/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/SignalExtensions.xtend b/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/SignalExtensions.xtend index 6435b47db..72b94da13 100644 --- a/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/SignalExtensions.xtend +++ b/java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/SignalExtensions.xtend @@ -507,7 +507,7 @@ class SignalExtensions extends PunktObjektExtensions { val rahmen = signal.signalRahmen val befestigungen = rahmen.map[it -> signalBefestigung].distinctBy [ value - ].toList + ].filterNull.toList switch mast : befestigungen.filter [ mastTypeOfSignalWithTwoMast.contains( diff --git a/java/bundles/org.eclipse.set.services/src/org/eclipse/set/services/table/TableService.java b/java/bundles/org.eclipse.set.services/src/org/eclipse/set/services/table/TableService.java index b1c1b9ea2..27dc64903 100644 --- a/java/bundles/org.eclipse.set.services/src/org/eclipse/set/services/table/TableService.java +++ b/java/bundles/org.eclipse.set.services/src/org/eclipse/set/services/table/TableService.java @@ -230,15 +230,20 @@ Table createDiffTable(TableInfo tableInfo, TableType tableType, * the table * @param tableInfo * the {@link TableInfo} + * @param tableType + * the table type for which the table shall be sorted */ - void sortTable(Table table, TableInfo tableInfo); + void sortTable(Table table, TableInfo tableInfo, final TableType tableType); /** * @param tableInfo * the {@link TableInfo} + * @param tableType + * the table type for which the comparator is requested * @return the row group comparator */ - Comparator getRowGroupComparator(TableInfo tableInfo); + Comparator getRowGroupComparator(TableInfo tableInfo, + final TableType tableType); /** * @param part diff --git a/java/bundles/org.eclipse.set.utils.table.test/src/org/eclipse/set/utils/table/test/sorting/CompareRouteAndKmCriterionTest.java b/java/bundles/org.eclipse.set.utils.table.test/src/org/eclipse/set/utils/table/test/sorting/CompareRouteAndKmCriterionTest.java index 00d1b4a5a..5c2f1974a 100644 --- a/java/bundles/org.eclipse.set.utils.table.test/src/org/eclipse/set/utils/table/test/sorting/CompareRouteAndKmCriterionTest.java +++ b/java/bundles/org.eclipse.set.utils.table.test/src/org/eclipse/set/utils/table/test/sorting/CompareRouteAndKmCriterionTest.java @@ -158,7 +158,7 @@ void givenCompareRouteAndKmCriterion() { return po; } return null; - }); + }, null); } @Test diff --git a/java/bundles/org.eclipse.set.utils.table/src/org/eclipse/set/utils/table/AbstractTableTransformationService.java b/java/bundles/org.eclipse.set.utils.table/src/org/eclipse/set/utils/table/AbstractTableTransformationService.java index 4f7107edd..5e61446de 100644 --- a/java/bundles/org.eclipse.set.utils.table/src/org/eclipse/set/utils/table/AbstractTableTransformationService.java +++ b/java/bundles/org.eclipse.set.utils.table/src/org/eclipse/set/utils/table/AbstractTableTransformationService.java @@ -18,6 +18,7 @@ import java.util.Comparator; import java.util.List; +import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.model.tablemodel.ColumnDescriptor; import org.eclipse.set.model.tablemodel.RowGroup; import org.eclipse.set.model.tablemodel.Table; @@ -86,9 +87,10 @@ public void format(final Table table) { } @Override - public Comparator getRowGroupComparator() { + public Comparator getRowGroupComparator( + final TableType tableType) { // default comparator - return TableRowGroupComparator.builder() + return TableRowGroupComparator.builder(tableType) .sort("A", LEXICOGRAPHICAL, ASC) //$NON-NLS-1$ .build(); } diff --git a/java/bundles/org.eclipse.set.utils.table/src/org/eclipse/set/utils/table/TableTransformationService.java b/java/bundles/org.eclipse.set.utils.table/src/org/eclipse/set/utils/table/TableTransformationService.java index 810cf2937..08d397f17 100644 --- a/java/bundles/org.eclipse.set.utils.table/src/org/eclipse/set/utils/table/TableTransformationService.java +++ b/java/bundles/org.eclipse.set.utils.table/src/org/eclipse/set/utils/table/TableTransformationService.java @@ -11,6 +11,7 @@ import java.util.Collection; import java.util.Comparator; +import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.model.tablemodel.RowGroup; import org.eclipse.set.model.tablemodel.Table; @@ -33,9 +34,12 @@ public interface TableTransformationService { void format(Table table); /** + * @param tableType + * the table type for which the comparator is requested + * * @return the comparator for sorting row groups */ - Comparator getRowGroupComparator(); + Comparator getRowGroupComparator(TableType tableType); /** * Transforms a model to a table model. diff --git a/java/bundles/org.eclipse.set.utils.table/src/org/eclipse/set/utils/table/sorting/CompareRouteAndKmCriterion.java b/java/bundles/org.eclipse.set.utils.table/src/org/eclipse/set/utils/table/sorting/CompareRouteAndKmCriterion.java index 1444d3b3b..2fb674ada 100644 --- a/java/bundles/org.eclipse.set.utils.table/src/org/eclipse/set/utils/table/sorting/CompareRouteAndKmCriterion.java +++ b/java/bundles/org.eclipse.set.utils.table/src/org/eclipse/set/utils/table/sorting/CompareRouteAndKmCriterion.java @@ -22,13 +22,20 @@ import java.util.stream.Collectors; import org.eclipse.nebula.widgets.nattable.sort.SortDirectionEnum; +import org.eclipse.set.basis.constants.ContainerType; import org.eclipse.set.basis.constants.Events; +import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.model.planpro.Basisobjekte.Punkt_Objekt; import org.eclipse.set.model.planpro.Basisobjekte.Ur_Objekt; +import org.eclipse.set.model.planpro.PlanPro.PlanPro_Schnittstelle; import org.eclipse.set.model.tablemodel.TableRow; import org.eclipse.set.model.tablemodel.extensions.TableRowExtensions; +import org.eclipse.set.ppmodel.extensions.MultiContainer_AttributeGroupExtensions; +import org.eclipse.set.ppmodel.extensions.PlanProSchnittstelleExtensions; import org.eclipse.set.ppmodel.extensions.PunktObjektExtensions; import org.eclipse.set.ppmodel.extensions.PunktObjektStreckeExtensions; +import org.eclipse.set.ppmodel.extensions.UrObjectExtensions; +import org.eclipse.set.ppmodel.extensions.container.MultiContainer_AttributeGroup; import org.eclipse.xtext.xbase.lib.Pair; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,36 +53,42 @@ public class CompareRouteAndKmCriterion private final Function getPunktObjectFunc; private final NumericCellComparator numericComparator; private boolean isWaitingOnService = false; + private final TableType tableType; /** * @param getPunktObjectFunc * get {@link Punkt_Objekt} function + * @param tableType + * the table type in which this criterion shall be applied. Set + * to null if table type is irrelevant. */ public CompareRouteAndKmCriterion( - final Function getPunktObjectFunc) { - this(getPunktObjectFunc, SortDirectionEnum.ASC); + final Function getPunktObjectFunc, + final TableType tableType) { + this(getPunktObjectFunc, tableType, SortDirectionEnum.ASC); } /** * @param getPunktObjectFunc * get {@link Punkt_Objekt} function + * @param tableType + * the table type in which this criterion shall be applied * @param direction * the sort direction */ public CompareRouteAndKmCriterion( final Function getPunktObjectFunc, - final SortDirectionEnum direction) { + final TableType tableType, final SortDirectionEnum direction) { this.getPunktObjectFunc = getPunktObjectFunc; + this.tableType = tableType; this.direction = direction; this.numericComparator = new NumericCellComparator(direction); } @Override public int compare(final TableRow o1, final TableRow o2) { - final Ur_Objekt firstLeadingObj = TableRowExtensions - .getLeadingObject(o1); - final Ur_Objekt secondLeadingObj = TableRowExtensions - .getLeadingObject(o2); + final Ur_Objekt firstLeadingObj = getCompareObjekt(o1, tableType); + final Ur_Objekt secondLeadingObj = getCompareObjekt(o2, tableType); final Optional compareObj = compareNullableValue( firstLeadingObj, secondLeadingObj, Objects::isNull); if (compareObj.isPresent()) { @@ -87,6 +100,35 @@ public int compare(final TableRow o1, final TableRow o2) { return compareRouteAndKm(firstPO, secondPO); } + /** + * Take object from container corresponding to the table type to compare. + * This means TableType.INITIAL -> initial object, TableType.FINAL -> final + * object, TableType.DIFF -> final object. When final object does not exist, + * then we take the initial object + * + * @param row + * the table row + * @param tableType + * the table type to compare for + * @return the final object or the initial object, when final object not + * exist + */ + private static Ur_Objekt getCompareObjekt(final TableRow row, + final TableType tableType) { + final Ur_Objekt obj = TableRowExtensions.getLeadingObject(row); + if (tableType == null || tableType == TableType.INITIAL) { + return obj; + } + final PlanPro_Schnittstelle planProSchnittstelle = UrObjectExtensions + .getPlanProSchnittstelle(obj); + final MultiContainer_AttributeGroup finalContainer = PlanProSchnittstelleExtensions + .getContainer(planProSchnittstelle, ContainerType.FINAL); + final Ur_Objekt finalObject = MultiContainer_AttributeGroupExtensions + .getObject(finalContainer, obj.getClass(), + obj.getIdentitaet().getWert()); + return finalObject == null ? obj : finalObject; + } + // IMPROVE: the determine route and km can be depended on the // GeoKanteGeometryService, when the Punkt_Objekt more than one // Punkt_Objekt_Streck have. In this case should the compare do again after diff --git a/java/bundles/org.eclipse.set.utils.table/src/org/eclipse/set/utils/table/sorting/TableRowGroupComparator.java b/java/bundles/org.eclipse.set.utils.table/src/org/eclipse/set/utils/table/sorting/TableRowGroupComparator.java index 95583af27..6799f91ec 100644 --- a/java/bundles/org.eclipse.set.utils.table/src/org/eclipse/set/utils/table/sorting/TableRowGroupComparator.java +++ b/java/bundles/org.eclipse.set.utils.table/src/org/eclipse/set/utils/table/sorting/TableRowGroupComparator.java @@ -13,6 +13,7 @@ import java.util.function.Function; import org.eclipse.nebula.widgets.nattable.sort.SortDirectionEnum; +import org.eclipse.set.basis.constants.TableType; import org.eclipse.set.basis.tables.Tables; import org.eclipse.set.model.planpro.Basisobjekte.Punkt_Objekt; import org.eclipse.set.model.planpro.Basisobjekte.Ur_Objekt; @@ -29,15 +30,20 @@ */ public final class TableRowGroupComparator implements Comparator { /** + * @param tableType + * the table type for the comparator shall be build. Set to null + * if table type is irrelevant. * @return create a builder */ - public static ComparatorBuilder builder() { - return new ComparatorBuilder(new TableRowGroupComparator()); + public static ComparatorBuilder builder(final TableType tableType) { + return new ComparatorBuilder(new TableRowGroupComparator(tableType)); } private final List> criteria = Lists.newLinkedList(); + private final TableType tableType; - private TableRowGroupComparator() { + private TableRowGroupComparator(final TableType tableType) { + this.tableType = tableType; } /** @@ -119,8 +125,8 @@ public int compare(final TableRow row1, final TableRow row2) { public void addRouteAndKmCriterion( final Function getPunktObjectFunc, final SortDirectionEnum direction) { - criteria.add( - new CompareRouteAndKmCriterion(getPunktObjectFunc, direction)); + criteria.add(new CompareRouteAndKmCriterion(getPunktObjectFunc, + this.tableType, direction)); } /** @@ -129,7 +135,8 @@ public void addRouteAndKmCriterion( */ public void addRouteAndKmCriterion( final Function getPunktObjectFunc) { - criteria.add(new CompareRouteAndKmCriterion(getPunktObjectFunc)); + criteria.add(new CompareRouteAndKmCriterion(getPunktObjectFunc, + this.tableType)); } /**