Makes use of Pair and moves map url generation to online data manager

This commit is contained in:
Bennet Brunsen committed 2015-07-20 15:39:49 +02:00
1 parent 320a0f889f
commit 15c6c18353
7 files changed
+80 -46

No files matched your search

@@ -50,5 +50,4 @@ public interface DataStore {
UUID getCourseUUID();
void setCourseUUID(UUID uuid);
String getMapUrl(String baseUrl, ManagedRace race, String eventId, boolean showWindCharts, boolean showStreamlets, boolean showSimulation, boolean showMapControls);
}
@@ -264,20 +264,4 @@ public enum InMemoryDataStore implements DataStore {
courseUUID = uuid;
}
@Override
public String getMapUrl(String baseUrl, ManagedRace race, String eventId, boolean showWindCharts, boolean showStreamlets, boolean showSimulation, boolean showMapControls) {
String url = "";
// get simple race log identifier
Util.Triple<String, String, String> triple = FleetIdentifierImpl.unescape(race.getId());
SimpleRaceLogIdentifier identifier = new SimpleRaceLogIdentifierImpl(triple.getA(), triple.getB(), triple.getC());
Object [] params = {"regattaLikeName", "raceColumnName", "fleetName", "eventId", "viewShowWindChart", "viewShowStreamlets", "viewShowSimulation", "viewShowMapControls"};
Object [] values = {identifier.getRegattaLikeParentName(), identifier.getRaceColumnName(), identifier.getFleetName(), eventId, showWindCharts, showStreamlets, showSimulation, showMapControls};
try {
url = UrlHelper.generateUrl(baseUrl, AppConstants.GWT_MAP_AND_WIND_CHART_HTML, params, values).toString();
} catch (MalformedURLException e) {
Log.e(TAG, "An error occured while generating the map url: " + e.getMessage());
}
return url;
}
}
@@ -242,6 +242,12 @@ public class OfflineDataManager extends DataManager {
});
}
@Override
public String getMapUrl(String baseUrl, ManagedRace race, String eventId, boolean showWindCharts, boolean showStreamlets, boolean showSimulation,
boolean showMapControls) {
throw new IllegalStateException("No wind map in offline mode.");
}
@Override
public LoaderCallbacks<DataLoaderResult<Collection<CoursePosition>>> createPositionLoader(
PositionListFragment positionListFragment) {
@@ -1,9 +1,12 @@
package com.sap.sailing.racecommittee.app.data;
import java.io.Serializable;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.Callable;
import android.app.LoaderManager.LoaderCallbacks;
@@ -11,8 +14,11 @@ import android.content.Context;
import android.content.Loader;
import android.os.Bundle;
import android.util.Log;
import com.sap.sailing.android.shared.logging.ExLog;
import com.sap.sailing.android.shared.services.sending.MessageSendingService;
import com.sap.sailing.domain.abstractlog.race.SimpleRaceLogIdentifier;
import com.sap.sailing.domain.abstractlog.race.impl.SimpleRaceLogIdentifierImpl;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.CourseArea;
import com.sap.sailing.domain.base.CourseBase;
@@ -24,6 +30,8 @@ import com.sap.sailing.domain.base.configuration.DeviceConfiguration;
import com.sap.sailing.domain.base.configuration.DeviceConfigurationIdentifier;
import com.sap.sailing.domain.base.configuration.RegattaConfiguration;
import com.sap.sailing.domain.common.racelog.RaceLogServletConstants;
import com.sap.sailing.racecommittee.app.AppConstants;
import com.sap.sailing.racecommittee.app.AppPreferences;
import com.sap.sailing.racecommittee.app.data.clients.LoadClient;
import com.sap.sailing.racecommittee.app.data.handlers.CompetitorsDataHandler;
import com.sap.sailing.racecommittee.app.data.handlers.CourseBaseHandler;
@@ -48,6 +56,7 @@ import com.sap.sailing.racecommittee.app.domain.CoursePosition;
import com.sap.sailing.racecommittee.app.domain.ManagedRace;
import com.sap.sailing.racecommittee.app.domain.ManagedRaceIdentifier;
import com.sap.sailing.racecommittee.app.domain.configuration.impl.PreferencesRegattaConfigurationLoader;
import com.sap.sailing.racecommittee.app.domain.impl.FleetIdentifierImpl;
import com.sap.sailing.racecommittee.app.ui.fragments.lists.PositionListFragment;
import com.sap.sailing.racecommittee.app.utils.UrlHelper;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
@@ -69,6 +78,7 @@ import com.sap.sailing.server.gateway.deserialization.impl.RegattaConfigurationJ
import com.sap.sailing.server.gateway.deserialization.impl.TeamJsonDeserializer;
import com.sap.sailing.server.gateway.deserialization.impl.VenueJsonDeserializer;
import com.sap.sailing.server.gateway.deserialization.racegroup.impl.RaceGroupDeserializer;
import com.sap.sse.common.Util;
/**
* Enables accessing of data.
@@ -112,7 +122,7 @@ public class OnlineDataManager extends DataManager {
// ExLog.i(context, TAG, "getEventsLoader created new loader...");
URL url = UrlHelper.generateUrl(preferences.getServerBaseURL(), "/sailingserver/events", new String[0], new Object[0]);
URL url = UrlHelper.generateUrl(preferences.getServerBaseURL(), "/sailingserver/events", new ArrayList<Util.Pair>());
return new OnlineDataLoader<Collection<EventBase>>(context,
url, parser, handler);
}
@@ -168,10 +178,10 @@ public class OnlineDataManager extends DataManager {
globalConfiguration, RaceGroupDeserializer.create(domainFactory,
RegattaConfigurationJsonDeserializer.create()));
DataHandler<Collection<ManagedRace>> handler = new ManagedRacesDataHandler(OnlineDataManager.this);
Object[] params = {RaceLogServletConstants.PARAM_COURSE_AREA_FILTER, RaceLogServletConstants.PARAMS_CLIENT_UUID};
Object[] values = {courseAreaId.toString(), MessageSendingService.uuid};
URL url = UrlHelper.generateUrl(preferences.getServerBaseURL(), "/sailingserver/rc/racegroups",params, values);
List<Util.Pair> params = new ArrayList<>();
params.add(new Util.Pair(RaceLogServletConstants.PARAM_COURSE_AREA_FILTER, courseAreaId.toString()));
params.add(new Util.Pair(RaceLogServletConstants.PARAMS_CLIENT_UUID, MessageSendingService.uuid));
URL url = UrlHelper.generateUrl(preferences.getServerBaseURL(), "/sailingserver/rc/racegroups",params);
return new OnlineDataLoader<Collection<ManagedRace>>(context, url, parser, handler);
}
}, getContext());
@@ -194,11 +204,11 @@ public class OnlineDataManager extends DataManager {
String raceColumnName = URLEncoder.encode(identifier.getRaceName(), MessageSendingService.charsetName);
String fleetName = URLEncoder.encode(identifier.getFleet().getName(), MessageSendingService.charsetName);
Object[] params = {RaceLogServletConstants.PARAMS_LEADERBOARD_NAME,
RaceLogServletConstants.PARAMS_RACE_COLUMN_NAME,
RaceLogServletConstants.PARAMS_RACE_FLEET_NAME};
Object[] values = {raceGroupName, raceColumnName, fleetName};
URL url = UrlHelper.generateUrl(preferences.getServerBaseURL(), "/sailingserver/rc/marks", params, values);
List<Util.Pair> params = new ArrayList<>();
params.add(new Util.Pair(RaceLogServletConstants.PARAMS_LEADERBOARD_NAME, raceGroupName));
params.add(new Util.Pair(RaceLogServletConstants.PARAMS_RACE_COLUMN_NAME, raceColumnName));
params.add(new Util.Pair(RaceLogServletConstants.PARAMS_RACE_FLEET_NAME, fleetName));
URL url = UrlHelper.generateUrl(preferences.getServerBaseURL(), "/sailingserver/rc/marks", params);
return new OnlineDataLoader<Collection<Mark>>(context, url, parser, handler);
}
}, getContext());
@@ -223,11 +233,11 @@ public class OnlineDataManager extends DataManager {
String raceColumnName = URLEncoder.encode(identifier.getRaceName(), MessageSendingService.charsetName);
String fleetName = URLEncoder.encode(identifier.getFleet().getName(), MessageSendingService.charsetName);
Object[] params = {RaceLogServletConstants.PARAMS_LEADERBOARD_NAME,
RaceLogServletConstants.PARAMS_RACE_COLUMN_NAME,
RaceLogServletConstants.PARAMS_RACE_FLEET_NAME};
Object[] values = {raceGroupName, raceColumnName, fleetName};
URL url = UrlHelper.generateUrl(preferences.getServerBaseURL(), "/sailingserver/rc/currentcourse", params, values);
List<Util.Pair> params = new ArrayList<>();
params.add(new Util.Pair(RaceLogServletConstants.PARAMS_LEADERBOARD_NAME, raceGroupName));
params.add(new Util.Pair(RaceLogServletConstants.PARAMS_RACE_COLUMN_NAME, raceColumnName));
params.add(new Util.Pair(RaceLogServletConstants.PARAMS_RACE_FLEET_NAME, fleetName));
URL url = UrlHelper.generateUrl(preferences.getServerBaseURL(), "/sailingserver/rc/currentcourse", params);
return new OnlineDataLoader<CourseBase>(context, url, parser, handler);
}
@@ -255,11 +265,11 @@ public class OnlineDataManager extends DataManager {
String raceColumnName = URLEncoder.encode(identifier.getRaceName(), MessageSendingService.charsetName);
String fleetName = URLEncoder.encode(identifier.getFleet().getName(), MessageSendingService.charsetName);
Object[] params = {RaceLogServletConstants.PARAMS_LEADERBOARD_NAME,
RaceLogServletConstants.PARAMS_RACE_COLUMN_NAME,
RaceLogServletConstants.PARAMS_RACE_FLEET_NAME};
Object[] values = {raceGroupName, raceColumnName, fleetName};
URL url = UrlHelper.generateUrl(preferences.getServerBaseURL(), "/sailingserver/rc/competitors", params, values);
List<Util.Pair> params = new ArrayList<>();
params.add(new Util.Pair(RaceLogServletConstants.PARAMS_LEADERBOARD_NAME, raceGroupName));
params.add(new Util.Pair(RaceLogServletConstants.PARAMS_RACE_COLUMN_NAME, raceColumnName));
params.add(new Util.Pair(RaceLogServletConstants.PARAMS_RACE_FLEET_NAME, fleetName));
URL url = UrlHelper.generateUrl(preferences.getServerBaseURL(), "/sailingserver/rc/competitors", params);
return new OnlineDataLoader<Collection<Competitor>>(context, url, parser, handler);
}
}, getContext());
@@ -280,9 +290,9 @@ public class OnlineDataManager extends DataManager {
String encodedIdentifier = URLEncoder.encode(identifier.getClientIdentifier(), MessageSendingService.charsetName);
encodedIdentifier = encodedIdentifier.replace("+", "%20");
Object[] params = {"client"};
Object[] values = {encodedIdentifier};
URL url = UrlHelper.generateUrl(preferences.getServerBaseURL(), "/sailingserver/rc/configuration", params, values);
List<Util.Pair> params = new ArrayList<>();
params.add(new Util.Pair("client", encodedIdentifier));
URL url = UrlHelper.generateUrl(preferences.getServerBaseURL(), "/sailingserver/rc/configuration", params);
return new OnlineDataLoader<DeviceConfiguration>(context,
url, parser, handler);
}
@@ -295,4 +305,30 @@ public class OnlineDataManager extends DataManager {
// TODO Auto-generated method stub
return null;
}
@Override
public String getMapUrl(String baseUrl, ManagedRace race, String eventId, boolean showWindCharts, boolean showStreamlets, boolean showSimulation, boolean showMapControls) {
String url = "";
// get simple race log identifier
Util.Triple<String, String, String> triple = FleetIdentifierImpl.unescape(race.getId());
SimpleRaceLogIdentifier identifier = new SimpleRaceLogIdentifierImpl(triple.getA(), triple.getB(), triple.getC());
List<Util.Pair> params = new ArrayList<>();
params.add(new Util.Pair("regattaLikeName", identifier.getRegattaLikeParentName()));
params.add(new Util.Pair("raceColumnName", identifier.getRaceColumnName()));
params.add(new Util.Pair("fleetName", identifier.getFleetName()));
params.add(new Util.Pair("eventId", eventId));
params.add(new Util.Pair("viewShowWindChart", showWindCharts));
params.add(new Util.Pair("viewShowStreamlets", showStreamlets));
params.add(new Util.Pair("viewShowSimulation", showSimulation));
params.add(new Util.Pair("viewShowMapControls", showMapControls));
try {
url = UrlHelper.generateUrl(AppPreferences.on(context).getServerBaseURL(), AppConstants.GWT_MAP_AND_WIND_CHART_HTML, params).toString();
} catch (MalformedURLException e) {
Log.e(TAG, "An error occured while generating the map url: " + e.getMessage());
}
return url;
}
}
@@ -149,4 +149,6 @@ public interface ReadonlyDataManager {
*/
public LoaderCallbacks<DataLoaderResult<DeviceConfiguration>> createConfigurationLoader(DeviceConfigurationIdentifier identifier,
LoadClient<DeviceConfiguration> callback);
public String getMapUrl(String baseUrl, ManagedRace race, String eventId, boolean showWindCharts, boolean showStreamlets, boolean showSimulation, boolean showMapControls);
}
@@ -1,16 +1,18 @@
package com.sap.sailing.racecommittee.app.utils;
import android.net.Uri;
import com.sap.sse.common.Util;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
public class UrlHelper {
public static URL generateUrl(String baseURL, String path, Object[] params, Object[] values) throws MalformedURLException {
public static URL generateUrl(String baseURL, String path, List<Util.Pair> params) throws MalformedURLException {
Uri.Builder builder = Uri.parse(baseURL).buildUpon();
builder.path(path);
for (int index = 0; index < params.length; index++){
builder.appendQueryParameter("" + params[index], "" + values[index]);
for (Util.Pair param : params){
builder.appendQueryParameter("" + param.getA(), "" + param.getB());
}
return new URL(builder.build().toString());
}
@@ -11,6 +11,7 @@ import com.sap.sailing.racecommittee.app.AppPreferences;
import com.sap.sailing.racecommittee.app.data.DataManager;
import com.sap.sailing.racecommittee.app.data.DataStore;
import com.sap.sailing.racecommittee.app.data.OnlineDataManager;
import com.sap.sailing.racecommittee.app.data.ReadonlyDataManager;
import com.sap.sailing.racecommittee.app.domain.ManagedRace;
import com.sap.sailing.racecommittee.app.domain.impl.FleetIdentifierImpl;
import com.sap.sse.common.Util;
@@ -20,6 +21,8 @@ import org.json.JSONObject;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
public class WindHelper {
private static String TAG = WindHelper.class.getName();
@@ -28,7 +31,9 @@ public class WindHelper {
try {
Util.Triple<String, String, String> triple = FleetIdentifierImpl.unescape(race.getId());
String path = "/sailingserver/api/v1/events/"+ getEventId(context) + "/racestates";
URL serverUrl = UrlHelper.generateUrl(getBaseUrl(context), path, new Object[]{"filterByLeaderboard"}, new Object[]{triple.getA()});
List<Util.Pair> params = new ArrayList<>();
params.add(new Util.Pair("filterByLeaderboard", triple.getA()));
URL serverUrl = UrlHelper.generateUrl(getBaseUrl(context), path, params);
HttpGetRequest request = new HttpGetRequest(serverUrl, context);
NetworkHelper.getInstance(context).executeHttpJsonRequestAsnchronously(request, new NetworkHelper.NetworkHelperSuccessListener() {
@@ -89,7 +94,7 @@ public class WindHelper {
}
public static String generateMapURL(Context context, ManagedRace race ,boolean showWindCharts, boolean showStreamlets, boolean showSimulation, boolean showMapControls){
DataStore dataStore = OnlineDataManager.create(context).getDataStore();
return dataStore.getMapUrl(AppPreferences.on(context).getServerBaseURL(), race, getEventId(context), showWindCharts, showStreamlets, showSimulation, showMapControls);
ReadonlyDataManager dataManager = OnlineDataManager.create(context);
return dataManager.getMapUrl(AppPreferences.on(context).getServerBaseURL(), race, getEventId(context), showWindCharts, showStreamlets, showSimulation, showMapControls);
}
}