...
This commit is contained in:
@@ -1,9 +0,0 @@
|
||||
package kr.lunaticbum.utils.preferences;
|
||||
|
||||
/**
|
||||
* Pref is abbreviation class of {@link PreferencesUtil}.
|
||||
*
|
||||
* @author Robin Gustafsson
|
||||
*/
|
||||
public class Pref extends PreferencesUtil {
|
||||
}
|
||||
@@ -15,201 +15,126 @@ import java.io.ObjectInputStream
|
||||
import java.io.ObjectOutputStream
|
||||
import java.io.Serializable
|
||||
|
||||
/**
|
||||
* PreferencesUtil helps to manage application-wide [SharedPreferences] conveniently.
|
||||
*
|
||||
* @author Robin Gustafsson
|
||||
*/
|
||||
open class PreferencesUtil {
|
||||
companion object {
|
||||
private val LogHelper = LogHelper(PreferencesUtil::class.java)
|
||||
var defaultName: String = PreferencesUtil::class.java.canonicalName
|
||||
|
||||
private fun getPreferences(name: String): SharedPreferences {
|
||||
return getContext().getSharedPreferences(name, Context.MODE_PRIVATE)
|
||||
}
|
||||
|
||||
|
||||
fun get(key: String?, defValue: Boolean): Boolean {
|
||||
return get(defaultName, key, defValue)
|
||||
}
|
||||
interface PrefKey<T> {
|
||||
fun getKey() : String
|
||||
fun set(value : T)
|
||||
fun get(def : T? = null) : T
|
||||
}
|
||||
interface PrefJsonConvert {
|
||||
fun initialize(context: Context)
|
||||
fun inject(SharedPreferences : SharedPreferences)
|
||||
fun getSettings() : Map<String,Any>
|
||||
fun putSetting(json : Map<String,Any>)
|
||||
}
|
||||
abstract class PreferencesHelper : PrefJsonConvert {
|
||||
|
||||
fun get(key: String?, defValue: Int): Int {
|
||||
return get(defaultName, key, defValue)
|
||||
}
|
||||
var sharedPreferences : SharedPreferences? = null
|
||||
open fun allPrefKeys() : ArrayList<String> =arrayListOf()
|
||||
open fun getBooleanPrefix() : String = getDefaultPrefix().plus(".BOOL.")
|
||||
open fun getStringPrefix() : String = getDefaultPrefix().plus(".STRING.")
|
||||
open fun getLongPrefix() : String = getDefaultPrefix().plus(".LONG.")
|
||||
open fun getDefaultPrefix() : String = PreferencesHelper::class.java.canonicalName
|
||||
abstract override fun getSettings() : Map<String,Any>
|
||||
abstract override fun putSetting(json : Map<String,Any>)
|
||||
|
||||
fun get(key: String?, defValue: Float): Float {
|
||||
return get(defaultName, key, defValue)
|
||||
}
|
||||
private val LogHelper = LogHelper(PreferencesHelper::class.java)
|
||||
|
||||
fun get(key: String?, defValue: Long): Long {
|
||||
return get(defaultName, key, defValue)
|
||||
}
|
||||
override fun initialize(context: Context) {
|
||||
inject(context.getSharedPreferences(getDefaultPrefix(), Context.MODE_PRIVATE))
|
||||
}
|
||||
|
||||
fun get(key: String?, defValue: String?): String? {
|
||||
return get(defaultName, key, defValue)
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
||||
fun get(key: String?, defValue: Set<String?>?): Set<String>? {
|
||||
return get(defaultName, key, defValue)
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.FROYO)
|
||||
fun <C : Serializable?> get(key: String?, defValue: C): C {
|
||||
return get(defaultName, key, defValue)
|
||||
}
|
||||
|
||||
fun get(name: String, key: String?, defValue: Boolean): Boolean {
|
||||
return getPreferences(name).getBoolean(key, defValue)
|
||||
}
|
||||
|
||||
fun get(name: String, key: String?, defValue: Int): Int {
|
||||
return getPreferences(name).getInt(key, defValue)
|
||||
}
|
||||
|
||||
fun get(name: String, key: String?, defValue: Float): Float {
|
||||
return getPreferences(name).getFloat(key, defValue)
|
||||
}
|
||||
|
||||
fun get(name: String, key: String?, defValue: Long): Long {
|
||||
return getPreferences(name).getLong(key, defValue)
|
||||
}
|
||||
|
||||
fun get(name: String, key: String?, defValue: String?): String? {
|
||||
return getPreferences(name).getString(key, defValue)
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
||||
fun get(name: String, key: String?, defValue: Set<String?>?): Set<String>? {
|
||||
return getPreferences(name).getStringSet(key, defValue)
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.FROYO)
|
||||
fun <C : Serializable?> get(name: String, key: String?, defValue: C): C {
|
||||
var bais: ByteArrayInputStream? = null
|
||||
var ois: ObjectInputStream? = null
|
||||
var result = defValue
|
||||
|
||||
val value = getPreferences(name).getString(key, null)
|
||||
if (value != null) {
|
||||
try {
|
||||
val decoded = Base64.decode(value.toByteArray(), Base64.DEFAULT)
|
||||
bais = ByteArrayInputStream(decoded)
|
||||
ois = ObjectInputStream(bais)
|
||||
result = ois.readObject() as C
|
||||
} catch (e: Exception) {
|
||||
LogHelper.e(e)
|
||||
} finally {
|
||||
if (ois != null) {
|
||||
try {
|
||||
ois.close()
|
||||
} catch (e: IOException) {
|
||||
LogHelper.e(e)
|
||||
}
|
||||
}
|
||||
if (bais != null) {
|
||||
try {
|
||||
bais.close()
|
||||
} catch (e: IOException) {
|
||||
LogHelper.e(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
override fun inject(sharedPreferences : SharedPreferences) {
|
||||
this.sharedPreferences = sharedPreferences
|
||||
}
|
||||
|
||||
|
||||
fun put(key: String?, value: Boolean) {
|
||||
put(defaultName, key, value)
|
||||
}
|
||||
fun get(key: String?, defValue: Boolean): Boolean {
|
||||
return get(getDefaultPrefix(), key, defValue)
|
||||
}
|
||||
|
||||
fun put(key: String?, value: Int) {
|
||||
put(defaultName, key, value)
|
||||
}
|
||||
fun get(key: String?, defValue: Int): Int {
|
||||
return get(getDefaultPrefix(), key, defValue)
|
||||
}
|
||||
|
||||
fun put(key: String?, value: Float) {
|
||||
put(defaultName, key, value)
|
||||
}
|
||||
fun get(key: String?, defValue: Float): Float {
|
||||
return get(getDefaultPrefix(), key, defValue)
|
||||
}
|
||||
|
||||
fun put(key: String?, value: Long) {
|
||||
put(defaultName, key, value)
|
||||
}
|
||||
fun get(key: String?, defValue: Long): Long {
|
||||
return get(getDefaultPrefix(), key, defValue)
|
||||
}
|
||||
|
||||
fun put(key: String?, value: String?) {
|
||||
put(defaultName, key, value)
|
||||
}
|
||||
fun get(key: String?, defValue: String?): String? {
|
||||
return get(getDefaultPrefix(), key, defValue)
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
||||
fun put(key: String?, value: Set<String?>?) {
|
||||
put(defaultName, key, value)
|
||||
}
|
||||
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
||||
fun get(key: String?, defValue: Set<String?>?): Set<String>? {
|
||||
return get(getDefaultPrefix(), key, defValue)
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.FROYO)
|
||||
fun <C : Serializable?> put(key: String?, value: C) {
|
||||
put(defaultName, key, value)
|
||||
}
|
||||
@TargetApi(Build.VERSION_CODES.FROYO)
|
||||
fun <C : Serializable?> get(key: String?, defValue: C): C {
|
||||
return get(getDefaultPrefix(), key, defValue)
|
||||
}
|
||||
|
||||
fun put(name: String, key: String?, value: Boolean) {
|
||||
if (APILevel.require(9)) getPreferences(name).edit().putBoolean(key, value).apply()
|
||||
else getPreferences(name).edit().putBoolean(key, value).commit()
|
||||
}
|
||||
fun get(name: String, key: String?, defValue: Boolean): Boolean {
|
||||
return getPreferences()?.getBoolean(key, defValue) ?: false
|
||||
}
|
||||
|
||||
fun put(name: String, key: String?, value: Int) {
|
||||
if (APILevel.require(9)) getPreferences(name).edit().putInt(key, value).apply()
|
||||
else getPreferences(name).edit().putInt(key, value).commit()
|
||||
}
|
||||
fun getPreferences(): SharedPreferences? {
|
||||
return this.sharedPreferences
|
||||
}
|
||||
|
||||
fun put(name: String, key: String?, value: Float) {
|
||||
if (APILevel.require(9)) getPreferences(name).edit().putFloat(key, value).apply()
|
||||
else getPreferences(name).edit().putFloat(key, value).commit()
|
||||
}
|
||||
fun get(name: String, key: String?, defValue: Int): Int {
|
||||
return getPreferences()?.getInt(key, defValue) ?: 0
|
||||
}
|
||||
|
||||
fun put(name: String, key: String?, value: Long) {
|
||||
if (APILevel.require(9)) getPreferences(name).edit().putLong(key, value).apply()
|
||||
else getPreferences(name).edit().putLong(key, value).commit()
|
||||
}
|
||||
fun get(name: String, key: String?, defValue: Float): Float {
|
||||
return getPreferences()?.getFloat(key, defValue) ?: 0f
|
||||
}
|
||||
|
||||
fun put(name: String, key: String?, value: String?) {
|
||||
if (APILevel.require(9)) getPreferences(name).edit().putString(key, value).apply()
|
||||
else getPreferences(name).edit().putString(key, value).commit()
|
||||
}
|
||||
fun get(name: String, key: String?, defValue: Long): Long {
|
||||
return getPreferences()?.getLong(key, defValue) ?: 0L
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
||||
fun put(name: String, key: String?, value: Set<String?>?) {
|
||||
if (APILevel.require(9)) getPreferences(name).edit().putStringSet(key, value).apply()
|
||||
else getPreferences(name).edit().putStringSet(key, value).commit()
|
||||
}
|
||||
fun get(name: String, key: String?, defValue: String?): String? {
|
||||
return getPreferences()?.getString(key, defValue)
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.FROYO)
|
||||
fun <C : Serializable?> put(name: String, key: String?, value: C) {
|
||||
var baos: ByteArrayOutputStream? = null
|
||||
var oos: ObjectOutputStream? = null
|
||||
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
||||
fun get(name: String, key: String?, defValue: Set<String?>?): Set<String>? {
|
||||
return getPreferences()?.getStringSet(key, defValue)
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.FROYO)
|
||||
fun <C : Serializable?> get(name: String, key: String?, defValue: C): C {
|
||||
var bais: ByteArrayInputStream? = null
|
||||
var ois: ObjectInputStream? = null
|
||||
var result = defValue
|
||||
|
||||
val value = getPreferences()?.getString(key, null)
|
||||
if (value != null) {
|
||||
try {
|
||||
baos = ByteArrayOutputStream()
|
||||
oos = ObjectOutputStream(baos)
|
||||
oos.writeObject(value)
|
||||
val encoded = Base64.encode(baos.toByteArray(), Base64.DEFAULT)
|
||||
if (APILevel.require(9)) getPreferences(name).edit().putString(key, String(encoded))
|
||||
.apply()
|
||||
else getPreferences(name).edit().putString(key, String(encoded)).commit()
|
||||
} catch (e: IOException) {
|
||||
val decoded = Base64.decode(value.toByteArray(), Base64.DEFAULT)
|
||||
bais = ByteArrayInputStream(decoded)
|
||||
ois = ObjectInputStream(bais)
|
||||
result = ois.readObject() as C
|
||||
} catch (e: Exception) {
|
||||
LogHelper.e(e)
|
||||
throw RuntimeException(e)
|
||||
} finally {
|
||||
if (oos != null) {
|
||||
if (ois != null) {
|
||||
try {
|
||||
oos.close()
|
||||
ois.close()
|
||||
} catch (e: IOException) {
|
||||
LogHelper.e(e)
|
||||
}
|
||||
}
|
||||
if (baos != null) {
|
||||
if (bais != null) {
|
||||
try {
|
||||
baos.close()
|
||||
bais.close()
|
||||
} catch (e: IOException) {
|
||||
LogHelper.e(e)
|
||||
}
|
||||
@@ -217,21 +142,118 @@ open class PreferencesUtil {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun remove(key: String?) {
|
||||
remove(defaultName, key)
|
||||
}
|
||||
|
||||
fun remove(name: String, key: String?) {
|
||||
if (APILevel.require(9)) getPreferences(name).edit().remove(key).apply()
|
||||
else getPreferences(name).edit().remove(key).commit()
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
|
||||
@JvmOverloads
|
||||
fun clear(name: String = defaultName) {
|
||||
if (APILevel.require(9)) getPreferences(name).edit().clear().apply()
|
||||
else getPreferences(name).edit().clear().commit()
|
||||
fun put(key: String?, value: Boolean) {
|
||||
put(getDefaultPrefix(), key, value)
|
||||
}
|
||||
|
||||
fun put(key: String?, value: Int) {
|
||||
put(getDefaultPrefix(), key, value)
|
||||
}
|
||||
|
||||
fun put(key: String?, value: Float) {
|
||||
put(getDefaultPrefix(), key, value)
|
||||
}
|
||||
|
||||
fun put(key: String?, value: Long) {
|
||||
put(getDefaultPrefix(), key, value)
|
||||
}
|
||||
|
||||
fun put(key: String?, value: String?) {
|
||||
put(getDefaultPrefix(), key, value)
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
||||
fun put(key: String?, value: Set<String?>?) {
|
||||
put(getDefaultPrefix(), key, value)
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.FROYO)
|
||||
fun <C : Serializable?> put(key: String?, value: C) {
|
||||
put(getDefaultPrefix(), key, value)
|
||||
}
|
||||
|
||||
fun put(name: String, key: String?, value: Boolean) {
|
||||
if (APILevel.require(9)) getPreferences()?.edit()?.putBoolean(key, value)?.apply()
|
||||
else getPreferences()?.edit()?.putBoolean(key, value)?.commit()
|
||||
}
|
||||
|
||||
fun put(name: String, key: String?, value: Int) {
|
||||
if (APILevel.require(9)) getPreferences()?.edit()?.putInt(key, value)?.apply()
|
||||
else getPreferences()?.edit()?.putInt(key, value)?.commit()
|
||||
}
|
||||
|
||||
fun put(name: String, key: String?, value: Float) {
|
||||
if (APILevel.require(9)) getPreferences()?.edit()?.putFloat(key, value)?.apply()
|
||||
else getPreferences()?.edit()?.putFloat(key, value)?.commit()
|
||||
}
|
||||
|
||||
fun put(name: String, key: String?, value: Long) {
|
||||
if (APILevel.require(9)) getPreferences()?.edit()?.putLong(key, value)?.apply()
|
||||
else getPreferences()?.edit()?.putLong(key, value)?.commit()
|
||||
}
|
||||
|
||||
fun put(name: String, key: String?, value: String?) {
|
||||
if (APILevel.require(9)) getPreferences()?.edit()?.putString(key, value)?.apply()
|
||||
else getPreferences()?.edit()?.putString(key, value)?.commit()
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
||||
fun put(name: String, key: String?, value: Set<String?>?) {
|
||||
if (APILevel.require(9)) getPreferences()?.edit()?.putStringSet(key, value)?.apply()
|
||||
else getPreferences()?.edit()?.putStringSet(key, value)?.commit()
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.FROYO)
|
||||
fun <C : Serializable?> put(name: String, key: String?, value: C) {
|
||||
var baos: ByteArrayOutputStream? = null
|
||||
var oos: ObjectOutputStream? = null
|
||||
|
||||
try {
|
||||
baos = ByteArrayOutputStream()
|
||||
oos = ObjectOutputStream(baos)
|
||||
oos.writeObject(value)
|
||||
val encoded = Base64.encode(baos.toByteArray(), Base64.DEFAULT)
|
||||
if (APILevel.require(9)) getPreferences()?.edit()?.putString(key, String(encoded))?.apply()
|
||||
else getPreferences()?.edit()?.putString(key, String(encoded))?.commit()
|
||||
} catch (e: IOException) {
|
||||
LogHelper.e(e)
|
||||
throw RuntimeException(e)
|
||||
} finally {
|
||||
if (oos != null) {
|
||||
try {
|
||||
oos.close()
|
||||
} catch (e: IOException) {
|
||||
LogHelper.e(e)
|
||||
}
|
||||
}
|
||||
if (baos != null) {
|
||||
try {
|
||||
baos.close()
|
||||
} catch (e: IOException) {
|
||||
LogHelper.e(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun remove(key: String?) {
|
||||
remove(getDefaultPrefix(), key)
|
||||
}
|
||||
|
||||
fun remove(name: String, key: String?) {
|
||||
if (APILevel.require(9)) getPreferences()?.edit()?.remove(key)?.apply()
|
||||
else getPreferences()?.edit()?.remove(key)?.commit()
|
||||
}
|
||||
|
||||
|
||||
@JvmOverloads
|
||||
fun clear(name: String = getDefaultPrefix()) {
|
||||
if (APILevel.require(9)) getPreferences()?.edit()?.clear()?.apply()
|
||||
else getPreferences()?.edit()?.clear()?.commit()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user