package fi.bitrite.android.ws.util;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Environment;
import android.preference.PreferenceManager;
import android.util.Log;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import fi.bitrite.android.ws.WSAndroidApplication;
import fi.bitrite.android.ws.model.Host;
/**
* Singleton pattern for our MemberInfo
*/
public class MemberInfo {
private static MemberInfo instance;
private Host mHost;
private static final String TAG = "MemberInfo";
public static final String mWSAndroidDirName = Environment
.getExternalStorageDirectory()
.getAbsolutePath() + "/wsandroid/";
public static final String mProfilePhotoPath = mWSAndroidDirName + "memberphoto";
private MemberInfo(Host host) {
if (host == null) {
host = retrieveMemberInfo();
if (host == null) {
return;
}
}
mHost = host;
persistMemberInfo(host);
// Set up directory for photos if it doesn't exist
File androidDir = new File(mWSAndroidDirName);
if (!androidDir.exists()) {
androidDir.mkdirs();
}
}
private void persistMemberInfo(Host host) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(WSAndroidApplication.getAppContext());
SharedPreferences.Editor prefsEditor = prefs.edit();
Gson gson = new Gson();
String json = gson.toJson(host);
prefsEditor.putString("member_info", json);
prefsEditor.commit();
}
private Host retrieveMemberInfo() {
Host host = null;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(WSAndroidApplication.getAppContext());
Gson gson = new Gson();
String json = prefs.getString("member_info", "");
try {
host = gson.fromJson(json, Host.class);
} catch (JsonSyntaxException e) {
// We failed, will return null
}
return host;
}
private void deleteMemberInfo() {
File photo = new File(mProfilePhotoPath);
boolean result = photo.delete();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(WSAndroidApplication.getAppContext());
SharedPreferences.Editor prefsEditor = prefs.edit();
prefsEditor.remove("member_info");
prefsEditor.commit();
}
public static String getMemberPhotoFilePath() {
return instance != null ? instance.mProfilePhotoPath : null;
}
public static void initInstance(Host host)
{
instance = new MemberInfo(host);
}
// We probably don't need this - just get of the host details
public static MemberInfo getInstance() {
// Check to see if initialized?
return instance;
}
public static Host getMemberInfo() {
if (instance != null) {
return getInstance().mHost;
}
return null;
}
public static void doLogout() {
if (instance != null) {
instance.deleteMemberInfo();
instance = null;
}
}
}