bug4686: Improved the error messages for missing components by consolidating components of the same type

This commit is contained in:
Lennart Hensler committed 2018-08-07 19:26:22 +02:00
1 parent f44322e4e9
commit a9a451fa0e
6 files changed
+44 -19

No files matched your search

@@ -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();
@@ -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
@@ -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
@@ -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<? extends Serializable> selection, Consumer<Iterable<String>> callback) {
Collection<String> callbackMessages = new ArrayList<>();
clearSelection();
for (Serializable item : selection) {
if (availableData.contains(item)) {
selectionModel.setSelected(item, true);
Collection<Serializable> 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() {
@@ -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<DataRetrieverLevelDTO, HashMap<FunctionDTO, HashSet<? extends Serializable>>> filterSelection, Consumer<Iterable<String>> callback) {
Set<InnerSelectionCallback> innerCallbacks = new HashSet<>();
Collection<String> callbackMessages = new ArrayList<>();
Collection<DimensionWithContext> missingDimensions = new ArrayList<>();
for (DataRetrieverLevelDTO retrieverLevel : filterSelection.keySet()) {
HashMap<FunctionDTO, HashSet<? extends Serializable>> 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) {
@@ -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<FunctionDTO> dimensions, Consumer<Iterable<String>> callback) {
Collection<String> callbackMessages = new ArrayList<>();
Collection<FunctionDTO> 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