package mobi.pharmaapp.models;
import android.app.Activity;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import mobi.pharmaapp.util.Pharmacy;
import java.util.HashMap;
import mobi.pharmaapp.util.PharmacyAlphComparator;
import mobi.pharmaapp.util.PharmacyComparator;
/**
*
* @author see /AUTHORS
*/
public class DataModel {
public enum LIST_TYPE {
NORMAL, SORT_ON_DISTANCE, SORT_ALPH;
}
public enum MAP_MODE {
ALL, EMERGENCY_ONLY;
}
private HashMap<String, Pharmacy> pharmacies;
private ArrayList<Pharmacy> em_pharmacies;
private static final DataModel model = new DataModel();
private Activity pharmacistsContainer;
private Activity em_pharmacistsContainer;
private Date lastUpdateEmergencyPharmacists;
private MAP_MODE mapMode;
private DataModel() {
pharmacies = new HashMap<String, Pharmacy>();
em_pharmacies = new ArrayList<Pharmacy>();
mapMode = MAP_MODE.ALL;
}
public MAP_MODE getMapMode(){
return mapMode;
}
public void setMapMode(MAP_MODE newMode){
this.mapMode = newMode;
}
public Date getLastEmPharmsUpdate() {
return lastUpdateEmergencyPharmacists;
}
public void setLastEmPharmsUpdate(Date date) {
this.lastUpdateEmergencyPharmacists = date;
}
public void setPharmacistsContainer(Activity activity) {
if (pharmacistsContainer == null) {
pharmacistsContainer = activity;
}
}
public Activity getPharmaciesContainer() {
return pharmacistsContainer;
}
public void setEmergencyPharmacistsContainer(Activity activity) {
if (em_pharmacistsContainer == null) {
em_pharmacistsContainer = activity;
}
}
public Activity getEmergencyPharmaciesContainer() {
return em_pharmacistsContainer;
}
public static DataModel getInstance() {
return model;
}
public HashMap<String, Pharmacy> getPharmacies() {
return pharmacies;
}
public ArrayList<Pharmacy> getEmergencyPharmacies(LIST_TYPE type) {
ArrayList<Pharmacy> sorted;
switch(type){
case NORMAL:
return em_pharmacies;
case SORT_ALPH:
sorted = new ArrayList<Pharmacy>();
sorted.addAll(em_pharmacies);
Collections.sort(sorted, new PharmacyAlphComparator());
return sorted;
case SORT_ON_DISTANCE:
sorted = new ArrayList<Pharmacy>();
sorted.addAll(em_pharmacies);
Collections.sort(sorted, new PharmacyComparator());
return sorted;
default:
return em_pharmacies;
}
}
public Pharmacy getPharmacy(String id) {
return pharmacies.get(id);
}
public void addPharmacy(Pharmacy a) {
pharmacies.put(a.getId(), a);
}
public void addEmergencyPharmacy(Pharmacy a) {
em_pharmacies.add(a);
}
public void resetEmergencyPharmacists() {
em_pharmacies.clear();
}
public void resetPharmacists() {
pharmacies.clear();
}
}