mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-19 12:15:28 +00:00
trying to include DeviceConfiguration UUID handling in Race Manager App
Change-Id: Iee95cf0ce14c340018b369621a7d50c5a90f4150
This commit is contained in:
Regular → Executable
+11
-6
@@ -3,6 +3,7 @@ package com.sap.sailing.domain.common.impl;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* This class is used by our backend, in GWT-client code and by the Android app. Therefore we cannot use classes like
|
||||
@@ -16,19 +17,20 @@ public class DeviceConfigurationQRCodeUtils {
|
||||
public static class DeviceConfigurationDetails {
|
||||
private final String apkUrl;
|
||||
private final String deviceIdentifier;
|
||||
private final UUID uuid;
|
||||
private final String accessToken;
|
||||
public DeviceConfigurationDetails(String apkUrl, String deviceIdentifier, String accessToken) {
|
||||
public DeviceConfigurationDetails(String apkUrl, UUID uuid, String deviceConfigurationName, String accessToken) {
|
||||
super();
|
||||
this.apkUrl = apkUrl;
|
||||
this.deviceIdentifier = deviceIdentifier;
|
||||
this.uuid = uuid;
|
||||
this.deviceIdentifier = deviceConfigurationName;
|
||||
this.accessToken = accessToken;
|
||||
}
|
||||
public String getApkUrl() {
|
||||
return apkUrl;
|
||||
}
|
||||
public String getDeviceIdentifier() {
|
||||
return deviceIdentifier;
|
||||
}
|
||||
public UUID getUuid() { return uuid; }
|
||||
public String getDeviceIdentifier() { return deviceIdentifier; }
|
||||
public String getAccessToken() {
|
||||
return accessToken;
|
||||
}
|
||||
@@ -61,7 +63,10 @@ public class DeviceConfigurationQRCodeUtils {
|
||||
throw new IllegalArgumentException("Device identifier missing from QR code contents");
|
||||
}
|
||||
String apkUrl = qrCodeContent.substring(0, fragmentIndex);
|
||||
return new DeviceConfigurationDetails(apkUrl, paramMap.get(deviceIdentifierKey), paramMap.get(accessTokenKey));
|
||||
return new DeviceConfigurationDetails(apkUrl,
|
||||
paramMap.get(deviceUuidKey) == null ? null : UUID.fromString(paramMap.get(deviceUuidKey)),
|
||||
paramMap.get(deviceIdentifierKey) == null ? null : paramMap.get(deviceIdentifierKey),
|
||||
paramMap.get(accessTokenKey));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Executable → Regular
+1
-1
@@ -14,7 +14,7 @@
|
||||
but there can be other i18n bundles.
|
||||
|
||||
the build script switches references to *AllPermutations*
|
||||
to *SinglePermutation* in gwt modules with the "-b" option.
|
||||
to *AllPermutations* in gwt modules with the "-b" option.
|
||||
|
||||
-->
|
||||
|
||||
|
||||
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Regular → Executable
+1
@@ -2,6 +2,7 @@
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
|
||||
<string name="preference_identifier_key" translatable="false">identifierPreference</string>
|
||||
<string name="preference_config_uuid_key" translatable="false">configUuidPreference</string>
|
||||
<string name="preference_sync_key" translatable="false">syncConnectionPreference</string>
|
||||
<string name="preference_update_key" translatable="false">forceUpdatePreference</string>
|
||||
|
||||
|
||||
+6
@@ -28,6 +28,7 @@ import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Wrapper for {@link SharedPreferences} for all hidden and non-hidden preferences and state variables.
|
||||
@@ -166,6 +167,11 @@ public class AppPreferences {
|
||||
return TextUtils.isEmpty(identifier) ? defaultValue : identifier;
|
||||
}
|
||||
|
||||
public UUID getDeviceConfigurationUuid() {
|
||||
final String uuidAsString = helper.getString(key(R.string.preference_config_uuid_key), "");
|
||||
return TextUtils.isEmpty(uuidAsString) ? null : UUID.fromString(uuidAsString);
|
||||
}
|
||||
|
||||
public boolean getGateStartHasAdditionalGolfDownTime() {
|
||||
return helper.getBoolean(key(R.string.preference_racing_procedure_gatestart_hasadditionalgolfdowntime_key),
|
||||
true);
|
||||
|
||||
+1
-1
@@ -277,7 +277,7 @@ public class OfflineDataManager extends DataManager {
|
||||
|
||||
@Override
|
||||
public LoaderCallbacks<DataLoaderResult<DeviceConfiguration>> createConfigurationLoader(
|
||||
String deviceConfigurationName, LoadClient<DeviceConfiguration> callback) {
|
||||
String deviceConfigurationName, UUID deviceConfigurationUuid, LoadClient<DeviceConfiguration> callback) {
|
||||
return new ImmediateDataLoaderCallbacks<DeviceConfiguration>(context, callback,
|
||||
new Callable<DeviceConfiguration>() {
|
||||
@Override
|
||||
|
||||
+8
-2
@@ -7,6 +7,7 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
import com.sap.sailing.android.shared.logging.ExLog;
|
||||
@@ -337,7 +338,7 @@ public class OnlineDataManager extends DataManager {
|
||||
|
||||
@Override
|
||||
public LoaderCallbacks<DataLoaderResult<DeviceConfiguration>> createConfigurationLoader(
|
||||
final String deviceConfigurationName, LoadClient<DeviceConfiguration> callback) {
|
||||
final String deviceConfigurationName, UUID deviceConfigurationUuid, LoadClient<DeviceConfiguration> callback) {
|
||||
return new DataLoaderCallbacks<>(callback, new LoaderCreator<DeviceConfiguration>() {
|
||||
@Override
|
||||
public Loader<DataLoaderResult<DeviceConfiguration>> create(int id, Bundle args) throws Exception {
|
||||
@@ -346,7 +347,12 @@ public class OnlineDataManager extends DataManager {
|
||||
DataParser<DeviceConfiguration> parser = new DeviceConfigurationParser(
|
||||
DeviceConfigurationJsonDeserializer.create());
|
||||
List<Util.Pair<String, Object>> params = new ArrayList<>();
|
||||
params.add(new Util.Pair<String, Object>("client", deviceConfigurationName));
|
||||
if (deviceConfigurationName != null) {
|
||||
params.add(new Util.Pair<String, Object>("client", deviceConfigurationName));
|
||||
}
|
||||
if (deviceConfigurationUuid != null) {
|
||||
params.add(new Util.Pair<String, Object>("uuid", deviceConfigurationUuid.toString()));
|
||||
}
|
||||
URL url = UrlHelper.generateUrl(preferences.getServerBaseURL(), "/sailingserver/rc/configuration", params);
|
||||
return new OnlineDataLoader<>(context, url, parser, handler);
|
||||
}
|
||||
|
||||
+4
-1
@@ -3,6 +3,7 @@ package com.sap.sailing.racecommittee.app.data;
|
||||
import java.io.Serializable;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
@@ -167,6 +168,8 @@ public interface ReadonlyDataManager {
|
||||
/**
|
||||
* Creates a new {@link LoaderCallbacks} object for loading a client's configuration.
|
||||
*
|
||||
*
|
||||
* @param deviceConfigurationUuid
|
||||
* @param callback
|
||||
* {@link LoadClient} implementing your data handling code.
|
||||
* @return {@link LoaderCallbacks} to be used in
|
||||
@@ -174,7 +177,7 @@ public interface ReadonlyDataManager {
|
||||
* {@link LoaderManager#restartLoader(int, android.os.Bundle, LoaderCallbacks)}.
|
||||
*/
|
||||
LoaderCallbacks<DataLoaderResult<DeviceConfiguration>> createConfigurationLoader(
|
||||
String configurationName, LoadClient<DeviceConfiguration> callback);
|
||||
String deviceConfigurationName, UUID deviceConfigurationUuid, LoadClient<DeviceConfiguration> callback);
|
||||
|
||||
String getMapUrl(String baseUrl, ManagedRace race, String eventId, boolean showWindCharts, boolean showStreamlets,
|
||||
boolean showSimulation, boolean showMapControls);
|
||||
|
||||
+2
-1
@@ -401,8 +401,9 @@ public class LoginActivity extends BaseActivity implements EventSelectedListener
|
||||
private void setupDataManager() {
|
||||
showProgressSpinner();
|
||||
String deviceConfigurationName = AppPreferences.on(getApplicationContext()).getDeviceConfigurationName();
|
||||
UUID deviceConfigurationUuid = AppPreferences.on(getApplicationContext()).getDeviceConfigurationUuid();
|
||||
LoaderCallbacks<?> configurationLoader = dataManager.createConfigurationLoader(deviceConfigurationName,
|
||||
new LoadClient<DeviceConfiguration>() {
|
||||
deviceConfigurationUuid, new LoadClient<DeviceConfiguration>() {
|
||||
@Override
|
||||
public void onLoadFailed(Exception reason) {
|
||||
dismissProgressSpinner();
|
||||
|
||||
+4
-2
@@ -40,6 +40,7 @@ import com.sap.sailing.racecommittee.app.ui.views.decoration.PreferenceMarginIte
|
||||
import java.io.FileNotFoundException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class MainPreferenceFragment extends LoggableFragment {
|
||||
|
||||
@@ -72,9 +73,10 @@ public class MainPreferenceFragment extends LoggableFragment {
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
String configurationName = AppPreferences.on(getActivity()).getDeviceConfigurationName();
|
||||
String deviceConfigurationName = AppPreferences.on(getActivity()).getDeviceConfigurationName();
|
||||
UUID deviceConfigurationUuid = AppPreferences.on(getActivity()).getDeviceConfigurationUuid();
|
||||
LoaderManager.LoaderCallbacks<?> configurationLoader = DataManager.create(getActivity())
|
||||
.createConfigurationLoader(configurationName, new LoadClient<DeviceConfiguration>() {
|
||||
.createConfigurationLoader(deviceConfigurationName, deviceConfigurationUuid, new LoadClient<DeviceConfiguration>() {
|
||||
|
||||
@Override
|
||||
public void onLoadFailed(Exception reason) {
|
||||
|
||||
Regular → Executable
+9
-8
@@ -1,7 +1,9 @@
|
||||
package com.sap.sailing.racecommittee.app.utils;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URL;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.sap.sailing.android.shared.logging.ExLog;
|
||||
import com.sap.sailing.domain.common.impl.DeviceConfigurationQRCodeUtils;
|
||||
@@ -10,10 +12,9 @@ import com.sap.sailing.domain.common.impl.DeviceConfigurationQRCodeUtils.URLDeco
|
||||
import com.sap.sailing.racecommittee.app.R;
|
||||
import com.sap.sailing.racecommittee.app.utils.autoupdate.AutoUpdater;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.widget.Toast;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URL;
|
||||
import java.util.UUID;
|
||||
|
||||
public class QRHelper {
|
||||
private static final String TAG = QRHelper.class.getName();
|
||||
@@ -43,19 +44,19 @@ public class QRHelper {
|
||||
});
|
||||
|
||||
String identifier = connectionConfiguration.getDeviceIdentifier();
|
||||
UUID uuid = connectionConfiguration.getUuid();
|
||||
URL apkUrl = UrlHelper.tryConvertToURL(connectionConfiguration.getApkUrl());
|
||||
String accessToken = connectionConfiguration.getAccessToken();
|
||||
|
||||
if (apkUrl != null) {
|
||||
String serverUrl = UrlHelper.getServerUrl(apkUrl);
|
||||
|
||||
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mContext);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.putString(mContext.getString(R.string.preference_identifier_key), identifier);
|
||||
editor.putString(mContext.getString(R.string.preference_config_uuid_key), uuid==null?null:uuid.toString());
|
||||
editor.putString(mContext.getString(R.string.preference_server_url_key), serverUrl);
|
||||
editor.putString(mContext.getString(R.string.preference_access_token_key), accessToken);
|
||||
editor.apply();
|
||||
|
||||
new AutoUpdater(mContext).checkForUpdate(false);
|
||||
return true;
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user