Implemented dimensions for TrackedLegOfCompetitor

This commit is contained in:
Lennart Hensler committed 2013-10-25 13:48:17 +02:00
1 parent 38c48f4751
commit f2904c03fe
4 files changed
+274 -146

No files matched your search

@@ -8,6 +8,8 @@ import java.util.Map.Entry;
import com.sap.sailing.datamining.data.GPSFixWithContext;
import com.sap.sailing.datamining.data.TrackedLegOfCompetitorWithContext;
import com.sap.sailing.datamining.dimensions.GPSFixDimensionsManager;
import com.sap.sailing.datamining.dimensions.TrackedLegOfCompetitorDimensionsManager;
import com.sap.sailing.datamining.impl.DataAmountExtractor;
import com.sap.sailing.datamining.impl.DynamicGrouper;
import com.sap.sailing.datamining.impl.FilterByCriteria;
@@ -111,11 +113,9 @@ public class DataMiningFactory {
return compoundFilterCriteria;
}
private static <ValueType> FilterCriteria<TrackedLegOfCompetitorWithContext> createTrackedLegOfCompetitorDimensionFilterCriteria(SharedDimension key, Iterable<?> values) {
//TODO fill the dimension, after the hierarchical dimensions has been implemented
throw new UnsupportedOperationException("Not yet implemented");
// Dimension<TrackedLegOfCompetitorWithContext, ValueType> dimension = null;
// return createDimensionFilterCriteria(dimension, values);
private static <ValueType> FilterCriteria<TrackedLegOfCompetitorWithContext> createTrackedLegOfCompetitorDimensionFilterCriteria(SharedDimension sharedDimension, Iterable<?> values) {
Dimension<TrackedLegOfCompetitorWithContext, ValueType> dimension = TrackedLegOfCompetitorDimensionsManager.getDimensionFor(sharedDimension);
return createDimensionFilterCriteria(dimension, values);
}
public static FilterCriteria<GPSFixWithContext> createGPSFixDimensionFilterCriteria(Map<SharedDimension, Iterable<?>> selection) {
@@ -127,8 +127,8 @@ public class DataMiningFactory {
return compoundFilterCriteria;
}
public static <ValueType> FilterCriteria<GPSFixWithContext> createGPSFixDimensionFilterCriteria(SharedDimension gpsFix, Iterable<?> values) {
Dimension<GPSFixWithContext, ValueType> dimension = Dimensions.GPSFix.getDimensionFor(gpsFix);
public static <ValueType> FilterCriteria<GPSFixWithContext> createGPSFixDimensionFilterCriteria(SharedDimension sharedDimension, Iterable<?> values) {
Dimension<GPSFixWithContext, ValueType> dimension = GPSFixDimensionsManager.getDimensionFor(sharedDimension);
return createDimensionFilterCriteria(dimension, values);
}
@@ -176,7 +176,7 @@ public class DataMiningFactory {
public static <ValueType> Grouper<GPSFixWithContext> createGPSFixByDimensionGrouper(Collection<SharedDimension> dimensionsToGroupBy) {
Collection<Dimension<GPSFixWithContext, ValueType>> dimensions = new LinkedHashSet<Dimension<GPSFixWithContext, ValueType>>();
for (SharedDimension dimensionType : dimensionsToGroupBy) {
Dimension<GPSFixWithContext, ValueType> dimension = Dimensions.GPSFix.getDimensionFor(dimensionType);
Dimension<GPSFixWithContext, ValueType> dimension = GPSFixDimensionsManager.getDimensionFor(dimensionType);
dimensions.add(dimension);
}
return new GroupGPSFixesByDimension<ValueType>(dimensions);
@@ -1,138 +0,0 @@
package com.sap.sailing.datamining;
import com.sap.sailing.datamining.data.GPSFixWithContext;
import com.sap.sailing.datamining.impl.AbstractDimension;
import com.sap.sailing.datamining.shared.SharedDimension;
import com.sap.sailing.domain.common.LegType;
public class Dimensions {
private Dimensions() { }
public static class GPSFix {
private GPSFix() { }
public final static Dimension<GPSFixWithContext, String> RegattaName = new AbstractDimension<GPSFixWithContext, String>("Regatta") {
@Override
public String getDimensionValueFrom(GPSFixWithContext data) {
return data.getRegattaName();
}
};
public final static Dimension<GPSFixWithContext, String> RaceName = new AbstractDimension<GPSFixWithContext, String>("Race") {
@Override
public String getDimensionValueFrom(GPSFixWithContext data) {
return data.getRaceName();
}
};
public final static Dimension<GPSFixWithContext, Integer> LegNumber = new AbstractDimension<GPSFixWithContext, Integer>("Leg Number") {
@Override
public Integer getDimensionValueFrom(GPSFixWithContext data) {
return data.getLegNumber();
}
};
public final static Dimension<GPSFixWithContext, String> CourseAreaName = new AbstractDimension<GPSFixWithContext, String>("Course Area") {
@Override
public String getDimensionValueFrom(GPSFixWithContext data) {
return data.getCourseAreaName();
}
};
public final static Dimension<GPSFixWithContext, String> FleetName = new AbstractDimension<GPSFixWithContext, String>("Fleet") {
@Override
public String getDimensionValueFrom(GPSFixWithContext data) {
return data.getFleetName();
}
};
public final static Dimension<GPSFixWithContext, String> BoatClassName = new AbstractDimension<GPSFixWithContext, String>("Boat Class") {
@Override
public String getDimensionValueFrom(GPSFixWithContext data) {
return data.getBoatClassName();
}
};
public final static Dimension<GPSFixWithContext, Integer> Year = new AbstractDimension<GPSFixWithContext, Integer>("Year") {
@Override
public Integer getDimensionValueFrom(GPSFixWithContext data) {
return data.getYear();
}
};
public final static Dimension<GPSFixWithContext, LegType> LegType = new AbstractDimension<GPSFixWithContext, LegType>("Leg Type") {
@Override
public LegType getDimensionValueFrom(GPSFixWithContext data) {
return data.getLegType();
}
};
public final static Dimension<GPSFixWithContext, String> CompetitorName = new AbstractDimension<GPSFixWithContext, String>("Competitor") {
@Override
public String getDimensionValueFrom(GPSFixWithContext data) {
return data.getCompetitorName();
}
};
public final static Dimension<GPSFixWithContext, String> SailID = new AbstractDimension<GPSFixWithContext, String>("Sail ID") {
@Override
public String getDimensionValueFrom(GPSFixWithContext data) {
return data.getCompetitorSailID();
}
};
public final static Dimension<GPSFixWithContext, String> Nationality = new AbstractDimension<GPSFixWithContext, String>("Nationality") {
@Override
public String getDimensionValueFrom(GPSFixWithContext data) {
return data.getCompetitorNationality();
}
};
//TODO after new clusters
public final static Dimension<GPSFixWithContext, String> WindStrength = new AbstractDimension<GPSFixWithContext, String>("Wind Strength") {
@Override
public String getDimensionValueFrom(GPSFixWithContext data) {
return data.getWindStrength().getName();
}
};
/**
* @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(SharedDimension dimension) {
switch (dimension) {
case BoatClassName:
return (Dimension<GPSFixWithContext, ValueType>) BoatClassName;
case CompetitorName:
return (Dimension<GPSFixWithContext, ValueType>) CompetitorName;
case CourseAreaName:
return (Dimension<GPSFixWithContext, ValueType>) CourseAreaName;
case FleetName:
return (Dimension<GPSFixWithContext, ValueType>) FleetName;
case LegNumber:
return (Dimension<GPSFixWithContext, ValueType>) LegNumber;
case LegType:
return (Dimension<GPSFixWithContext, ValueType>) LegType;
case Nationality:
return (Dimension<GPSFixWithContext, ValueType>) Nationality;
case RaceName:
return (Dimension<GPSFixWithContext, ValueType>) RaceName;
case RegattaName:
return (Dimension<GPSFixWithContext, ValueType>) RegattaName;
case SailID:
return (Dimension<GPSFixWithContext, ValueType>) SailID;
case WindStrength:
return (Dimension<GPSFixWithContext, ValueType>) WindStrength;
case Year:
return (Dimension<GPSFixWithContext, ValueType>) Year;
}
throw new IllegalArgumentException("Not yet implemented for the given dimension: "
+ dimension.toString());
}
}
}
@@ -0,0 +1,133 @@
package com.sap.sailing.datamining.dimensions;
import com.sap.sailing.datamining.Dimension;
import com.sap.sailing.datamining.data.GPSFixWithContext;
import com.sap.sailing.datamining.impl.AbstractDimension;
import com.sap.sailing.datamining.shared.SharedDimension;
import com.sap.sailing.domain.common.LegType;
public class GPSFixDimensionsManager {
private GPSFixDimensionsManager() { }
public final static Dimension<GPSFixWithContext, String> RegattaName = new AbstractDimension<GPSFixWithContext, String>("Regatta") {
@Override
public String getDimensionValueFrom(GPSFixWithContext data) {
return data.getRegattaName();
}
};
public final static Dimension<GPSFixWithContext, String> RaceName = new AbstractDimension<GPSFixWithContext, String>("Race") {
@Override
public String getDimensionValueFrom(GPSFixWithContext data) {
return data.getRaceName();
}
};
public final static Dimension<GPSFixWithContext, Integer> LegNumber = new AbstractDimension<GPSFixWithContext, Integer>("Leg Number") {
@Override
public Integer getDimensionValueFrom(GPSFixWithContext data) {
return data.getLegNumber();
}
};
public final static Dimension<GPSFixWithContext, String> CourseAreaName = new AbstractDimension<GPSFixWithContext, String>("Course Area") {
@Override
public String getDimensionValueFrom(GPSFixWithContext data) {
return data.getCourseAreaName();
}
};
public final static Dimension<GPSFixWithContext, String> FleetName = new AbstractDimension<GPSFixWithContext, String>("Fleet") {
@Override
public String getDimensionValueFrom(GPSFixWithContext data) {
return data.getFleetName();
}
};
public final static Dimension<GPSFixWithContext, String> BoatClassName = new AbstractDimension<GPSFixWithContext, String>("Boat Class") {
@Override
public String getDimensionValueFrom(GPSFixWithContext data) {
return data.getBoatClassName();
}
};
public final static Dimension<GPSFixWithContext, Integer> Year = new AbstractDimension<GPSFixWithContext, Integer>("Year") {
@Override
public Integer getDimensionValueFrom(GPSFixWithContext data) {
return data.getYear();
}
};
public final static Dimension<GPSFixWithContext, LegType> LegType = new AbstractDimension<GPSFixWithContext, LegType>("Leg Type") {
@Override
public LegType getDimensionValueFrom(GPSFixWithContext data) {
return data.getLegType();
}
};
public final static Dimension<GPSFixWithContext, String> CompetitorName = new AbstractDimension<GPSFixWithContext, String>("Competitor") {
@Override
public String getDimensionValueFrom(GPSFixWithContext data) {
return data.getCompetitorName();
}
};
public final static Dimension<GPSFixWithContext, String> SailID = new AbstractDimension<GPSFixWithContext, String>("Sail ID") {
@Override
public String getDimensionValueFrom(GPSFixWithContext data) {
return data.getCompetitorSailID();
}
};
public final static Dimension<GPSFixWithContext, String> Nationality = new AbstractDimension<GPSFixWithContext, String>("Nationality") {
@Override
public String getDimensionValueFrom(GPSFixWithContext data) {
return data.getCompetitorNationality();
}
};
//TODO after new clusters
public final static Dimension<GPSFixWithContext, String> WindStrength = new AbstractDimension<GPSFixWithContext, String>("Wind Strength") {
@Override
public String getDimensionValueFrom(GPSFixWithContext data) {
return data.getWindStrength().getName();
}
};
/**
* @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(SharedDimension dimension) {
switch (dimension) {
case BoatClassName:
return (Dimension<GPSFixWithContext, ValueType>) BoatClassName;
case CompetitorName:
return (Dimension<GPSFixWithContext, ValueType>) CompetitorName;
case CourseAreaName:
return (Dimension<GPSFixWithContext, ValueType>) CourseAreaName;
case FleetName:
return (Dimension<GPSFixWithContext, ValueType>) FleetName;
case LegNumber:
return (Dimension<GPSFixWithContext, ValueType>) LegNumber;
case LegType:
return (Dimension<GPSFixWithContext, ValueType>) LegType;
case Nationality:
return (Dimension<GPSFixWithContext, ValueType>) Nationality;
case RaceName:
return (Dimension<GPSFixWithContext, ValueType>) RaceName;
case RegattaName:
return (Dimension<GPSFixWithContext, ValueType>) RegattaName;
case SailID:
return (Dimension<GPSFixWithContext, ValueType>) SailID;
case WindStrength:
return (Dimension<GPSFixWithContext, ValueType>) WindStrength;
case Year:
return (Dimension<GPSFixWithContext, ValueType>) Year;
}
throw new IllegalArgumentException("Not yet implemented for the given dimension: "
+ dimension.toString());
}
}
@@ -0,0 +1,133 @@
package com.sap.sailing.datamining.dimensions;
import com.sap.sailing.datamining.Dimension;
import com.sap.sailing.datamining.data.TrackedLegOfCompetitorWithContext;
import com.sap.sailing.datamining.impl.AbstractDimension;
import com.sap.sailing.datamining.shared.SharedDimension;
import com.sap.sailing.domain.common.LegType;
public class TrackedLegOfCompetitorDimensionsManager {
private TrackedLegOfCompetitorDimensionsManager() { }
public final static Dimension<TrackedLegOfCompetitorWithContext, String> RegattaName = new AbstractDimension<TrackedLegOfCompetitorWithContext, String>("Regatta") {
@Override
public String getDimensionValueFrom(TrackedLegOfCompetitorWithContext data) {
return data.getRegattaName();
}
};
public final static Dimension<TrackedLegOfCompetitorWithContext, String> RaceName = new AbstractDimension<TrackedLegOfCompetitorWithContext, String>("Race") {
@Override
public String getDimensionValueFrom(TrackedLegOfCompetitorWithContext data) {
return data.getRaceName();
}
};
public final static Dimension<TrackedLegOfCompetitorWithContext, Integer> LegNumber = new AbstractDimension<TrackedLegOfCompetitorWithContext, Integer>("Leg Number") {
@Override
public Integer getDimensionValueFrom(TrackedLegOfCompetitorWithContext data) {
return data.getLegNumber();
}
};
public final static Dimension<TrackedLegOfCompetitorWithContext, String> CourseAreaName = new AbstractDimension<TrackedLegOfCompetitorWithContext, String>("Course Area") {
@Override
public String getDimensionValueFrom(TrackedLegOfCompetitorWithContext data) {
return data.getCourseAreaName();
}
};
public final static Dimension<TrackedLegOfCompetitorWithContext, String> FleetName = new AbstractDimension<TrackedLegOfCompetitorWithContext, String>("Fleet") {
@Override
public String getDimensionValueFrom(TrackedLegOfCompetitorWithContext data) {
return data.getFleetName();
}
};
public final static Dimension<TrackedLegOfCompetitorWithContext, String> BoatClassName = new AbstractDimension<TrackedLegOfCompetitorWithContext, String>("Boat Class") {
@Override
public String getDimensionValueFrom(TrackedLegOfCompetitorWithContext data) {
return data.getBoatClassName();
}
};
public final static Dimension<TrackedLegOfCompetitorWithContext, Integer> Year = new AbstractDimension<TrackedLegOfCompetitorWithContext, Integer>("Year") {
@Override
public Integer getDimensionValueFrom(TrackedLegOfCompetitorWithContext data) {
return data.getYear();
}
};
public final static Dimension<TrackedLegOfCompetitorWithContext, LegType> LegType = new AbstractDimension<TrackedLegOfCompetitorWithContext, LegType>("Leg Type") {
@Override
public LegType getDimensionValueFrom(TrackedLegOfCompetitorWithContext data) {
return data.getLegType();
}
};
public final static Dimension<TrackedLegOfCompetitorWithContext, String> CompetitorName = new AbstractDimension<TrackedLegOfCompetitorWithContext, String>("Competitor") {
@Override
public String getDimensionValueFrom(TrackedLegOfCompetitorWithContext data) {
return data.getCompetitorName();
}
};
public final static Dimension<TrackedLegOfCompetitorWithContext, String> SailID = new AbstractDimension<TrackedLegOfCompetitorWithContext, String>("Sail ID") {
@Override
public String getDimensionValueFrom(TrackedLegOfCompetitorWithContext data) {
return data.getCompetitorSailID();
}
};
public final static Dimension<TrackedLegOfCompetitorWithContext, String> Nationality = new AbstractDimension<TrackedLegOfCompetitorWithContext, String>("Nationality") {
@Override
public String getDimensionValueFrom(TrackedLegOfCompetitorWithContext data) {
return data.getCompetitorNationality();
}
};
//TODO after new clusters
public final static Dimension<TrackedLegOfCompetitorWithContext, String> WindStrength = new AbstractDimension<TrackedLegOfCompetitorWithContext, String>("Wind Strength") {
@Override
public String getDimensionValueFrom(TrackedLegOfCompetitorWithContext data) {
return data.getWindStrength().getName();
}
};
/**
* @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<TrackedLegOfCompetitorWithContext, ValueType> getDimensionFor(SharedDimension dimension) {
switch (dimension) {
case BoatClassName:
return (Dimension<TrackedLegOfCompetitorWithContext, ValueType>) BoatClassName;
case CompetitorName:
return (Dimension<TrackedLegOfCompetitorWithContext, ValueType>) CompetitorName;
case CourseAreaName:
return (Dimension<TrackedLegOfCompetitorWithContext, ValueType>) CourseAreaName;
case FleetName:
return (Dimension<TrackedLegOfCompetitorWithContext, ValueType>) FleetName;
case LegNumber:
return (Dimension<TrackedLegOfCompetitorWithContext, ValueType>) LegNumber;
case LegType:
return (Dimension<TrackedLegOfCompetitorWithContext, ValueType>) LegType;
case Nationality:
return (Dimension<TrackedLegOfCompetitorWithContext, ValueType>) Nationality;
case RaceName:
return (Dimension<TrackedLegOfCompetitorWithContext, ValueType>) RaceName;
case RegattaName:
return (Dimension<TrackedLegOfCompetitorWithContext, ValueType>) RegattaName;
case SailID:
return (Dimension<TrackedLegOfCompetitorWithContext, ValueType>) SailID;
case WindStrength:
return (Dimension<TrackedLegOfCompetitorWithContext, ValueType>) WindStrength;
case Year:
return (Dimension<TrackedLegOfCompetitorWithContext, ValueType>) Year;
}
throw new IllegalArgumentException("Not yet implemented for the given dimension: "
+ dimension.toString());
}
}