package com.ifavine.pay.utils;

import android.content.Context;
import android.content.SharedPreferences;

import com.ifavine.pay.common.AppContext;
import com.ifavine.pay.common.Constants;


/**
 * Created by tree on 11/28/2016.
 */

public class SPUtil {

    private static SPUtil myPrefs;//私有化
    private static SharedPreferences sp;

    //提供私有的构造方法
    private SPUtil() {
    }

    /**
     * 对外提供的初始化方法
     *
     * @return
     */
    public static SPUtil getInstance() {
        //初始化自身对象
        if (myPrefs == null) {
            myPrefs = new SPUtil();
        }
        if (sp == null) {
            sp = AppContext.getInstance().getSharedPreferences(Constants.PREF_NAME,
                    Context.MODE_PRIVATE);
        }
        return myPrefs;
    }

    /**
     * 向SharedPreferences中写入String类型的数据
     */
    public void writeString(String key, String value) {
        //获取编辑器对象
        SharedPreferences.Editor editor = sp.edit();
        //写入数据
        editor.putString(key, value);
        editor.commit();//提交写入的数据
    }

    /**
     * 根据key读取SharedPreferences中的String类型的数据
     *
     * @param key
     * @return
     */
    public String readString(String key) {
        return sp.getString(key, "");
    }

    /**
     * 向SharedPreferences中写入Boolean类型的数据
     *
     * @param key
     */
    public void writeBoolean(String key, boolean value) {
        //获取编辑器对象
        SharedPreferences.Editor editor = sp.edit();
        //写入数据
        editor.putBoolean(key, value);
        editor.commit();//提交写入的数据
    }

    /**
     * 根据key读取SharedPreferences中的Boolean类型的数据
     *
     * @param key
     * @return
     */
    public Boolean readBoolean(String key) {
        return sp.getBoolean(key, false);
    }

    /**
     * 向SharedPreferences中写入long类型的数据
     */
    public void writeLong(String key, long value) {
        //获取编辑器对象
        SharedPreferences.Editor editor = sp.edit();
        //写入数据
        editor.putLong(key, value);
        editor.commit();//提交写入的数据
    }

    /**
     * 根据key读取SharedPreferences中的long类型的数据
     *
     * @param key
     * @return
     */
    public Long readLong(String key) {
        return sp.getLong(key, 0);
    }

    /**
     * 根据key读取
     *
     * @param key
     * @return
     */
    public Integer readInt(String key, int mDefault) {
        return sp.getInt(key, mDefault);
    }

    /**
     * @param key
     * @param value
     */
    public void writeInt(String key, int value) {
        //获取编辑器对象
        SharedPreferences.Editor editor = sp.edit();
        //写入数据
        editor.putInt(key, value);
        editor.commit();//提交写入的数据
    }
}

