package de.ironjan.mensaupb.stw.rest_api;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.slf4j.LoggerFactory;
import de.ironjan.mensaupb.R;
import de.ironjan.mensaupb.stw.rest_api.deserializer.AllergenDeserializer;
/**
* Class that represents Allergens and Additionals.
*/
@SuppressWarnings("MagicNumber")
@JsonDeserialize(using = AllergenDeserializer.class)
public enum Allergen implements Comparable<Allergen> {
UNKNOWN(0, "", R.string.empty),
COLORED(1, Constants.COLORED, R.string.colored),
CONSERVED(2, Constants.CONSERVED, R.string.conserved),
ANTIOXIDANTS(3, Constants.ANTIOXIDANTS, R.string.antioxidants),
FLAVOR_ENHANCERS(4, Constants.FLAVOR_ENHANCERS, R.string.tasteEnhancer),
PHOSPHAT(5, Constants.PHOSPHAT, R.string.phosphate),
SULFURATED(6, Constants.SULFURATED, R.string.sulfured),
WAXED(7, Constants.WAXED, R.string.waxed),
BLACKENED(8, Constants.BLACKENED, R.string.blackened),
SWEETENER(9, Constants.SWEETENER, R.string.sweetener),
PHENYLALANINE(10, Constants.PHENYLALANINE, R.string.phenylalanine),
TAURINE(11, Constants.TAURINE, R.string.taurine),
NITRATE_SALT(12, Constants.NITRATE_SALT, R.string.nitrate_salt),
COFFEINE(13, Constants.COFFEINE, R.string.caffeine),
QUININE(14, Constants.QUININE, R.string.quinine),
LACTOPROTEIN(15, Constants.LACTOPROTEIN, R.string.lacto_protein),
CRUSTACEAN(16, Constants.CRUSTACEAN, R.string.crustacean),
EGGS(17, Constants.EGGS, R.string.eggs),
FISH(18, Constants.FISH, R.string.fish),
SOYA(19, Constants.SOYA, R.string.soy),
LACTOSE(20, Constants.LACTOSE, R.string.milk),
NUTS(21, Constants.NUTS, R.string.nuts),
CELERIAC(22, Constants.CELERIAC, R.string.celeriac),
MUSTARD(23, Constants.MUSTARD, R.string.mustard),
SESAME(24, Constants.SESAME, R.string.sesame),
SULFITES(25, Constants.SULFITES, R.string.sulfates),
MOLLUSKS(26, Constants.MOLLUSKS, R.string.mollusks),
LUPINE(27, Constants.LUPINE, R.string.lupines),
GLUTEN(28, Constants.GLUTEN, R.string.gluten),
PEANUTS(29, Constants.PEANUTS, R.string.peanuts);
private final int ordinal;
private final String type;
private final int stringResourceID;
Allergen(int ordinal, String type, int stringResourceID) {
this.ordinal = ordinal;
this.type = type;
this.stringResourceID = stringResourceID;
}
/**
* Converts a string to a Allergen
*
* @param string the string
* @return the Allergen which is textually represented as String, if known. Else "Unknown".
*/
public static Allergen fromString(String string) {
switch (string) {
case Constants.COLORED:
return COLORED;
case Constants.CONSERVED:
return CONSERVED;
case Constants.ANTIOXIDANTS:
return ANTIOXIDANTS;
case Constants.FLAVOR_ENHANCERS:
return FLAVOR_ENHANCERS;
case Constants.PHOSPHAT:
return PHOSPHAT;
case Constants.SULFURATED:
return SULFURATED;
case Constants.WAXED:
return WAXED;
case Constants.BLACKENED:
return BLACKENED;
case Constants.SWEETENER:
return SWEETENER;
case Constants.PHENYLALANINE:
return PHENYLALANINE;
case Constants.TAURINE:
return TAURINE;
case Constants.NITRATE_SALT:
return NITRATE_SALT;
case Constants.COFFEINE:
return COFFEINE;
case Constants.QUININE:
return QUININE;
case Constants.LACTOPROTEIN:
return LACTOPROTEIN;
case Constants.CRUSTACEAN:
return CRUSTACEAN;
case Constants.EGGS:
return EGGS;
case Constants.FISH:
return FISH;
case Constants.SOYA:
return SOYA;
case Constants.LACTOSE:
return LACTOSE;
case Constants.NUTS:
return NUTS;
case Constants.CELERIAC:
return CELERIAC;
case Constants.MUSTARD:
return MUSTARD;
case Constants.SESAME:
return SESAME;
case Constants.SULFITES:
return SULFITES;
case Constants.MOLLUSKS:
return MOLLUSKS;
case Constants.LUPINE:
return LUPINE;
case Constants.GLUTEN:
return GLUTEN;
case Constants.PEANUTS:
return PEANUTS;
}
LoggerFactory.getLogger(Allergen.class).debug("Requested unknown value: " + string);
return UNKNOWN;
}
@Override
public String toString() {
return type;
}
public String getType() {
return type;
}
public int getOrdinal() {
return ordinal;
}
public int getStringId() {
return stringResourceID;
}
private static class Constants {
public static final String COLORED = "1";
public static final String CONSERVED = "2";
public static final String ANTIOXIDANTS = "3";
public static final String FLAVOR_ENHANCERS = "4";
public static final String PHOSPHAT = "5";
public static final String SULFURATED = "6";
public static final String WAXED = "7";
public static final String BLACKENED = "8";
public static final String SWEETENER = "9";
public static final String PHENYLALANINE = "10";
public static final String TAURINE = "11";
public static final String NITRATE_SALT = "12";
public static final String COFFEINE = "13";
public static final String QUININE = "14";
public static final String LACTOPROTEIN = "15";
public static final String CRUSTACEAN = "A2";
public static final String EGGS = "A3";
public static final String FISH = "A4";
public static final String SOYA = "A6";
public static final String LACTOSE = "A7";
public static final String NUTS = "A8";
public static final String CELERIAC = "A9";
public static final String MUSTARD = "A10";
public static final String SESAME = "A11";
public static final String SULFITES = "A12";
public static final String LUPINE = "A13";
public static final String MOLLUSKS = "A14";
public static final String GLUTEN = "A1";
public static final String PEANUTS = "A5";
}
}