mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-17 01:31:01 +00:00
renamed CourseDataDeserializer to CourseBaseDeserializer
This commit is contained in:
1 parent
d4ad49bd9c
commit
3e903e2a27
8 files changed
+126
-113
No files matched your search
+2
-2
@@ -28,7 +28,7 @@ import com.sap.sailing.domain.racelog.RaceLogCourseDesignChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEventFactory;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.ControlPointDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.CourseDataDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.CourseBaseDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.GateDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.MarkDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.WaypointDeserializer;
|
||||
@@ -61,7 +61,7 @@ public class RaceLogCourseDesignChangedEventSerializerTest {
|
||||
new CourseBaseJsonSerializer(new WaypointJsonSerializer(new ControlPointJsonSerializer(
|
||||
new MarkJsonSerializer(), new GateJsonSerializer(new MarkJsonSerializer())))));
|
||||
deserializer = new RaceLogCourseDesignChangedEventDeserializer(new CompetitorDeserializer(factory),
|
||||
new CourseDataDeserializer(new WaypointDeserializer(new ControlPointDeserializer(new MarkDeserializer(
|
||||
new CourseBaseDeserializer(new WaypointDeserializer(new ControlPointDeserializer(new MarkDeserializer(
|
||||
factory), new GateDeserializer(factory, new MarkDeserializer(factory))))));
|
||||
now = MillisecondsTimePoint.now();
|
||||
|
||||
|
||||
+46
-46
@@ -1,47 +1,47 @@
|
||||
package com.sap.sailing.server.gateway.deserialization.coursedata.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.CourseBase;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
import com.sap.sailing.domain.base.impl.CourseDataImpl;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.coursedata.impl.CourseBaseJsonSerializer;
|
||||
|
||||
/**
|
||||
* Deserializer for CourseData.
|
||||
*/
|
||||
public class CourseDataDeserializer implements JsonDeserializer<CourseBase> {
|
||||
|
||||
private final WaypointDeserializer waypointDeserializer;
|
||||
|
||||
public CourseDataDeserializer(WaypointDeserializer waypointDeserializer) {
|
||||
this.waypointDeserializer = waypointDeserializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CourseBase deserialize(JSONObject object) throws JsonDeserializationException {
|
||||
String courseName = (String) object.get(CourseBaseJsonSerializer.FIELD_NAME);
|
||||
JSONArray jsonWaypoints = (JSONArray) object.get(CourseBaseJsonSerializer.FIELD_WAYPOINTS);
|
||||
List<Waypoint> waypoints = new ArrayList<Waypoint>();
|
||||
|
||||
for (Object waypointObject : jsonWaypoints) {
|
||||
JSONObject jsonWaypoint = (JSONObject) waypointObject;
|
||||
Waypoint waypoint = waypointDeserializer.deserialize(jsonWaypoint);
|
||||
waypoints.add(waypoint);
|
||||
}
|
||||
|
||||
CourseBase courseBase = new CourseDataImpl(courseName);
|
||||
for (int i = 0; i < waypoints.size(); i++) {
|
||||
courseBase.addWaypoint(i, waypoints.get(i));
|
||||
}
|
||||
|
||||
return courseBase;
|
||||
}
|
||||
|
||||
package com.sap.sailing.server.gateway.deserialization.coursedata.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.CourseBase;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
import com.sap.sailing.domain.base.impl.CourseDataImpl;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.coursedata.impl.CourseBaseJsonSerializer;
|
||||
|
||||
/**
|
||||
* Deserializer for CourseData.
|
||||
*/
|
||||
public class CourseBaseDeserializer implements JsonDeserializer<CourseBase> {
|
||||
|
||||
private final WaypointDeserializer waypointDeserializer;
|
||||
|
||||
public CourseBaseDeserializer(WaypointDeserializer waypointDeserializer) {
|
||||
this.waypointDeserializer = waypointDeserializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CourseBase deserialize(JSONObject object) throws JsonDeserializationException {
|
||||
String courseName = (String) object.get(CourseBaseJsonSerializer.FIELD_NAME);
|
||||
JSONArray jsonWaypoints = (JSONArray) object.get(CourseBaseJsonSerializer.FIELD_WAYPOINTS);
|
||||
List<Waypoint> waypoints = new ArrayList<Waypoint>();
|
||||
|
||||
for (Object waypointObject : jsonWaypoints) {
|
||||
JSONObject jsonWaypoint = (JSONObject) waypointObject;
|
||||
Waypoint waypoint = waypointDeserializer.deserialize(jsonWaypoint);
|
||||
waypoints.add(waypoint);
|
||||
}
|
||||
|
||||
CourseBase courseBase = new CourseDataImpl(courseName);
|
||||
for (int i = 0; i < waypoints.size(); i++) {
|
||||
courseBase.addWaypoint(i, waypoints.get(i));
|
||||
}
|
||||
|
||||
return courseBase;
|
||||
}
|
||||
|
||||
}
|
||||
+3
-3
@@ -11,14 +11,14 @@ import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.CourseDataDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.CourseBaseDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogCourseDesignChangedEventSerializer;
|
||||
|
||||
public class RaceLogCourseDesignChangedEventDeserializer extends BaseRaceLogEventDeserializer {
|
||||
|
||||
private final CourseDataDeserializer courseDataDeserializer;
|
||||
private final CourseBaseDeserializer courseDataDeserializer;
|
||||
|
||||
public RaceLogCourseDesignChangedEventDeserializer(JsonDeserializer<Competitor> competitorDeserializer, CourseDataDeserializer courseDataDeserializer) {
|
||||
public RaceLogCourseDesignChangedEventDeserializer(JsonDeserializer<Competitor> competitorDeserializer, CourseBaseDeserializer courseDataDeserializer) {
|
||||
super(competitorDeserializer);
|
||||
this.courseDataDeserializer = courseDataDeserializer;
|
||||
}
|
||||
|
||||
+2
-2
@@ -8,7 +8,7 @@ import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.ControlPointDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.CourseDataDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.CourseBaseDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.GateDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.MarkDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.WaypointDeserializer;
|
||||
@@ -40,7 +40,7 @@ public class RaceLogEventDeserializer implements JsonDeserializer<RaceLogEvent>
|
||||
new RaceLogRaceStatusEventDeserializer(competitorDeserializer),
|
||||
new RaceLogCourseAreaChangedEventDeserializer(competitorDeserializer),
|
||||
new RaceLogCourseDesignChangedEventDeserializer(competitorDeserializer,
|
||||
new CourseDataDeserializer(
|
||||
new CourseBaseDeserializer(
|
||||
new WaypointDeserializer(
|
||||
new ControlPointDeserializer(
|
||||
new MarkDeserializer(domainFactory), new GateDeserializer(domainFactory, new MarkDeserializer(domainFactory)))))),
|
||||
|
||||
+4
-4
@@ -32,7 +32,7 @@ import com.sap.sailing.racecommittee.app.data.loaders.DataLoaderResult;
|
||||
import com.sap.sailing.racecommittee.app.data.loaders.ImmediateDataLoaderCallbacks;
|
||||
import com.sap.sailing.racecommittee.app.data.loaders.OnlineDataLoader;
|
||||
import com.sap.sailing.racecommittee.app.data.parsers.CompetitorsDataParser;
|
||||
import com.sap.sailing.racecommittee.app.data.parsers.CourseDataParser;
|
||||
import com.sap.sailing.racecommittee.app.data.parsers.CourseBaseParser;
|
||||
import com.sap.sailing.racecommittee.app.data.parsers.DataParser;
|
||||
import com.sap.sailing.racecommittee.app.data.parsers.EventsDataParser;
|
||||
import com.sap.sailing.racecommittee.app.data.parsers.ManagedRacesDataParser;
|
||||
@@ -43,7 +43,7 @@ import com.sap.sailing.racecommittee.app.domain.impl.DomainFactoryImpl;
|
||||
import com.sap.sailing.racecommittee.app.logging.ExLog;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.ControlPointDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.CourseDataDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.CourseBaseDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.GateDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.MarkDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.WaypointDeserializer;
|
||||
@@ -182,10 +182,10 @@ public class OnlineDataManager extends DataManager {
|
||||
@Override
|
||||
public Loader<DataLoaderResult<CourseBase>> create(int id, Bundle args) throws Exception {
|
||||
SharedDomainFactory domainFactory = DomainFactoryImpl.INSTANCE;
|
||||
JsonDeserializer<CourseBase> courseBaseDeserializer = new CourseDataDeserializer(
|
||||
JsonDeserializer<CourseBase> courseBaseDeserializer = new CourseBaseDeserializer(
|
||||
new WaypointDeserializer(new ControlPointDeserializer(new MarkDeserializer(domainFactory),
|
||||
new GateDeserializer(domainFactory, new MarkDeserializer(domainFactory)))));
|
||||
DataParser<CourseBase> parser = new CourseDataParser(courseBaseDeserializer);
|
||||
DataParser<CourseBase> parser = new CourseBaseParser(courseBaseDeserializer);
|
||||
DataHandler<CourseBase> handler = new CourseDataHandler(OnlineDataManager.this, managedRace);
|
||||
|
||||
ManagedRaceIdentifier identifier = managedRace.getIdentifier();
|
||||
|
||||
+10
@@ -10,6 +10,16 @@ public class MarksDataHandler extends DataHandler<Collection<Mark>> {
|
||||
public MarksDataHandler(OnlineDataManager manager) {
|
||||
super(manager);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCachedResults() {
|
||||
return !manager.getDataStore().getMarks().isEmpty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<Mark> getCachedResults() {
|
||||
return manager.getDataStore().getMarks();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResult(Collection<Mark> data) {
|
||||
|
||||
+2
-2
@@ -9,11 +9,11 @@ import com.sap.sailing.domain.base.CourseBase;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.Helpers;
|
||||
|
||||
public class CourseDataParser implements DataParser<CourseBase> {
|
||||
public class CourseBaseParser implements DataParser<CourseBase> {
|
||||
|
||||
private JsonDeserializer<CourseBase> deserializer;
|
||||
|
||||
public CourseDataParser(JsonDeserializer<CourseBase> deserializer) {
|
||||
public CourseBaseParser(JsonDeserializer<CourseBase> deserializer) {
|
||||
this.deserializer = deserializer;
|
||||
}
|
||||
|
||||
+57
-54
@@ -39,6 +39,8 @@ public class RacingActivity extends SessionActivity implements RaceInfoListener
|
||||
|
||||
private static final String TAG = RacingActivity.class.getName();
|
||||
|
||||
private static final int RacesLoaderId = 0;
|
||||
|
||||
private class FilterModeSelectionBinder implements OnNavigationListener {
|
||||
|
||||
private ManagedRaceListFragment targetList;
|
||||
@@ -69,6 +71,59 @@ public class RacingActivity extends SessionActivity implements RaceInfoListener
|
||||
}
|
||||
}
|
||||
|
||||
private class RaceLoadClient implements LoadClient<Collection<ManagedRace>> {
|
||||
|
||||
private Collection<ManagedRace> lastSeenRaces = null;
|
||||
private CourseArea courseArea;
|
||||
|
||||
public RaceLoadClient(CourseArea courseArea) {
|
||||
this.courseArea = courseArea;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadSucceded(Collection<ManagedRace> data) {
|
||||
setProgressBarIndeterminateVisibility(false);
|
||||
|
||||
// Let's do the setup stuff only when the data is changed (or its the first time)
|
||||
if (lastSeenRaces != null && CollectionUtils.isEqualCollection(data, lastSeenRaces)) {
|
||||
ExLog.i(TAG, "Same races are already loaded...");
|
||||
} else {
|
||||
lastSeenRaces = data;
|
||||
|
||||
registerOnService(data);
|
||||
raceListFragment.setupOn(data);
|
||||
|
||||
Toast.makeText(RacingActivity.this,
|
||||
String.format(getString(R.string.racing_load_success), data.size()), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadFailed(Exception reason) {
|
||||
setProgressBarIndeterminateVisibility(false);
|
||||
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(RacingActivity.this);
|
||||
builder.setMessage(String.format(getString(R.string.generic_load_failure), reason.getMessage()))
|
||||
.setTitle(getString(R.string.loading_failure)).setIcon(R.drawable.ic_dialog_alert_holo_light)
|
||||
.setCancelable(true)
|
||||
.setPositiveButton(getString(R.string.retry), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
setProgressBarIndeterminateVisibility(true);
|
||||
|
||||
ExLog.i(TAG, "Issuing a reload of managed races");
|
||||
getLoaderManager().restartLoader(RacesLoaderId, null,
|
||||
dataManager.getRacesLoader(courseArea.getId(), RaceLoadClient.this));
|
||||
dialog.cancel();
|
||||
}
|
||||
}).setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
dialog.cancel();
|
||||
}
|
||||
});
|
||||
builder.create().show();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Selection list of all races
|
||||
*/
|
||||
@@ -160,40 +215,8 @@ public class RacingActivity extends SessionActivity implements RaceInfoListener
|
||||
setProgressBarIndeterminateVisibility(true);
|
||||
|
||||
ExLog.i(TAG, "Issuing loading of managed races from data manager");
|
||||
getLoaderManager().initLoader(0, null,
|
||||
dataManager.getRacesLoader(courseArea.getId(), new LoadClient<Collection<ManagedRace>>() {
|
||||
public void onLoadSucceded(Collection<ManagedRace> data) {
|
||||
onLoadRacesSucceded(courseArea, data);
|
||||
}
|
||||
|
||||
public void onLoadFailed(Exception reason) {
|
||||
onLoadRacesFailed(courseArea, reason);
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
Collection<ManagedRace> lastSeenRaces = null;
|
||||
|
||||
private void onLoadRacesSucceded(CourseArea courseArea, Collection<ManagedRace> data) {
|
||||
setProgressBarIndeterminateVisibility(false);
|
||||
|
||||
// Let's do the setup stuff only when the data is changed (or its the first time)
|
||||
if (lastSeenRaces != null && CollectionUtils.isEqualCollection(data, lastSeenRaces)) {
|
||||
ExLog.i(TAG, "Same races are already loaded...");
|
||||
return;
|
||||
}
|
||||
lastSeenRaces = data;
|
||||
|
||||
registerOnService(data);
|
||||
raceListFragment.setupOn(data);
|
||||
|
||||
Toast.makeText(RacingActivity.this, String.format(getString(R.string.racing_load_success), data.size()),
|
||||
Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
private void onLoadRacesFailed(final CourseArea courseArea, Exception reason) {
|
||||
setProgressBarIndeterminateVisibility(false);
|
||||
showLoadFailedDialog(courseArea, reason.getMessage());
|
||||
getLoaderManager().initLoader(RacesLoaderId, null,
|
||||
dataManager.getRacesLoader(courseArea.getId(), new RaceLoadClient(courseArea)));
|
||||
}
|
||||
|
||||
private void registerOnService(Collection<ManagedRace> races) {
|
||||
@@ -207,26 +230,6 @@ public class RacingActivity extends SessionActivity implements RaceInfoListener
|
||||
}
|
||||
}
|
||||
|
||||
private void showLoadFailedDialog(final CourseArea courseArea, String message) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
builder.setMessage(String.format(getString(R.string.generic_load_failure), message))
|
||||
.setTitle(getString(R.string.loading_failure)).setIcon(R.drawable.ic_dialog_alert_holo_light)
|
||||
.setCancelable(true)
|
||||
.setPositiveButton(getString(R.string.retry), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
loadRaces(courseArea);
|
||||
}
|
||||
}).setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
dialog.cancel();
|
||||
}
|
||||
});
|
||||
if (!isFinishing()) {
|
||||
AlertDialog alert = builder.create();
|
||||
alert.show();
|
||||
}
|
||||
}
|
||||
|
||||
public void onRaceItemClicked(ManagedRace managedRace) {
|
||||
infoFragment = new RaceInfoFragment();
|
||||
infoFragment.setArguments(RaceFragment.createArguments(managedRace));
|
||||
|
||||
Reference in new issue
Block a user