package com.ese2013.mensaunibe.model.mensa; import com.ese2013.mensaunibe.map.MyLocation; import com.ese2013.mensaunibe.model.data.PreferenceRequest; import com.ese2013.mensaunibe.model.menu.MenuDate; import com.ese2013.mensaunibe.model.menu.Menuplan; import com.ese2013.mensaunibe.model.menu.WeeklyMenu; import com.ese2013.mensaunibe.model.utils.ListItem; import com.memetix.mst.language.Language; import android.annotation.SuppressLint; import android.location.Location; /** * @author group7 * @author Andreas Hohler * @author Sandor Torok */ @SuppressLint("DefaultLocale") public class Mensa implements ListItem { private int id; private String name; private String street; private String plz; private Double lat; private Double lon; private WeeklyMenu menu; private boolean isFavorite; private Location location; private Language language; /** * creates the Mensa object with the MensaBuilder data * @param mb MensaBuilder */ public Mensa(MensaBuilder mb) { assert mb != null; id = mb.getId(); name = mb.getName(); street = mb.getStreet(); plz = mb.getPlz(); lat = mb.getLat(); lon = mb.getLon(); isFavorite = mb.getFav(); setupLocation(lat, lon); language = Language.GERMAN; } /** * setup the location with coordinates * @param latitude * @param longitude */ private void setupLocation(Double latitude, Double longitude) { location = new Location(name); location.setLatitude(latitude); location.setLongitude(longitude); } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } public String getPlz() { return plz; } public void setPlz(String plz) { this.plz = plz; } public Double getLat() { return lat; } public void setLat(Double lat) { this.lat = lat; } public Double getLon() { return lon; } public void setLon(Double lon) { this.lon = lon; } public void setLanguage(Language language) { this.language = language; } public Language getLanguage() { return language; } public String toString() { return String.format("mensa:%s,street:%s,plz:%s,lat:%f,lon:%f,id:%d,menu:%s", name, street, plz, lat, lon, id, menu); } public WeeklyMenu getWeeklyMenu() { return menu; } public void setWeeklyMenu(WeeklyMenu menu) { this.menu = menu; } public Menuplan getDailyMenu(MenuDate date) { return menu.getDailyMenu(date); } @Override public boolean isSection() { return false; } public boolean isFavorite() { return isFavorite; } public void setFavorite(boolean b) { this.isFavorite = b; PreferenceRequest pr = new PreferenceRequest(); pr.writePreference(b, id); } public Location getLocation(){ return location; } public String getDistance(MyLocation myLocation){ assert myLocation != null; float distanceInMeters = location.distanceTo(myLocation.getLocation()); String meters = formatDist(distanceInMeters); return meters; } private static String formatDist(float meters) { if (meters < 1000) { return ((int) meters) + " m"; } else if (meters < 10000) { return formatDec(meters / 1000f, 1) + " km"; } else { return ((int) (meters / 1000f)) + " km"; } } private static String formatDec(float val, int dec) { int factor = (int) Math.pow(10, dec); int front = (int) (val); int back = (int) Math.abs(val * (factor)) % factor; return front + "." + back; } }