summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/speeddial/database/SpeedDialEntryDatabaseHelper.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/dialer/speeddial/database/SpeedDialEntryDatabaseHelper.java')
-rw-r--r--java/com/android/dialer/speeddial/database/SpeedDialEntryDatabaseHelper.java30
1 files changed, 24 insertions, 6 deletions
diff --git a/java/com/android/dialer/speeddial/database/SpeedDialEntryDatabaseHelper.java b/java/com/android/dialer/speeddial/database/SpeedDialEntryDatabaseHelper.java
index 544bb3613..1416a203d 100644
--- a/java/com/android/dialer/speeddial/database/SpeedDialEntryDatabaseHelper.java
+++ b/java/com/android/dialer/speeddial/database/SpeedDialEntryDatabaseHelper.java
@@ -25,6 +25,7 @@ import android.text.TextUtils;
import com.android.dialer.common.Assert;
import com.android.dialer.common.database.Selection;
import com.android.dialer.speeddial.database.SpeedDialEntry.Channel;
+import com.google.common.base.Optional;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import java.util.ArrayList;
@@ -38,12 +39,20 @@ import java.util.List;
public final class SpeedDialEntryDatabaseHelper extends SQLiteOpenHelper
implements SpeedDialEntryDao {
+ /**
+ * If the pinned position is absent, then we need to write an impossible value in the table like
+ * -1 so that it doesn't default to 0. When we read this value from the table, we'll translate it
+ * to Optional.absent() in the resulting {@link SpeedDialEntry}.
+ */
+ private static final int PINNED_POSITION_ABSENT = -1;
+
private static final int DATABASE_VERSION = 2;
private static final String DATABASE_NAME = "CPSpeedDialEntry";
// Column names
private static final String TABLE_NAME = "speed_dial_entries";
private static final String ID = "id";
+ private static final String PINNED_POSITION = "pinned_position";
private static final String CONTACT_ID = "contact_id";
private static final String LOOKUP_KEY = "lookup_key";
private static final String PHONE_NUMBER = "phone_number";
@@ -53,12 +62,13 @@ public final class SpeedDialEntryDatabaseHelper extends SQLiteOpenHelper
// Column positions
private static final int POSITION_ID = 0;
- private static final int POSITION_CONTACT_ID = 1;
- private static final int POSITION_LOOKUP_KEY = 2;
- private static final int POSITION_PHONE_NUMBER = 3;
- private static final int POSITION_PHONE_TYPE = 4;
- private static final int POSITION_PHONE_LABEL = 5;
- private static final int POSITION_PHONE_TECHNOLOGY = 6;
+ private static final int POSITION_PINNED_POSITION = 1;
+ private static final int POSITION_CONTACT_ID = 2;
+ private static final int POSITION_LOOKUP_KEY = 3;
+ private static final int POSITION_PHONE_NUMBER = 4;
+ private static final int POSITION_PHONE_TYPE = 5;
+ private static final int POSITION_PHONE_LABEL = 6;
+ private static final int POSITION_PHONE_TECHNOLOGY = 7;
// Create Table Query
private static final String CREATE_TABLE_SQL =
@@ -66,6 +76,7 @@ public final class SpeedDialEntryDatabaseHelper extends SQLiteOpenHelper
+ TABLE_NAME
+ " ("
+ (ID + " integer primary key, ")
+ + (PINNED_POSITION + " integer, ")
+ (CONTACT_ID + " integer, ")
+ (LOOKUP_KEY + " text, ")
+ (PHONE_NUMBER + " text, ")
@@ -119,11 +130,17 @@ public final class SpeedDialEntryDatabaseHelper extends SQLiteOpenHelper
.build();
}
+ Optional<Integer> pinnedPosition = Optional.of(cursor.getInt(POSITION_PINNED_POSITION));
+ if (pinnedPosition.or(PINNED_POSITION_ABSENT) == PINNED_POSITION_ABSENT) {
+ pinnedPosition = Optional.absent();
+ }
+
SpeedDialEntry entry =
SpeedDialEntry.builder()
.setDefaultChannel(channel)
.setContactId(cursor.getLong(POSITION_CONTACT_ID))
.setLookupKey(cursor.getString(POSITION_LOOKUP_KEY))
+ .setPinnedPosition(pinnedPosition)
.setId(cursor.getLong(POSITION_ID))
.build();
entries.add(entry);
@@ -226,6 +243,7 @@ public final class SpeedDialEntryDatabaseHelper extends SQLiteOpenHelper
if (includeId) {
values.put(ID, entry.id());
}
+ values.put(PINNED_POSITION, entry.pinnedPosition().or(PINNED_POSITION_ABSENT));
values.put(CONTACT_ID, entry.contactId());
values.put(LOOKUP_KEY, entry.lookupKey());
if (entry.defaultChannel() != null) {