Prepared the UI for multiple result types

This commit is contained in:
Lennart Hensler committed 2015-08-12 01:33:23 +02:00
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
@@ -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;
}
}
@@ -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();
@@ -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
@@ -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);
}
@@ -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");
}
}
@@ -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");
}
}
@@ -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());
}
}
@@ -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());
}
}