Removed some unnecessary interfaces and generalized grouper and extractor

This commit is contained in:
Lennart Hensler committed 2013-08-07 17:00:41 +02:00
1 parent 289e6d63e8
commit 9447ea6f20
10 files changed
+45 -58

No files matched your search

@@ -6,7 +6,7 @@ import java.util.Map;
import java.util.Map.Entry;
import com.sap.sailing.datamining.impl.AverageAggregator;
import com.sap.sailing.datamining.impl.GroupByDimension;
import com.sap.sailing.datamining.impl.AbstractGrouper;
import com.sap.sailing.datamining.impl.QueryImpl;
import com.sap.sailing.datamining.impl.SelectorImpl;
import com.sap.sailing.datamining.impl.SumAggregator;
@@ -35,7 +35,7 @@ public class DataMiningFactory {
}
protected static Grouper createGrouper(Dimension dimension) {
return new GroupByDimension(dimension);
return new AbstractGrouper(dimension);
}
protected static Extractor createExtractor(StatisticType statisticType) {
@@ -2,8 +2,10 @@ package com.sap.sailing.datamining;
import java.util.Collection;
public interface Extractor {
import com.sap.sailing.domain.confidence.ScalableValue;
public Collection<Double> extract(Collection<GPSFixWithContext> data);
public interface Extractor<DataType, ExtractedType, AveragesTo> {
public Collection<ScalableValue<ExtractedType, AveragesTo>> extract(Collection<DataType> data);
}
@@ -1,5 +0,0 @@
package com.sap.sailing.datamining;
public interface GPSFixFilter extends Filter<GPSFixWithContext> {
}
@@ -1,5 +0,0 @@
package com.sap.sailing.datamining;
public interface GPSFixFilterCriteria extends FilterCriteria<GPSFixWithContext> {
}
@@ -1,5 +0,0 @@
package com.sap.sailing.datamining;
public interface GPSFixRetriever extends DataRetriever<GPSFixWithContext> {
}
@@ -0,0 +1,5 @@
package com.sap.sailing.datamining;
public interface GroupKey {
}
@@ -3,8 +3,8 @@ package com.sap.sailing.datamining;
import java.util.Collection;
import java.util.Map;
public interface Grouper {
public interface Grouper<DataType> {
public Map<String, Collection<GPSFixWithContext>> group(Collection<GPSFixWithContext> data);
public Map<GroupKey, Collection<DataType>> group(Collection<DataType> data);
}
@@ -0,0 +1,30 @@
package com.sap.sailing.datamining.impl;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import com.sap.sailing.datamining.GroupKey;
import com.sap.sailing.datamining.Grouper;
public abstract class AbstractGrouper<DataType> implements Grouper<DataType> {
@Override
public Map<GroupKey, Collection<DataType>> group(Collection<DataType> data) {
Map<GroupKey, Collection<DataType>> groupedData = new HashMap<GroupKey, Collection<DataType>>();
for (DataType dataEntry : data) {
GroupKey key = getGroupKeyFor(dataEntry);
if (key != null) {
if (!groupedData.containsKey(key)) {
groupedData.put(key, new ArrayList<DataType>());
}
groupedData.get(key).add(dataEntry);
}
}
return groupedData;
}
protected abstract GroupKey getGroupKeyFor(DataType dataEntry);
}
@@ -4,8 +4,8 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import com.sap.sailing.datamining.DataRetriever;
import com.sap.sailing.datamining.GPSFixContext;
import com.sap.sailing.datamining.GPSFixRetriever;
import com.sap.sailing.datamining.GPSFixWithContext;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.CourseArea;
@@ -21,7 +21,7 @@ import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.server.RacingEventService;
public class GPSFixRetrieverImpl implements GPSFixRetriever {
public class GPSFixRetrieverImpl implements DataRetriever<GPSFixWithContext> {
@Override
@@ -1,35 +0,0 @@
package com.sap.sailing.datamining.impl;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import com.sap.sailing.datamining.GPSFixWithContext;
import com.sap.sailing.datamining.Grouper;
import com.sap.sailing.datamining.shared.Dimension;
public class GroupByDimension implements Grouper {
private Dimension dimension;
public GroupByDimension(Dimension dimension) {
this.dimension = dimension;
}
@Override
public Map<String, Collection<GPSFixWithContext>> group(Collection<GPSFixWithContext> data) {
Map<String, Collection<GPSFixWithContext>> groupedData = new HashMap<String, Collection<GPSFixWithContext>>();
for (GPSFixWithContext gpsFix : data) {
String dimensionValueAsString = gpsFix.getStringRepresentation(dimension);
if (dimensionValueAsString != null) {
if (!groupedData.containsKey(dimensionValueAsString)) {
groupedData.put(dimensionValueAsString, new ArrayList<GPSFixWithContext>());
}
groupedData.get(dimensionValueAsString).add(gpsFix);
}
}
return groupedData;
}
}