Further recipient insertion improvements.

This commit is contained in:
Greyson Parrelli 2019-10-03 10:55:23 -04:00
parent a9cff032f5
commit bea21ed5ff

View File

@ -188,18 +188,20 @@ public class RecipientDatabase extends Database {
String query = PHONE + " = ?"; String query = PHONE + " = ?";
String[] args = new String[] { e164 }; String[] args = new String[] { e164 };
synchronized (this) {
try (Cursor cursor = db.query(TABLE_NAME, ID_PROJECTION, query, args, null, null, null)) { try (Cursor cursor = db.query(TABLE_NAME, ID_PROJECTION, query, args, null, null, null)) {
if (cursor != null && cursor.moveToFirst()) { if (cursor != null && cursor.moveToFirst()) {
return RecipientId.from(cursor.getLong(cursor.getColumnIndexOrThrow(ID))); return RecipientId.from(cursor.getLong(cursor.getColumnIndexOrThrow(ID)));
} else { } else {
ContentValues values = new ContentValues(); ContentValues values = new ContentValues();
values.put(PHONE, e164); values.put(PHONE, e164);
long id = db.insert(TABLE_NAME, null, values); long id = db.insertOrThrow(TABLE_NAME, null, values);
if (id < 0) throw new AssertionError("Failed to insert recipient!"); if (id < 0) throw new AssertionError("Failed to insert recipient!");
return RecipientId.from(id); return RecipientId.from(id);
} }
} }
} }
}
public RecipientId getOrInsertFromEmail(@NonNull String email) { public RecipientId getOrInsertFromEmail(@NonNull String email) {
if (TextUtils.isEmpty(email)) { if (TextUtils.isEmpty(email)) {
@ -210,18 +212,20 @@ public class RecipientDatabase extends Database {
String query = EMAIL + " = ?"; String query = EMAIL + " = ?";
String[] args = new String[] { email }; String[] args = new String[] { email };
synchronized (this) {
try (Cursor cursor = db.query(TABLE_NAME, ID_PROJECTION, query, args, null, null, null)) { try (Cursor cursor = db.query(TABLE_NAME, ID_PROJECTION, query, args, null, null, null)) {
if (cursor != null && cursor.moveToFirst()) { if (cursor != null && cursor.moveToFirst()) {
return RecipientId.from(cursor.getLong(cursor.getColumnIndexOrThrow(ID))); return RecipientId.from(cursor.getLong(cursor.getColumnIndexOrThrow(ID)));
} else { } else {
ContentValues values = new ContentValues(); ContentValues values = new ContentValues();
values.put(EMAIL, email); values.put(EMAIL, email);
long id = db.insert(TABLE_NAME, null, values); long id = db.insertOrThrow(TABLE_NAME, null, values);
if (id < 0) throw new AssertionError("Failed to insert recipient!"); if (id < 0) throw new AssertionError("Failed to insert recipient!");
return RecipientId.from(id); return RecipientId.from(id);
} }
} }
} }
}
public RecipientId getOrInsertFromGroupId(@NonNull String groupId) { public RecipientId getOrInsertFromGroupId(@NonNull String groupId) {
if (TextUtils.isEmpty(groupId)) { if (TextUtils.isEmpty(groupId)) {
@ -232,18 +236,20 @@ public class RecipientDatabase extends Database {
String query = GROUP_ID + " = ?"; String query = GROUP_ID + " = ?";
String[] args = new String[] { groupId }; String[] args = new String[] { groupId };
synchronized (this) {
try (Cursor cursor = db.query(TABLE_NAME, ID_PROJECTION, query, args, null, null, null)) { try (Cursor cursor = db.query(TABLE_NAME, ID_PROJECTION, query, args, null, null, null)) {
if (cursor != null && cursor.moveToFirst()) { if (cursor != null && cursor.moveToFirst()) {
return RecipientId.from(cursor.getLong(cursor.getColumnIndexOrThrow(ID))); return RecipientId.from(cursor.getLong(cursor.getColumnIndexOrThrow(ID)));
} else { } else {
ContentValues values = new ContentValues(); ContentValues values = new ContentValues();
values.put(GROUP_ID, groupId); values.put(GROUP_ID, groupId);
long id = db.insert(TABLE_NAME, null, values); long id = db.insertOrThrow(TABLE_NAME, null, values);
if (id < 0) throw new AssertionError("Failed to insert recipient!"); if (id < 0) throw new AssertionError("Failed to insert recipient!");
return RecipientId.from(id); return RecipientId.from(id);
} }
} }
} }
}
public Cursor getBlocked() { public Cursor getBlocked() {
SQLiteDatabase database = databaseHelper.getReadableDatabase(); SQLiteDatabase database = databaseHelper.getReadableDatabase();