package de.lukasniemeier.mensa.model; import android.text.format.Time; import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; import java.io.Serializable; import java.util.List; import java.util.Map; import de.lukasniemeier.mensa.utils.SerializableTime; import de.lukasniemeier.mensa.utils.Utils; /** * Created on 17.09.13. */ public class WeeklyMenu implements Serializable { private final Mensa mensa; private SerializableTime timestamp; private BiMap<SerializableTime, Menu> menuMap; public WeeklyMenu(Mensa mensa, SerializableTime timestamp) { this.mensa = mensa; this.timestamp = timestamp; this.menuMap = HashBiMap.create(); } public Mensa getMensa() { return mensa; } public Time getTimestamp() { return timestamp.getTime(); } public BiMap<SerializableTime, Menu> getMenus() { return menuMap; } public void addMenu(SerializableTime date, Menu menu) { menuMap.put(date, menu); } public Menu getMenu(SerializableTime date) { return menuMap.get(date); } public boolean hasMenu(SerializableTime date) { return menuMap.keySet().contains(date); } public static WeeklyMenu merge(Mensa mensa, SerializableTime timestamp, List<WeeklyMenu> menus) { WeeklyMenu merged = new WeeklyMenu(mensa, timestamp); for (WeeklyMenu weeklyMenu : menus) { for (Map.Entry<SerializableTime, Menu> entry : weeklyMenu.menuMap.entrySet()) { merged.addMenu(entry.getKey(), entry.getValue()); } } return merged; } public boolean isOutdated() { SerializableTime now = Utils.now(); return now.getYearDay() > timestamp.getYearDay() || now.getYear() > timestamp.getYear(); } }