package de.ironjan.mensaupb.stw;
import de.ironjan.mensaupb.R;
/**
* Enum to represent restaurants. Each restaurant has a key and a string id - the latter
* is used to retrieve a potentially localized name.
*/
public enum Restaurant {
MENSA_ACADEMICA(0, Constants.MENSA_ACADEMICA_PADERBORN, R.string.nameMensaAcademica),
MENSA_FORUM(1, Constants.MENSA_FORUM_PADERBORN, R.string.nameMensaForum),
BISTRO_HOTSPOT(2, Constants.BISTRO_HOTSPOT, R.string.nameBistroHotspot),
GRILL_CAFE(3, Constants.GRILL_CAFE, R.string.nameGrillCafe),
CAFETE(4, Constants.CAFETE, R.string.nameCafete);
private static String[] keys = {Constants.MENSA_ACADEMICA_PADERBORN,
Constants.MENSA_FORUM_PADERBORN,
Constants.BISTRO_HOTSPOT,
Constants.GRILL_CAFE,
Constants.CAFETE};
private static Integer[] nameStringIds;
public final String key;
private final int ordinal;
private final int nameStringId;
Restaurant(int ordinal, String key, int nameStringId) {
this.ordinal = ordinal;
this.key = key;
this.nameStringId = nameStringId;
}
/**
* Retrieves a Restaurant by key
*
* @param key the restaurant's key
* @return the corresponding restaurant
* @throws IllegalArgumentException if the key is unknown
*/
public static Restaurant fromKey(String key) {
switch (key) {
case Constants.MENSA_ACADEMICA_PADERBORN:
return MENSA_ACADEMICA;
case Constants.MENSA_FORUM_PADERBORN:
return MENSA_FORUM;
case Constants.BISTRO_HOTSPOT:
return BISTRO_HOTSPOT;
case Constants.GRILL_CAFE:
return GRILL_CAFE;
case Constants.CAFETE:
return CAFETE;
}
throw new IllegalArgumentException("Unknown Restaurant key.");
}
public static String[] getKeys() {
return keys;
}
public static Integer[] getNameStringIds() {
// construction it once at runtime to make sure order is correct
if (nameStringIds == null) {
nameStringIds = new Integer[keys.length];
for (int i = 0; i < keys.length; i++) {
nameStringIds[i] = getNameFromKey(keys[i]);
}
}
return nameStringIds;
}
private static int getNameFromKey(String key) {
return fromKey(key).getNameStringId();
}
public int getNameStringId() {
return nameStringId;
}
private static class Constants {
public static final String MENSA_ACADEMICA_PADERBORN = "mensa-academica-paderborn";
public static final String MENSA_FORUM_PADERBORN = "mensa-forum-paderborn";
public static final String BISTRO_HOTSPOT = "bistro-hotspot";
public static final String GRILL_CAFE = "grill-cafe";
public static final String CAFETE = "cafete";
}
}