mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-14 06:18:12 +00:00
Prepared the UI for multiple result types
This commit is contained in:
1 parent
2c58199e86
commit
4afc61c0fe
11 files changed
+237
-10
No files matched your search
@@ -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
|
||||
+60
@@ -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;
|
||||
|
||||
/**
|
||||
* <b>Do NOT use!</b><br>
|
||||
* 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;
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -33,7 +33,7 @@ public interface DataMiningService extends RemoteService {
|
||||
QueryResultDTO<Set<Object>> getDimensionValuesFor(DataMiningSession session, DataRetrieverChainDefinitionDTO dataRetrieverChainDefinitionDTO, int retrieverLevel,
|
||||
Iterable<FunctionDTO> dimensionDTOs, Map<Integer, Map<FunctionDTO, Collection<?>>> filterSelectionDTO, String localeInfoName);
|
||||
|
||||
<ResultType extends Number> QueryResultDTO<ResultType> runQuery(DataMiningSession session, StatisticQueryDefinitionDTO queryDefinition);
|
||||
<ResultType> QueryResultDTO<ResultType> runQuery(DataMiningSession session, StatisticQueryDefinitionDTO queryDefinition);
|
||||
|
||||
SSEDataMiningSerializationDummy pseudoMethodSoThatSomeSSEDataMiningClassesAreAddedToTheGWTSerializationPolicy();
|
||||
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ public interface DataMiningServiceAsync {
|
||||
Iterable<FunctionDTO> dimensionDTOs, Map<Integer, Map<FunctionDTO, Collection<?>>> filterSelectionDTO,
|
||||
String localeInfoName, AsyncCallback<QueryResultDTO<Set<Object>>> callback);
|
||||
|
||||
<ResultType extends Number> void runQuery(DataMiningSession session, StatisticQueryDefinitionDTO queryDefinition, AsyncCallback<QueryResultDTO<ResultType>> callback);
|
||||
<ResultType> void runQuery(DataMiningSession session, StatisticQueryDefinitionDTO queryDefinition, AsyncCallback<QueryResultDTO<ResultType>> callback);
|
||||
|
||||
/**
|
||||
* This method does nothing, but is needed to ensure, that some classes for the data mining
|
||||
|
||||
+40
@@ -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<ResultType> {
|
||||
|
||||
private final Class<ResultType> resultType;
|
||||
|
||||
public AbstractResultDataProvider(Class<ResultType> resultType) {
|
||||
this.resultType = resultType;
|
||||
}
|
||||
|
||||
public Class<ResultType> getResultType() {
|
||||
return resultType;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return Collection of the keys for the provided data.
|
||||
* The method <code>toString()</code> can be used to display the keys.
|
||||
*/
|
||||
public abstract Collection<? extends Object> getDataKeys();
|
||||
|
||||
public Map<GroupKey, Number> getData(QueryResultDTO<ResultType> result, Object dataKey) {
|
||||
Map<GroupKey, Number> data = new HashMap<>();
|
||||
Map<GroupKey, ResultType> 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);
|
||||
|
||||
}
|
||||
+55
@@ -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<DistanceDTO> {
|
||||
|
||||
private final List<String> 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");
|
||||
}
|
||||
|
||||
}
|
||||
+37
@@ -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<Number> {
|
||||
|
||||
private final Collection<Object> dataKeys;
|
||||
|
||||
public NumberDataProvider() {
|
||||
super(Number.class);
|
||||
dataKeys = new ArrayList<>();
|
||||
dataKeys.add("Double");
|
||||
dataKeys.add("Integer");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<? extends Object> getDataKeys() {
|
||||
return dataKeys;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Number getData(Number number, Object dataKey) {
|
||||
if (!(dataKey instanceof String)) {
|
||||
throw new IllegalArgumentException("The given data key '" + dataKey + "' isn't valid");
|
||||
}
|
||||
String dataKeyString = (String) dataKey;
|
||||
switch (dataKeyString) {
|
||||
case "Double":
|
||||
return number.doubleValue();
|
||||
case "Integer":
|
||||
return number.intValue();
|
||||
}
|
||||
throw new IllegalArgumentException("The given data key '" + dataKey + "' isn't valid");
|
||||
}
|
||||
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package com.sap.sailing.gwt.ui.datamining.presentation.dataproviders;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
public class NumberLongProvider extends AbstractResultDataProvider<Number> {
|
||||
|
||||
public NumberLongProvider() {
|
||||
super(Number.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<? extends Object> getDataKeys() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Number getData(Number number, Object dataKey) {
|
||||
return Math.round(number.doubleValue());
|
||||
}
|
||||
|
||||
}
|
||||
+9
-7
@@ -22,6 +22,7 @@ import com.sap.sse.datamining.Query;
|
||||
import com.sap.sse.datamining.StatisticQueryDefinition;
|
||||
import com.sap.sse.datamining.components.AggregationProcessorDefinition;
|
||||
import com.sap.sse.datamining.components.DataRetrieverChainDefinition;
|
||||
import com.sap.sse.datamining.data.QueryResult;
|
||||
import com.sap.sse.datamining.factories.DataMiningDTOFactory;
|
||||
import com.sap.sse.datamining.functions.Function;
|
||||
import com.sap.sse.datamining.impl.components.DataRetrieverTypeWithInformation;
|
||||
@@ -180,8 +181,8 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM
|
||||
Map<Integer, Map<Function<?>, Collection<?>>> filterSelection = filterSelectionDTOAsFilterSelection(filterSelectionDTO);
|
||||
Locale locale = ResourceBundleStringMessages.Util.getLocaleFor(localeInfoName);
|
||||
Query<Set<Object>> dimensionValuesQuery = dataMiningServer.createDimensionValuesQuery(retrieverChainDefinition, retrieverLevel, dimensions, filterSelection, locale);
|
||||
QueryResultDTO<Set<Object>> result = getDataMiningServer().runNewQueryAndAbortPreviousQueries(session, dimensionValuesQuery);
|
||||
return result;
|
||||
QueryResult<Set<Object>> result = dataMiningServer.runNewQueryAndAbortPreviousQueries(session, dimensionValuesQuery);
|
||||
return dataMiningServer.convertToDTO(result);
|
||||
}
|
||||
|
||||
private Collection<Function<?>> functionDTOsAsFunctions(Iterable<FunctionDTO> functionDTOs) {
|
||||
@@ -217,11 +218,12 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM
|
||||
}
|
||||
|
||||
@Override
|
||||
public <ResultType extends Number> QueryResultDTO<ResultType> runQuery(DataMiningSession session, StatisticQueryDefinitionDTO queryDefinitionDTO) {
|
||||
StatisticQueryDefinition<RacingEventService, ?, ?, ResultType> queryDefinition = getDataMiningServer().getQueryDefinitionForDTO(queryDefinitionDTO);
|
||||
Query<ResultType> query = getDataMiningServer().createQuery(queryDefinition);
|
||||
QueryResultDTO<ResultType> result = getDataMiningServer().runNewQueryAndAbortPreviousQueries(session, query);
|
||||
return result;
|
||||
public <ResultType> QueryResultDTO<ResultType> runQuery(DataMiningSession session, StatisticQueryDefinitionDTO queryDefinitionDTO) {
|
||||
DataMiningServer dataMiningServer = getDataMiningServer();
|
||||
StatisticQueryDefinition<RacingEventService, ?, ?, ResultType> queryDefinition = dataMiningServer.getQueryDefinitionForDTO(queryDefinitionDTO);
|
||||
Query<ResultType> query = dataMiningServer.createQuery(queryDefinition);
|
||||
QueryResult<ResultType> result = dataMiningServer.runNewQueryAndAbortPreviousQueries(session, query);
|
||||
return dataMiningServer.convertToDTO(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.sap.sse.datamining.shared.DataMiningSession;
|
||||
import com.sap.sse.datamining.shared.dto.StatisticQueryDefinitionDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.AggregationProcessorDefinitionDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.FunctionDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO;
|
||||
import com.sap.sse.i18n.ResourceBundleStringMessages;
|
||||
|
||||
|
||||
@@ -61,4 +62,6 @@ public interface DataMiningServer {
|
||||
public <ExtractedType> AggregationProcessorDefinition<? super ExtractedType, ?> getAggregationProcessorDefinition(Class<ExtractedType> extractedType, String aggregationNameMessageKey);
|
||||
public <ExtractedType, ResultType> AggregationProcessorDefinition<ExtractedType, ResultType> getAggregationProcessorDefinitionForDTO(AggregationProcessorDefinitionDTO aggregatorDefinitionDTO);
|
||||
|
||||
public <ResultType> QueryResultDTO<ResultType> convertToDTO(QueryResult<ResultType> result);
|
||||
|
||||
}
|
||||
@@ -32,6 +32,7 @@ import com.sap.sse.datamining.shared.DataMiningSession;
|
||||
import com.sap.sse.datamining.shared.dto.StatisticQueryDefinitionDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.AggregationProcessorDefinitionDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.FunctionDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO;
|
||||
import com.sap.sse.i18n.ResourceBundleStringMessages;
|
||||
import com.sap.sse.i18n.impl.CompoundResourceBundleStringMessages;
|
||||
|
||||
@@ -333,4 +334,10 @@ public class DataMiningServerImpl implements ModifiableDataMiningServer {
|
||||
return dataMiningQueryManager.runNewAndAbortPrevious(session, query);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <ResultType> QueryResultDTO<ResultType> convertToDTO(QueryResult<ResultType> result) {
|
||||
return new QueryResultDTO<ResultType>(result.getState(), result.getResultType().getName(), result.getResults(), result.getAdditionalData());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user