/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package de.cismet.cids.custom.switchon; 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; /** * Custom enumeration of all available Resolutions. * * @author mscholl * @version $Revision$, $Date$ */ // TODO: refactor as soon as abstract enums are supported // TODO: accuracy of this class is questionable, consider refactoring public final class Resolution extends LocalisedEnum<Resolution> implements Serializable, JsonSerializable { //~ Static fields/initializers --------------------------------------------- public static final Resolution DECADE = new Resolution( NbBundle.getMessage(Resolution.class, "Resolution.DECADE.localisedName"), "10Y", "10Y"); // NOI18N public static final Resolution YEAR = new Resolution( NbBundle.getMessage(Resolution.class, "Resolution.YEAR.localisedName"), "1Y", "1Y"); // NOI18N public static final Resolution MONTH = new Resolution( NbBundle.getMessage(Resolution.class, "Resolution.MONTH.localisedName"), "1M", "1M"); // NOI18N public static final Resolution DAY = new Resolution( NbBundle.getMessage(Resolution.class, "Resolution.DAILY.localisedName"), "86400s", "1d"); // NOI18N public static final Resolution HOUR = new Resolution( NbBundle.getMessage(Resolution.class, "Resolution.HOURLY.localisedName"), "3600s", "1h"); // NOI18N //~ Instance fields -------------------------------------------------------- private final String precision; private final String offeringSuffix; //~ Constructors ----------------------------------------------------------- // public static final Resolution HOUR = new Resolution( // NbBundle.getMessage(Resolution.class, "Resolution.HOURLY.localisedName")); // NOI18N /** * Creates a new Resolution object. * * @param localisedName DOCUMENT ME! * @param precision DOCUMENT ME! * @param offeringSuffix DOCUMENT ME! */ private Resolution(final String localisedName, final String precision, final String offeringSuffix) { super(localisedName); this.precision = precision; this.offeringSuffix = offeringSuffix; } //~ Methods ---------------------------------------------------------------- /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public String getPrecision() { return this.precision; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public String getOfferingSuffix() { return this.offeringSuffix; } @Override protected Resolution[] internalValues() { return values(); } /** * DOCUMENT ME! * * @param resolution DOCUMENT ME! * * @return DOCUMENT ME! * * @throws IllegalArgumentException DOCUMENT ME! */ public static Resolution valueOf(final String resolution) { for (final Resolution v : values()) { if (v.getOfferingSuffix().equals(resolution)) { return v; } } throw new IllegalArgumentException("unknown resolution: " + resolution); // NOI18N } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public static Resolution[] values() { return new Resolution[] { DECADE, YEAR, MONTH, DAY, HOUR }; } @Override public void serialize(final JsonGenerator jgen, final SerializerProvider provider) throws IOException, JsonProcessingException { jgen.writeString(getOfferingSuffix()); } @Override public void serializeWithType(final JsonGenerator jgen, final SerializerProvider provider, final TypeSerializer typeSer) throws IOException, JsonProcessingException { serialize(jgen, provider); } }