Added checks on network status to data sharing status area

This commit is contained in:
Graham Jones
2022-02-01 22:40:05 +00:00
parent d2874cc031
commit 87088c63b9
4 changed files with 55 additions and 31 deletions

View File

@@ -574,12 +574,32 @@ public class MainActivity extends AppCompatActivity {
if (mConnection.mSdServer.mLogData) { if (mConnection.mSdServer.mLogData) {
if (mConnection.mSdServer.mLogDataRemote) { if (mConnection.mSdServer.mLogDataRemote) {
if (mConnection.mSdServer.mLm.mWac.isLoggedIn()) { if (mConnection.mSdServer.mLm.mWac.isLoggedIn()) {
tv = (TextView) findViewById(R.id.remoteDbTv); if (!mConnection.mSdServer.mLogDataRemoteMobile) {
tv.setText(getString(R.string.data_sharing_status) Log.v(TAG,"mLogDataRemoteMobile="+mConnection.mSdServer.mLogDataRemoteMobile);
+": " Log.v(TAG,"mUtil.isMobileDataActive="+mUtil.isMobileDataActive());
+getString(R.string.data_sharing_setup_ok)); if (mUtil.isMobileDataActive()) {
tv.setBackgroundColor(okColour); tv = (TextView) findViewById(R.id.remoteDbTv);
tv.setTextColor(okTextColour); 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 { } else {
tv = (TextView) findViewById(R.id.remoteDbTv); tv = (TextView) findViewById(R.id.remoteDbTv);
tv.setText(getString(R.string.data_sharing_status) tv.setText(getString(R.string.data_sharing_status)

View File

@@ -136,7 +136,7 @@ public class SdServer extends Service implements SdDataReceiver {
private boolean mLogAlarms = true; private boolean mLogAlarms = true;
public boolean mLogData = false; public boolean mLogData = false;
public boolean mLogDataRemote = false; public boolean mLogDataRemote = false;
private boolean mLogDataRemoteMobile = false; public boolean mLogDataRemoteMobile = false;
private String mAuthToken = null; private String mAuthToken = null;
private long mEventDuration = 120; // event duration in seconds - uploads datapoints that cover this time range centred on the event time. 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) public long mDataRetentionPeriod = 1; // Prunes the local db so it only retains data younger than this duration (in days)

View File

@@ -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 * 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. * 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) * @param callback - call back function callback(String retVal)
* @return true if request sent, or false if failed to send request. * @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); String responseBody = new String(error.networkResponse.data);
Log.e(TAG, "Login Error: " + error.toString() + ", message:" + error.getMessage() + ", Response Code:" + error.networkResponse.statusCode + ", Response: " + responseBody); Log.e(TAG, "Login Error: " + error.toString() + ", message:" + error.getMessage() + ", Response Code:" + error.networkResponse.statusCode + ", Response: " + responseBody);
} else { } else {
Log.e(TAG,"Login Error: Returned null response"); Log.e(TAG, "Login Error: Returned null response");
} }
setStoredToken(null); setStoredToken(null);
callback.accept(null); callback.accept(null);
@@ -122,7 +123,7 @@ public class WebApiConnection {
} }
private String getStoredToken() { private String getStoredToken() {
return(mAuthToken); return (mAuthToken);
} }
public boolean isLoggedIn() { 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); Log.e(TAG, "Create Event Error: " + error.toString() + ", message:" + error.getMessage() + ", Response Code:" + error.networkResponse.statusCode + ", Response: " + responseBody);
callback.accept(null); callback.accept(null);
} else { } else {
Log.e(TAG,"Create Event Error - null respones"); Log.e(TAG, "Create Event Error - null respones");
callback.accept(null); callback.accept(null);
} }
} }
@@ -219,7 +220,7 @@ public class WebApiConnection {
public boolean getEvent(Long eventId, Consumer<JSONObject> callback) { public boolean getEvent(Long eventId, Consumer<JSONObject> callback) {
//Long eventId=Long.valueOf(285); //Long eventId=Long.valueOf(285);
Log.v(TAG, "getEvent()"); Log.v(TAG, "getEvent()");
String urlStr = mUrlBase + "/api/events/"+eventId; String urlStr = mUrlBase + "/api/events/" + eventId;
Log.v(TAG, "getEvent(): urlStr=" + urlStr); Log.v(TAG, "getEvent(): urlStr=" + urlStr);
final String authtoken = getStoredToken(); final String authtoken = getStoredToken();
@@ -235,10 +236,10 @@ public class WebApiConnection {
Log.v(TAG, "Response is: " + response); Log.v(TAG, "Response is: " + response);
try { try {
JSONObject retObj = new JSONObject(response); JSONObject retObj = new JSONObject(response);
retObj.put("alarmStateStr",mUtil.alarmStatusToString(retObj.getInt("osdAlarmState"))); retObj.put("alarmStateStr", mUtil.alarmStatusToString(retObj.getInt("osdAlarmState")));
callback.accept(retObj); callback.accept(retObj);
} catch (JSONException e) { } 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); 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 * Retrieve all events accessible to the logged in user, and pass them to the callback function as a JSONObject
*
* @param callback * @param callback
* @return true on success or false on failure to initiate the request. * @return true on success or false on failure to initiate the request.
*/ */
@@ -296,7 +298,7 @@ public class WebApiConnection {
retObj.put("events", eventArray); retObj.put("events", eventArray);
callback.accept(retObj); callback.accept(retObj);
} catch (JSONException e) { } 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); callback.accept(null);
} }
} }
@@ -304,11 +306,12 @@ public class WebApiConnection {
new Response.ErrorListener() { new Response.ErrorListener() {
@Override @Override
public void onErrorResponse(VolleyError error) { public void onErrorResponse(VolleyError error) {
//if ((error != null) && (error.networkResponse != null) && (error.networkResponse.data != null)) {
if (error != null) { if (error != null) {
String responseBody = new String(error.networkResponse.data); String responseBody = new String(error.networkResponse.data);
Log.e(TAG, "getEvents(): Error: " + error.toString() + ", message:" + error.getMessage() + ", Response Code:" + error.networkResponse.statusCode + ", Response: " + responseBody); Log.e(TAG, "getEvents(): Error: " + error.toString() + ", message:" + error.getMessage() + ", Response Code:" + error.networkResponse.statusCode + ", Response: " + responseBody);
} else { } else{
Log.e(TAG,"getEvents(): Error: - request returned null response"); Log.e(TAG, "getEvents(): Error: - request returned null response");
} }
callback.accept(null); callback.accept(null);
} }
@@ -340,7 +343,7 @@ public class WebApiConnection {
eventId = eventObj.getLong("id"); eventId = eventObj.getLong("id");
} catch (JSONException e) { } catch (JSONException e) {
Log.e(TAG, "updateEvent(): Error reading id from eventObj"); Log.e(TAG, "updateEvent(): Error reading id from eventObj");
eventId= Long.valueOf(-1); eventId = Long.valueOf(-1);
} }
final String dataStr = eventObj.toString(); final String dataStr = eventObj.toString();
Log.v(TAG, "createEvent - data=" + dataStr); Log.v(TAG, "createEvent - data=" + dataStr);
@@ -348,12 +351,13 @@ public class WebApiConnection {
int reqMethod; int reqMethod;
String urlStr; String urlStr;
if (eventId!=-1) { if (eventId != -1) {
Log.v(TAG,"updateEvent() - found eventId "+eventId+", Updating event record");urlStr = mUrlBase + "/api/events/"+eventId+"/"; Log.v(TAG, "updateEvent() - found eventId " + eventId + ", Updating event record");
urlStr = mUrlBase + "/api/events/" + eventId + "/";
Log.v(TAG, "urlStr=" + urlStr); Log.v(TAG, "urlStr=" + urlStr);
reqMethod = Request.Method.PUT; reqMethod = Request.Method.PUT;
} else { } 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/"; urlStr = mUrlBase + "/api/events/";
Log.v(TAG, "urlStr=" + urlStr); Log.v(TAG, "urlStr=" + urlStr);
reqMethod = Request.Method.POST; reqMethod = Request.Method.POST;
@@ -368,7 +372,7 @@ public class WebApiConnection {
JSONObject retObj = new JSONObject(response); JSONObject retObj = new JSONObject(response);
callback.accept(retObj); callback.accept(retObj);
} catch (JSONException e) { } 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); callback.accept(null);
} }
} }
@@ -380,7 +384,7 @@ public class WebApiConnection {
String responseBody = new String(error.networkResponse.data); 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); Log.e(TAG, "Create Event Error: " + error.toString() + ", message:" + error.getMessage() + ", Response Code:" + error.networkResponse.statusCode + ", Response: " + responseBody);
} else { } else {
Log.e(TAG,"Create Event Error - returned null response"); Log.e(TAG, "Create Event Error - returned null response");
} }
callback.accept(null); callback.accept(null);
} }
@@ -423,9 +427,7 @@ public class WebApiConnection {
} }
public boolean createDatapoint(JSONObject dataObj, int eventId, Consumer<String> callback) {
public boolean createDatapoint(JSONObject dataObj, int eventId, Consumer<String>callback) {
Log.v(TAG, "createDatapoint()"); Log.v(TAG, "createDatapoint()");
// Create a new event in the remote database, based on the provided parameters. // Create a new event in the remote database, based on the provided parameters.
String urlStr = mUrlBase + "/api/datapoints/"; 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); Log.e(TAG, "Create Datapoint Error: " + error.toString() + ", message:" + error.getMessage() + ", Response Code:" + error.networkResponse.statusCode + ", Response: " + responseBody);
callback.accept(null); callback.accept(null);
} else { } else {
Log.e(TAG,"Create Datapoint Error - returned null respones"); Log.e(TAG, "Create Datapoint Error - returned null respones");
callback.accept(null); callback.accept(null);
} }
} }
@@ -512,7 +514,8 @@ public class WebApiConnection {
* Retrieve the file containing the standard event types from the server. * 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. * 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 * 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. * @return true if request sent successfully or else false.
*/ */
public boolean getEventTypes(Consumer<JSONObject> callback) { public boolean getEventTypes(Consumer<JSONObject> callback) {
@@ -535,7 +538,7 @@ public class WebApiConnection {
JSONObject retObj = new JSONObject(response); JSONObject retObj = new JSONObject(response);
callback.accept(retObj); callback.accept(retObj);
} catch (JSONException e) { } 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); callback.accept(null);
} }
} }
@@ -547,7 +550,7 @@ public class WebApiConnection {
String responseBody = new String(error.networkResponse.data); String responseBody = new String(error.networkResponse.data);
Log.e(TAG, "getEventTypes.onErrorResponse(): " + error.toString() + ", message:" + error.getMessage() + ", Response Code:" + error.networkResponse.statusCode + ", Response: " + responseBody); Log.e(TAG, "getEventTypes.onErrorResponse(): " + error.toString() + ", message:" + error.getMessage() + ", Response Code:" + error.networkResponse.statusCode + ", Response: " + responseBody);
} else { } else {
Log.e(TAG,"getEventTypes.onErrorResponse() - returned null response"); Log.e(TAG, "getEventTypes.onErrorResponse() - returned null response");
} }
callback.accept(null); callback.accept(null);
} }

View File

@@ -338,4 +338,5 @@
<string name="data_sharing_setup_ok">Data Sharing Setup OK</string> <string name="data_sharing_setup_ok">Data Sharing Setup OK</string>
<string name="please_confirm_seizure_events">Please Check your Shared Seizure Events</string> <string name="please_confirm_seizure_events">Please Check your Shared Seizure Events</string>
<string name="data_sharing_log_in">Data Sharing Log-In</string> <string name="data_sharing_log_in">Data Sharing Log-In</string>
<string name="not_updating_mobile">Not Updating using Mobile Internet</string>
</resources> </resources>