package com.sets.speedtest.manager;
import android.content.Context;
import android.util.SparseArray;
import com.sets.speedtest.domain.AddressInfo;
import com.sets.speedtest.domain.UserInfo;
import com.sets.speedtest.utils.SharedPreferencesUtils;
import com.sets.speedtest.utils.StringB;
/**
* SharedPreferences管理类
*
* @author : lipan
* @create_time : 2014年4月18日 下午4:22:24
* @desc : SharedPreferences管理类
* @update_time :
* @update_desc :
*
*/
public class SharedPreferencesManager
{
private static final String SP_BASE_DB_VERSION = "app.sets.basedb.version"; // 基础数据库版本
private static final String SP_CURRENT_TESTER_PASSPORT = "app.sets.tester.passport"; // 测试者passport
private static final String SP_CURRENT_TESTER_ID = "app.sets.tester.id"; // 测试者Id
private static final String SP_CURRENT_TESTER_PHONE = "app.sets.tester.phone"; // 测试者手机号
private static final String SP_CURRENT_TESTER_ISFIRST = "app.sets.tester.isfirst"; // 第一次进入测速应用
private static final String SP_CURRENT_TESTER_UPLOAD_URL = "app.sets.tester.uploadUrl"; // 上传url
private static final String SP_CURRENT_TESTER_DOWNLOAD_URL = "app.sets.tester.downloadUrl"; // 下载url
private static final String SP_CURRENT_TESTER_DOWNLOAD_URL_HOST = "app.sets.tester.downloadUrlHost"; // 下载url主机
private static final String SP_CURRENT_TESTER_DOWNLOAD_URL_PORT = "app.sets.tester.downloadUrlPort"; // 下载url端口
private static final String SP_CURRENT_TESTER_DOWNLOAD_URL_PATH = "app.sets.tester.downloadUrlPath"; // 下载url路径
private static final String SP_CURRENT_TESTER_COMMENTS = "app.sets.tester.comments"; // 提示信息
private static final String SP_CURRENT_TESTER_FORMULA_NUM = "app.sets.tester.formulaNum"; // 系数
private static final String SP_CURRENT_TESTER_ADDRESS_ID = "app.sets.tester.addressId"; // 地址Id
private SharedPreferencesUtils preferences;
private static SharedPreferencesManager instance;
private static Context context;
private UserInfo userInfo;
private SparseArray<AddressInfo> userAdds;
/**
* 获得全局唯一的SD管理类实例
*
* @return
*/
public static SharedPreferencesManager getInstance()
{
if (instance != null)
return instance;
synchronized (SharedPreferencesManager.class)
{
if (instance != null)
return instance;
instance = new SharedPreferencesManager();
return instance;
}
}
/**
* 私有构造方法
*/
private SharedPreferencesManager()
{
preferences = new SharedPreferencesUtils(context);
}
/**
* 重置sd管理类实例
*/
public static void reset(Context contextP)
{
context = contextP;
instance = new SharedPreferencesManager();
instance.load();
}
/**
* 加载系统/用户sd中的内容
*/
private void load()
{
userInfo = new UserInfo();
userInfo.isFirst = preferences.getBoolean(SP_CURRENT_TESTER_ISFIRST, true);
userInfo.passport = preferences.getString(SP_CURRENT_TESTER_PASSPORT, null);
userInfo.testerId = preferences.getInt(SP_CURRENT_TESTER_ID, -1);
userInfo.testerPhone = preferences.getString(SP_CURRENT_TESTER_PHONE, null);
userInfo.uploadUrl = preferences.getString(SP_CURRENT_TESTER_UPLOAD_URL, null);
userInfo.downloadUrl = preferences.getString(SP_CURRENT_TESTER_DOWNLOAD_URL, null);
userInfo.comments = preferences.getString(SP_CURRENT_TESTER_COMMENTS, null);
userInfo.formulaNum = preferences.getInt(SP_CURRENT_TESTER_FORMULA_NUM, -1);
userInfo.addressId = preferences.getInt(SP_CURRENT_TESTER_ADDRESS_ID, -1);
userInfo.baseDbVersion= preferences.getInt(SP_BASE_DB_VERSION, 0);
}
public UserInfo getUserInfo()
{
return userInfo;
}
public SparseArray<AddressInfo> getUserAdds()
{
return userAdds;
}
public void setUserAdds(SparseArray<AddressInfo> userAdds)
{
this.userAdds = userAdds;
}
public void setPassport(String passport)
{
if (null != passport && !StringB.isBlank(passport))
{
preferences.putString(SP_CURRENT_TESTER_PASSPORT, passport);
this.userInfo.passport = passport;
}
}
public void setTesterId(Integer testerId)
{
if (null != testerId && 0 != testerId)
{
preferences.putInt(SP_CURRENT_TESTER_ID, testerId);
this.userInfo.testerId = testerId;
}
}
public void setTesterPhone(String testerPhone)
{
if (null != testerPhone && !StringB.isBlank(testerPhone))
{
preferences.putString(SP_CURRENT_TESTER_PHONE, testerPhone);
this.userInfo.testerPhone = testerPhone;
}
}
public void setIsFirst(Boolean isFirst)
{
if (null != isFirst)
{
preferences.putBoolean(SP_CURRENT_TESTER_ISFIRST, isFirst);
this.userInfo.isFirst = isFirst;
}
}
public void setUploadUrl(String uploadUrl)
{
if (!StringB.isBlank(uploadUrl))
{
preferences.putString(SP_CURRENT_TESTER_UPLOAD_URL, uploadUrl);
this.userInfo.uploadUrl = uploadUrl;
}
}
public void setDownloadUrl(String downloadUrl)
{
if (!StringB.isBlank(downloadUrl))
{
preferences.putString(SP_CURRENT_TESTER_DOWNLOAD_URL, downloadUrl);
this.userInfo.downloadUrl = downloadUrl;
}
}
public void setDownloadUrlHost(String downloadUrlHost)
{
if (!StringB.isBlank(downloadUrlHost))
{
preferences.putString(SP_CURRENT_TESTER_DOWNLOAD_URL_HOST, downloadUrlHost);
this.userInfo.downloadUrlHost = downloadUrlHost;
}
}
public void setDownloadUrlPort(String downloadUrlPort)
{
if (!StringB.isBlank(downloadUrlPort))
{
preferences.putString(SP_CURRENT_TESTER_DOWNLOAD_URL_PORT, downloadUrlPort);
this.userInfo.downloadUrlPort = downloadUrlPort;
}
}
public void setDownloadUrlPath(String downloadUrlPath)
{
if (!StringB.isBlank(downloadUrlPath))
{
preferences.putString(SP_CURRENT_TESTER_DOWNLOAD_URL_PATH, downloadUrlPath);
this.userInfo.downloadUrlPath = downloadUrlPath;
}
}
public void setComments(String comments)
{
if (!StringB.isBlank(comments))
{
preferences.putString(SP_CURRENT_TESTER_COMMENTS, comments);
this.userInfo.comments = comments;
}
}
public void setFormulaNum(Integer formulaNum)
{
if (null != formulaNum && 0 != formulaNum)
{
preferences.putInt(SP_CURRENT_TESTER_FORMULA_NUM, formulaNum);
this.userInfo.formulaNum = formulaNum;
}
}
public void setAddressId(Integer addressId)
{
if (null != addressId && 0 != addressId)
{
preferences.putInt(SP_CURRENT_TESTER_ADDRESS_ID, addressId);
this.userInfo.addressId = addressId;
}
}
public void setBaseDbVersion(Integer version)
{
preferences.putInt(SP_BASE_DB_VERSION, version);
this.userInfo.baseDbVersion = version;
}
}