Refactor existing API to use the new DatabaseHelper

master
Bradlee Speice 2014-04-15 21:42:40 -04:00
parent d701c2bcb2
commit 385d53a23a
4 changed files with 14 additions and 42 deletions

View File

@ -11,7 +11,7 @@ import android.widget.BaseAdapter;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.ListView; import android.widget.ListView;
import android.widget.TextView; import android.widget.TextView;
import edu.uncc.scavenger.database.LocationDatabaseClient; import edu.uncc.scavenger.database.LocationDatabaseHelper;
import edu.uncc.scavenger.rest.LocationClient; import edu.uncc.scavenger.rest.LocationClient;
import edu.uncc.scavenger.rest.RestLocation; import edu.uncc.scavenger.rest.RestLocation;
@ -26,7 +26,7 @@ public class MainActivity extends Activity {
// Get our list of events loaded // Get our list of events loaded
locationList = (ListView)findViewById(R.id.listLocations); locationList = (ListView)findViewById(R.id.listLocations);
List<RestLocation> locations = new LocationDatabaseClient().getAllLocations(); List<RestLocation> locations = LocationDatabaseHelper.getInstance(this).fetchAll();
if (locations != null && locations.size() > 0) { if (locations != null && locations.size() > 0) {
LocationAdapter mLocationAdapter = new LocationAdapter(locations); LocationAdapter mLocationAdapter = new LocationAdapter(locations);
locationList.setAdapter(mLocationAdapter); locationList.setAdapter(mLocationAdapter);

View File

@ -1,33 +0,0 @@
package edu.uncc.scavenger.database;
import java.util.List;
import edu.uncc.scavenger.rest.RestLocation;
public class LocationDatabaseClient {
/*
* Super high-level API for working with locations.
* Also helpful for just drawing out skeletons of code.
*/
public List<RestLocation> getAllLocations() {
// TODO: Implement method to get all locations that exist in the database
return null;
}
public void persistLocation(RestLocation location) {
// TODO: Save a location to the database
}
public void persistLocation(List<RestLocation> locations) {
for (RestLocation l: locations) {
persistLocation(l);
}
}
public void synchronizeLocations(List<RestLocation> locations) {
// TODO: Implement method to save all values in locations, and remove values that aren't there.
}
}

View File

@ -3,6 +3,7 @@ package edu.uncc.scavenger.database;
// Design pattern from: http://www.androiddesignpatterns.com/2012/05/correctly-managing-your-sqlite-database.html // Design pattern from: http://www.androiddesignpatterns.com/2012/05/correctly-managing-your-sqlite-database.html
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
import edu.uncc.scavenger.rest.RestLocation; import edu.uncc.scavenger.rest.RestLocation;
import android.content.ContentValues; import android.content.ContentValues;
@ -32,7 +33,7 @@ public class LocationDatabaseHelper extends SQLiteOpenHelper {
super(ctx, DATABASE_NAME, null, DATABASE_VERSION); super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
} }
public LocationDatabaseHelper getInstance(Context ctx) { public static LocationDatabaseHelper getInstance(Context ctx) {
if (helper == null) { if (helper == null) {
helper = new LocationDatabaseHelper(ctx.getApplicationContext()); helper = new LocationDatabaseHelper(ctx.getApplicationContext());
} }
@ -104,5 +105,9 @@ public class LocationDatabaseHelper extends SQLiteOpenHelper {
helper.getWritableDatabase().insert(TABLE_NAME, null, values); helper.getWritableDatabase().insert(TABLE_NAME, null, values);
} }
public void persistAll(List<RestLocation> locs) {
for (RestLocation l : locs) {
persist(l);
}
}
} }

View File

@ -6,7 +6,7 @@ import java.util.Map;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import edu.uncc.scavenger.R; import edu.uncc.scavenger.R;
import edu.uncc.scavenger.database.LocationDatabaseClient; import edu.uncc.scavenger.database.LocationDatabaseHelper;
import android.content.Context; import android.content.Context;
import android.os.AsyncTask; import android.os.AsyncTask;
import retrofit.RestAdapter; import retrofit.RestAdapter;
@ -30,15 +30,15 @@ public class LocationClient {
public static class LocationsDownloader extends public static class LocationsDownloader extends
AsyncTask<Void, Void, List<RestLocation>> { AsyncTask<Void, Void, List<RestLocation>> {
LocationService client; Context ctx;
public LocationsDownloader(Context ctx) { public LocationsDownloader(Context ctx) {
client = getAdapter(ctx); this.ctx = ctx;
} }
@Override @Override
protected List<RestLocation> doInBackground(Void... arg0) { protected List<RestLocation> doInBackground(Void... arg0) {
return client.listLocations(); return getAdapter(ctx).listLocations();
} }
} }
@ -47,7 +47,7 @@ public class LocationClient {
return new LocationsDownloader(ctx) { return new LocationsDownloader(ctx) {
@Override @Override
protected void onPostExecute(List<RestLocation> result) { protected void onPostExecute(List<RestLocation> result) {
new LocationDatabaseClient().synchronizeLocations(result); LocationDatabaseHelper.getInstance(ctx).persistAll(result);
} }
}.execute(); }.execute();
} }