added method to register result presenter to the retrieved data type

This commit is contained in:
Maximilian Groß committed 2018-06-06 07:35:48 +02:00
1 parent 042d112f8c
commit 0a324810e5
3 files changed
+66 -46

No files matched your search

@@ -21,25 +21,25 @@ import org.moxieapps.gwt.highcharts.client.plotOptions.SeriesPlotOptions;
import com.google.gwt.user.client.ui.SimpleLayoutPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.datamining.AbstractSailingResultsPresenter;
import com.sap.sse.common.Util.Pair;
import com.sap.sse.common.settings.Settings;
import com.sap.sse.datamining.shared.GroupKey;
import com.sap.sse.datamining.shared.data.PairWithStats;
import com.sap.sse.datamining.shared.impl.CompoundGroupKey;
import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO;
import com.sap.sse.datamining.ui.client.presentation.AbstractResultsPresenter;
import com.sap.sse.gwt.client.shared.components.Component;
import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent;
import com.sap.sse.gwt.client.shared.settings.ComponentContext;
public class NumberPairResultsPresenter extends AbstractResultsPresenter<Settings> {
public class NumberPairResultsPresenter extends AbstractSailingResultsPresenter<Settings> {
private QueryResultDTO<?> result;
private final SimpleLayoutPanel chartPanel;
private final Chart chart;
private final Map<GroupKey, Series> seriesMappedByGroupKey;
public NumberPairResultsPresenter(Component<?> parent, ComponentContext<?> context, StringMessages stringMessages) {
super(parent, context);
super(parent, context, stringMessages);
seriesMappedByGroupKey = new HashMap<>();
chartPanel = new SimpleLayoutPanel() {
@Override
@@ -1,62 +1,34 @@
package com.sap.sailing.gwt.ui.datamining.presentation;
import com.sap.sailing.datamining.shared.ManeuverSpeedDetailsAggregation;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.polarmining.PolarBackendResultsPresenter;
import com.sap.sailing.gwt.ui.polarmining.PolarResultsPresenter;
import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO;
import com.sap.sailing.polars.datamining.shared.PolarAggregation;
import com.sap.sailing.polars.datamining.shared.PolarBackendData;
import com.sap.sse.datamining.shared.data.PairWithStats;
import com.sap.sse.datamining.ui.client.presentation.AbstractTabbedResultsPresenter;
import com.sap.sse.datamining.ui.client.presentation.MultiResultsPresenter;
import com.sap.sse.datamining.ui.client.presentation.ResultsChart.DrillDownCallback;
import com.sap.sse.gwt.client.shared.components.Component;
import com.sap.sse.gwt.client.shared.settings.ComponentContext;
public class TabbedSailingResultsPresenter extends AbstractTabbedResultsPresenter {
private final StringMessages stringMessages;
public TabbedSailingResultsPresenter(Component<?> parent, ComponentContext<?> context,
DrillDownCallback drillDownCallback, StringMessages stringMessages) {
super(parent, context, drillDownCallback);
this.stringMessages = stringMessages;
}
@Override
public void showResult(QueryResultDTO<?> result) {
if (result != null) {
if (result.getResultType().equals("com.sap.sailing.polars.datamining.shared.PolarAggregation")) {
CloseableTabHeader oldHeader = getSelectedHeader();
addTabAndFocus(
new PolarResultsPresenter(TabbedSailingResultsPresenter.this, getComponentContext(), stringMessages));
removeTab(oldHeader);
} else if (result.getResultType().equals("com.sap.sailing.polars.datamining.shared.PolarBackendData")) {
CloseableTabHeader oldHeader = getSelectedHeader();
addTabAndFocus(new PolarBackendResultsPresenter(TabbedSailingResultsPresenter.this, getComponentContext(),
stringMessages));
removeTab(oldHeader);
} else if (result.getResultType()
.equals("com.sap.sailing.datamining.shared.ManeuverSpeedDetailsAggregation")) {
CloseableTabHeader oldHeader = getSelectedHeader();
addTabAndFocus(new ManeuverSpeedDetailsResultsPresenter(TabbedSailingResultsPresenter.this,
getComponentContext(), stringMessages));
removeTab(oldHeader);
}
else if (result.getResultType()
.equals("com.sap.sse.datamining.shared.data.PairWithStats")) {
CloseableTabHeader oldHeader = getSelectedHeader();
addTabAndFocus(new NumberPairResultsPresenter(TabbedSailingResultsPresenter.this,
getComponentContext(), stringMessages));
removeTab(oldHeader);
}
else {
if (!(getSelectedPresenter() instanceof MultiResultsPresenter)) {
CloseableTabHeader oldHeader = getSelectedHeader();
addTabAndFocus(new MultiResultsPresenter(this, getComponentContext(), drillDownCallback));
removeTab(oldHeader);
}
}
getSelectedHeader().setText(result.getResultSignifier());
}
getSelectedPresenter().showResult(result);
}
registerResultPresenter(PolarAggregation.class,
new PolarResultsPresenter(TabbedSailingResultsPresenter.this, getComponentContext(), stringMessages));
registerResultPresenter(PolarBackendData.class, new PolarBackendResultsPresenter(
TabbedSailingResultsPresenter.this, getComponentContext(), stringMessages));
registerResultPresenter(ManeuverSpeedDetailsAggregation.class, new ManeuverSpeedDetailsResultsPresenter(
TabbedSailingResultsPresenter.this, getComponentContext(), stringMessages));
registerResultPresenter(PairWithStats.class, new NumberPairResultsPresenter(TabbedSailingResultsPresenter.this,
getComponentContext(), stringMessages));
}
}
@@ -32,6 +32,7 @@ public abstract class AbstractTabbedResultsPresenter extends AbstractDataMiningC
protected final ScrolledTabLayoutPanel tabPanel;
protected final Map<Widget, ResultsPresenter<?>> presentersMappedByHeader;
protected final DrillDownCallback drillDownCallback;
protected final Map<String, ResultsPresenter<Settings>> registeredResultPresenterMap;
public AbstractTabbedResultsPresenter(Component<?> parent, ComponentContext<?> context,
DrillDownCallback drillDownCallback) {
@@ -41,6 +42,7 @@ public abstract class AbstractTabbedResultsPresenter extends AbstractDataMiningC
tabPanel.setAnimationDuration(0);
tabPanel.getElement().getStyle().setMarginTop(10, Unit.PX);
presentersMappedByHeader = new HashMap<>();
registeredResultPresenterMap = new HashMap<>();
addNewTabTab();
addTabAndFocus(new MultiResultsPresenter(this, context, drillDownCallback));
@@ -185,4 +187,50 @@ public abstract class AbstractTabbedResultsPresenter extends AbstractDataMiningC
public String getId() {
return "TabbedResultsPresenter";
}
/**
* Register an {@link ResultsPresenter} to handle the retrieved {@link resultType}. Each {@link resultType} can only
* be registered once. Multiple registrations will cause an {@link IllegalStateException}.
*
* @param resultType
* of the datamining query.
* @param resultPresenter
* which shall be used to handle the datamaining query result.
*
* @throws IllegalStateException
* if the {@link resultType} is already registered.
*/
protected void registerResultPresenter(Class<?> resultType, ResultsPresenter<Settings> resultPresenter)
throws IllegalStateException {
if (!registeredResultPresenterMap.containsKey(resultType)) {
String className = resultType.getName();
registeredResultPresenterMap.put(className, resultPresenter);
} else {
throw new IllegalStateException(
"Multiple registration for result type key: " + resultType.toString() + "not allowed.");
}
}
@Override
public void showResult(QueryResultDTO<?> result) {
try {
if (result != null) {
if (registeredResultPresenterMap.containsKey(result.getResultType())) {
CloseableTabHeader oldHeader = getSelectedHeader();
addTabAndFocus(registeredResultPresenterMap.get(result.getResultType()));
removeTab(oldHeader);
} else {
if (!(getSelectedPresenter() instanceof MultiResultsPresenter)) {
CloseableTabHeader oldHeader = getSelectedHeader();
addTabAndFocus(new MultiResultsPresenter(this, getComponentContext(), drillDownCallback));
removeTab(oldHeader);
}
getSelectedHeader().setText(result.getResultSignifier());
}
}
} finally {
getSelectedPresenter().showResult(result);
}
}
}