diff --git a/java/com.sap.sailing.datamining.shared/META-INF/MANIFEST.MF b/java/com.sap.sailing.datamining.shared/META-INF/MANIFEST.MF
index e7b8053e644..6efd6fa23f8 100644
--- a/java/com.sap.sailing.datamining.shared/META-INF/MANIFEST.MF
+++ b/java/com.sap.sailing.datamining.shared/META-INF/MANIFEST.MF
@@ -9,4 +9,5 @@ Bundle-ActivationPolicy: lazy
Bundle-ClassPath: .
Require-Bundle: com.sap.sse.datamining.shared,
com.sap.sailing.domain.common
-Export-Package: com.sap.sailing.datamining.shared
+Export-Package: com.sap.sailing.datamining.shared,
+ com.sap.sailing.datamining.shared.dto
diff --git a/java/com.sap.sailing.datamining.shared/src/com/sap/sailing/datamining/shared/dto/DistanceDTO.java b/java/com.sap.sailing.datamining.shared/src/com/sap/sailing/datamining/shared/dto/DistanceDTO.java
new file mode 100644
index 00000000000..ef52fc90aac
--- /dev/null
+++ b/java/com.sap.sailing.datamining.shared/src/com/sap/sailing/datamining/shared/dto/DistanceDTO.java
@@ -0,0 +1,60 @@
+package com.sap.sailing.datamining.shared.dto;
+
+public class DistanceDTO {
+
+ private double geographicalMiles;
+ private double seaMiles;
+ private double nauticalMiles;
+ private double meters;
+ private double kilometers;
+ private double centralAngleDegree;
+ private double centralAngleRadian;
+
+ /**
+ * Do NOT use!
+ * Constructor for GWT-Serialization.
+ */
+ @Deprecated
+ DistanceDTO() {
+ }
+
+ public DistanceDTO(double geographicalMiles, double seaMiles, double nauticalMiles, double meters,
+ double kilometers, double centralAngleDegree, double centralAngleRadian) {
+ this.geographicalMiles = geographicalMiles;
+ this.seaMiles = seaMiles;
+ this.nauticalMiles = nauticalMiles;
+ this.meters = meters;
+ this.kilometers = kilometers;
+ this.centralAngleDegree = centralAngleDegree;
+ this.centralAngleRadian = centralAngleRadian;
+ }
+
+ public double getGeographicalMiles() {
+ return geographicalMiles;
+ }
+
+ public double getSeaMiles() {
+ return seaMiles;
+ }
+
+ public double getNauticalMiles() {
+ return nauticalMiles;
+ }
+
+ public double getMeters() {
+ return meters;
+ }
+
+ public double getKilometers() {
+ return kilometers;
+ }
+
+ public double getCentralAngleDegree() {
+ return centralAngleDegree;
+ }
+
+ public double getCentralAngleRadian() {
+ return centralAngleRadian;
+ }
+
+}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningService.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningService.java
index 48236405fb2..1390b217aa9 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningService.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningService.java
@@ -33,7 +33,7 @@ public interface DataMiningService extends RemoteService {
QueryResultDTO> getDimensionValuesFor(DataMiningSession session, DataRetrieverChainDefinitionDTO dataRetrieverChainDefinitionDTO, int retrieverLevel,
Iterable dimensionDTOs, Map>> filterSelectionDTO, String localeInfoName);
- QueryResultDTO runQuery(DataMiningSession session, StatisticQueryDefinitionDTO queryDefinition);
+ QueryResultDTO runQuery(DataMiningSession session, StatisticQueryDefinitionDTO queryDefinition);
SSEDataMiningSerializationDummy pseudoMethodSoThatSomeSSEDataMiningClassesAreAddedToTheGWTSerializationPolicy();
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningServiceAsync.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningServiceAsync.java
index 7a376f566df..d68f1745ca6 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningServiceAsync.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningServiceAsync.java
@@ -39,7 +39,7 @@ public interface DataMiningServiceAsync {
Iterable dimensionDTOs, Map>> filterSelectionDTO,
String localeInfoName, AsyncCallback>> callback);
- void runQuery(DataMiningSession session, StatisticQueryDefinitionDTO queryDefinition, AsyncCallback> callback);
+ void runQuery(DataMiningSession session, StatisticQueryDefinitionDTO queryDefinition, AsyncCallback> callback);
/**
* This method does nothing, but is needed to ensure, that some classes for the data mining
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/dataproviders/AbstractResultDataProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/dataproviders/AbstractResultDataProvider.java
new file mode 100644
index 00000000000..464f1e841f4
--- /dev/null
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/dataproviders/AbstractResultDataProvider.java
@@ -0,0 +1,40 @@
+package com.sap.sailing.gwt.ui.datamining.presentation.dataproviders;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import com.sap.sse.datamining.shared.GroupKey;
+import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO;
+
+public abstract class AbstractResultDataProvider {
+
+ private final Class resultType;
+
+ public AbstractResultDataProvider(Class resultType) {
+ this.resultType = resultType;
+ }
+
+ public Class getResultType() {
+ return resultType;
+ }
+
+ /**
+ *
+ * @return Collection of the keys for the provided data.
+ * The method toString() can be used to display the keys.
+ */
+ public abstract Collection extends Object> getDataKeys();
+
+ public Map getData(QueryResultDTO result, Object dataKey) {
+ Map data = new HashMap<>();
+ Map results = result.getResults();
+ for (GroupKey groupKey : results.keySet()) {
+ data.put(groupKey, getData(results.get(groupKey), dataKey));
+ }
+ return data;
+ }
+
+ protected abstract Number getData(ResultType result, Object dataKey);
+
+}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/dataproviders/DistanceDataProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/dataproviders/DistanceDataProvider.java
new file mode 100644
index 00000000000..df555cbc1ef
--- /dev/null
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/dataproviders/DistanceDataProvider.java
@@ -0,0 +1,55 @@
+package com.sap.sailing.gwt.ui.datamining.presentation.dataproviders;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import com.sap.sailing.datamining.shared.dto.DistanceDTO;
+
+public class DistanceDataProvider extends AbstractResultDataProvider {
+
+ private final List dataKeys;
+
+ public DistanceDataProvider() {
+ super(DistanceDTO.class);
+ dataKeys = new ArrayList<>();
+ dataKeys.add("Geographical Miles");
+ dataKeys.add("Sea Miles");
+ dataKeys.add("Nautical Miles");
+ dataKeys.add("Meters");
+ dataKeys.add("Kilometers");
+ dataKeys.add("Central Angle Degree");
+ dataKeys.add("Central Angle Radian");
+ }
+
+ @Override
+ public Collection extends Object> getDataKeys() {
+ return dataKeys;
+ }
+
+ @Override
+ protected Number getData(DistanceDTO distance, Object dataKey) {
+ if (!(dataKey instanceof String)) {
+ throw new IllegalArgumentException("The given data key '" + dataKey + "' isn't valid");
+ }
+ String dataKeyString = (String) dataKey;
+ switch (dataKeyString) {
+ case "Geographical Miles":
+ return distance.getGeographicalMiles();
+ case "Sea Miles":
+ return distance.getSeaMiles();
+ case "Nautical Miles":
+ return distance.getNauticalMiles();
+ case "Meters":
+ return distance.getMeters();
+ case "Kilometers":
+ return distance.getKilometers();
+ case "Central Angle Degree":
+ return distance.getCentralAngleDegree();
+ case "Central Angle Radian":
+ return distance.getCentralAngleRadian();
+ }
+ throw new IllegalArgumentException("The given data key '" + dataKey + "' isn't valid");
+ }
+
+}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/dataproviders/NumberDataProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/dataproviders/NumberDataProvider.java
new file mode 100644
index 00000000000..97a12078d24
--- /dev/null
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/dataproviders/NumberDataProvider.java
@@ -0,0 +1,37 @@
+package com.sap.sailing.gwt.ui.datamining.presentation.dataproviders;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+public class NumberDataProvider extends AbstractResultDataProvider {
+
+ private final Collection