Simplified the selection algorithmus

This commit is contained in:
Lennart Hensler committed 2013-07-29 16:06:40 +02:00
1 parent f6333e83f7
commit dddad93ef5
2 files changed
+9 -32

No files matched your search

@@ -41,9 +41,8 @@ public class SelectionCriteriaFactory {
return new WindStrengthSelectionCriteria((Collection<WindStrength>) selection);
case Year:
return new YearSelectionCriteria((Collection<Integer>) selection);
default:
throw new IllegalArgumentException("Not yet implemented for the given selection type.");
}
throw new IllegalArgumentException("Not yet implemented for the given selection type.");
}
}
@@ -1,14 +1,12 @@
package com.sap.sailing.datamining.impl;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import com.sap.sailing.datamining.GPSFixWithContext;
import com.sap.sailing.datamining.SelectionContext;
import com.sap.sailing.datamining.SelectionCriteria;
import com.sap.sailing.datamining.Selector;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.Regatta;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.domain.tracking.TrackedRegatta;
@@ -28,39 +26,19 @@ public class SelectorImpl implements Selector {
for (Regatta regatta : racingEventService.getAllRegattas()) {
TrackedRegatta trackedRegatta = racingEventService.getTrackedRegatta(regatta);
if (trackedRegatta != null) {
SelectionContext context = new SelectionContextImpl(trackedRegatta, null, null);
SelectionContext context = new SelectionContextImpl(trackedRegatta, null);
if (criteria.matches(context)) {
data.addAll(criteria.getDataRetriever(context).retrieveData());
continue;
}
data.addAll(selectDataFromRacesOfRegatta(trackedRegatta));
}
}
return data;
}
private Collection<GPSFixWithContext> selectDataFromRacesOfRegatta(final TrackedRegatta trackedRegatta) {
Collection<GPSFixWithContext> data = new ArrayList<GPSFixWithContext>();
for (TrackedRace trackedRace : trackedRegatta.getTrackedRaces()) {
SelectionContext context = new SelectionContextImpl(trackedRegatta, trackedRace, null);
if (criteria.matches(context)) {
data.addAll(criteria.getDataRetriever(context).retrieveData());
continue;
}
data.addAll(selectDataFromCompetitorsOfRace(trackedRegatta, trackedRace));
}
return data;
}
private Collection<GPSFixWithContext> selectDataFromCompetitorsOfRace(final TrackedRegatta trackedRegatta, final TrackedRace trackedRace) {
Collection<GPSFixWithContext> data = new ArrayList<GPSFixWithContext>();
for (Competitor competitor : trackedRace.getRace().getCompetitors()) {
SelectionContext context = new SelectionContextImpl(trackedRegatta, trackedRace, competitor);
if (criteria.matches(context)) {
data.addAll(criteria.getDataRetriever(context).retrieveData());
continue;
for (TrackedRace trackedRace : trackedRegatta.getTrackedRaces()) {
context = new SelectionContextImpl(trackedRegatta, trackedRace);
if (criteria.matches(context)) {
data.addAll(criteria.getDataRetriever(context).retrieveData());
continue;
}
}
}
}
return data;