mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-04 10:09:42 +00:00
a first implementation of the new current races filter algorithm according to the specification in bug 3011
Change-Id: I5f29d35bbbde9429bff5f3219fa6c22455c6e9d2
This commit is contained in:
1 parent
4781e03531
commit
f3e9219804
24 files changed
+328
-155
No files matched your search
-87
@@ -1,87 +0,0 @@
|
||||
package com.sap.sailing.racecommittee.app.domain.impl;
|
||||
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.SeriesBase;
|
||||
import com.sap.sailing.domain.base.racegroup.RaceGroup;
|
||||
import com.sap.sailing.domain.base.racegroup.RaceGroupSeries;
|
||||
import com.sap.sailing.domain.common.LeaderboardNameConstants;
|
||||
import com.sap.sailing.racecommittee.app.domain.ManagedRace;
|
||||
import com.sap.sse.common.Util;
|
||||
|
||||
/**
|
||||
* Represents a triple of {@link RaceGroup} (representing a regatta or a flexible leaderboard), a {@link SeriesBase series}
|
||||
* and a {@link Fleet}. An instance can be constructed for a {@link ManagedRace} which then extracts these three properties
|
||||
* from the race. Note that equal objects of this type can result for different races as long as they are in the equal
|
||||
* {@link RaceGroup}, {@link SeriesBase series} and {@link Fleet}.
|
||||
*
|
||||
* @author Axel Uhl (d043530)
|
||||
*
|
||||
*/
|
||||
public class RaceGroupSeriesFleet extends RaceGroupSeries {
|
||||
|
||||
private Fleet fleet;
|
||||
private int fleetOrder;
|
||||
|
||||
public RaceGroupSeriesFleet(ManagedRace race) {
|
||||
super(race);
|
||||
fleet = race.getFleet();
|
||||
fleetOrder = getFleetIndex(race.getSeries().getFleets(), race.getFleet());
|
||||
}
|
||||
|
||||
private int getFleetIndex(Iterable<? extends Fleet> fleets, Fleet fleet) {
|
||||
return Util.indexOf(fleets, fleet);
|
||||
}
|
||||
|
||||
public Fleet getFleet() {
|
||||
return fleet;
|
||||
}
|
||||
|
||||
public String getFleetName() {
|
||||
return fleet.getName();
|
||||
}
|
||||
|
||||
public String getDisplayName() {
|
||||
return getDisplayName(false);
|
||||
}
|
||||
|
||||
public String getDisplayName(boolean useDisplayName) {
|
||||
String name = super.getDisplayName(useDisplayName);
|
||||
if (fleet != null && !fleet.getName().equals(LeaderboardNameConstants.DEFAULT_FLEET_NAME)) {
|
||||
name += " - " + fleet.getName();
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
public int getFleetOrder() {
|
||||
return fleetOrder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = super.hashCode();
|
||||
result = prime * result + ((fleet == null) ? 0 : fleet.hashCode());
|
||||
result = prime * result + fleetOrder;
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj)
|
||||
return true;
|
||||
if (!super.equals(obj))
|
||||
return false;
|
||||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
RaceGroupSeriesFleet other = (RaceGroupSeriesFleet) obj;
|
||||
if (fleet == null) {
|
||||
if (other.fleet != null)
|
||||
return false;
|
||||
} else if (!fleet.equals(other.fleet))
|
||||
return false;
|
||||
if (fleetOrder != other.fleetOrder)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -16,6 +16,7 @@ import com.sap.sailing.domain.abstractlog.race.SimpleRaceLogIdentifier;
|
||||
import com.sap.sailing.domain.abstractlog.race.analyzing.impl.StartTimeFinderResult;
|
||||
import com.sap.sailing.domain.base.CourseArea;
|
||||
import com.sap.sailing.domain.base.EventBase;
|
||||
import com.sap.sailing.domain.base.racegroup.RaceGroupSeriesFleet;
|
||||
import com.sap.sailing.domain.common.Wind;
|
||||
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
|
||||
import com.sap.sailing.racecommittee.app.AppConstants;
|
||||
@@ -26,7 +27,6 @@ import com.sap.sailing.racecommittee.app.data.ReadonlyDataManager;
|
||||
import com.sap.sailing.racecommittee.app.data.clients.LoadClient;
|
||||
import com.sap.sailing.racecommittee.app.data.loaders.DataLoaderResult;
|
||||
import com.sap.sailing.racecommittee.app.domain.ManagedRace;
|
||||
import com.sap.sailing.racecommittee.app.domain.impl.RaceGroupSeriesFleet;
|
||||
import com.sap.sailing.racecommittee.app.logging.LogEvent;
|
||||
import com.sap.sailing.racecommittee.app.services.RaceStateService;
|
||||
import com.sap.sailing.racecommittee.app.ui.adapters.racelist.RaceListDataType;
|
||||
|
||||
+1
-1
@@ -107,7 +107,7 @@ public class ManagedRaceListAdapter extends ArrayAdapter<RaceListDataType> imple
|
||||
public void notifyDataSetChanged() {
|
||||
super.notifyDataSetChanged();
|
||||
createViewItemsForRacesAndSeries();
|
||||
getFilter().filter("");
|
||||
getFilter().refreshRegattaStructures();
|
||||
}
|
||||
|
||||
private void createViewItemsForRacesAndSeries() {
|
||||
|
||||
+17
-2
@@ -18,7 +18,10 @@ import android.widget.Filter;
|
||||
* {@link CurrentRaceFilter}.
|
||||
*/
|
||||
public class RaceFilter extends Filter {
|
||||
private final CurrentRaceFilter currentRaceFilter = new CurrentRaceFilterImpl();
|
||||
/**
|
||||
* A filter that is updated each time an update for {@link #allRaces} is announced by {@link #refreshRegattaStructures()}.
|
||||
*/
|
||||
private CurrentRaceFilter<ManagedRace> currentRaceFilter;
|
||||
|
||||
public interface FilterSubscriber {
|
||||
void onResult(List<ManagedRace> filtered);
|
||||
@@ -28,9 +31,16 @@ public class RaceFilter extends Filter {
|
||||
private final Set<ManagedRace> allRaces;
|
||||
private FilterMode filterMode;
|
||||
|
||||
/**
|
||||
* @param allRaces
|
||||
* callers must call {@link #refreshRegattaStructures()} whenever the contents of this set have changed
|
||||
* @param resultSubscriber
|
||||
* triggered when the filter results have changed
|
||||
*/
|
||||
public RaceFilter(Set<ManagedRace> allRaces, FilterSubscriber resultSubscriber) {
|
||||
this.allRaces = allRaces;
|
||||
this.subscriber = resultSubscriber;
|
||||
refreshRegattaStructures();
|
||||
}
|
||||
|
||||
public void filterByMode(FilterMode filterMode) {
|
||||
@@ -52,7 +62,7 @@ public class RaceFilter extends Filter {
|
||||
result = createResults(allRaces);
|
||||
} else {
|
||||
// filter using the CurrentRaceFilter
|
||||
result = createResults(currentRaceFilter.filterCurrentRaces(allRaces));
|
||||
result = createResults(currentRaceFilter.getCurrentRaces());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -64,4 +74,9 @@ public class RaceFilter extends Filter {
|
||||
subscriber.onResult(filterResults);
|
||||
}
|
||||
|
||||
public void refreshRegattaStructures() {
|
||||
this.currentRaceFilter = new CurrentRaceFilterImpl<ManagedRace>(allRaces);
|
||||
filter("");
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -9,10 +9,10 @@ import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.sap.sailing.domain.base.racegroup.RaceGroupSeriesFleet;
|
||||
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
|
||||
import com.sap.sailing.racecommittee.app.R;
|
||||
import com.sap.sailing.racecommittee.app.domain.ManagedRace;
|
||||
import com.sap.sailing.racecommittee.app.domain.impl.RaceGroupSeriesFleet;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
|
||||
public class RaceListDataTypeRace implements RaceListDataType {
|
||||
|
||||
+1
-1
@@ -12,6 +12,7 @@ import com.sap.sailing.android.shared.util.BitmapHelper;
|
||||
import com.sap.sailing.android.shared.util.BroadcastManager;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.ReadonlyRaceState;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.impl.BaseRaceStateChangedListener;
|
||||
import com.sap.sailing.domain.base.racegroup.RaceGroupSeriesFleet;
|
||||
import com.sap.sailing.racecommittee.app.AppConstants;
|
||||
import com.sap.sailing.racecommittee.app.AppPreferences;
|
||||
import com.sap.sailing.racecommittee.app.R;
|
||||
@@ -19,7 +20,6 @@ import com.sap.sailing.racecommittee.app.RaceApplication;
|
||||
import com.sap.sailing.racecommittee.app.data.DataManager;
|
||||
import com.sap.sailing.racecommittee.app.data.ReadonlyDataManager;
|
||||
import com.sap.sailing.racecommittee.app.domain.ManagedRace;
|
||||
import com.sap.sailing.racecommittee.app.domain.impl.RaceGroupSeriesFleet;
|
||||
import com.sap.sailing.racecommittee.app.ui.activities.SessionActivity;
|
||||
import com.sap.sailing.racecommittee.app.ui.adapters.racelist.ManagedRaceListAdapter;
|
||||
import com.sap.sailing.racecommittee.app.ui.adapters.racelist.RaceListDataType;
|
||||
|
||||
+1
-1
@@ -27,13 +27,13 @@ import com.sap.sailing.android.shared.util.BroadcastManager;
|
||||
import com.sap.sailing.android.shared.util.ScreenHelper;
|
||||
import com.sap.sailing.android.shared.util.ViewHelper;
|
||||
import com.sap.sailing.domain.abstractlog.race.analyzing.impl.FinishedTimeFinder;
|
||||
import com.sap.sailing.domain.base.racegroup.RaceGroupSeriesFleet;
|
||||
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
|
||||
import com.sap.sailing.racecommittee.app.AppConstants;
|
||||
import com.sap.sailing.racecommittee.app.R;
|
||||
import com.sap.sailing.racecommittee.app.data.DataManager;
|
||||
import com.sap.sailing.racecommittee.app.data.ReadonlyDataManager;
|
||||
import com.sap.sailing.racecommittee.app.domain.ManagedRace;
|
||||
import com.sap.sailing.racecommittee.app.domain.impl.RaceGroupSeriesFleet;
|
||||
import com.sap.sailing.racecommittee.app.utils.ThemeHelper;
|
||||
import com.sap.sailing.racecommittee.app.utils.TimeUtils;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
|
||||
+1
-1
@@ -33,6 +33,7 @@ import com.sap.sailing.domain.abstractlog.race.impl.SimpleRaceLogIdentifierImpl;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.RaceStateChangedListener;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.ReadonlyRaceState;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.impl.BaseRaceStateChangedListener;
|
||||
import com.sap.sailing.domain.base.racegroup.RaceGroupSeriesFleet;
|
||||
import com.sap.sailing.domain.common.LeaderboardNameConstants;
|
||||
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
|
||||
import com.sap.sailing.domain.common.racelog.RacingProcedureType;
|
||||
@@ -42,7 +43,6 @@ import com.sap.sailing.racecommittee.app.R;
|
||||
import com.sap.sailing.racecommittee.app.data.DataStore;
|
||||
import com.sap.sailing.racecommittee.app.data.OnlineDataManager;
|
||||
import com.sap.sailing.racecommittee.app.domain.ManagedRace;
|
||||
import com.sap.sailing.racecommittee.app.domain.impl.RaceGroupSeriesFleet;
|
||||
import com.sap.sailing.racecommittee.app.ui.adapters.DependentRaceSpinnerAdapter;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.RaceFragment;
|
||||
import com.sap.sailing.racecommittee.app.utils.ThemeHelper;
|
||||
|
||||
+1
-1
@@ -39,6 +39,7 @@ import com.google.android.gms.location.LocationServices;
|
||||
import com.sap.sailing.android.shared.logging.ExLog;
|
||||
import com.sap.sailing.android.shared.util.AppUtils;
|
||||
import com.sap.sailing.android.shared.util.ViewHelper;
|
||||
import com.sap.sailing.domain.base.racegroup.RaceGroupSeriesFleet;
|
||||
import com.sap.sailing.domain.common.Bearing;
|
||||
import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.common.SpeedWithBearing;
|
||||
@@ -50,7 +51,6 @@ import com.sap.sailing.domain.common.impl.WindImpl;
|
||||
import com.sap.sailing.racecommittee.app.AppConstants;
|
||||
import com.sap.sailing.racecommittee.app.R;
|
||||
import com.sap.sailing.racecommittee.app.domain.ManagedRace;
|
||||
import com.sap.sailing.racecommittee.app.domain.impl.RaceGroupSeriesFleet;
|
||||
import com.sap.sailing.racecommittee.app.ui.activities.RacingActivity;
|
||||
import com.sap.sailing.racecommittee.app.ui.utils.OnRaceUpdatedListener;
|
||||
import com.sap.sailing.racecommittee.app.ui.views.AccuracyView;
|
||||
|
||||
+1
-1
@@ -15,12 +15,12 @@ import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.gate.GateSt
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.SeriesBase;
|
||||
import com.sap.sailing.domain.base.racegroup.RaceGroup;
|
||||
import com.sap.sailing.domain.base.racegroup.RaceGroupSeriesFleet;
|
||||
import com.sap.sailing.domain.common.LeaderboardNameConstants;
|
||||
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
|
||||
import com.sap.sailing.racecommittee.app.AppPreferences;
|
||||
import com.sap.sailing.racecommittee.app.R;
|
||||
import com.sap.sailing.racecommittee.app.domain.ManagedRace;
|
||||
import com.sap.sailing.racecommittee.app.domain.impl.RaceGroupSeriesFleet;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.GateStartTimingFragment;
|
||||
|
||||
public class RaceHelper {
|
||||
|
||||
Reference in new issue
Block a user