package org.bitseal.services;
import org.bitseal.database.PayloadProvider;
import android.app.IntentService;
import android.content.Intent;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.util.Log;
public class DatabaseCleaningService extends IntentService
{
public static final String EXTRA_RUN_DATABASE_CLEANING_ROUTINE = "extraRunDatabaseCleaningRoutine";
/** A key for recording the last time the database cleaning routine was run */
public static final String LAST_DATABASE_CLEAN_TIME = "lastDatabaseCleanTime";
/** This is the maximum age of an object (in seconds) that PyBitmessage will accept. */
private static final int PYBITMESSAGE_NEW_OBJECT_ACCEPTANCE_PERIOD = 216000;
public static final String TAG = "DATABASE_CLEANING_SERVICE";
public DatabaseCleaningService()
{
super("DatabaseCleaningService");
}
@Override
protected void onHandleIntent(Intent intent)
{
if (intent.hasExtra(EXTRA_RUN_DATABASE_CLEANING_ROUTINE))
{
cleanDatabase();
}
}
/**
* Deletes old, no-longer-needed data from the database.
*/
private void cleanDatabase()
{
try
{
Log.d(TAG, "Running database cleaning routine");
// Delete any Payloads in the database older than the time defined by PYBITMESSAGE_NEW_OBJECT_ACCEPTANCE_PERIOD
long currentTime = System.currentTimeMillis() / 1000;
long deletionTime = currentTime - PYBITMESSAGE_NEW_OBJECT_ACCEPTANCE_PERIOD;
Log.i(TAG, "Deleting any Payloads with a time value earlier than " + deletionTime + " from the database");
PayloadProvider payProv = PayloadProvider.get(getApplicationContext());
payProv.deletePayloadsCreatedBefore(deletionTime);
// Update the 'last data clean time'
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = prefs.edit();
editor.putLong(LAST_DATABASE_CLEAN_TIME, currentTime);
editor.commit();
Log.i(TAG, "Updated last database clean time to " + currentTime);
}
catch (Exception e)
{
Log.e(TAG, "Exception occurred in DatabaseCleaningService.cleanDatabase().\n"
+ "The exception message was: " + e.getMessage());
}
}
}