package com.zachklipp.captivate.state_machine;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import com.zachklipp.captivate.captive_portal.PortalDetector;
import com.zachklipp.captivate.state_machine.StateMachineStorage.StorageBackend;
import com.zachklipp.captivate.util.Log;
public class PortalStateMachineStorageBackend implements StorageBackend
{
private static final String PREFERENCES_NAME = "PortalStateMachine";
private static final String STATE_KEY = "state";
private PortalDetector mDetector;
private SharedPreferences mPreferences;
public PortalStateMachineStorageBackend(Context context, PortalDetector detector)
{
assert(context != null);
assert(detector != null);
mPreferences = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE);
mDetector = detector;
}
@Override
public void save(StateMachine machine)
{
Editor editor = mPreferences.edit();
editor.putString(STATE_KEY, machine.getCurrentState().getName());
editor.commit();
}
@Override
public boolean canLoad()
{
return mPreferences.contains(STATE_KEY);
}
@Override
public StateMachine load()
{
String stateName = mPreferences.getString(STATE_KEY, PortalStateMachine.State.UNKNOWN.getName());
Log.d("Attempting to load state machine from state %s", stateName);
return new PortalStateMachine(mDetector, stateName);
}
@Override
public StateMachine create()
{
return new PortalStateMachine(mDetector);
}
public void clear()
{
Editor editor = mPreferences.edit();
editor.remove(STATE_KEY);
editor.commit();
}
}