From a9a451fa0eab2e437c4ed3ab0d304dc6172cf417 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Tue, 7 Aug 2018 19:26:22 +0200 Subject: [PATCH] bug4686: Improved the error messages for missing components by consolidating components of the same type --- .../datamining/ui/client/StringMessages.java | 6 +++--- .../ui/client/StringMessages.properties | 6 +++--- .../ui/client/StringMessages_de.properties | 6 +++--- .../DimensionFilterSelectionProvider.java | 20 +++++++++++++------ ...lDimensionListFilterSelectionProvider.java | 10 +++++++++- .../MultiDimensionalGroupingProvider.java | 15 +++++++++++--- 6 files changed, 44 insertions(+), 19 deletions(-) diff --git a/java/com.sap.sse.datamining.ui/src/main/java/com/sap/sse/datamining/ui/client/StringMessages.java b/java/com.sap.sse.datamining.ui/src/main/java/com/sap/sse/datamining/ui/client/StringMessages.java index 1cf036ea73c..5e7a55ec7a5 100644 --- a/java/com.sap.sse.datamining.ui/src/main/java/com/sap/sse/datamining/ui/client/StringMessages.java +++ b/java/com.sap.sse.datamining.ui/src/main/java/com/sap/sse/datamining/ui/client/StringMessages.java @@ -74,9 +74,9 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages { String queryBasedOnRetrieverChainCanNotBeApplied(String retrieverChainName); String statisticNotAvailable(String statisticName); String aggregatorNotAvailable(String aggregatorName); - String filterDimensionNotAvailable(String dimensionName); - String filterValueNotAvailable(String value); - String groupingDimensionNotAvailable(String dimensionName); + String filterDimensionsAreNotAvailable(String listedDimensions); + String filterValuesAreNotAvailable(String listedValues); + String groupingDimensionsAreNotAvailable(String listedDimensions); String rememberDecisionCanBeChangedInSettings(); String changeLossStrategy(); String changeLossStrageyTooltip(); diff --git a/java/com.sap.sse.datamining.ui/src/main/java/com/sap/sse/datamining/ui/client/StringMessages.properties b/java/com.sap.sse.datamining.ui/src/main/java/com/sap/sse/datamining/ui/client/StringMessages.properties index 96c126bc5cd..537abb65b49 100644 --- a/java/com.sap.sse.datamining.ui/src/main/java/com/sap/sse/datamining/ui/client/StringMessages.properties +++ b/java/com.sap.sse.datamining.ui/src/main/java/com/sap/sse/datamining/ui/client/StringMessages.properties @@ -58,9 +58,9 @@ anErrorOccurredWhileApplyingTheQuery=An error occurred while applying the query queryBasedOnRetrieverChainCanNotBeApplied=The query based on {0} can not be applied statisticNotAvailable=The statistic {0} is not available aggregatorNotAvailable=The aggregator {0} is not available -filterDimensionNotAvailable=The filter dimension {0} is not available -filterValueNotAvailable=The filter value {0} is not available -groupingDimensionNotAvailable=The grouping dimension {0} is not available +filterDimensionsAreNotAvailable=The following filter dimensions aren''t available: {0} +filterValuesAreNotAvailable=The following filter values aren''t available: {0} +groupingDimensionsAreNotAvailable=The following grouping dimensions aren''t available: {0} rememberDecisionCanBeChangedInSettings=Remember decision (can be changed in the settings) changeLossStrategy=Change Loss Strategy changeLossStrageyTooltip=Strategy for the possible loss of changes, when a query should be displayed diff --git a/java/com.sap.sse.datamining.ui/src/main/java/com/sap/sse/datamining/ui/client/StringMessages_de.properties b/java/com.sap.sse.datamining.ui/src/main/java/com/sap/sse/datamining/ui/client/StringMessages_de.properties index 8f85d7a8a0c..6f59536e4dc 100644 --- a/java/com.sap.sse.datamining.ui/src/main/java/com/sap/sse/datamining/ui/client/StringMessages_de.properties +++ b/java/com.sap.sse.datamining.ui/src/main/java/com/sap/sse/datamining/ui/client/StringMessages_de.properties @@ -61,9 +61,9 @@ anErrorOccurredWhileApplyingTheQuery=Beim Anzeigen der Query ist ein Fehler aufg queryBasedOnRetrieverChainCanNotBeApplied=Die Query basierend auf {0} kann nicht angezeigt werden statisticNotAvailable=Die Statistik {0} ist nicht verfügbar aggregatorNotAvailable=Der Aggregator {0} ist nicht verfügbar -filterDimensionNotAvailable=Die Filter-Dimension {0} ist nicht verfügbar -filterValueNotAvailable=Der Filter-Wert {0} ist nicht verfügbar -groupingDimensionNotAvailable=Die Gruppierungs-Dimension {0} ist nicht verfügbar +filterDimensionsAreNotAvailable=Die folgenden Filter-Dimensionen sind nicht verfügbar: {0} +filterValuesAreNotAvailable=Der folgenden Filter-Werte sind nicht verfügbar: {0} +groupingDimensionsAreNotAvailable=Die folgenden Gruppierungs-Dimensionen sind nicht verfügbar: {0} rememberDecisionCanBeChangedInSettings=Entscheidung speichern (kann in den Einstellungen geändert werden) changeLossStrategy=Verlust von Änderungen changeLossStrageyTooltip=Verhalten beim möglichen Verlust von Änderungen, wenn eine andere Query angezeigt werden soll diff --git a/java/com.sap.sse.datamining.ui/src/main/java/com/sap/sse/datamining/ui/client/selection/DimensionFilterSelectionProvider.java b/java/com.sap.sse.datamining.ui/src/main/java/com/sap/sse/datamining/ui/client/selection/DimensionFilterSelectionProvider.java index fde2f4eac8f..9374c39c4af 100644 --- a/java/com.sap.sse.datamining.ui/src/main/java/com/sap/sse/datamining/ui/client/selection/DimensionFilterSelectionProvider.java +++ b/java/com.sap.sse.datamining.ui/src/main/java/com/sap/sse/datamining/ui/client/selection/DimensionFilterSelectionProvider.java @@ -10,6 +10,7 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.function.Consumer; +import java.util.stream.Collectors; import com.google.gwt.cell.client.CheckboxCell; import com.google.gwt.core.client.Scheduler; @@ -274,16 +275,23 @@ public class DimensionFilterSelectionProvider extends AbstractDataMiningComponen } private void internalSetSelection(Iterable selection, Consumer> callback) { - Collection callbackMessages = new ArrayList<>(); clearSelection(); - for (Serializable item : selection) { - if (availableData.contains(item)) { - selectionModel.setSelected(item, true); + Collection missingValues = new ArrayList<>(); + for (Serializable value : selection) { + if (availableData.contains(value)) { + selectionModel.setSelected(value, true); } else { - callbackMessages.add(getDataMiningStringMessages().filterValueNotAvailable(elementAsString(item))); + missingValues.add(value); } } - callback.accept(callbackMessages); + + if (!missingValues.isEmpty()) { + String listedValues = missingValues.stream().map(this::elementAsString).collect(Collectors.joining(", ")); + callback.accept( + Collections.singleton(getDataMiningStringMessages().filterValuesAreNotAvailable(listedValues))); + } else { + callback.accept(Collections.emptySet()); + } } public void clearSelection() { diff --git a/java/com.sap.sse.datamining.ui/src/main/java/com/sap/sse/datamining/ui/client/selection/HierarchicalDimensionListFilterSelectionProvider.java b/java/com.sap.sse.datamining.ui/src/main/java/com/sap/sse/datamining/ui/client/selection/HierarchicalDimensionListFilterSelectionProvider.java index c9cb6804b85..9b53a5ef06d 100644 --- a/java/com.sap.sse.datamining.ui/src/main/java/com/sap/sse/datamining/ui/client/selection/HierarchicalDimensionListFilterSelectionProvider.java +++ b/java/com.sap.sse.datamining.ui/src/main/java/com/sap/sse/datamining/ui/client/selection/HierarchicalDimensionListFilterSelectionProvider.java @@ -13,6 +13,7 @@ import java.util.Map.Entry; import java.util.Objects; import java.util.Set; import java.util.function.Consumer; +import java.util.stream.Collectors; import com.google.gwt.cell.client.CheckboxCell; import com.google.gwt.core.client.GWT; @@ -297,6 +298,7 @@ public class HierarchicalDimensionListFilterSelectionProvider extends AbstractDa private void setSelection(HashMap>> filterSelection, Consumer> callback) { Set innerCallbacks = new HashSet<>(); Collection callbackMessages = new ArrayList<>(); + Collection missingDimensions = new ArrayList<>(); for (DataRetrieverLevelDTO retrieverLevel : filterSelection.keySet()) { HashMap> levelSelection = filterSelection.get(retrieverLevel); for (FunctionDTO dimension : levelSelection.keySet()) { @@ -307,10 +309,16 @@ public class HierarchicalDimensionListFilterSelectionProvider extends AbstractDa innerCallbacks.add(innerCallback); setDimensionSelection(availableFilterDimensions.get(index), levelSelection.get(dimension), innerCallback); } else { - callbackMessages.add(getDataMiningStringMessages().filterDimensionNotAvailable(dimension.getDisplayName())); + missingDimensions.add(dimensionWithContext); } } } + + if (!missingDimensions.isEmpty()) { + String listedDimensions = missingDimensions.stream().map(d -> d.getDimension().getDisplayName()) + .collect(Collectors.joining(", ")); + callbackMessages.add(getDataMiningStringMessages().filterDimensionsAreNotAvailable(listedDimensions)); + } if (!innerCallbacks.isEmpty()) { for (InnerSelectionCallback innerCallback : innerCallbacks) { diff --git a/java/com.sap.sse.datamining.ui/src/main/java/com/sap/sse/datamining/ui/client/selection/MultiDimensionalGroupingProvider.java b/java/com.sap.sse.datamining.ui/src/main/java/com/sap/sse/datamining/ui/client/selection/MultiDimensionalGroupingProvider.java index f55acd10548..8872c0dd4d7 100644 --- a/java/com.sap.sse.datamining.ui/src/main/java/com/sap/sse/datamining/ui/client/selection/MultiDimensionalGroupingProvider.java +++ b/java/com.sap.sse.datamining.ui/src/main/java/com/sap/sse/datamining/ui/client/selection/MultiDimensionalGroupingProvider.java @@ -10,6 +10,7 @@ import java.util.List; import java.util.Objects; import java.util.Set; import java.util.function.Consumer; +import java.util.stream.Collectors; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; @@ -276,7 +277,7 @@ public class MultiDimensionalGroupingProvider extends AbstractDataMiningComponen } private void setSelectedDimensions(Iterable dimensions, Consumer> callback) { - Collection callbackMessages = new ArrayList<>(); + Collection missingDimensions = new ArrayList<>(); int boxIndex = 0; for (FunctionDTO dimension : dimensions) { int index = availableDimensions.indexOf(dimension); @@ -284,10 +285,18 @@ public class MultiDimensionalGroupingProvider extends AbstractDataMiningComponen setDimensionToGroupBy(boxIndex, availableDimensions.get(index)); boxIndex++; } else { - callbackMessages.add(getDataMiningStringMessages().groupingDimensionNotAvailable(dimension.getDisplayName())); + missingDimensions.add(dimension); } } - callback.accept(callbackMessages); + + if (!missingDimensions.isEmpty()) { + String listedDimensions = missingDimensions.stream().map(FunctionDTO::getDisplayName) + .collect(Collectors.joining(", ")); + callback.accept(Collections + .singleton(getDataMiningStringMessages().groupingDimensionsAreNotAvailable(listedDimensions))); + } else { + callback.accept(Collections.emptySet()); + } } @Override