diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/RaceColumnConstants.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/RaceColumnConstants.java new file mode 100644 index 00000000000..e1ae25521ee --- /dev/null +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/RaceColumnConstants.java @@ -0,0 +1,12 @@ +package com.sap.sailing.domain.common.impl; + +public class RaceColumnConstants { + + public static final String LEADERBOARD_NAME = "leaderboard_name"; + public static final String LEADERBOARD_DISPLAY_NAME = "leaderboard_display_name"; + public static final String RACE_COLUMNS = "race_columns"; + public static final String RACE_COLUMN_NAME = "race_column_name"; + public static final String EXPLICIT_FACTOR = "explicit_factor"; + public static final String FACTOR = "factor"; + +} diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/RaceColumnFactorImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/RaceColumnFactorImpl.java new file mode 100644 index 00000000000..cd810fd8208 --- /dev/null +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/RaceColumnFactorImpl.java @@ -0,0 +1,57 @@ +package com.sap.sailing.domain.base.impl; + +import java.util.HashMap; + +public class RaceColumnFactorImpl { + + private final String leaderboard_name; + private final String leaderboard_display_name; + private final HashMap race_columns; + + public RaceColumnFactorImpl(String leaderboard_name, String leaderboard_display_name) { + this.leaderboard_name = leaderboard_name; + this.leaderboard_display_name = leaderboard_display_name; + race_columns = new HashMap<>(); + } + + public String getLeaderboardName() { + return leaderboard_name; + } + + public String getLeaderboardDisplayName() { + return leaderboard_display_name; + } + + public HashMap getRaceColumns() { + return race_columns; + } + + public void addRaceColumn(String race_column_name, Double explicit_factor, Double factor) { + race_columns.put(race_column_name, new RaceColumn(race_column_name, explicit_factor, factor)); + } + + public class RaceColumn { + + private final String race_column_name; + private final Double explicit_factor; + private final Double factor; + + public RaceColumn(String race_column_name, Double explicit_factor, Double factor) { + this.race_column_name = race_column_name; + this.explicit_factor = explicit_factor; + this.factor = factor; + } + + public String getRaceColumnName() { + return race_column_name; + } + + public Double getExplicitFactor() { + return explicit_factor; + } + + public Double getFactor() { + return factor; + } + } +} diff --git a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/impl/RaceColumnFactorJsonDeserializer.java b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/impl/RaceColumnFactorJsonDeserializer.java new file mode 100644 index 00000000000..51049583e32 --- /dev/null +++ b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/impl/RaceColumnFactorJsonDeserializer.java @@ -0,0 +1,29 @@ +package com.sap.sailing.server.gateway.deserialization.impl; + +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; + +import com.sap.sailing.domain.base.impl.RaceColumnFactorImpl; +import com.sap.sailing.domain.common.impl.RaceColumnConstants; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; + +public class RaceColumnFactorJsonDeserializer implements JsonDeserializer { + + @Override + public RaceColumnFactorImpl deserialize(JSONObject object) throws JsonDeserializationException { + String leaderboard_name = (String) object.get(RaceColumnConstants.LEADERBOARD_NAME); + String leaderboard_display_name = (String) object.get(RaceColumnConstants.LEADERBOARD_DISPLAY_NAME); + RaceColumnFactorImpl raceColumnFactor = new RaceColumnFactorImpl(leaderboard_name, leaderboard_display_name); + JSONArray race_columns = (JSONArray) object.get(RaceColumnConstants.RACE_COLUMNS); + int size = race_columns.size(); + for (int i = 0; i < size; i++) { + JSONObject data = (JSONObject) race_columns.get(i); + String race_column_name = (String) data.get(RaceColumnConstants.RACE_COLUMN_NAME); + Double explicit_factor = (Double) data.get(RaceColumnConstants.EXPLICIT_FACTOR); + Double factor = (Double) data.get(RaceColumnConstants.FACTOR); + raceColumnFactor.addRaceColumn(race_column_name, explicit_factor, factor); + } + return raceColumnFactor; + } +} diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/LeaderboardsResource.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/LeaderboardsResource.java index 248172548a1..199ec7602e4 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/LeaderboardsResource.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/LeaderboardsResource.java @@ -57,6 +57,7 @@ import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.LeaderboardEntryDTO; import com.sap.sailing.domain.common.dto.LeaderboardRowDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; +import com.sap.sailing.domain.common.impl.RaceColumnConstants; import com.sap.sailing.domain.common.racelog.RaceLogServletConstants; import com.sap.sailing.domain.common.racelog.tracking.DeviceMappingConstants; import com.sap.sailing.domain.common.security.Permission; @@ -678,16 +679,16 @@ public class LeaderboardsResource extends AbstractSailingServerResource { private JSONObject getJsonForColumnFactors(final Leaderboard leaderboard, final Iterable raceColumns) { final JSONObject json = new JSONObject(); - json.put("leaderboard_name", leaderboard.getName()); - json.put("leaderboard_display_name", leaderboard.getDisplayName()); + json.put(RaceColumnConstants.LEADERBOARD_NAME, leaderboard.getName()); + json.put(RaceColumnConstants.LEADERBOARD_DISPLAY_NAME, leaderboard.getDisplayName()); final JSONArray raceColumnsAsJson = new JSONArray(); - json.put("race_columns", raceColumnsAsJson); + json.put(RaceColumnConstants.RACE_COLUMNS, raceColumnsAsJson); for (final RaceColumn rc : raceColumns) { final JSONObject raceColumnAsJson = new JSONObject(); raceColumnsAsJson.add(raceColumnAsJson); - raceColumnAsJson.put("race_column_name", rc.getName()); - raceColumnAsJson.put("explicit_factor", rc.getExplicitFactor()); - raceColumnAsJson.put("factor", rc.getFactor()); + raceColumnAsJson.put(RaceColumnConstants.RACE_COLUMN_NAME, rc.getName()); + raceColumnAsJson.put(RaceColumnConstants.EXPLICIT_FACTOR, rc.getExplicitFactor()); + raceColumnAsJson.put(RaceColumnConstants.FACTOR, rc.getFactor()); } return json; } diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpGetRequest.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpGetRequest.java index 68ba2be2597..517cf77141b 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpGetRequest.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpGetRequest.java @@ -11,11 +11,11 @@ import android.content.Context; public class HttpGetRequest extends HttpRequest { public HttpGetRequest(URL requestUrl, Context context) { - super(requestUrl, context); + super(context, requestUrl); } public HttpGetRequest(URL url, HttpRequestProgressListener listener, Context context) { - super(url, listener, context); + super(context, url, listener); } @Override diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpJsonGetRequest.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpJsonGetRequest.java index 78607cd9240..bba9f470bc4 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpJsonGetRequest.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpJsonGetRequest.java @@ -10,8 +10,8 @@ import android.content.Context; public class HttpJsonGetRequest extends HttpRequest { public final static String ContentType = "application/json;charset=UTF-8"; - public HttpJsonGetRequest(URL requestUrl, Context context) { - super(requestUrl, context); + public HttpJsonGetRequest(Context context, URL requestUrl) { + super(context, requestUrl); } @Override diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpJsonPostRequest.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpJsonPostRequest.java index 28af17938f8..6e077db1a8b 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpJsonPostRequest.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpJsonPostRequest.java @@ -16,16 +16,16 @@ public class HttpJsonPostRequest extends HttpRequest { private String requestBody; private String accessToken; - public HttpJsonPostRequest(URL requestUrl, Context context) { - this(requestUrl, null, context, null); + public HttpJsonPostRequest(Context context, URL requestUrl) { + this(context, requestUrl, null, null); } - public HttpJsonPostRequest(URL requestUrl, String body, Context context) { - this(requestUrl, body, context, null); + public HttpJsonPostRequest(Context context, URL requestUrl, String body) { + this(context, requestUrl, body, null); } - public HttpJsonPostRequest(URL requestUrl, String body, Context context, String accessToken) { - super(requestUrl, context); + public HttpJsonPostRequest(Context context, URL requestUrl, String body, String accessToken) { + super(context, requestUrl); this.requestBody = body; this.accessToken = accessToken; } diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpRequest.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpRequest.java index 50f3ed82c48..7773386c963 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpRequest.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpRequest.java @@ -46,11 +46,11 @@ public abstract class HttpRequest { private boolean isCancelled; protected SharedPreferences pref; - public HttpRequest(URL url, Context context) { - this(url, null, context); + public HttpRequest(Context context, URL url) { + this(context, url, null); } - public HttpRequest(URL url, HttpRequestProgressListener listener, Context context) { + public HttpRequest(Context context, URL url, HttpRequestProgressListener listener) { this.url = url; this.listener = listener; this.isCancelled = false; diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/LoginGetRequest.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/LoginGetRequest.java index 51a745426e4..b400587220d 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/LoginGetRequest.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/LoginGetRequest.java @@ -15,7 +15,7 @@ public class LoginGetRequest extends HttpRequest { private final LoginData loginData; public LoginGetRequest(URL url, Context context, LoginData login) { - super(url, context); + super(context, url); loginData = login; } diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/MessageSenderTask.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/MessageSenderTask.java index 2b86375a0d1..9b36424ac6e 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/MessageSenderTask.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/MessageSenderTask.java @@ -40,7 +40,7 @@ public class MessageSenderTask extends AsyncTask { Boolean authenticated = false; if (url != null) { try { - HttpRequest request = new HttpJsonGetRequest(url, context); + HttpRequest request = new HttpJsonGetRequest(context, url); InputStream responseStream = request.execute(); JSONParser parser = new JSONParser(); diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/util/LogoutTask.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/util/LogoutTask.java index 16ee0a7cabe..d0df5475399 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/util/LogoutTask.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/util/LogoutTask.java @@ -32,7 +32,7 @@ public class LogoutTask extends AsyncTask { @Override protected Void doInBackground(String... params) { if (url != null && params != null && params.length > 0) { - HttpRequest request = new HttpJsonGetRequest(url, context); + HttpRequest request = new HttpJsonGetRequest(context, url); try { request.execute(); } catch (IOException e) { diff --git a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/RegattaActivity.java b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/RegattaActivity.java index bb711c3d562..4ad3aef3508 100755 --- a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/RegattaActivity.java +++ b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/RegattaActivity.java @@ -462,8 +462,7 @@ public class RegattaActivity extends AbstractRegattaActivity } try { - HttpJsonPostRequest request = new HttpJsonPostRequest(new URL(checkoutURLStr), checkoutData.toString(), - this); + HttpJsonPostRequest request = new HttpJsonPostRequest(this, new URL(checkoutURLStr), checkoutData.toString()); NetworkHelper.getInstance(this).executeHttpJsonRequestAsync(request, new NetworkHelperSuccessListener() { diff --git a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/fragments/HomeFragment.java b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/fragments/HomeFragment.java index 426a5e7b016..15425a241cc 100644 --- a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/fragments/HomeFragment.java +++ b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/fragments/HomeFragment.java @@ -128,8 +128,8 @@ public class HomeFragment extends AbstractHomeFragment implements LoaderCallback try { JSONObject requestObject = CheckinHelper.getCheckinJson(checkinData.competitorId, checkinData.deviceUid, "TODO push device ID!!", date.getTime()); - HttpJsonPostRequest request = new HttpJsonPostRequest(new URL(checkinData.checkinURL), - requestObject.toString(), getActivity()); + HttpJsonPostRequest request = new HttpJsonPostRequest(getActivity(), new URL(checkinData.checkinURL), + requestObject.toString()); NetworkHelper.getInstance(getActivity()) .executeHttpJsonRequestAsync(request, new CheckinListener(checkinData.checkinDigest), new CheckinErrorListener(checkinData.checkinDigest)); diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable/factor_background_dark.xml b/mobile/com.sap.sailing.racecommittee.app/res/drawable/factor_background_dark.xml new file mode 100644 index 00000000000..eba257d7112 --- /dev/null +++ b/mobile/com.sap.sailing.racecommittee.app/res/drawable/factor_background_dark.xml @@ -0,0 +1,15 @@ + + + + + + + + + + \ No newline at end of file diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable/factor_background_light.xml b/mobile/com.sap.sailing.racecommittee.app/res/drawable/factor_background_light.xml new file mode 100644 index 00000000000..1340e87a546 --- /dev/null +++ b/mobile/com.sap.sailing.racecommittee.app/res/drawable/factor_background_light.xml @@ -0,0 +1,15 @@ + + + + + + + + + + \ No newline at end of file diff --git a/mobile/com.sap.sailing.racecommittee.app/res/layout/race_column_factor_normal.xml b/mobile/com.sap.sailing.racecommittee.app/res/layout/race_column_factor_normal.xml new file mode 100644 index 00000000000..3eb70750bc4 --- /dev/null +++ b/mobile/com.sap.sailing.racecommittee.app/res/layout/race_column_factor_normal.xml @@ -0,0 +1,66 @@ + + + + + + + +