From 87088c63b92753d3146619895506b4ca88f3f263 Mon Sep 17 00:00:00 2001 From: Graham Jones Date: Tue, 1 Feb 2022 22:40:05 +0000 Subject: [PATCH] Added checks on network status to data sharing status area --- .../org/openseizuredetector/MainActivity.java | 32 +++++++++--- .../uk/org/openseizuredetector/SdServer.java | 2 +- .../openseizuredetector/WebApiConnection.java | 51 ++++++++++--------- app/src/main/res/values/strings.xml | 1 + 4 files changed, 55 insertions(+), 31 deletions(-) diff --git a/app/src/main/java/uk/org/openseizuredetector/MainActivity.java b/app/src/main/java/uk/org/openseizuredetector/MainActivity.java index 6de47ce..9ed902d 100644 --- a/app/src/main/java/uk/org/openseizuredetector/MainActivity.java +++ b/app/src/main/java/uk/org/openseizuredetector/MainActivity.java @@ -574,12 +574,32 @@ public class MainActivity extends AppCompatActivity { if (mConnection.mSdServer.mLogData) { if (mConnection.mSdServer.mLogDataRemote) { if (mConnection.mSdServer.mLm.mWac.isLoggedIn()) { - tv = (TextView) findViewById(R.id.remoteDbTv); - tv.setText(getString(R.string.data_sharing_status) - +": " - +getString(R.string.data_sharing_setup_ok)); - tv.setBackgroundColor(okColour); - tv.setTextColor(okTextColour); + if (!mConnection.mSdServer.mLogDataRemoteMobile) { + Log.v(TAG,"mLogDataRemoteMobile="+mConnection.mSdServer.mLogDataRemoteMobile); + Log.v(TAG,"mUtil.isMobileDataActive="+mUtil.isMobileDataActive()); + if (mUtil.isMobileDataActive()) { + tv = (TextView) findViewById(R.id.remoteDbTv); + tv.setText(getString(R.string.data_sharing_status) + + ": " + + getString(R.string.not_updating_mobile)); + tv.setBackgroundColor(warnColour); + tv.setTextColor(warnTextColour); + } else { + tv = (TextView) findViewById(R.id.remoteDbTv); + tv.setText(getString(R.string.data_sharing_status) + + ": " + + getString(R.string.data_sharing_setup_ok)); + tv.setBackgroundColor(okColour); + tv.setTextColor(okTextColour); + } + } else { + tv = (TextView) findViewById(R.id.remoteDbTv); + tv.setText(getString(R.string.data_sharing_status) + + ": " + + getString(R.string.data_sharing_setup_ok)); + tv.setBackgroundColor(okColour); + tv.setTextColor(okTextColour); + } } else { tv = (TextView) findViewById(R.id.remoteDbTv); tv.setText(getString(R.string.data_sharing_status) diff --git a/app/src/main/java/uk/org/openseizuredetector/SdServer.java b/app/src/main/java/uk/org/openseizuredetector/SdServer.java index dcba79c..9be0873 100644 --- a/app/src/main/java/uk/org/openseizuredetector/SdServer.java +++ b/app/src/main/java/uk/org/openseizuredetector/SdServer.java @@ -136,7 +136,7 @@ public class SdServer extends Service implements SdDataReceiver { private boolean mLogAlarms = true; public boolean mLogData = false; public boolean mLogDataRemote = false; - private boolean mLogDataRemoteMobile = false; + public boolean mLogDataRemoteMobile = false; private String mAuthToken = null; private long mEventDuration = 120; // event duration in seconds - uploads datapoints that cover this time range centred on the event time. public long mDataRetentionPeriod = 1; // Prunes the local db so it only retains data younger than this duration (in days) diff --git a/app/src/main/java/uk/org/openseizuredetector/WebApiConnection.java b/app/src/main/java/uk/org/openseizuredetector/WebApiConnection.java index e3e6fcb..7910bf9 100644 --- a/app/src/main/java/uk/org/openseizuredetector/WebApiConnection.java +++ b/app/src/main/java/uk/org/openseizuredetector/WebApiConnection.java @@ -52,8 +52,9 @@ public class WebApiConnection { /** * Attempt to authenticate with the web API using user name uname and password passwd. Calls function callback with either * the authentication token on success or null on failure. - * @param uname - user name - * @param passwd - password + * + * @param uname - user name + * @param passwd - password * @param callback - call back function callback(String retVal) * @return true if request sent, or false if failed to send request. */ @@ -89,7 +90,7 @@ public class WebApiConnection { String responseBody = new String(error.networkResponse.data); Log.e(TAG, "Login Error: " + error.toString() + ", message:" + error.getMessage() + ", Response Code:" + error.networkResponse.statusCode + ", Response: " + responseBody); } else { - Log.e(TAG,"Login Error: Returned null response"); + Log.e(TAG, "Login Error: Returned null response"); } setStoredToken(null); callback.accept(null); @@ -122,7 +123,7 @@ public class WebApiConnection { } private String getStoredToken() { - return(mAuthToken); + return (mAuthToken); } public boolean isLoggedIn() { @@ -177,7 +178,7 @@ public class WebApiConnection { Log.e(TAG, "Create Event Error: " + error.toString() + ", message:" + error.getMessage() + ", Response Code:" + error.networkResponse.statusCode + ", Response: " + responseBody); callback.accept(null); } else { - Log.e(TAG,"Create Event Error - null respones"); + Log.e(TAG, "Create Event Error - null respones"); callback.accept(null); } } @@ -219,7 +220,7 @@ public class WebApiConnection { public boolean getEvent(Long eventId, Consumer callback) { //Long eventId=Long.valueOf(285); Log.v(TAG, "getEvent()"); - String urlStr = mUrlBase + "/api/events/"+eventId; + String urlStr = mUrlBase + "/api/events/" + eventId; Log.v(TAG, "getEvent(): urlStr=" + urlStr); final String authtoken = getStoredToken(); @@ -235,10 +236,10 @@ public class WebApiConnection { Log.v(TAG, "Response is: " + response); try { JSONObject retObj = new JSONObject(response); - retObj.put("alarmStateStr",mUtil.alarmStatusToString(retObj.getInt("osdAlarmState"))); + retObj.put("alarmStateStr", mUtil.alarmStatusToString(retObj.getInt("osdAlarmState"))); callback.accept(retObj); } catch (JSONException e) { - Log.e(TAG,"getEventTypes.onRespons(): Error: "+e.getMessage()+","+e.toString()); + Log.e(TAG, "getEventTypes.onRespons(): Error: " + e.getMessage() + "," + e.toString()); callback.accept(null); } } @@ -270,6 +271,7 @@ public class WebApiConnection { /** * Retrieve all events accessible to the logged in user, and pass them to the callback function as a JSONObject + * * @param callback * @return true on success or false on failure to initiate the request. */ @@ -296,7 +298,7 @@ public class WebApiConnection { retObj.put("events", eventArray); callback.accept(retObj); } catch (JSONException e) { - Log.e(TAG,"getEventTypes.onRespons(): Error: "+e.getMessage()+","+e.toString()); + Log.e(TAG, "getEventTypes.onRespons(): Error: " + e.getMessage() + "," + e.toString()); callback.accept(null); } } @@ -304,11 +306,12 @@ public class WebApiConnection { new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { + //if ((error != null) && (error.networkResponse != null) && (error.networkResponse.data != null)) { if (error != null) { String responseBody = new String(error.networkResponse.data); Log.e(TAG, "getEvents(): Error: " + error.toString() + ", message:" + error.getMessage() + ", Response Code:" + error.networkResponse.statusCode + ", Response: " + responseBody); - } else { - Log.e(TAG,"getEvents(): Error: - request returned null response"); + } else{ + Log.e(TAG, "getEvents(): Error: - request returned null response"); } callback.accept(null); } @@ -340,7 +343,7 @@ public class WebApiConnection { eventId = eventObj.getLong("id"); } catch (JSONException e) { Log.e(TAG, "updateEvent(): Error reading id from eventObj"); - eventId= Long.valueOf(-1); + eventId = Long.valueOf(-1); } final String dataStr = eventObj.toString(); Log.v(TAG, "createEvent - data=" + dataStr); @@ -348,12 +351,13 @@ public class WebApiConnection { int reqMethod; String urlStr; - if (eventId!=-1) { - Log.v(TAG,"updateEvent() - found eventId "+eventId+", Updating event record");urlStr = mUrlBase + "/api/events/"+eventId+"/"; + if (eventId != -1) { + Log.v(TAG, "updateEvent() - found eventId " + eventId + ", Updating event record"); + urlStr = mUrlBase + "/api/events/" + eventId + "/"; Log.v(TAG, "urlStr=" + urlStr); reqMethod = Request.Method.PUT; } else { - Log.v(TAG,"updateEvent() - eventId not found - creating new event record"); + Log.v(TAG, "updateEvent() - eventId not found - creating new event record"); urlStr = mUrlBase + "/api/events/"; Log.v(TAG, "urlStr=" + urlStr); reqMethod = Request.Method.POST; @@ -368,7 +372,7 @@ public class WebApiConnection { JSONObject retObj = new JSONObject(response); callback.accept(retObj); } catch (JSONException e) { - Log.e(TAG,"getEventTypes.onRespons(): Error: "+e.getMessage()+","+e.toString()); + Log.e(TAG, "getEventTypes.onRespons(): Error: " + e.getMessage() + "," + e.toString()); callback.accept(null); } } @@ -380,7 +384,7 @@ public class WebApiConnection { String responseBody = new String(error.networkResponse.data); Log.e(TAG, "Create Event Error: " + error.toString() + ", message:" + error.getMessage() + ", Response Code:" + error.networkResponse.statusCode + ", Response: " + responseBody); } else { - Log.e(TAG,"Create Event Error - returned null response"); + Log.e(TAG, "Create Event Error - returned null response"); } callback.accept(null); } @@ -423,9 +427,7 @@ public class WebApiConnection { } - - - public boolean createDatapoint(JSONObject dataObj, int eventId, Consumercallback) { + public boolean createDatapoint(JSONObject dataObj, int eventId, Consumer callback) { Log.v(TAG, "createDatapoint()"); // Create a new event in the remote database, based on the provided parameters. String urlStr = mUrlBase + "/api/datapoints/"; @@ -468,7 +470,7 @@ public class WebApiConnection { Log.e(TAG, "Create Datapoint Error: " + error.toString() + ", message:" + error.getMessage() + ", Response Code:" + error.networkResponse.statusCode + ", Response: " + responseBody); callback.accept(null); } else { - Log.e(TAG,"Create Datapoint Error - returned null respones"); + Log.e(TAG, "Create Datapoint Error - returned null respones"); callback.accept(null); } } @@ -512,7 +514,8 @@ public class WebApiConnection { * Retrieve the file containing the standard event types from the server. * Calls the specified callback function, passing a JSONObject as a parameter when the data has been received and parsed. * Note it uses a Consumer callback function to avoid having to create another interface - * - see https://medium.com/@pra4mesh/callback-function-in-java-20fa48b27797 + * - see https://medium.com/@pra4mesh/callback-function-in-java-20fa48b27797 + * * @return true if request sent successfully or else false. */ public boolean getEventTypes(Consumer callback) { @@ -535,7 +538,7 @@ public class WebApiConnection { JSONObject retObj = new JSONObject(response); callback.accept(retObj); } catch (JSONException e) { - Log.e(TAG,"getEventTypes.onRespons(): Error: "+e.getMessage()+","+e.toString()); + Log.e(TAG, "getEventTypes.onRespons(): Error: " + e.getMessage() + "," + e.toString()); callback.accept(null); } } @@ -547,7 +550,7 @@ public class WebApiConnection { String responseBody = new String(error.networkResponse.data); Log.e(TAG, "getEventTypes.onErrorResponse(): " + error.toString() + ", message:" + error.getMessage() + ", Response Code:" + error.networkResponse.statusCode + ", Response: " + responseBody); } else { - Log.e(TAG,"getEventTypes.onErrorResponse() - returned null response"); + Log.e(TAG, "getEventTypes.onErrorResponse() - returned null response"); } callback.accept(null); } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 23e5a38..aaa1552 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -338,4 +338,5 @@ Data Sharing Setup OK Please Check your Shared Seizure Events Data Sharing Log-In + Not Updating using Mobile Internet