renamed CourseDataDeserializer to CourseBaseDeserializer

This commit is contained in:
Lukas Niemeier committed 2013-07-31 00:41:10 +02:00
1 parent d4ad49bd9c
commit 3e903e2a27
8 files changed
+126 -113

No files matched your search

@@ -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();
@@ -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;
}
}
@@ -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;
}
@@ -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)))))),
@@ -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,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) {
@@ -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;
}
@@ -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));