mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-14 22:43:57 +00:00
Cache marks per race group
This commit is contained in:
1 parent
eaeab1229c
commit
50acdbbc5a
5 files changed
+47
-29
No files matched your search
+4
-4
@@ -58,13 +58,13 @@ public interface DataStore {
|
||||
|
||||
void registerRaces(Collection<ManagedRace> races);
|
||||
|
||||
Collection<Mark> getMarks();
|
||||
Collection<Mark> getMarks(RaceGroup raceGroup);
|
||||
|
||||
Mark getMark(Serializable id);
|
||||
Mark getMark(RaceGroup raceGroup, Serializable id);
|
||||
|
||||
boolean hasMark(Serializable id);
|
||||
boolean hasMark(RaceGroup raceGroup, Serializable id);
|
||||
|
||||
void addMark(Mark mark);
|
||||
void addMark(RaceGroup raceGroup, Mark mark);
|
||||
|
||||
CourseBase getLastPublishedCourseDesign(RaceGroup raceGroup);
|
||||
|
||||
|
||||
+24
-11
@@ -36,7 +36,7 @@ public enum InMemoryDataStore implements DataStore {
|
||||
private Context mContext;
|
||||
private LinkedHashMap<Serializable, EventBase> eventsById;
|
||||
private LinkedHashMap<SimpleRaceLogIdentifier, ManagedRace> managedRaceById;
|
||||
private LinkedHashMap<Serializable, Mark> marksById;
|
||||
private LinkedHashMap<RaceGroup, LinkedHashMap<Serializable, Mark>> marksData;
|
||||
private LinkedHashMap<RaceGroup, CourseBase> courseData;
|
||||
private SharedDomainFactory domainFactory;
|
||||
|
||||
@@ -63,7 +63,7 @@ public enum InMemoryDataStore implements DataStore {
|
||||
public void reset() {
|
||||
eventsById = new LinkedHashMap<>();
|
||||
managedRaceById = new LinkedHashMap<>();
|
||||
marksById = new LinkedHashMap<>();
|
||||
marksData = new LinkedHashMap<>();
|
||||
courseData = new LinkedHashMap<>();
|
||||
domainFactory = new SharedDomainFactoryImpl(new AndroidRaceLogResolver());
|
||||
|
||||
@@ -255,24 +255,37 @@ public enum InMemoryDataStore implements DataStore {
|
||||
* * * * * * MARKS * * * * * *
|
||||
*/
|
||||
|
||||
@Override
|
||||
public Collection<Mark> getMarks() {
|
||||
return marksById.values();
|
||||
private LinkedHashMap<Serializable, Mark> getMarksByRaceGroup(RaceGroup raceGroup) {
|
||||
LinkedHashMap<Serializable, Mark> marks = marksData.get(raceGroup);
|
||||
if (marks == null) {
|
||||
marks = new LinkedHashMap<>();
|
||||
marksData.put(raceGroup, marks);
|
||||
}
|
||||
return marks;
|
||||
}
|
||||
|
||||
private void setMarksByRaceGroup(RaceGroup raceGroup, LinkedHashMap<Serializable, Mark> marks) {
|
||||
marksData.put(raceGroup, marks);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Mark getMark(Serializable id) {
|
||||
return marksById.get(id);
|
||||
public Collection<Mark> getMarks(RaceGroup raceGroup) {
|
||||
return getMarksByRaceGroup(raceGroup).values();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasMark(Serializable id) {
|
||||
return marksById.containsKey(id);
|
||||
public Mark getMark(RaceGroup raceGroup, Serializable id) {
|
||||
return getMarksByRaceGroup(raceGroup).get(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addMark(Mark mark) {
|
||||
marksById.put(mark.getId(), mark);
|
||||
public boolean hasMark(RaceGroup raceGroup, Serializable id) {
|
||||
return getMarksByRaceGroup(raceGroup).containsKey(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addMark(RaceGroup raceGroup, Mark mark) {
|
||||
getMarksByRaceGroup(raceGroup).put(mark.getId(), mark);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+4
-4
@@ -164,9 +164,9 @@ public class OfflineDataManager extends DataManager {
|
||||
Mark m2 = new MarkImpl("Green");
|
||||
Mark m3 = new MarkImpl("White");
|
||||
|
||||
dataStore.addMark(m1);
|
||||
dataStore.addMark(m2);
|
||||
dataStore.addMark(m3);
|
||||
dataStore.addMark(raceGroup, m1);
|
||||
dataStore.addMark(raceGroup, m2);
|
||||
dataStore.addMark(raceGroup, m3);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -224,7 +224,7 @@ public class OfflineDataManager extends DataManager {
|
||||
return new ImmediateDataLoaderCallbacks<Collection<Mark>>(context, callback, new Callable<Collection<Mark>>() {
|
||||
@Override
|
||||
public Collection<Mark> call() throws Exception {
|
||||
return dataStore.getMarks();
|
||||
return dataStore.getMarks(managedRace.getRaceGroup());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
+4
-3
@@ -25,6 +25,7 @@ import com.sap.sailing.domain.base.configuration.ConfigurationLoader;
|
||||
import com.sap.sailing.domain.base.configuration.DeviceConfiguration;
|
||||
import com.sap.sailing.domain.base.configuration.RegattaConfiguration;
|
||||
import com.sap.sailing.domain.base.impl.RaceColumnFactorImpl;
|
||||
import com.sap.sailing.domain.base.racegroup.RaceGroup;
|
||||
import com.sap.sailing.domain.common.racelog.RaceLogServletConstants;
|
||||
import com.sap.sailing.racecommittee.app.AppConstants;
|
||||
import com.sap.sailing.racecommittee.app.AppPreferences;
|
||||
@@ -110,9 +111,9 @@ public class OnlineDataManager extends DataManager {
|
||||
}
|
||||
}
|
||||
|
||||
public void addMarks(Collection<Mark> marks) {
|
||||
public void addMarks(RaceGroup raceGroup, Collection<Mark> marks) {
|
||||
for (Mark mark : marks) {
|
||||
dataStore.addMark(mark);
|
||||
dataStore.addMark(raceGroup, mark);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,7 +205,7 @@ public class OnlineDataManager extends DataManager {
|
||||
ExLog.i(context, TAG, "Creating marks-OnlineDataLoader " + id);
|
||||
JsonDeserializer<Mark> markDeserializer = new MarkDeserializer(domainFactory);
|
||||
DataParser<Collection<Mark>> parser = new MarksDataParser(markDeserializer);
|
||||
DataHandler<Collection<Mark>> handler = new MarksDataHandler(OnlineDataManager.this);
|
||||
DataHandler<Collection<Mark>> handler = new MarksDataHandler(OnlineDataManager.this, managedRace.getRaceGroup());
|
||||
|
||||
ManagedRaceIdentifier identifier = managedRace.getIdentifier();
|
||||
// no parameter encoding required here; the UrlHelper.generateUrl call uses Url.Builder which handles
|
||||
|
||||
+11
-7
@@ -1,29 +1,33 @@
|
||||
package com.sap.sailing.racecommittee.app.data.handlers;
|
||||
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
import com.sap.sailing.domain.base.racegroup.RaceGroup;
|
||||
import com.sap.sailing.racecommittee.app.data.OnlineDataManager;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
import com.sap.sailing.racecommittee.app.data.OnlineDataManager;
|
||||
|
||||
public class MarksDataHandler extends DataHandler<Collection<Mark>> {
|
||||
|
||||
public MarksDataHandler(OnlineDataManager manager) {
|
||||
private final RaceGroup raceGroup;
|
||||
|
||||
public MarksDataHandler(OnlineDataManager manager, RaceGroup raceGroup) {
|
||||
super(manager);
|
||||
this.raceGroup = raceGroup;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCachedResults() {
|
||||
return !manager.getDataStore().getMarks().isEmpty();
|
||||
return !manager.getDataStore().getMarks(raceGroup).isEmpty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<Mark> getCachedResults() {
|
||||
return manager.getDataStore().getMarks();
|
||||
return manager.getDataStore().getMarks(raceGroup);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResult(Collection<Mark> data, boolean isCached) {
|
||||
manager.addMarks(data);
|
||||
manager.addMarks(raceGroup, data);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user