/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package de.cismet.cids.custom.switchon; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonSerializable; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.jsontype.TypeSerializer; import org.openide.util.NbBundle; import java.io.IOException; import java.io.Serializable; /** * DOCUMENT ME! * * @author mscholl * @version $Revision$, $Date$ */ // TODO: refactor as soon as abstract enums are supported public final class Variable extends LocalisedEnum<Variable> implements Serializable, JsonSerializable { //~ Static fields/initializers --------------------------------------------- public static final Variable TEMPERATURE = new Variable( "urn:ogc:def:property:OGC:temp", // NOI18N NbBundle.getMessage(Variable.class, "Variable.TEMPERATURE.localisedName")); // NOI18N public static final Variable PRECIPITATION = new Variable( "urn:ogc:def:property:OGC:prec", // NOI18N NbBundle.getMessage(Variable.class, "Variable.PRECIPITATION.localisedName")); // NOI18N public static final Variable NOX = new Variable( "urn:ogc:def:property:OGC:NOX", // NOI18N NbBundle.getMessage(Variable.class, "Variable.NOX.localisedName")); // NOI18N public static final Variable NO2 = new Variable( "urn:ogc:def:property:OGC:NO2", // NOI18N NbBundle.getMessage(Variable.class, "Variable.NO2.localisedName")); // NOI18N public static final Variable SO2 = new Variable( "urn:ogc:def:property:OGC:SO2", // NOI18N NbBundle.getMessage(Variable.class, "Variable.SO2.localisedName")); // NOI18N public static final Variable PM10 = new Variable( "urn:ogc:def:property:OGC:PM10", // NOI18N NbBundle.getMessage(Variable.class, "Variable.PM10.localisedName")); // NOI18N public static final Variable PM2_5 = new Variable( "urn:ogc:def:property:OGC:PM2.5", // NOI18N NbBundle.getMessage(Variable.class, "Variable.PM2_5.localisedName")); // NOI18N public static final Variable O3 = new Variable( "urn:ogc:def:property:OGC:O3", // NOI18N NbBundle.getMessage(Variable.class, "Variable.O3.localisedName")); // NOI18N public static final Variable EVAPORATION = new Variable( "urn:ogc:def:property:OGC:Evaporation", // NOI18N NbBundle.getMessage(Variable.class, "Variable.EVAPORATION.localisedName")); // NOI18N public static final Variable COUT = new Variable( "urn:ogc:def:property:OGC:cout", // NOI18N NbBundle.getMessage(Variable.class, "Variable.COUT.localisedName")); // NOI18N public static final Variable CRUN = new Variable( "urn:ogc:def:property:OGC:crun", // NOI18N NbBundle.getMessage(Variable.class, "Variable.CRUN.localisedName")); // NOI18N public static final Variable CPRC = new Variable( "urn:ogc:def:property:OGC:cprc", // NOI18N NbBundle.getMessage(Variable.class, "Variable.CPRC.localisedName")); // NOI18N public static final Variable CTMP = new Variable( "urn:ogc:def:property:OGC:ctmp", // NOI18N NbBundle.getMessage(Variable.class, "Variable.CTMP.localisedName")); // NOI18N public static final Variable GWAT = new Variable( "urn:ogc:def:property:OGC:gwat", // NOI18N NbBundle.getMessage(Variable.class, "Variable.GWAT.localisedName")); // NOI18N public static final Variable SMDF = new Variable( "urn:ogc:def:property:OGC:smdf", // NOI18N NbBundle.getMessage(Variable.class, "Variable.SMDF.localisedName")); // NOI18N public static final Variable UNKNOWN = new Variable( "urn:ogc:def:property:OGC:unknown", // NOI18N NbBundle.getMessage(Variable.class, "Variable.UNKNOWN.localisedName")); // NOI18N //~ Instance fields -------------------------------------------------------- private final String propertyKey; //~ Constructors ----------------------------------------------------------- /** * Creates a new Variable object. */ private Variable() { this(null, null); } /** * Creates a new Variable object. * * @param localisedName DOCUMENT ME! */ @JsonIgnore private Variable(final String localisedName) { this(null, localisedName); } /** * Creates a new Variable object. * * @param propertyKey DOCUMENT ME! * @param localisedName DOCUMENT ME! */ private Variable(final String propertyKey, final String localisedName) { super(localisedName); this.propertyKey = propertyKey; } //~ Methods ---------------------------------------------------------------- /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public String getPropertyKey() { return propertyKey; } @Override protected Variable[] internalValues() { return values(); } /** * DOCUMENT ME! * * @param variable DOCUMENT ME! * * @return DOCUMENT ME! * * @throws IllegalArgumentException DOCUMENT ME! */ @JsonCreator public static Variable getVariable(final String variable) { for (final Variable v : values()) { if (v.getPropertyKey().equals(variable)) { return v; } } throw new IllegalArgumentException("unknown variable: " + variable); // NOI18N } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public static Variable[] values() { return new Variable[] { EVAPORATION, NOX, NO2, O3, PM10, PM2_5, PRECIPITATION, SO2, TEMPERATURE, COUT, CPRC, CRUN, CTMP, GWAT, SMDF, UNKNOWN }; } @Override public void serialize(final JsonGenerator jgen, final SerializerProvider provider) throws IOException, JsonProcessingException { jgen.writeString(getPropertyKey()); } @Override public void serializeWithType(final JsonGenerator jgen, final SerializerProvider provider, final TypeSerializer typeSer) throws IOException, JsonProcessingException { serialize(jgen, provider); } }