From 366e663ebcf303ea38cd24700a8578cb5ed42214 Mon Sep 17 00:00:00 2001 From: Matt Boutell Date: Tue, 1 Jul 2014 12:23:55 -0400 Subject: [PATCH 01/12] Commented out array and adapter. --- .../sqlhighscores/ScoresListActivity.java | 34 +++++++------------ 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java b/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java index 690e6de..7703919 100644 --- a/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java +++ b/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java @@ -52,17 +52,6 @@ public class ScoresListActivity extends ListActivity { */ private long mSelectedId = NO_ID_SELECTED; - /** - * Array holding the scores - */ - private ArrayList mScores = new ArrayList(); - - /** - * Adapter to fill the List View with mScores data Note: Could use the - * ListActivity function getListAdapter, but that results in a lot of ugly - * casting - */ - private ArrayAdapter mScoreAdapter; /** Called when the activity is first created. */ @Override @@ -70,10 +59,10 @@ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.scores_list_activity); - mScoreAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, mScores); +// mScoreAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, mScores); // This is how a ListActivity sets the adapter, similar to how a ListView sets it. - setListAdapter(mScoreAdapter); +// setListAdapter(mScoreAdapter); registerForContextMenu(getListView()); @@ -170,9 +159,9 @@ protected void onDestroy() { * New score to add */ private void addScore(Score s) { - mScores.add(s); - Collections.sort(mScores); - mScoreAdapter.notifyDataSetChanged(); +// mScores.add(s); +// Collections.sort(mScores); +// mScoreAdapter.notifyDataSetChanged(); } /** @@ -182,7 +171,8 @@ private void addScore(Score s) { * Index of the score in the data storage mechanism */ private Score getScore(long id) { - return mScores.get((int) id); +// return mScores.get((int) id); + return null; } /** @@ -199,8 +189,8 @@ private void editScore(Score s) { Score selectedScore = getScore(mSelectedId); selectedScore.setName(s.getName()); selectedScore.setScore(s.getScore()); - Collections.sort(mScores); - mScoreAdapter.notifyDataSetChanged(); +// Collections.sort(mScores); +// mScoreAdapter.notifyDataSetChanged(); } /** @@ -210,9 +200,9 @@ private void editScore(Score s) { * Index of the score in the data storage mechanism */ private void removeScore(long id) { - mScores.remove((int) id); - Collections.sort(mScores); - mScoreAdapter.notifyDataSetChanged(); +// mScores.remove((int) id); +// Collections.sort(mScores); +// mScoreAdapter.notifyDataSetChanged(); } // ====================================================================== From a5337fa44f96f3e557946a83bbe76fa6a996eea5 Mon Sep 17 00:00:00 2001 From: Matt Boutell Date: Tue, 1 Jul 2014 12:34:01 -0400 Subject: [PATCH 02/12] Renamed adapter --- .../{SQLiteScoreAdapter.java => ScoreDataAdapter.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/edu/rosehulman/sqlhighscores/{SQLiteScoreAdapter.java => ScoreDataAdapter.java} (93%) diff --git a/src/edu/rosehulman/sqlhighscores/SQLiteScoreAdapter.java b/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java similarity index 93% rename from src/edu/rosehulman/sqlhighscores/SQLiteScoreAdapter.java rename to src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java index 1d8df8b..5395b8f 100644 --- a/src/edu/rosehulman/sqlhighscores/SQLiteScoreAdapter.java +++ b/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java @@ -1,6 +1,6 @@ package edu.rosehulman.sqlhighscores; -public class SQLiteScoreAdapter { +public class ScoreDataAdapter { // Just the tag we use to log private static final String TAG = "SQLiteScoreAdapter"; // Becomes the filename of the database From 4dd0717000ca0f9a35908214bbc000f5ef5a832d Mon Sep 17 00:00:00 2001 From: Matt Boutell Date: Tue, 1 Jul 2014 14:19:26 -0400 Subject: [PATCH 03/12] Boring prep to write CRUD --- src/edu/rosehulman/sqlhighscores/Score.java | 6 +- .../sqlhighscores/ScoreDataAdapter.java | 60 +++++++++++++++++++ .../sqlhighscores/ScoresListActivity.java | 14 ++++- 3 files changed, 76 insertions(+), 4 deletions(-) diff --git a/src/edu/rosehulman/sqlhighscores/Score.java b/src/edu/rosehulman/sqlhighscores/Score.java index 7b779df..99555a0 100644 --- a/src/edu/rosehulman/sqlhighscores/Score.java +++ b/src/edu/rosehulman/sqlhighscores/Score.java @@ -6,8 +6,12 @@ public class Score implements Comparable{ private String mName; private int mScore; + private long mId; - public String getName() { return mName; } + public long getId() { return mId; } + public void setId(long id) { this.mId = id; } + + public String getName() { return mName; } public void setName(String name) { mName = name; } public int getScore() { return mScore; } diff --git a/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java b/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java index 5395b8f..cb9cef2 100644 --- a/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java +++ b/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java @@ -1,5 +1,10 @@ package edu.rosehulman.sqlhighscores; +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; +import android.util.Log; + public class ScoreDataAdapter { // Just the tag we use to log private static final String TAG = "SQLiteScoreAdapter"; @@ -10,6 +15,61 @@ public class ScoreDataAdapter { // We increment this every time we change the database schema which will // kick off an automatic upgrade private static final int DATABASE_VERSION = 1; + // TODO: Implement a SQLite database + private SQLiteOpenHelper mOpenHelper; + private SQLiteDatabase mDatabase; + public static final String KEY_ID = "_id"; // Android naming convention for + // IDs + public static final String KEY_NAME = "name"; + public static final String KEY_SCORE = "score"; + + private static String DROP_STATEMENT = "DROP TABLE IF EXISTS " + TABLE_NAME; + private static String CREATE_STATEMENT; + static { + StringBuilder sb = new StringBuilder(); + sb.append("CREATE TABLE " + TABLE_NAME + " ("); + sb.append(KEY_ID + " integer primary key autoincrement, "); + sb.append(KEY_NAME + " text, "); + sb.append(KEY_SCORE + " integer"); + sb.append(")"); + CREATE_STATEMENT = sb.toString(); + } + + public ScoreDataAdapter(Context context) { + // Create a SQLiteOpenHelper + mOpenHelper = new ScoreDbHelper(context); + } + + public void open() { + // Open the database + mDatabase = mOpenHelper.getWritableDatabase(); + } + + public void close() { + // Close the database + mDatabase.close(); + } + + private static class ScoreDbHelper extends SQLiteOpenHelper { + + public ScoreDbHelper(Context context) { + super(context, DATABASE_NAME, null, DATABASE_VERSION); + } + + @Override + public void onCreate(SQLiteDatabase db) { + db.execSQL(CREATE_STATEMENT); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + Log.d(TAG, "Updating from version " + oldVersion + " to " + + newVersion + ", which will destroy old table(s)."); + db.execSQL(DROP_STATEMENT); + onCreate(db); + } + + } } diff --git a/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java b/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java index 7703919..76485e8 100644 --- a/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java +++ b/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java @@ -19,6 +19,7 @@ import android.widget.Button; import android.widget.EditText; import android.widget.ListView; +import android.widget.SimpleCursorAdapter; /** * Activity that displays a list view of Names and Scores Currently using no @@ -31,6 +32,9 @@ public class ScoresListActivity extends ListActivity { // A ListActivity is an Activity that supports a ListView. Its layout must // include a ListView (and optionally TextView for when the list is empty) with specific ids: see that file. + private ScoreDataAdapter mScoreDataAdapter; + private SimpleCursorAdapter mCursorAdapter; + /** * TAG for debug log messages */ @@ -52,14 +56,18 @@ public class ScoresListActivity extends ListActivity { */ private long mSelectedId = NO_ID_SELECTED; + - /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.scores_list_activity); - -// mScoreAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, mScores); + + mScoreDataAdapter = new ScoreDataAdapter(this); + mScoreDataAdapter.open(); + + // mScoreAdapter = new ArrayAdapter(this, + // android.R.layout.simple_list_item_1, mScores); // This is how a ListActivity sets the adapter, similar to how a ListView sets it. // setListAdapter(mScoreAdapter); From b7432a1e64ffa1ed0a4577a8344cd8e554b814b5 Mon Sep 17 00:00:00 2001 From: Matt Boutell Date: Tue, 1 Jul 2014 14:45:54 -0400 Subject: [PATCH 04/12] FOrmat --- src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java b/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java index cb9cef2..244b6d1 100644 --- a/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java +++ b/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java @@ -19,8 +19,8 @@ public class ScoreDataAdapter { // TODO: Implement a SQLite database private SQLiteOpenHelper mOpenHelper; private SQLiteDatabase mDatabase; - public static final String KEY_ID = "_id"; // Android naming convention for - // IDs + // Android naming convention for IDs + public static final String KEY_ID = "_id"; public static final String KEY_NAME = "name"; public static final String KEY_SCORE = "score"; From 21204805c5fda705f3eb507f033374338dc497c3 Mon Sep 17 00:00:00 2001 From: Matt Boutell Date: Tue, 1 Jul 2014 14:54:35 -0400 Subject: [PATCH 05/12] Finished add --- .../sqlhighscores/ScoreDataAdapter.java | 22 ++++++++++++++++++- .../sqlhighscores/ScoresListActivity.java | 3 +++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java b/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java index 244b6d1..8a1c8b1 100644 --- a/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java +++ b/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java @@ -1,5 +1,6 @@ package edu.rosehulman.sqlhighscores; +import android.content.ContentValues; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; @@ -20,7 +21,7 @@ public class ScoreDataAdapter { private SQLiteOpenHelper mOpenHelper; private SQLiteDatabase mDatabase; // Android naming convention for IDs - public static final String KEY_ID = "_id"; + public static final String KEY_ID = "_id"; public static final String KEY_NAME = "name"; public static final String KEY_SCORE = "score"; @@ -51,6 +52,25 @@ public void close() { mDatabase.close(); } + private ContentValues getConventValuesFromScore(Score score) { + ContentValues row = new ContentValues(); + row.put(KEY_NAME, score.getName()); + row.put(KEY_SCORE, score.getScore()); + return row; + } + + /** + * Add score to the table. If is successful, return the new id for that + * Score, otherwise return -1. + * + * @param score + * @return id of the inserted row or -1 if failed + */ + public long addScore(Score score) { + ContentValues row = getConventValuesFromScore(score); + return mDatabase.insert(TABLE_NAME, null, row); + } + private static class ScoreDbHelper extends SQLiteOpenHelper { public ScoreDbHelper(Context context) { diff --git a/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java b/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java index 76485e8..feeec0f 100644 --- a/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java +++ b/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java @@ -71,6 +71,8 @@ public void onCreate(Bundle savedInstanceState) { // This is how a ListActivity sets the adapter, similar to how a ListView sets it. // setListAdapter(mScoreAdapter); + + registerForContextMenu(getListView()); @@ -170,6 +172,7 @@ private void addScore(Score s) { // mScores.add(s); // Collections.sort(mScores); // mScoreAdapter.notifyDataSetChanged(); + mScoreDataAdapter.addScore(s); } /** From 1e84ecc9e59e866661430be0fff1334c1b09b4ce Mon Sep 17 00:00:00 2001 From: Matt Boutell Date: Tue, 1 Jul 2014 18:17:57 -0400 Subject: [PATCH 06/12] Fixed typo --- src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java b/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java index 8a1c8b1..8ce4f01 100644 --- a/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java +++ b/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java @@ -52,7 +52,7 @@ public void close() { mDatabase.close(); } - private ContentValues getConventValuesFromScore(Score score) { + private ContentValues getContentValuesFromScore(Score score) { ContentValues row = new ContentValues(); row.put(KEY_NAME, score.getName()); row.put(KEY_SCORE, score.getScore()); @@ -67,7 +67,7 @@ private ContentValues getConventValuesFromScore(Score score) { * @return id of the inserted row or -1 if failed */ public long addScore(Score score) { - ContentValues row = getConventValuesFromScore(score); + ContentValues row = getContentValuesFromScore(score); return mDatabase.insert(TABLE_NAME, null, row); } From c57d6e13a6672288d1efde9b18a41d2b6dca4f54 Mon Sep 17 00:00:00 2001 From: Matt Boutell Date: Tue, 1 Jul 2014 18:39:31 -0400 Subject: [PATCH 07/12] Query finished --- .../sqlhighscores/ScoreDataAdapter.java | 7 +++ .../sqlhighscores/ScoresListActivity.java | 50 +++++++++---------- 2 files changed, 32 insertions(+), 25 deletions(-) diff --git a/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java b/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java index 8ce4f01..d2eaac2 100644 --- a/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java +++ b/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java @@ -2,6 +2,7 @@ import android.content.ContentValues; import android.content.Context; +import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; @@ -71,6 +72,12 @@ public long addScore(Score score) { return mDatabase.insert(TABLE_NAME, null, row); } + public Cursor getScoresCursor() { + String[] projection = new String[] { KEY_ID, KEY_NAME, KEY_SCORE }; + return mDatabase.query(TABLE_NAME, projection, null, null, null, null, + KEY_SCORE + " DESC"); + } + private static class ScoreDbHelper extends SQLiteOpenHelper { public ScoreDbHelper(Context context) { diff --git a/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java b/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java index feeec0f..d830055 100644 --- a/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java +++ b/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java @@ -1,10 +1,8 @@ package edu.rosehulman.sqlhighscores; -import java.util.ArrayList; -import java.util.Collections; - import android.app.Dialog; import android.app.ListActivity; +import android.database.Cursor; import android.os.Bundle; import android.util.Log; import android.view.ContextMenu; @@ -15,7 +13,6 @@ import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView.AdapterContextMenuInfo; -import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; @@ -30,11 +27,12 @@ */ public class ScoresListActivity extends ListActivity { // A ListActivity is an Activity that supports a ListView. Its layout must - // include a ListView (and optionally TextView for when the list is empty) with specific ids: see that file. + // include a ListView (and optionally TextView for when the list is empty) + // with specific ids: see that file. private ScoreDataAdapter mScoreDataAdapter; private SimpleCursorAdapter mCursorAdapter; - + /** * TAG for debug log messages */ @@ -56,8 +54,6 @@ public class ScoresListActivity extends ListActivity { */ private long mSelectedId = NO_ID_SELECTED; - - @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -66,16 +62,18 @@ public void onCreate(Bundle savedInstanceState) { mScoreDataAdapter = new ScoreDataAdapter(this); mScoreDataAdapter.open(); - // mScoreAdapter = new ArrayAdapter(this, - // android.R.layout.simple_list_item_1, mScores); + Cursor cursor = mScoreDataAdapter.getScoresCursor(); + String[] fromColumns = new String[] { ScoreDataAdapter.KEY_NAME, + ScoreDataAdapter.KEY_SCORE }; + int[] toTextViews = new int[] { R.id.textViewName, R.id.textViewScore }; + mCursorAdapter = new SimpleCursorAdapter(this, + R.layout.score_list_item, cursor, fromColumns, toTextViews, 0); + // This is how a ListActivity sets the adapter, similar to how a + // ListView sets it. + setListAdapter(mCursorAdapter); - // This is how a ListActivity sets the adapter, similar to how a ListView sets it. -// setListAdapter(mScoreAdapter); - - - registerForContextMenu(getListView()); - + } /** @@ -169,10 +167,12 @@ protected void onDestroy() { * New score to add */ private void addScore(Score s) { -// mScores.add(s); -// Collections.sort(mScores); -// mScoreAdapter.notifyDataSetChanged(); + // mScores.add(s); + // Collections.sort(mScores); + // mScoreAdapter.notifyDataSetChanged(); mScoreDataAdapter.addScore(s); + Cursor cursor = mScoreDataAdapter.getScoresCursor(); + mCursorAdapter.changeCursor(cursor); } /** @@ -182,7 +182,7 @@ private void addScore(Score s) { * Index of the score in the data storage mechanism */ private Score getScore(long id) { -// return mScores.get((int) id); + // return mScores.get((int) id); return null; } @@ -200,8 +200,8 @@ private void editScore(Score s) { Score selectedScore = getScore(mSelectedId); selectedScore.setName(s.getName()); selectedScore.setScore(s.getScore()); -// Collections.sort(mScores); -// mScoreAdapter.notifyDataSetChanged(); + // Collections.sort(mScores); + // mScoreAdapter.notifyDataSetChanged(); } /** @@ -211,9 +211,9 @@ private void editScore(Score s) { * Index of the score in the data storage mechanism */ private void removeScore(long id) { -// mScores.remove((int) id); -// Collections.sort(mScores); -// mScoreAdapter.notifyDataSetChanged(); + // mScores.remove((int) id); + // Collections.sort(mScores); + // mScoreAdapter.notifyDataSetChanged(); } // ====================================================================== From 5e6e1bb452ad1d88f56c2b07f2f30c5ab2c963e7 Mon Sep 17 00:00:00 2001 From: Matt Boutell Date: Wed, 2 Jul 2014 08:08:11 -0400 Subject: [PATCH 08/12] Update done --- .../sqlhighscores/ScoreDataAdapter.java | 26 +++++++++++++++++++ .../sqlhighscores/ScoresListActivity.java | 13 +++++++--- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java b/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java index d2eaac2..12f00cc 100644 --- a/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java +++ b/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java @@ -78,6 +78,32 @@ public Cursor getScoresCursor() { KEY_SCORE + " DESC"); } + public Score getScore(long id) { + String[] projection = new String[] { KEY_ID, KEY_NAME, KEY_SCORE }; + String selection = KEY_ID + " = " + id; + boolean distinctRows = true; + Cursor c = mDatabase.query(distinctRows, TABLE_NAME, projection, + selection, null, null, null, null, null); + if (c != null && c.moveToFirst()) { + return getScoreFromCursor(c); + } + return null; + } + + private Score getScoreFromCursor(Cursor c) { + Score s = new Score(); + s.setId(c.getInt(c.getColumnIndexOrThrow(KEY_ID))); + s.setName(c.getString(c.getColumnIndexOrThrow(KEY_NAME))); + s.setScore(c.getInt(c.getColumnIndexOrThrow(KEY_SCORE))); + return s; + } + +public void updateScore(Score score) { + ContentValues row = getContentValuesFromScore(score); + String selection = KEY_ID + " = " + score.getId(); + mDatabase.update(TABLE_NAME, row, selection, null); +} + private static class ScoreDbHelper extends SQLiteOpenHelper { public ScoreDbHelper(Context context) { diff --git a/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java b/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java index d830055..2c711ce 100644 --- a/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java +++ b/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java @@ -183,7 +183,7 @@ private void addScore(Score s) { */ private Score getScore(long id) { // return mScores.get((int) id); - return null; + return mScoreDataAdapter.getScore(id); } /** @@ -197,9 +197,14 @@ private void editScore(Score s) { if (mSelectedId == NO_ID_SELECTED) { Log.e(TAG, "Attempt to update with no score selected."); } - Score selectedScore = getScore(mSelectedId); - selectedScore.setName(s.getName()); - selectedScore.setScore(s.getScore()); + s.setId((int) mSelectedId); + mScoreDataAdapter.updateScore(s); + Cursor cursor = mScoreDataAdapter.getScoresCursor(); + mCursorAdapter.changeCursor(cursor); + + // Score selectedScore = getScore(mSelectedId); + // selectedScore.setName(s.getName()); + // selectedScore.setScore(s.getScore()); // Collections.sort(mScores); // mScoreAdapter.notifyDataSetChanged(); } From 5d1234036ce0ed8fdaa47a2ef6b3d4987a1b9433 Mon Sep 17 00:00:00 2001 From: Matt Boutell Date: Wed, 2 Jul 2014 08:19:56 -0400 Subject: [PATCH 09/12] Added delete. Done. --- .../sqlhighscores/ScoreDataAdapter.java | 20 +++++++++++++------ .../sqlhighscores/ScoresListActivity.java | 3 +++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java b/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java index 12f00cc..1873a08 100644 --- a/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java +++ b/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java @@ -98,12 +98,20 @@ private Score getScoreFromCursor(Cursor c) { return s; } -public void updateScore(Score score) { - ContentValues row = getContentValuesFromScore(score); - String selection = KEY_ID + " = " + score.getId(); - mDatabase.update(TABLE_NAME, row, selection, null); -} - + public void updateScore(Score score) { + ContentValues row = getContentValuesFromScore(score); + String selection = KEY_ID + " = " + score.getId(); + mDatabase.update(TABLE_NAME, row, selection, null); + } + + public boolean removeScore(long id) { + return mDatabase.delete(TABLE_NAME, KEY_ID + " = " + id, null) > 0; + } + + public boolean removeScore(Score s) { + return removeScore(s.getId()); + } + private static class ScoreDbHelper extends SQLiteOpenHelper { public ScoreDbHelper(Context context) { diff --git a/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java b/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java index 2c711ce..9e9165b 100644 --- a/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java +++ b/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java @@ -219,6 +219,9 @@ private void removeScore(long id) { // mScores.remove((int) id); // Collections.sort(mScores); // mScoreAdapter.notifyDataSetChanged(); + mScoreDataAdapter.removeScore(id); + Cursor cursor = mScoreDataAdapter.getScoresCursor(); + mCursorAdapter.changeCursor(cursor); } // ====================================================================== From 908fd465b4506a56a2014c748263480d49becc73 Mon Sep 17 00:00:00 2001 From: Matt Boutell Date: Wed, 2 Jul 2014 08:41:11 -0400 Subject: [PATCH 10/12] Fixed tag. Adding log. --- .../sqlhighscores/ScoreDataAdapter.java | 18 +++++++++++++++--- .../sqlhighscores/ScoresListActivity.java | 6 ++++-- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java b/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java index 1873a08..bbe7f29 100644 --- a/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java +++ b/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java @@ -8,8 +8,6 @@ import android.util.Log; public class ScoreDataAdapter { - // Just the tag we use to log - private static final String TAG = "SQLiteScoreAdapter"; // Becomes the filename of the database private static final String DATABASE_NAME = "scores.db"; // Only one table in this database @@ -112,6 +110,20 @@ public boolean removeScore(Score s) { return removeScore(s.getId()); } + public void logAll() { + Cursor c = getScoresCursor(); + if (c != null && c.moveToFirst()) { + Log.d(ScoresListActivity.SLS, "LOGGING TABLE"); + while (!c.isAfterLast()) { + Score score = getScoreFromCursor(c); + Log.d(ScoresListActivity.SLS, score.toString()); + c.moveToNext(); + } + } + } + + + private static class ScoreDbHelper extends SQLiteOpenHelper { public ScoreDbHelper(Context context) { @@ -125,7 +137,7 @@ public void onCreate(SQLiteDatabase db) { @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { - Log.d(TAG, "Updating from version " + oldVersion + " to " + Log.d(ScoresListActivity.SLS, "Updating from version " + oldVersion + " to " + newVersion + ", which will destroy old table(s)."); db.execSQL(DROP_STATEMENT); onCreate(db); diff --git a/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java b/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java index 9e9165b..1148172 100644 --- a/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java +++ b/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java @@ -36,7 +36,7 @@ public class ScoresListActivity extends ListActivity { /** * TAG for debug log messages */ - public static final String TAG = "Scores"; + public static final String SLS = "Scores"; /** * Dialog ID for adding and editing scores (one dialog for both tasks) @@ -173,6 +173,8 @@ private void addScore(Score s) { mScoreDataAdapter.addScore(s); Cursor cursor = mScoreDataAdapter.getScoresCursor(); mCursorAdapter.changeCursor(cursor); + + mScoreDataAdapter.logAll(); } /** @@ -195,7 +197,7 @@ private Score getScore(long id) { */ private void editScore(Score s) { if (mSelectedId == NO_ID_SELECTED) { - Log.e(TAG, "Attempt to update with no score selected."); + Log.e(SLS, "Attempt to update with no score selected."); } s.setId((int) mSelectedId); mScoreDataAdapter.updateScore(s); From bbb0a0b160cd5f095fb221f81fcc32b5cd7f91a1 Mon Sep 17 00:00:00 2001 From: Matt Boutell Date: Wed, 2 Jul 2014 08:59:05 -0400 Subject: [PATCH 11/12] Better insert method --- src/edu/rosehulman/sqlhighscores/Score.java | 2 +- .../rosehulman/sqlhighscores/ScoreDataAdapter.java | 14 +++++++------- .../sqlhighscores/ScoresListActivity.java | 3 +-- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/edu/rosehulman/sqlhighscores/Score.java b/src/edu/rosehulman/sqlhighscores/Score.java index 99555a0..6e5bf08 100644 --- a/src/edu/rosehulman/sqlhighscores/Score.java +++ b/src/edu/rosehulman/sqlhighscores/Score.java @@ -19,5 +19,5 @@ public class Score implements Comparable{ public int compareTo(Score other) { return other.getScore() - getScore(); } - public String toString() { return getName() + " " + getScore(); } + public String toString() { return getId() + " " + getName() + " " + getScore(); } } diff --git a/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java b/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java index bbe7f29..1c6bd36 100644 --- a/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java +++ b/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java @@ -59,16 +59,16 @@ private ContentValues getContentValuesFromScore(Score score) { } /** - * Add score to the table. If is successful, return the new id for that - * Score, otherwise return -1. - * + * Add score to the table. * @param score * @return id of the inserted row or -1 if failed */ - public long addScore(Score score) { - ContentValues row = getContentValuesFromScore(score); - return mDatabase.insert(TABLE_NAME, null, row); - } +public long addScore(Score score) { + ContentValues row = getContentValuesFromScore(score); + long rowId = mDatabase.insert(TABLE_NAME, null, row); + score.setId(rowId); + return rowId; +} public Cursor getScoresCursor() { String[] projection = new String[] { KEY_ID, KEY_NAME, KEY_SCORE }; diff --git a/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java b/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java index 1148172..8c6f19c 100644 --- a/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java +++ b/src/edu/rosehulman/sqlhighscores/ScoresListActivity.java @@ -36,7 +36,7 @@ public class ScoresListActivity extends ListActivity { /** * TAG for debug log messages */ - public static final String SLS = "Scores"; + public static final String SLS = "SLS"; /** * Dialog ID for adding and editing scores (one dialog for both tasks) @@ -173,7 +173,6 @@ private void addScore(Score s) { mScoreDataAdapter.addScore(s); Cursor cursor = mScoreDataAdapter.getScoresCursor(); mCursorAdapter.changeCursor(cursor); - mScoreDataAdapter.logAll(); } From a905b6c2e5f48329c52644510481791767721cff Mon Sep 17 00:00:00 2001 From: Matt Boutell Date: Wed, 2 Jul 2014 09:12:27 -0400 Subject: [PATCH 12/12] Formatting --- .../sqlhighscores/ScoreDataAdapter.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java b/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java index 1c6bd36..f9d7ee5 100644 --- a/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java +++ b/src/edu/rosehulman/sqlhighscores/ScoreDataAdapter.java @@ -59,16 +59,17 @@ private ContentValues getContentValuesFromScore(Score score) { } /** - * Add score to the table. + * Add score to the table. + * * @param score * @return id of the inserted row or -1 if failed */ -public long addScore(Score score) { - ContentValues row = getContentValuesFromScore(score); - long rowId = mDatabase.insert(TABLE_NAME, null, row); - score.setId(rowId); - return rowId; -} + public long addScore(Score score) { + ContentValues row = getContentValuesFromScore(score); + long rowId = mDatabase.insert(TABLE_NAME, null, row); + score.setId(rowId); + return rowId; + } public Cursor getScoresCursor() { String[] projection = new String[] { KEY_ID, KEY_NAME, KEY_SCORE }; @@ -122,8 +123,6 @@ public void logAll() { } } - - private static class ScoreDbHelper extends SQLiteOpenHelper { public ScoreDbHelper(Context context) { @@ -137,8 +136,9 @@ public void onCreate(SQLiteDatabase db) { @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { - Log.d(ScoresListActivity.SLS, "Updating from version " + oldVersion + " to " - + newVersion + ", which will destroy old table(s)."); + Log.d(ScoresListActivity.SLS, "Updating from version " + oldVersion + + " to " + newVersion + + ", which will destroy old table(s)."); db.execSQL(DROP_STATEMENT); onCreate(db); }