package com.papagiannis.tuberun.stores;
import java.util.ArrayList;
import com.papagiannis.tuberun.Destination;
import com.papagiannis.tuberun.plan.Point;
import android.content.Context;
public class DestinationStore<T> extends Store<T> {
private static DestinationStore<Destination> instanceDestination;
public static DestinationStore<Destination> getInstance() {
if (instanceDestination == null) {
instanceDestination = new DestinationStore<Destination>();
//there must always be a home for serialisation reasons
instanceDestination.home=new Destination("", Point.ADDRESS);
instanceDestination.home.setHome(true);
}
return instanceDestination;
}
private DestinationStore() {
FILENAME = "tuberun.destinations";
}
@Override
public void add(T f, Context a) {
//no duplicates
if (list.contains(f)) {
return;
}
//keep the list bounded to 3 entries
if (list.size()>=3) list.remove(0);
super.add(f, a);
}
private T home=null;
public void setHome(T home, Context a) {
this.home=home;
storeToFile(a);
}
public void eraseHome(Context a) {
instanceDestination.home=new Destination("", Point.ADDRESS);
instanceDestination.home.setHome(true);
storeToFile(a);
}
public T getHome(Context activity) {
if (list==null) list=getFromFile(activity);
return home;
}
//Home is store inside the persistent list as the last element.
//It is removed from the list when the file is read
@Override
protected ArrayList<T> getFromFile(Context activity) {
ArrayList<T> result= super.getFromFile(activity);
if (result.size()>0) home=result.remove(result.size()-1);
return result;
}
@Override
public void storeToFile(Context activity) {
if (home!=null) list.add(home);
// list.clear();
super.storeToFile(activity);
list.remove(list.size()-1);
}
}