mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-14 22:43:57 +00:00
ResultsPresenter cleanup and now the selected data provider doesn't change, when the results presenter is changed
This commit is contained in:
1 parent
711808dfe7
commit
341cc0e60e
9 files changed
+41
-26
No files matched your search
+21
-15
@@ -14,7 +14,7 @@ import com.sap.sailing.domain.common.Bearing;
|
||||
import com.sap.sailing.domain.common.Distance;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.client.shared.controls.AbstractObjectRenderer;
|
||||
import com.sap.sailing.gwt.ui.datamining.presentation.dataproviders.AbstractResultDataProvider;
|
||||
import com.sap.sailing.gwt.ui.datamining.presentation.dataproviders.AbstractNumericDataProvider;
|
||||
import com.sap.sailing.gwt.ui.datamining.presentation.dataproviders.BearingDataProvider;
|
||||
import com.sap.sailing.gwt.ui.datamining.presentation.dataproviders.DistanceDataProvider;
|
||||
import com.sap.sailing.gwt.ui.datamining.presentation.dataproviders.DurationDataProvider;
|
||||
@@ -24,23 +24,23 @@ import com.sap.sse.common.settings.Settings;
|
||||
import com.sap.sse.datamining.shared.GroupKey;
|
||||
import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO;
|
||||
|
||||
public abstract class AbstractResultsPresenterWithDataProviders<SettingsType extends Settings> extends AbstractResultsPresenter<Settings> {
|
||||
public abstract class AbstractNumericResultsPresenter<SettingsType extends Settings> extends AbstractResultsPresenter<Settings> {
|
||||
|
||||
private final NumberDataProvider numberDataProvider;
|
||||
private final Map<String, AbstractResultDataProvider<? extends Object>> dataProviders;
|
||||
private final Map<String, AbstractNumericDataProvider<? extends Object>> dataProviders;
|
||||
private final ValueListBox<String> dataSelectionListBox;
|
||||
private AbstractResultDataProvider<? extends Object> currentDataProvider;
|
||||
private AbstractNumericDataProvider<? extends Object> currentDataProvider;
|
||||
|
||||
public AbstractResultsPresenterWithDataProviders(StringMessages stringMessages) {
|
||||
public AbstractNumericResultsPresenter(StringMessages stringMessages) {
|
||||
super(stringMessages);
|
||||
|
||||
numberDataProvider = new NumberDataProvider();
|
||||
dataProviders = new HashMap<>();
|
||||
AbstractResultDataProvider<Distance> distanceDataProvider = new DistanceDataProvider();
|
||||
AbstractNumericDataProvider<Distance> distanceDataProvider = new DistanceDataProvider();
|
||||
dataProviders.put(distanceDataProvider.getResultType().getName(), distanceDataProvider);
|
||||
AbstractResultDataProvider<Duration> durationDataProvider = new DurationDataProvider();
|
||||
AbstractNumericDataProvider<Duration> durationDataProvider = new DurationDataProvider();
|
||||
dataProviders.put(durationDataProvider.getResultType().getName(), durationDataProvider);
|
||||
AbstractResultDataProvider<Bearing> bearingDataProvider = new BearingDataProvider();
|
||||
AbstractNumericDataProvider<Bearing> bearingDataProvider = new BearingDataProvider();
|
||||
dataProviders.put(bearingDataProvider.getResultType().getName(), bearingDataProvider);
|
||||
|
||||
dataSelectionListBox = new ValueListBox<>(new AbstractObjectRenderer<String>() {
|
||||
@@ -53,7 +53,7 @@ public abstract class AbstractResultsPresenterWithDataProviders<SettingsType ext
|
||||
@Override
|
||||
public void onValueChange(ValueChangeEvent<String> event) {
|
||||
Map<GroupKey, Number> resultValues = currentDataProvider.getData(getCurrentResult(), dataSelectionListBox.getValue());
|
||||
internalShowNumberResult(resultValues);
|
||||
internalShowNumericResult(resultValues);
|
||||
}
|
||||
});
|
||||
addControl(dataSelectionListBox);
|
||||
@@ -64,7 +64,7 @@ public abstract class AbstractResultsPresenterWithDataProviders<SettingsType ext
|
||||
updateDataSelectionListBox();
|
||||
if (currentDataProvider != null) {
|
||||
Map<GroupKey, Number> resultValues = currentDataProvider.getData(getCurrentResult(), dataSelectionListBox.getValue());
|
||||
internalShowNumberResult(resultValues);
|
||||
internalShowNumericResult(resultValues);
|
||||
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
|
||||
@Override
|
||||
public void execute() {
|
||||
@@ -76,7 +76,7 @@ public abstract class AbstractResultsPresenterWithDataProviders<SettingsType ext
|
||||
}
|
||||
}
|
||||
|
||||
private AbstractResultDataProvider<? extends Object> selectCurrentDataProvider() {
|
||||
private AbstractNumericDataProvider<? extends Object> selectCurrentDataProvider() {
|
||||
if (numberDataProvider.acceptsResultsOfType(getCurrentResult().getResultType())) {
|
||||
return numberDataProvider;
|
||||
}
|
||||
@@ -94,11 +94,17 @@ public abstract class AbstractResultsPresenterWithDataProviders<SettingsType ext
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract void internalShowNumberResult(Map<GroupKey, Number> resultValues);
|
||||
protected abstract void internalShowNumericResult(Map<GroupKey, Number> resultValues);
|
||||
|
||||
@Override
|
||||
public String getId() {
|
||||
return getLocalizedShortName();
|
||||
String getSelectedDataKey() {
|
||||
return dataSelectionListBox.getValue();
|
||||
}
|
||||
|
||||
void setSelectedDataKey(String dataKey) {
|
||||
if (!currentDataProvider.isValidDataKey(dataKey)) {
|
||||
throw new IllegalArgumentException("The given data key '" + dataKey + "' isn't valid");
|
||||
}
|
||||
dataSelectionListBox.setValue(dataKey, true);
|
||||
}
|
||||
|
||||
}
|
||||
+6
-1
@@ -64,7 +64,12 @@ public class MultiResultsPresenter implements ResultsPresenter<Settings> {
|
||||
controlsPanel.removeFromParent();
|
||||
presenter.addControl(controlsPanel);
|
||||
|
||||
// TODO Synchronize the selected data (Meters, Kilometers, ...)
|
||||
if (presenter instanceof AbstractNumericResultsPresenter &&
|
||||
currentPresenter instanceof AbstractNumericResultsPresenter) {
|
||||
String dataKey = ((AbstractNumericResultsPresenter<?>) currentPresenter).getSelectedDataKey();
|
||||
((AbstractNumericResultsPresenter<?>) presenter).setSelectedDataKey(dataKey);
|
||||
}
|
||||
|
||||
currentPresenter = presenter;
|
||||
presenterPanel.setWidget(currentPresenter.getEntryWidget());
|
||||
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
|
||||
|
||||
+2
-2
@@ -15,7 +15,7 @@ import com.sap.sse.datamining.shared.GroupKey;
|
||||
import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO;
|
||||
import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent;
|
||||
|
||||
public class PlainResultsPresenter extends AbstractResultsPresenterWithDataProviders<Settings> {
|
||||
public class PlainResultsPresenter extends AbstractNumericResultsPresenter<Settings> {
|
||||
|
||||
private final ScrollPanel scrollPanel;
|
||||
private final HTML resultsLabel;
|
||||
@@ -28,7 +28,7 @@ public class PlainResultsPresenter extends AbstractResultsPresenterWithDataProvi
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void internalShowNumberResult(Map<GroupKey, Number> resultValues) {
|
||||
protected void internalShowNumericResult(Map<GroupKey, Number> resultValues) {
|
||||
QueryResultDTO<?> result = getCurrentResult();
|
||||
SafeHtmlBuilder resultsBuilder = new SafeHtmlBuilder();
|
||||
resultsBuilder.appendHtmlConstant("<b>");
|
||||
|
||||
+2
-2
@@ -40,7 +40,7 @@ import com.sap.sse.datamining.shared.impl.CompoundGroupKey;
|
||||
import com.sap.sse.datamining.shared.impl.GenericGroupKey;
|
||||
import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent;
|
||||
|
||||
public class ResultsChart extends AbstractResultsPresenterWithDataProviders<Settings> {
|
||||
public class ResultsChart extends AbstractNumericResultsPresenter<Settings> {
|
||||
|
||||
private final Comparator<GroupKey> standardKeyComparator = new Comparator<GroupKey>() {
|
||||
@Override
|
||||
@@ -192,7 +192,7 @@ public class ResultsChart extends AbstractResultsPresenterWithDataProviders<Sett
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void internalShowNumberResult(Map<GroupKey, Number> resultValues) {
|
||||
protected void internalShowNumericResult(Map<GroupKey, Number> resultValues) {
|
||||
this.currentResultValues = resultValues;
|
||||
decimalsListBox.setValue(getCurrentResult().getValueDecimals(), false);
|
||||
updateKeyComparatorListBox();
|
||||
|
||||
+6
-2
@@ -10,12 +10,12 @@ import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.datamining.shared.GroupKey;
|
||||
import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO;
|
||||
|
||||
public abstract class AbstractResultDataProvider<T> {
|
||||
public abstract class AbstractNumericDataProvider<T> {
|
||||
|
||||
private final Class<T> resultType;
|
||||
private final LinkedHashMap<String, Function<T, Number>> mappings;
|
||||
|
||||
public AbstractResultDataProvider(Class<T> resultType, LinkedHashMap<String, Function<T, Number>> mappings) {
|
||||
public AbstractNumericDataProvider(Class<T> resultType, LinkedHashMap<String, Function<T, Number>> mappings) {
|
||||
this.resultType = resultType;
|
||||
this.mappings = mappings;
|
||||
}
|
||||
@@ -27,6 +27,10 @@ public abstract class AbstractResultDataProvider<T> {
|
||||
public Collection<String> getDataKeys() {
|
||||
return mappings.keySet();
|
||||
}
|
||||
|
||||
public boolean isValidDataKey(String dataKey) {
|
||||
return mappings.containsKey(dataKey);
|
||||
}
|
||||
|
||||
public Map<GroupKey, Number> getData(QueryResultDTO<?> result, String dataKey) {
|
||||
if (!acceptsResultsOfType(result.getResultType())) {
|
||||
+1
-1
@@ -7,7 +7,7 @@ import com.sap.sailing.domain.common.Bearing;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO;
|
||||
|
||||
public class BearingDataProvider extends AbstractResultDataProvider<Bearing> {
|
||||
public class BearingDataProvider extends AbstractNumericDataProvider<Bearing> {
|
||||
|
||||
private static final String DEGREES = "Degrees";
|
||||
private static final String RADIANS = "Radians";
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ import com.sap.sailing.domain.common.Distance;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO;
|
||||
|
||||
public class DistanceDataProvider extends AbstractResultDataProvider<Distance> {
|
||||
public class DistanceDataProvider extends AbstractNumericDataProvider<Distance> {
|
||||
|
||||
private static final String CENTRAL_ANGLE_RADIAN = "CentralAngleRadian";
|
||||
private static final String CENTRAL_ANGLE_DEGREE = "CentralAngleDegree";
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO;
|
||||
|
||||
public class DurationDataProvider extends AbstractResultDataProvider<Duration> {
|
||||
public class DurationDataProvider extends AbstractNumericDataProvider<Duration> {
|
||||
private static final String DAYS = "Days";
|
||||
private static final String HOURS = "Hours";
|
||||
private static final String MINUTES = "Minutes";
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@ import java.util.function.Function;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO;
|
||||
|
||||
public class NumberDataProvider extends AbstractResultDataProvider<Number> {
|
||||
public class NumberDataProvider extends AbstractNumericDataProvider<Number> {
|
||||
private final static String FLOAT = "Float";
|
||||
private final static String INTEGER = "Integer";
|
||||
|
||||
|
||||
Reference in new issue
Block a user