From 6d2f22ad19537c95b6afebca2f960805c7eca37a Mon Sep 17 00:00:00 2001 From: Danesh M Date: Wed, 4 Nov 2015 14:28:10 -0800 Subject: [PATCH] CMSDK : Add functions for delimited strings Change-Id: Ifccd6c7266cacdcd1413b221546be77eade9c501 --- .../cyanogenmod/providers/CMSettings.java | 120 ++++++++++++++++++ 1 file changed, 120 insertions(+) diff --git a/src/java/cyanogenmod/providers/CMSettings.java b/src/java/cyanogenmod/providers/CMSettings.java index 7fd751b..723520f 100644 --- a/src/java/cyanogenmod/providers/CMSettings.java +++ b/src/java/cyanogenmod/providers/CMSettings.java @@ -25,10 +25,14 @@ import android.os.RemoteException; import android.os.SystemProperties; import android.os.UserHandle; import android.provider.Settings; +import android.text.TextUtils; import android.util.AndroidException; import android.util.Log; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.regex.Pattern; /** * CMSettings contains CM specific preferences in System, Secure, and Global. @@ -273,6 +277,44 @@ public final class CMSettings { // region Methods + /** + * Put a delimited list as a string + * @param resolver to access the database with + * @param name to store + * @param delimiter to split + * @param list to join and store + * @hide + */ + public static void putListAsDelimitedString(ContentResolver resolver, String name, + String delimiter, List list) { + String store = TextUtils.join(delimiter, list); + putString(resolver, name, store); + } + + /** + * Get a delimited string returned as a list + * @param resolver to access the database with + * @param name to store + * @param delimiter to split the list with + * @return list of strings for a specific Settings.Secure item + * @hide + */ + public static List getDelimitedStringAsList(ContentResolver resolver, String name, + String delimiter) { + String baseString = getString(resolver, name); + List list = new ArrayList(); + if (!TextUtils.isEmpty(baseString)) { + final String[] array = TextUtils.split(baseString, Pattern.quote(delimiter)); + for (String item : array) { + if (TextUtils.isEmpty(item)) { + continue; + } + list.add(item); + } + } + return list; + } + /** * Construct the content URI for a particular name/value pair, useful for monitoring changes * with a ContentObserver. @@ -710,6 +752,45 @@ public final class CMSettings { // region Methods + + /** + * Put a delimited list as a string + * @param resolver to access the database with + * @param name to store + * @param delimiter to split + * @param list to join and store + * @hide + */ + public static void putListAsDelimitedString(ContentResolver resolver, String name, + String delimiter, List list) { + String store = TextUtils.join(delimiter, list); + putString(resolver, name, store); + } + + /** + * Get a delimited string returned as a list + * @param resolver to access the database with + * @param name to store + * @param delimiter to split the list with + * @return list of strings for a specific Settings.Secure item + * @hide + */ + public static List getDelimitedStringAsList(ContentResolver resolver, String name, + String delimiter) { + String baseString = getString(resolver, name); + List list = new ArrayList(); + if (!TextUtils.isEmpty(baseString)) { + final String[] array = TextUtils.split(baseString, Pattern.quote(delimiter)); + for (String item : array) { + if (TextUtils.isEmpty(item)) { + continue; + } + list.add(item); + } + } + return list; + } + /** * Construct the content URI for a particular name/value pair, useful for monitoring changes * with a ContentObserver. @@ -1211,6 +1292,45 @@ public final class CMSettings { // region Methods + + /** + * Put a delimited list as a string + * @param resolver to access the database with + * @param name to store + * @param delimiter to split + * @param list to join and store + * @hide + */ + public static void putListAsDelimitedString(ContentResolver resolver, String name, + String delimiter, List list) { + String store = TextUtils.join(delimiter, list); + putString(resolver, name, store); + } + + /** + * Get a delimited string returned as a list + * @param resolver to access the database with + * @param name to store + * @param delimiter to split the list with + * @return list of strings for a specific Settings.Secure item + * @hide + */ + public static List getDelimitedStringAsList(ContentResolver resolver, String name, + String delimiter) { + String baseString = getString(resolver, name); + List list = new ArrayList(); + if (!TextUtils.isEmpty(baseString)) { + final String[] array = TextUtils.split(baseString, Pattern.quote(delimiter)); + for (String item : array) { + if (TextUtils.isEmpty(item)) { + continue; + } + list.add(item); + } + } + return list; + } + /** * Construct the content URI for a particular name/value pair, useful for monitoring changes * with a ContentObserver.