From 68bf89b0ff965df36fd15cc8999d679eeeecd392 Mon Sep 17 00:00:00 2001 From: Graham Jones Date: Tue, 4 Jan 2022 21:08:33 +0000 Subject: [PATCH] Added prune database option to limit size of local database --- .../AuthenticateActivity.java | 9 +++++ .../org/openseizuredetector/LogManager.java | 37 +++++++++++++------ .../main/res/layout/activity_authenticate.xml | 2 +- 3 files changed, 36 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/uk/org/openseizuredetector/AuthenticateActivity.java b/app/src/main/java/uk/org/openseizuredetector/AuthenticateActivity.java index 52f54ec..250c51e 100644 --- a/app/src/main/java/uk/org/openseizuredetector/AuthenticateActivity.java +++ b/app/src/main/java/uk/org/openseizuredetector/AuthenticateActivity.java @@ -150,6 +150,15 @@ public class AuthenticateActivity extends AppCompatActivity }; View.OnClickListener onCreateDatapoint = + new View.OnClickListener() { + @Override + public void onClick(View view) { + Log.v(TAG, "onCreateDatapoint - Pruning database"); + mLm.pruneLocalDb(); + } + }; + + View.OnClickListener onCreateDatapointOld = new View.OnClickListener() { @Override public void onClick(View view) { diff --git a/app/src/main/java/uk/org/openseizuredetector/LogManager.java b/app/src/main/java/uk/org/openseizuredetector/LogManager.java index cd141e5..736808c 100644 --- a/app/src/main/java/uk/org/openseizuredetector/LogManager.java +++ b/app/src/main/java/uk/org/openseizuredetector/LogManager.java @@ -29,26 +29,15 @@ import android.database.DatabaseUtils; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; -import android.os.AsyncTask; import android.os.CountDownTimer; import android.os.Handler; import android.text.format.Time; import android.util.Log; -import org.apache.commons.codec.binary.Base64; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.io.Reader; -import java.io.UnsupportedEncodingException; -import java.net.HttpURLConnection; -import java.net.URL; -import java.nio.charset.StandardCharsets; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -93,6 +82,7 @@ public class LogManager implements AuthCallbackInterface, EventCallbackInterface private boolean mUploadInProgress; private int mUploadingDatapointId; private long eventDuration = 1; // event duration in minutes - uploads datapoints that cover this time range centred on the event time. + private long mLocaDbTimeLimitDays = 1; // Prunes the local db so it only retains data younger than this duration. private ArrayList mDatapointsToUploadList; private int mCurrentEventId; private int mCurrentDatapointId; @@ -290,6 +280,31 @@ public class LogManager implements AuthCallbackInterface, EventCallbackInterface } + /** + * pruneLocalDb() removes data that is older than mLocalDbMaxAgeDays days + * */ + public int pruneLocalDb() { + Log.d(TAG,"pruneLocalDb()"); + Cursor c = null; + int retVal; + long currentDateMillis = new Date().getTime(); + //long endDateMillis = currentDateMillis - 24*3600*1000* mLocaDbTimeLimitDays; + long endDateMillis = currentDateMillis - 3600*1000* mLocaDbTimeLimitDays; // Using hours rather than days for testing + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + String endDateStr = dateFormat.format(new Date(endDateMillis)); + try { + String selectStr = "DataTime<=?"; + String[] selectArgs = {endDateStr}; + retVal = mOSDDb.getWritableDatabase().delete(mDbTableName, selectStr, selectArgs); + } + catch (Exception e) { + Log.d(TAG,"Error deleting datapoints"+e.toString()); + retVal = 0; + } + Log.d(TAG,String.format("pruneLocalDb() - deleted %d records", retVal)); + return(retVal); + } /** diff --git a/app/src/main/res/layout/activity_authenticate.xml b/app/src/main/res/layout/activity_authenticate.xml index a019193..d508fd7 100644 --- a/app/src/main/res/layout/activity_authenticate.xml +++ b/app/src/main/res/layout/activity_authenticate.xml @@ -110,7 +110,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" - android:text="Create Datapoint" /> + android:text="Prune Database" />