diff options
author | Kenny Root <kenny@the-b.org> | 2015-09-07 12:29:34 -0700 |
---|---|---|
committer | Kenny Root <kenny@the-b.org> | 2015-09-07 12:31:43 -0700 |
commit | 562fb9aee4a7976219c2a51038ed393f8c6e7231 (patch) | |
tree | 9747f3012b3c97a1c70f5be963edfd79a509234c /app/src/main/java/org/connectbot/util | |
parent | 4d71d839022b6d926e6d102f431116d91c73ef4e (diff) | |
download | connectbot-562fb9aee4a7976219c2a51038ed393f8c6e7231.tar.gz connectbot-562fb9aee4a7976219c2a51038ed393f8c6e7231.tar.bz2 connectbot-562fb9aee4a7976219c2a51038ed393f8c6e7231.zip |
Wrap all HostDatabase writes in a transaction
Diffstat (limited to 'app/src/main/java/org/connectbot/util')
-rw-r--r-- | app/src/main/java/org/connectbot/util/HostDatabase.java | 131 |
1 files changed, 92 insertions, 39 deletions
diff --git a/app/src/main/java/org/connectbot/util/HostDatabase.java b/app/src/main/java/org/connectbot/util/HostDatabase.java index f721aeb..c3eaa8b 100644 --- a/app/src/main/java/org/connectbot/util/HostDatabase.java +++ b/app/src/main/java/org/connectbot/util/HostDatabase.java @@ -303,8 +303,13 @@ public class HostDatabase extends RobustSQLiteOpenHelper { synchronized (dbLock) { SQLiteDatabase db = this.getWritableDatabase(); - - db.update(TABLE_HOSTS, values, "_id = ?", new String[] { String.valueOf(host.getId()) }); + db.beginTransaction(); + try { + db.update(TABLE_HOSTS, values, "_id = ?", new String[] {String.valueOf(host.getId())}); + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + } } } @@ -316,8 +321,13 @@ public class HostDatabase extends RobustSQLiteOpenHelper { synchronized (dbLock) { SQLiteDatabase db = this.getWritableDatabase(); - - id = db.insert(TABLE_HOSTS, null, host.getValues()); + db.beginTransaction(); + try { + id = db.insert(TABLE_HOSTS, null, host.getValues()); + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + } } host.setId(id); @@ -338,9 +348,14 @@ public class HostDatabase extends RobustSQLiteOpenHelper { synchronized (dbLock) { SQLiteDatabase db = getWritableDatabase(); - - db.update(TABLE_HOSTS, updates, "_id = ?", - new String[] { String.valueOf(id) }); + db.beginTransaction(); + try { + db.update(TABLE_HOSTS, updates, "_id = ?", + new String[] {String.valueOf(id)}); + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + } } @@ -356,7 +371,13 @@ public class HostDatabase extends RobustSQLiteOpenHelper { synchronized (dbLock) { SQLiteDatabase db = this.getWritableDatabase(); - db.delete(TABLE_HOSTS, "_id = ?", new String[] { String.valueOf(host.getId()) }); + db.beginTransaction(); + try { + db.delete(TABLE_HOSTS, "_id = ?", new String[] {String.valueOf(host.getId())}); + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + } } } @@ -594,8 +615,13 @@ public class HostDatabase extends RobustSQLiteOpenHelper { synchronized (dbLock) { SQLiteDatabase db = this.getWritableDatabase(); - - db.update(TABLE_HOSTS, values, FIELD_HOST_PUBKEYID + " = ?", new String[] { String.valueOf(pubkeyId) }); + db.beginTransaction(); + try { + db.update(TABLE_HOSTS, values, FIELD_HOST_PUBKEYID + " = ?", new String[] {String.valueOf(pubkeyId)}); + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + } } Log.d(TAG, String.format("Set all hosts using pubkey id %d to -1", pubkeyId)); @@ -649,22 +675,28 @@ public class HostDatabase extends RobustSQLiteOpenHelper { * @return true on success */ public boolean savePortForward(PortForwardBean pfb) { - boolean success = false; - synchronized (dbLock) { SQLiteDatabase db = getWritableDatabase(); + db.beginTransaction(); + try { + if (pfb.getId() < 0) { + long addedId = db.insert(TABLE_PORTFORWARDS, null, pfb.getValues()); + if (addedId == -1) { + return false; + } + pfb.setId(addedId); + } else { + if (db.update(TABLE_PORTFORWARDS, pfb.getValues(), "_id = ?", new String[] {String.valueOf(pfb.getId())}) <= 0) { + return false; + } + } - if (pfb.getId() < 0) { - long id = db.insert(TABLE_PORTFORWARDS, null, pfb.getValues()); - pfb.setId(id); - success = true; - } else { - if (db.update(TABLE_PORTFORWARDS, pfb.getValues(), "_id = ?", new String[] { String.valueOf(pfb.getId()) }) > 0) - success = true; + db.setTransactionSuccessful(); + return true; + } finally { + db.endTransaction(); } } - - return success; } /** @@ -677,7 +709,13 @@ public class HostDatabase extends RobustSQLiteOpenHelper { synchronized (dbLock) { SQLiteDatabase db = this.getWritableDatabase(); - db.delete(TABLE_PORTFORWARDS, "_id = ?", new String[] { String.valueOf(pfb.getId()) }); + db.beginTransaction(); + try { + db.delete(TABLE_PORTFORWARDS, "_id = ?", new String[] {String.valueOf(pfb.getId())}); + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + } } } @@ -711,9 +749,14 @@ public class HostDatabase extends RobustSQLiteOpenHelper { if (value == Colors.defaults[number]) { synchronized (dbLock) { db = getWritableDatabase(); - - db.delete(TABLE_COLORS, - WHERE_SCHEME_AND_COLOR, whereArgs); + db.beginTransaction(); + try { + db.delete(TABLE_COLORS, + WHERE_SCHEME_AND_COLOR, whereArgs); + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + } } } else { final ContentValues values = new ContentValues(); @@ -721,14 +764,19 @@ public class HostDatabase extends RobustSQLiteOpenHelper { synchronized (dbLock) { db = getWritableDatabase(); - - final int rowsAffected = db.update(TABLE_COLORS, values, - WHERE_SCHEME_AND_COLOR, whereArgs); - - if (rowsAffected == 0) { - values.put(FIELD_COLOR_SCHEME, scheme); - values.put(FIELD_COLOR_NUMBER, number); - db.insert(TABLE_COLORS, null, values); + db.beginTransaction(); + try { + final int rowsAffected = db.update(TABLE_COLORS, values, + WHERE_SCHEME_AND_COLOR, whereArgs); + + if (rowsAffected == 0) { + values.put(FIELD_COLOR_SCHEME, scheme); + values.put(FIELD_COLOR_NUMBER, number); + db.insert(TABLE_COLORS, null, values); + } + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); } } } @@ -780,13 +828,18 @@ public class HostDatabase extends RobustSQLiteOpenHelper { synchronized (dbLock) { db = getWritableDatabase(); + db.beginTransaction(); + try { + int rowsAffected = db.update(TABLE_COLOR_DEFAULTS, values, + schemeWhere, whereArgs); - int rowsAffected = db.update(TABLE_COLOR_DEFAULTS, values, - schemeWhere, whereArgs); - - if (rowsAffected == 0) { - values.put(FIELD_COLOR_SCHEME, scheme); - db.insert(TABLE_COLOR_DEFAULTS, null, values); + if (rowsAffected == 0) { + values.put(FIELD_COLOR_SCHEME, scheme); + db.insert(TABLE_COLOR_DEFAULTS, null, values); + } + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); } } } |