/* * Created on Dec 11, 2007 */ package com.codecommit.wicket; /** * @author Daniel Spiewak */ public enum ChartDataEncoding { SIMPLE("s", "", ",") { CharSequence convert(double value, double max) { if (value < 0) { return "_"; } value = Math.round((CHARS.length() - 1) * value / max); if (value > CHARS.length() - 1) { throw new IllegalArgumentException(value + " is out of range for SIMPLE encoding"); } return Character.toString(CHARS.charAt((int) value)); } }, TEXT("t", ",", "|") { CharSequence convert(double value, double max) { if (value < 0) { value = -1; } if (value > 100) { throw new IllegalArgumentException(value + " is out of range for TEXT encoding"); } return Double.toString(value); } }, EXTENDED("e", "", ",") { CharSequence convert(double value, double max) { if (value < 0) { return "__"; } value = Math.round(value); if (value > (EXT_CHARS.length() - 1) * (EXT_CHARS.length() - 1)) { throw new IllegalArgumentException(value + " is out of range for EXTENDED encoding"); } int rem = (int) (value % EXT_CHARS.length()); int exp = (int) (value / EXT_CHARS.length()); return new StringBuilder().append(EXT_CHARS.charAt(exp)).append(EXT_CHARS.charAt(rem)); } }; private static final String CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; private static final String EXT_CHARS = CHARS + "-_."; private final String rendering, valueSeparator, setSeparator; private ChartDataEncoding(String rendering, String valueSeparator, String setSeparator) { this.rendering = rendering; this.valueSeparator = valueSeparator; this.setSeparator = setSeparator; } public String getRendering() { return rendering; } public String getValueSeparator() { return valueSeparator; } public String getSetSeparator() { return setSeparator; } abstract CharSequence convert(double value, double max); }