summaryrefslogtreecommitdiff
path: root/src/com/android/messaging/util/BuglePrefs.java
blob: 74a0d468716d06752c61d213cead6484b1698967 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/*
 * Copyright (C) 2015 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.messaging.util;

import com.android.messaging.Factory;

/**
 * Thin wrapper to get/set shared prefs values.
 */
public abstract class BuglePrefs {
    /**
     * Shared preferences name for preferences applicable to the entire app.
     */
    public static final String SHARED_PREFERENCES_NAME = "bugle";

    /**
     * Shared preferences name for subscription-specific preferences.
     * Note: for all subscription-specific preferences, please prefix the shared preference keys
     * with "buglesub_", so that Bugle may perform runtime validations on preferences to make sure
     * you don't accidentally write per-subscription settings into the general pref file, and vice
     * versa.
     */
    public static final String SHARED_PREFERENCES_PER_SUBSCRIPTION_PREFIX = "buglesub_";

    /**
     * A placeholder base version for Bugle builds where no shared pref version was defined.
     */
    public static final int NO_SHARED_PREFERENCES_VERSION = -1;

    /**
     * Returns the shared preferences file name to use.
     * Subclasses should override and return the shared preferences file.
     */
    public abstract String getSharedPreferencesName();


    /**
     * Handles pref version upgrade.
     */
    public abstract void onUpgrade(final int oldVersion, final int newVersion);

    /**
     * Gets the SharedPreferences accessor to the application-wide preferences.
     */
    public static BuglePrefs getApplicationPrefs() {
        return Factory.get().getApplicationPrefs();
    }

    /**
     * Gets the SharedPreferences accessor to the subscription-specific preferences.
     */
    public static BuglePrefs getSubscriptionPrefs(final int subId) {
        return Factory.get().getSubscriptionPrefs(subId);
    }

    /**
     * @param key The key to look up in shared prefs
     * @param defaultValue The default value if value in shared prefs is null or if
     * NumberFormatException is caught.
     * @return The corresponding value, or the default value.
     */
    public abstract int getInt(final String key, final int defaultValue);

    /**
     * @param key The key to look up in shared prefs
     * @param defaultValue The default value if value in shared prefs is null or if
     * NumberFormatException is caught.
     * @return The corresponding value, or the default value.
     */
    public abstract long getLong(final String key, final long defaultValue);

    /**
     * @param key The key to look up in shared prefs
     * @param defaultValue The default value if value in shared prefs is null.
     * @return The corresponding value, or the default value.
     */
    public abstract boolean getBoolean(final String key, final boolean defaultValue);

    /**
     * @param key The key to look up in shared prefs
     * @param defaultValue The default value if value in shared prefs is null.
     * @return The corresponding value, or the default value.
     */
    public abstract String getString(final String key, final String defaultValue);

    /**
     * @param key The key to look up in shared prefs
     * @return The corresponding value, or null if not found.
     */
    public abstract byte[] getBytes(final String key);

    /**
     * @param key The key to set in shared prefs
     * @param value The value to assign to the key
     */
    public abstract void putInt(final String key, final int value);

    /**
     * @param key The key to set in shared prefs
     * @param value The value to assign to the key
     */
    public abstract void putLong(final String key, final long value);

    /**
     * @param key The key to set in shared prefs
     * @param value The value to assign to the key
     */
    public abstract void putBoolean(final String key, final boolean value);

    /**
     * @param key The key to set in shared prefs
     * @param value The value to assign to the key
     */
    public abstract void putString(final String key, final String value);

    /**
     * @param key The key to set in shared prefs
     * @param value The value to assign to the key
     */
    public abstract void putBytes(final String key, final byte[] value);

    /**
     * @param key The key to remove from shared prefs
     */
    public abstract void remove(String key);
}