Got event editor working and manual reporting of seizures. Fixed a few crashes from event upload so should probably check the logic because I don't think it should have crashed!
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
package="uk.org.openseizuredetector"
|
package="uk.org.openseizuredetector"
|
||||||
android:versionCode="9"
|
android:versionCode="99"
|
||||||
android:versionName="4.1.0">
|
android:versionName="4.1.0">
|
||||||
<!-- android:allowBackup="false" -->
|
<!-- android:allowBackup="false" -->
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||||
|
|||||||
@@ -287,15 +287,7 @@ public class LogManager {
|
|||||||
|
|
||||||
if (sdData.alarmState != 0) {
|
if (sdData.alarmState != 0) {
|
||||||
Log.i(TAG, "writeDatapointToLocalDb(): adding event to local DB");
|
Log.i(TAG, "writeDatapointToLocalDb(): adding event to local DB");
|
||||||
// Write Datapoint to database
|
createLocalEvent(dateStr, sdData.alarmState);
|
||||||
SQLStr = "INSERT INTO " + mEventsTableName
|
|
||||||
+ "(dataTime, status)"
|
|
||||||
+ " VALUES("
|
|
||||||
+ "'" + dateStr + "',"
|
|
||||||
+ sdData.alarmState
|
|
||||||
+ ")";
|
|
||||||
mOsdDb.execSQL(SQLStr);
|
|
||||||
Log.v(TAG, "writeDatapointToLocalDb(): event written to database");
|
|
||||||
}
|
}
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
Log.e(TAG, "writeToLocalDb(): Error Writing Data: " + e.toString());
|
Log.e(TAG, "writeToLocalDb(): Error Writing Data: " + e.toString());
|
||||||
@@ -305,6 +297,20 @@ public class LogManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean createLocalEvent(String dataTime, long status) {
|
||||||
|
// Expects dataTime to be in format: SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
|
Log.d(TAG,"createLocalEvent() - dataTime="+dataTime+", status="+status);
|
||||||
|
// Write Datapoint to database
|
||||||
|
String SQLStr = "INSERT INTO " + mEventsTableName
|
||||||
|
+ "(dataTime, status)"
|
||||||
|
+ " VALUES("
|
||||||
|
+ "'" + dataTime + "',"
|
||||||
|
+ status
|
||||||
|
+ ")";
|
||||||
|
mOsdDb.execSQL(SQLStr);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a json representation of locally stored event 'id'.
|
* Returns a json representation of locally stored event 'id'.
|
||||||
*
|
*
|
||||||
@@ -872,6 +878,7 @@ public class LogManager {
|
|||||||
// datapointCallback is called when the upload is complete.
|
// datapointCallback is called when the upload is complete.
|
||||||
public void uploadNextDatapoint() {
|
public void uploadNextDatapoint() {
|
||||||
//Log.v(TAG, "uploadNextDatapoint()");
|
//Log.v(TAG, "uploadNextDatapoint()");
|
||||||
|
if (mDatapointsToUploadList != null) {
|
||||||
if (mDatapointsToUploadList.size() > 0) {
|
if (mDatapointsToUploadList.size() > 0) {
|
||||||
mUploadInProgress = true;
|
mUploadInProgress = true;
|
||||||
try {
|
try {
|
||||||
@@ -883,14 +890,17 @@ public class LogManager {
|
|||||||
uploadNextDatapoint();
|
uploadNextDatapoint();
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.v(TAG, "uploadNextDatapoint() - "+ mDatapointsToUploadList.size()+" datapoints to upload. Uploading datapoint ID:" + mCurrentDatapointId);
|
Log.v(TAG, "uploadNextDatapoint() - " + mDatapointsToUploadList.size() + " datapoints to upload. Uploading datapoint ID:" + mCurrentDatapointId);
|
||||||
mWac.createDatapoint(mDatapointsToUploadList.get(0), mCurrentEventRemoteId, this::datapointCallback);
|
mWac.createDatapoint(mDatapointsToUploadList.get(0), mCurrentEventRemoteId, this::datapointCallback);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Log.i(TAG,"uploadNextDatapoint() - All datapoints uploaded!");
|
Log.i(TAG, "uploadNextDatapoint() - All datapoints uploaded!");
|
||||||
setEventToUploaded(mCurrentEventLocalId, mCurrentEventRemoteId);
|
setEventToUploaded(mCurrentEventLocalId, mCurrentEventRemoteId);
|
||||||
finishUpload();
|
finishUpload();
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
Log.w(TAG,"uploadNextDatapoint - mDatapointsToUploadList is null - I don't thin this should have happened!");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called by WebApiConnection when a new datapoint is created. It assumes that we have just created
|
// Called by WebApiConnection when a new datapoint is created. It assumes that we have just created
|
||||||
@@ -898,9 +908,13 @@ public class LogManager {
|
|||||||
// to upload the next one.
|
// to upload the next one.
|
||||||
public void datapointCallback(String datapointStr) {
|
public void datapointCallback(String datapointStr) {
|
||||||
Log.v(TAG, "datapointCallback() dataPointId="+mCurrentDatapointId+" remote datapointID=" + datapointStr + ", mCurrentEventId=" + mCurrentEventRemoteId);
|
Log.v(TAG, "datapointCallback() dataPointId="+mCurrentDatapointId+" remote datapointID=" + datapointStr + ", mCurrentEventId=" + mCurrentEventRemoteId);
|
||||||
|
if (mDatapointsToUploadList != null) {
|
||||||
if (mDatapointsToUploadList.size() > 0) {
|
if (mDatapointsToUploadList.size() > 0) {
|
||||||
mDatapointsToUploadList.remove(0);
|
mDatapointsToUploadList.remove(0);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
Log.w(TAG,"datapointCallback - mDatapointsToUploadList is null - I don't thin this should have happened!");
|
||||||
|
}
|
||||||
setDatapointToUploaded(mCurrentDatapointId, mCurrentEventRemoteId);
|
setDatapointToUploaded(mCurrentDatapointId, mCurrentEventRemoteId);
|
||||||
uploadNextDatapoint();
|
uploadNextDatapoint();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import android.widget.DatePicker;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.TimePicker;
|
import android.widget.TimePicker;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -142,22 +143,12 @@ public class ReportSeizureActivity extends AppCompatActivity {
|
|||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
Log.v(TAG, "onOk");
|
Log.v(TAG, "onOk");
|
||||||
|
//SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
String dateStr=String.format("%4d-%02d-%02d %02d:%02d:30",mYear,mMonth+1,mDay, mHour, mMinute);
|
String dateStr=String.format("%4d-%02d-%02d %02d:%02d:30",mYear,mMonth+1,mDay, mHour, mMinute);
|
||||||
Log.v(TAG, "onOk() - dateSTr="+dateStr);
|
Log.v(TAG, "onOk() - dateSTr="+dateStr);
|
||||||
mMsg = "Finding Nearest Datapoint to Date/Time "+dateStr+"...";
|
mLm.createLocalEvent(dateStr,5);
|
||||||
mLm.getNearestDatapointToDate(dateStr, (Long id) -> {
|
mUtil.showToast("Seizure Event Created");
|
||||||
mMsg = mMsg + "\nNearest Datapoint is "+id;
|
|
||||||
Log.v(TAG, "onOK() - nearest datapoint is "+id);
|
|
||||||
if (id!=-1) {
|
|
||||||
mLm.setDatapointStatus(id,5);
|
|
||||||
mMsg = mMsg + "\nSet Datapoint to Manual Alarm Status";
|
|
||||||
mUtil.showToast(getString(R.string.createdNewEvent));
|
|
||||||
finish();
|
finish();
|
||||||
} else {
|
|
||||||
mMsg = mMsg + "\n*** Datapoint not found - not doing anything ***";
|
|
||||||
mUtil.showToast(getString(R.string.DatapointNotFound));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
View.OnClickListener onCancel =
|
View.OnClickListener onCancel =
|
||||||
|
|||||||
@@ -95,10 +95,15 @@ public class WebApiConnection {
|
|||||||
public boolean isLoggedIn() {
|
public boolean isLoggedIn() {
|
||||||
FirebaseAuth auth = FirebaseAuth.getInstance();
|
FirebaseAuth auth = FirebaseAuth.getInstance();
|
||||||
if (auth != null) {
|
if (auth != null) {
|
||||||
Log.v(TAG, "isLoggedIn(): Firebase Logged in OK");
|
if (auth.getCurrentUser() != null) {
|
||||||
|
//Log.v(TAG, "isLoggedIn(): Firebase Logged in OK");
|
||||||
return (true);
|
return (true);
|
||||||
} else {
|
} else {
|
||||||
Log.v(TAG, "isLoggedIn(): Firebase not logged in");
|
//Log.v(TAG, "isLoggedIn(): Current user is null - Firebase not logged in");
|
||||||
|
return (false);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//Log.v(TAG, "isLoggedIn(): Firebase not logged in");
|
||||||
return (false);
|
return (false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -205,6 +210,11 @@ public class WebApiConnection {
|
|||||||
Log.w(TAG, "getEvents() - mDb is null - not doing anything");
|
Log.w(TAG, "getEvents() - mDb is null - not doing anything");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!isLoggedIn()) {
|
||||||
|
Log.w(TAG, "getEvents() - not logged in - not doing anything");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
|
String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
|
||||||
mDb.collection("Events") //.where("userId", "==", userId)
|
mDb.collection("Events") //.where("userId", "==", userId)
|
||||||
.whereEqualTo("userId", userId)
|
.whereEqualTo("userId", userId)
|
||||||
@@ -240,21 +250,6 @@ public class WebApiConnection {
|
|||||||
return (true);
|
return (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, Object> jsonObjectToMap(JSONObject obj) {
|
|
||||||
try {
|
|
||||||
Map<String, Object> retMap = new HashMap<String, Object>();
|
|
||||||
for (Iterator<String> it = obj.keys(); it.hasNext(); ) {
|
|
||||||
String keyStr = it.next();
|
|
||||||
Log.v(TAG, "jsonObjecToMap()- keyStr=" + keyStr + ", obj=" + obj.get(keyStr));
|
|
||||||
retMap.put(keyStr, obj.get(keyStr));
|
|
||||||
}
|
|
||||||
return (retMap);
|
|
||||||
} catch (JSONException e) {
|
|
||||||
Log.e(TAG, "jsonObjectToMap() - Error Converting JSONObject" + obj.toString() + ": " + e.toString());
|
|
||||||
return (null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateEvent(final JSONObject eventObj, JSONObjectCallback callback) {
|
public boolean updateEvent(final JSONObject eventObj, JSONObjectCallback callback) {
|
||||||
String eventId;
|
String eventId;
|
||||||
Log.v(TAG, "updateEvent()");
|
Log.v(TAG, "updateEvent()");
|
||||||
@@ -272,7 +267,19 @@ public class WebApiConnection {
|
|||||||
}
|
}
|
||||||
final String dataStr = eventObj.toString();
|
final String dataStr = eventObj.toString();
|
||||||
Log.v(TAG, "updateEvent - data=" + dataStr);
|
Log.v(TAG, "updateEvent - data=" + dataStr);
|
||||||
Map<String, Object> eventMap = jsonObjectToMap(eventObj);
|
Map<String, Object> eventMap = new HashMap<>();
|
||||||
|
try {
|
||||||
|
eventMap.put("dataTime", eventObj.getLong("dataTime"));
|
||||||
|
eventMap.put("osdAlarmState", eventObj.getInt("osdAlarmState"));
|
||||||
|
eventMap.put("desc", eventObj.getString("desc"));
|
||||||
|
eventMap.put("type", eventObj.getString("type"));
|
||||||
|
eventMap.put("subType", eventObj.getString("subType"));
|
||||||
|
eventMap.put("userId", eventObj.getString("userId"));
|
||||||
|
} catch (JSONException e) {
|
||||||
|
Log.e(TAG, "updateEvent(): Error data from eventObj." + e.toString());
|
||||||
|
e.printStackTrace();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
Log.v(TAG, "updateEvent - map=" + eventMap.toString());
|
Log.v(TAG, "updateEvent - map=" + eventMap.toString());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
Reference in New Issue
Block a user