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

@@ -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));