package de.lukasniemeier.mensa.model;
import android.text.format.Time;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import java.io.ObjectStreamException;
import java.io.Serializable;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import de.lukasniemeier.mensa.utils.Utils;
/**
* Created on 17.09.13.
*/
public class Mensa implements Serializable {
private static List<Mensa> database = null;
public static Mensa getMensa(final String shortName) {
return Iterables.find(getMensas(), new Predicate<Mensa>() {
@Override
public boolean apply(Mensa mensa) {
return mensa.getShortName().equals(shortName);
}
});
}
public static List<Mensa> getMensas() {
if (database == null) {
try {
Mensa griebnitzsee = new Mensa(
"Griebnitzsee", "August-Bebel-Str. 89\n14482 Potsdam",
"Montag - Donnerstag: 08.00 - 19.00 Uhr\nFreitag: 08.00 - 15.00 Uhr\nSamstag: 09.30 - 13.00 Uhr",
"Montag - Freitag: 08.00 - 15.00 Uhr",
new URL("http://www.studentenwerk-potsdam.de/mensa-griebnitzsee.html"));
Mensa golm = new Mensa(
"Golm", "Karl-Liebknecht-Str. 24/25\n14476 Potsdam OT Golm",
"Montag - Donnerstag: 09.00 - 19.00 Uhr\nFreitag: 09.00 - 15.00 Uhr",
"Montag - Freitag: 09.00 - 15.00 Uhr",
new URL("http://www.studentenwerk-potsdam.de/mensa-golm.html"));
Mensa park = new Mensa(
"Am Neuen Palais",
"Palais", "Am Neuen Palais 10 Haus 12\n14482 Potsdam",
"Montag - Donnerstag: 10.00 - 19.00 Uhr\nFreitag: 10.00 - 15.00 Uhr",
"Montag - Donnerstag: 10.00 - 15.00 Uhr\nFreitag: 10.00 - 14.30 Uhr",
new URL("http://www.studentenwerk-potsdam.de/mensa-am-neuen-palais.html"));
Mensa friedrich = new Mensa(
"Friedrich-Ebert-Strasse","Friedrich-Ebert-Str.", "Friedrich-Ebert-Str. 4\n14467 Potsdam",
"Montag - Donnerstag: 08.00 - 16.00 Uhr\nFreitag: 08.00 - 15.00 Uhr",
"Montag - Donnerstag: 08.00 - 15.00 Uhr\nFreitag: 08.00 - 14.30 Uhr",
new URL("http://www.studentenwerk-potsdam.de/de/mensa-friedrich-ebert-strasse.html"));
Mensa pappelallee = new Mensa(
"Pappelallee", "Kiepenheuerallee 5\n14469 Potsdam",
"Montag - Donnerstag: 10.30 - 15.00 Uhr\nFreitag: 10.30 - 14.30 Uhr\nSamstag: 11.00 - 14.00 Uhr",
"Montag - Donnerstag: 08.00 - 15.00 Uhr\nFreitag: 08.00 - 14.30 Uhr",
new URL("http://www.studentenwerk-potsdam.de/de/mensa-pappelallee.html"));
Mensa brandenburg = new Mensa(
"Brandenburg", "Magdeburger Strasse 50\n14770 Brandenburg an der Havel",
"Montag - Freitag: 11.00 - 14.00 Uhr",
"Montag - Donnerstag: 08.00 - 15.00 Uhr\nFreitag: 08.00 - 14.30 Uhr",
new URL("http://www.studentenwerk-potsdam.de/de/mensa-brandenburg.html"));
Mensa wildau = new Mensa(
"Wildau", "Bahnhofstr. 1\n15745 Wildau",
"Montag - Freitag: 09.00 - 18.00 Uhr\nSamstag: 08.00 - 13.00 Uhr",
"Montag - Freitag: 08.00 - 17.00 Uhr",
new URL("http://www.studentenwerk-potsdam.de/de/mensa-wildau.html"));
database = Arrays.asList(griebnitzsee, golm, park,
friedrich, pappelallee, brandenburg, wildau);
} catch (MalformedURLException e) {
database = Collections.emptyList();
}
}
return database;
}
private final String name;
private final String shortName;
private final String address;
private final String openingTimes;
private final String openingTimesOffSeason;
private final URL detailMenuURL;
public Mensa(String name, String address, String openingTimes, String openingTimesOffSeason, URL detailMenuURL) {
this(name, name, address, openingTimes, openingTimesOffSeason, detailMenuURL);
}
public Mensa(String name, String shortName, String address, String openingTimes, String openingTimesOffSeason, URL detailMenuURL) {
this.name = name;
this.shortName = shortName;
this.address = address;
this.openingTimes = openingTimes;
this.openingTimesOffSeason = openingTimesOffSeason;
this.detailMenuURL = detailMenuURL;
}
public String getName() {
return name;
}
public String getShortName() {
return shortName;
}
public String getAddress() {
return address;
}
public String getOpeningTimes() {
Time now = Utils.now().getTime();
Time startWinterTerm = new Time(now);
startWinterTerm.month = 9;
startWinterTerm.monthDay = 14;
Time endWinterTerm = new Time(now);
endWinterTerm.year++;
endWinterTerm.month = 1;
endWinterTerm.monthDay = 8;
Time startSummerTerm = new Time(now);
startSummerTerm.month = 3;
startSummerTerm.monthDay = 7;
Time endSummerTerm = new Time(now);
endSummerTerm.month = 6;
endSummerTerm.monthDay = 20;
if (now.after(startWinterTerm) && now.before(endWinterTerm)) {
return openingTimes;
}
if (now.after(startSummerTerm) && now.before(endSummerTerm)) {
return openingTimes;
}
return openingTimesOffSeason;
}
public URL getDetailMenuURL() {
return detailMenuURL;
}
@Override
public String toString() {
return "Mensa{" +
"name='" + name + '\'' +
", address='" + address + '\'' +
", openingTimes='" + openingTimes + '\'' +
", detailMenuURL=" + detailMenuURL +
'}';
}
private Object readResolve() throws ObjectStreamException {
return getMensa(this.shortName);
}
}