/**
*
*/
package com.mcxiaoke.minicat.config;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.text.TextUtils;
import android.util.Log;
import com.mcxiaoke.minicat.AppContext;
import org.oauthsimple.model.OAuthToken;
/**
* @author mcxiaoke
* @version 2.0 2012.02.27
*/
public class AccountStore {
public static final String ACCOUNT_ENCRYPT_KEY = "~!@WER$%g&(_=<LhG54FGH{+[/j]";
public static final String CONSUMER_ENCRYPT_KEY = "Gh%^@!4FH)(8<.:er%34Fh&%$%";
private static final String TAG = AccountStore.class.getSimpleName();
private static final boolean DEBUG = AppContext.DEBUG;
private static final String STORE_NAME = "account_store";
private static final String KEY_ACCOUNT = "account";
private static final String KEY_SCREEN_NAME = "screen_name";
private static final String KEY_PROFILE_IMAGE = "profile_image";
private static final String KEY_ACCESS_TOKEN = "access_token";
private static final String KEY_ACCESS_TOKEN_SECRET = "access_token_secret";
private static final String KEY_LOGIN_NAME = "login_name";
private static final String KEY_LOGIN_PASSWORD = "login_password";
private Context mContext;
private SharedPreferences mPreferences;
public AccountStore(Context context) {
this.mContext = context;
this.mPreferences = mContext.getSharedPreferences(STORE_NAME,
Context.MODE_PRIVATE);
}
public synchronized void saveAccessToken(String token, String tokenSecret) {
if (token == null) {
return;
}
Editor editor = mPreferences.edit();
editor.putString(KEY_ACCESS_TOKEN, token);
editor.putString(KEY_ACCESS_TOKEN_SECRET, tokenSecret);
editor.commit();
if (DEBUG) {
Log.d(TAG, "saveAccessToken() token: " + token + " tokenSecret: "
+ tokenSecret);
}
}
public synchronized void saveAccessToken(OAuthToken token) {
if (token == null) {
return;
}
saveAccessToken(token.getToken(), token.getSecret());
}
public synchronized OAuthToken readAccessToken() {
String token = mPreferences.getString(KEY_ACCESS_TOKEN, null);
String tokenSecret = mPreferences.getString(KEY_ACCESS_TOKEN_SECRET,
null);
if (DEBUG) {
Log.d(TAG, "readAccessToken() token: " + token + " tokenSecret: "
+ tokenSecret);
}
if (TextUtils.isEmpty(tokenSecret)) {
return null;
}
return new OAuthToken(token, tokenSecret);
}
public synchronized void clearAccessToken() {
Editor editor = mPreferences.edit();
editor.remove(KEY_ACCESS_TOKEN);
editor.remove(KEY_ACCESS_TOKEN_SECRET);
editor.commit();
if (DEBUG) {
Log.d(TAG, "clearAccessToken()");
}
}
public synchronized void save(AccountInfo info) {
if (info == null) {
return;
}
Editor editor = mPreferences.edit();
editor.putString(KEY_ACCOUNT, info.getAccount());
editor.putString(KEY_SCREEN_NAME, info.getScreenName());
editor.putString(KEY_PROFILE_IMAGE, info.getProfileImage());
editor.putString(KEY_LOGIN_NAME, info.getLoginName());
editor.putString(KEY_LOGIN_PASSWORD, info.getLoginPassword());
editor.putString(KEY_ACCESS_TOKEN, info.getToken());
editor.putString(KEY_ACCESS_TOKEN_SECRET, info.getTokenSecret());
editor.commit();
if (DEBUG) {
Log.d(TAG, "save() AccountInfo: " + info);
}
}
public AccountInfo read() {
AccountInfo info = new AccountInfo();
info.setAccount(mPreferences.getString(KEY_ACCOUNT, null));
info.setScreenName(mPreferences.getString(KEY_SCREEN_NAME, null));
info.setProfileImage(mPreferences.getString(KEY_PROFILE_IMAGE, null));
info.setLoginName(mPreferences.getString(KEY_LOGIN_NAME, null));
info.setLoginPassword(mPreferences.getString(KEY_LOGIN_PASSWORD, null));
info.setTokenAndSecret(mPreferences.getString(KEY_ACCESS_TOKEN, null),
mPreferences.getString(KEY_ACCESS_TOKEN_SECRET, null));
if (DEBUG) {
Log.d(TAG, "read() AccountInfo: " + info);
}
return info;
}
public synchronized void clear() {
Editor editor = mPreferences.edit();
editor.clear();
editor.commit();
if (DEBUG) {
Log.d(TAG, "clear()");
}
}
public synchronized void saveUserInfo(String account, String screenName,
String profileImage) {
Editor editor = mPreferences.edit();
editor.putString(KEY_ACCOUNT, account);
editor.putString(KEY_SCREEN_NAME, screenName);
editor.putString(KEY_PROFILE_IMAGE, profileImage);
editor.commit();
if (DEBUG) {
Log.d(TAG, "saveUserInfo() account: " + account + " screenName: "
+ screenName);
}
}
public String readAccount() {
return mPreferences.getString(KEY_ACCOUNT, null);
}
public String readScreenName() {
return mPreferences.getString(KEY_SCREEN_NAME, null);
}
public void saveLoginInfo(String loginName, String loginPassword) {
Editor editor = mPreferences.edit();
editor.putString(KEY_LOGIN_NAME, loginName);
editor.putString(KEY_LOGIN_PASSWORD, loginPassword);
editor.commit();
if (DEBUG) {
Log.d(TAG, "saveLoginInfo() loginName: " + loginName
+ " loginPassword: " + loginPassword);
}
}
public String readLoginName() {
return mPreferences.getString(KEY_LOGIN_NAME, null);
}
public String readLoginPassword() {
return mPreferences.getString(KEY_LOGIN_PASSWORD, null);
}
}