mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-07 11:32:16 +00:00
Implemented a selector for general criterias
This commit is contained in:
1 parent
9008c7146a
commit
c3f274df59
4 files changed
+127
No files matched your search
@@ -0,0 +1,15 @@
|
||||
package com.sap.sailing.datamining;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.tracking.TrackedLeg;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
|
||||
public interface SelectionContext {
|
||||
|
||||
void setTrackedRace(TrackedRace trackedRace);
|
||||
|
||||
void setCompetitor(Competitor competitor);
|
||||
|
||||
void setTrackedLeg(TrackedLeg trackedLeg);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.sap.sailing.datamining;
|
||||
|
||||
public interface SelectionCriteria {
|
||||
|
||||
boolean matches(SelectionContext context);
|
||||
|
||||
DataRetriever getDataRetriever(SelectionContext context);
|
||||
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
package com.sap.sailing.datamining.impl;
|
||||
|
||||
import com.sap.sailing.datamining.SelectionContext;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.tracking.TrackedLeg;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
||||
|
||||
public class SelectionContextImpl implements SelectionContext {
|
||||
|
||||
private TrackedRegatta trackedRegatta;
|
||||
private TrackedRace trackedRace;
|
||||
private Competitor competitor;
|
||||
private TrackedLeg trackedLeg;
|
||||
|
||||
public SelectionContextImpl(TrackedRegatta trackedRegatta) {
|
||||
this.trackedRegatta = trackedRegatta;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTrackedRace(TrackedRace trackedRace) {
|
||||
this.trackedRace = trackedRace;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCompetitor(Competitor competitor) {
|
||||
this.competitor = competitor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTrackedLeg(TrackedLeg trackedLeg) {
|
||||
this.trackedLeg = trackedLeg;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.sap.sailing.datamining.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
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.TrackedLeg;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
|
||||
public class SelectorImpl implements Selector {
|
||||
|
||||
private SelectionCriteria criteria;
|
||||
|
||||
public SelectorImpl(SelectionCriteria criteria) {
|
||||
this.criteria = criteria;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<GPSFixWithContext> selectGPSFixes(RacingEventService racingEventService) {
|
||||
List<GPSFixWithContext> data = new ArrayList<GPSFixWithContext>();
|
||||
for (Regatta regatta : racingEventService.getAllRegattas()) {
|
||||
TrackedRegatta trackedRegatta = racingEventService.getTrackedRegatta(regatta);
|
||||
if (trackedRegatta != null) {
|
||||
SelectionContext context = new SelectionContextImpl(trackedRegatta);
|
||||
if (criteria.matches(context)) {
|
||||
data.addAll(criteria.getDataRetriever(context).retrieveData());
|
||||
}
|
||||
|
||||
for (TrackedRace trackedRace : trackedRegatta.getTrackedRaces()) {
|
||||
context.setTrackedRace(trackedRace);
|
||||
if (criteria.matches(context)) {
|
||||
data.addAll(criteria.getDataRetriever(context).retrieveData());
|
||||
}
|
||||
|
||||
for (TrackedLeg trackedLeg : trackedRace.getTrackedLegs()) {
|
||||
context.setTrackedLeg(trackedLeg);
|
||||
if (criteria.matches(context)) {
|
||||
data.addAll(criteria.getDataRetriever(context).retrieveData());
|
||||
}
|
||||
}
|
||||
|
||||
for (Competitor competitor : trackedRace.getRace().getCompetitors()) {
|
||||
context.setCompetitor(competitor);
|
||||
if (criteria.matches(context)) {
|
||||
data.addAll(criteria.getDataRetriever(context).retrieveData());
|
||||
}
|
||||
|
||||
for (TrackedLeg trackedLeg : trackedRace.getTrackedLegs()) {
|
||||
context.setTrackedLeg(trackedLeg);
|
||||
if (criteria.matches(context)) {
|
||||
data.addAll(criteria.getDataRetriever(context).retrieveData());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user