The selection panels is now able to apply a QueryDefinition

This commit is contained in:
Lennart Hensler committed 2013-10-10 18:05:31 +02:00
1 parent c629303777
commit 920e596cfd
14 files changed
+150 -72

No files matched your search

@@ -24,7 +24,7 @@ import com.sap.sailing.datamining.impl.gpsfix.SimpleGPSFixRetriever;
import com.sap.sailing.datamining.impl.gpsfix.GroupGPSFixesByDimension;
import com.sap.sailing.datamining.shared.AggregatorType;
import com.sap.sailing.datamining.shared.DataTypes;
import com.sap.sailing.datamining.shared.SharedDimensions;
import com.sap.sailing.datamining.shared.SharedDimension;
import com.sap.sailing.datamining.shared.QueryDefinition;
import com.sap.sailing.datamining.shared.StatisticType;
import com.sap.sailing.domain.base.Moving;
@@ -87,13 +87,13 @@ public class DataMiningFactory {
private static <DataType> Filter<DataType> createDimensionFilter(DataTypes dataType, Map<?, Iterable<?>> selection) {
switch (dataType) {
case GPSFix:
return (Filter<DataType>) createGPSFixDimensionFilter((Map<SharedDimensions, Iterable<?>>) selection);
return (Filter<DataType>) createGPSFixDimensionFilter((Map<SharedDimension, Iterable<?>>) selection);
}
throw new IllegalArgumentException("Not yet implemented for the given data type: "
+ dataType.toString());
}
public static Filter<GPSFixWithContext> createGPSFixDimensionFilter(Map<SharedDimensions, Iterable<?>> selection) {
public static Filter<GPSFixWithContext> createGPSFixDimensionFilter(Map<SharedDimension, Iterable<?>> selection) {
if (selection.isEmpty()) {
return createNoFilter();
}
@@ -101,16 +101,16 @@ public class DataMiningFactory {
return createCriteriaFilter(createGPSFixDimensionFilterCriteria(selection));
}
public static FilterCriteria<GPSFixWithContext> createGPSFixDimensionFilterCriteria(Map<SharedDimensions, Iterable<?>> selection) {
public static FilterCriteria<GPSFixWithContext> createGPSFixDimensionFilterCriteria(Map<SharedDimension, Iterable<?>> selection) {
CompoundFilterCriteria<GPSFixWithContext> compoundFilterCriteria = new AndCompoundFilterCriteria<GPSFixWithContext>();
for (Entry<SharedDimensions, Iterable<?>> selectionEntry : selection.entrySet()) {
for (Entry<SharedDimension, Iterable<?>> selectionEntry : selection.entrySet()) {
FilterCriteria<GPSFixWithContext> criteria = createGPSFixDimensionFilterCriteria(selectionEntry.getKey(), selectionEntry.getValue());
compoundFilterCriteria.addCriteria(criteria);
}
return compoundFilterCriteria;
}
public static <ValueType> FilterCriteria<GPSFixWithContext> createGPSFixDimensionFilterCriteria(SharedDimensions gpsFix, Iterable<?> values) {
public static <ValueType> FilterCriteria<GPSFixWithContext> createGPSFixDimensionFilterCriteria(SharedDimension gpsFix, Iterable<?> values) {
Dimension<GPSFixWithContext, ValueType> dimension = Dimensions.GPSFix.getDimensionFor(gpsFix);
return createDimensionFilterCriteria(dimension, values);
}
@@ -150,15 +150,15 @@ public class DataMiningFactory {
private static <DataType> Grouper<DataType> createByDimensionGrouper(DataTypes dataType, List<?> dimensionsToGroupBy) {
switch (dataType) {
case GPSFix:
return (Grouper<DataType>) createGPSFixByDimensionGrouper((Collection<SharedDimensions>) dimensionsToGroupBy);
return (Grouper<DataType>) createGPSFixByDimensionGrouper((Collection<SharedDimension>) dimensionsToGroupBy);
}
throw new IllegalArgumentException("Not yet implemented for the given data type: "
+ dataType.toString());
}
public static <ValueType> Grouper<GPSFixWithContext> createGPSFixByDimensionGrouper(Collection<SharedDimensions> dimensionsToGroupBy) {
public static <ValueType> Grouper<GPSFixWithContext> createGPSFixByDimensionGrouper(Collection<SharedDimension> dimensionsToGroupBy) {
Collection<Dimension<GPSFixWithContext, ValueType>> dimensions = new LinkedHashSet<Dimension<GPSFixWithContext, ValueType>>();
for (SharedDimensions dimensionType : dimensionsToGroupBy) {
for (SharedDimension dimensionType : dimensionsToGroupBy) {
Dimension<GPSFixWithContext, ValueType> dimension = Dimensions.GPSFix.getDimensionFor(dimensionType);
dimensions.add(dimension);
}
@@ -1,7 +1,7 @@
package com.sap.sailing.datamining;
import com.sap.sailing.datamining.impl.AbstractDimension;
import com.sap.sailing.datamining.shared.SharedDimensions;
import com.sap.sailing.datamining.shared.SharedDimension;
import com.sap.sailing.domain.common.LegType;
public class Dimensions {
@@ -101,7 +101,7 @@ public class Dimensions {
* @return The dimension for the given dimension type. Throws an exception, if the used <code>ValueType</code> doesn't match the <code>ValueType</code> of the returning dimension.
*/
@SuppressWarnings("unchecked")
public static <ValueType> Dimension<GPSFixWithContext, ValueType> getDimensionFor(SharedDimensions dimension) {
public static <ValueType> Dimension<GPSFixWithContext, ValueType> getDimensionFor(SharedDimension dimension) {
switch (dimension) {
case BoatClassName:
return (Dimension<GPSFixWithContext, ValueType>) BoatClassName;
@@ -7,7 +7,7 @@ import com.sap.sailing.datamining.shared.AggregatorType;
import com.sap.sailing.datamining.shared.Components.GrouperType;
import com.sap.sailing.datamining.shared.DataTypes;
import com.sap.sailing.datamining.shared.QueryDefinition;
import com.sap.sailing.datamining.shared.SharedDimensions;
import com.sap.sailing.datamining.shared.SharedDimension;
import com.sap.sailing.datamining.shared.StatisticType;
public class SmartQueryDefinition implements QueryDefinition {
@@ -40,12 +40,12 @@ public class SmartQueryDefinition implements QueryDefinition {
}
@Override
public List<SharedDimensions> getDimensionsToGroupBy() {
public List<SharedDimension> getDimensionsToGroupBy() {
return queryDefinition.getDimensionsToGroupBy();
}
@Override
public Map<SharedDimensions, Iterable<?>> getSelection() {
public Map<SharedDimension, Iterable<?>> getSelection() {
return queryDefinition.getSelection();
}
@@ -16,8 +16,8 @@ public interface QueryDefinition extends Serializable {
public String getCustomGrouperScriptText();
public List<SharedDimensions> getDimensionsToGroupBy();
public List<SharedDimension> getDimensionsToGroupBy();
public Map<SharedDimensions, Iterable<?>> getSelection();
public Map<SharedDimension, Iterable<?>> getSelection();
}
@@ -1,5 +1,5 @@
package com.sap.sailing.datamining.shared;
public enum SharedDimensions {
public enum SharedDimension {
RegattaName, RaceName, LegNumber, CourseAreaName, FleetName, BoatClassName, Year, LegType, CompetitorName, SailID, Nationality, WindStrength
}
@@ -16,8 +16,8 @@ public class SimpleQueryDefinition implements QueryDefinition {
private AggregatorType aggregatorType;
private String customGrouperScriptText;
private List<SharedDimensions> dimensionsToGroupBy;
private Map<SharedDimensions, Iterable<?>> selectionMappedByDimension;
private List<SharedDimension> dimensionsToGroupBy;
private Map<SharedDimension, Iterable<?>> selectionMappedByDimension;
/**
* Constructor for the GWT-Serialization. Don't use this!
@@ -31,8 +31,8 @@ public class SimpleQueryDefinition implements QueryDefinition {
this.aggregatorType = aggregatorType;
customGrouperScriptText = "";
dimensionsToGroupBy = new ArrayList<SharedDimensions>();
selectionMappedByDimension = new HashMap<SharedDimensions, Iterable<?>>();
dimensionsToGroupBy = new ArrayList<SharedDimension>();
selectionMappedByDimension = new HashMap<SharedDimension, Iterable<?>>();
}
@Override
@@ -56,20 +56,20 @@ public class SimpleQueryDefinition implements QueryDefinition {
}
@Override
public List<SharedDimensions> getDimensionsToGroupBy() {
public List<SharedDimension> getDimensionsToGroupBy() {
return dimensionsToGroupBy;
}
@Override
public Map<SharedDimensions, Iterable<?>> getSelection() {
public Map<SharedDimension, Iterable<?>> getSelection() {
return selectionMappedByDimension;
}
public void appendDimensionToGroupBy(SharedDimensions dimension) {
public void appendDimensionToGroupBy(SharedDimension dimension) {
dimensionsToGroupBy.add(dimension);
}
public void setSelectionFor(SharedDimensions dimension, Collection<?> selection) {
public void setSelectionFor(SharedDimension dimension, Collection<?> selection) {
selectionMappedByDimension.put(dimension, selection);
}