package com.after_sunrise.oss.otdb.lib.tick;
import static com.after_sunrise.commons.base.object.Conversions.map;
import static java.lang.String.format;
import java.util.Map;
import com.after_sunrise.commons.base.object.Conversions.Identifiable;
/**
* @author takanori.takase
*/
public enum LibTickValueType implements Identifiable<Integer> {
ASK_PRICE_01(10),
ASK_PRICE_02(11),
ASK_PRICE_03(12),
ASK_PRICE_04(13),
ASK_PRICE_05(14),
ASK_PRICE_06(15),
ASK_PRICE_07(16),
ASK_PRICE_08(17),
ASK_PRICE_09(18),
ASK_PRICE_10(19),
ASK_SIZE_01(20),
ASK_SIZE_02(21),
ASK_SIZE_03(22),
ASK_SIZE_04(23),
ASK_SIZE_05(24),
ASK_SIZE_06(25),
ASK_SIZE_07(26),
ASK_SIZE_08(27),
ASK_SIZE_09(28),
ASK_SIZE_10(29),
BID_PRICE_01(30),
BID_PRICE_02(31),
BID_PRICE_03(32),
BID_PRICE_04(33),
BID_PRICE_05(34),
BID_PRICE_06(35),
BID_PRICE_07(36),
BID_PRICE_08(37),
BID_PRICE_09(38),
BID_PRICE_10(39),
BID_SIZE_01(40),
BID_SIZE_02(41),
BID_SIZE_03(42),
BID_SIZE_04(43),
BID_SIZE_05(44),
BID_SIZE_06(45),
BID_SIZE_07(46),
BID_SIZE_08(47),
BID_SIZE_09(48),
BID_SIZE_10(49),
LAST_PRICE(50),
LAST_SIZE(60),
ACCUMULATED_VOLUME(70),
VWAP(72),
TICK_TYPE(74),
TRADE_TYPE(76);
private final Integer id;
private LibTickValueType(int id) {
this.id = id;
}
public Integer getId() {
return id;
}
private static final Map<Integer, LibTickValueType> VALUES = map(values());
public static LibTickValueType find(Integer value) {
return VALUES.get(value);
}
private static final int LEVELS = 10;
private static final LibTickValueType[] ASK_PRICES = new LibTickValueType[LEVELS];
private static final LibTickValueType[] BID_PRICES = new LibTickValueType[LEVELS];
private static final LibTickValueType[] ASK_SIZES = new LibTickValueType[LEVELS];
private static final LibTickValueType[] BID_SIZES = new LibTickValueType[LEVELS];
static {
for (int i = 0; i < LEVELS; i++) {
String num = format("%02d", i + 1);
ASK_PRICES[i] = valueOf("ASK_PRICE_" + num);
ASK_SIZES[i] = valueOf("ASK_SIZE_" + num);
BID_PRICES[i] = valueOf("BID_PRICE_" + num);
BID_SIZES[i] = valueOf("BID_SIZE_" + num);
}
}
private static <T> T findInArray(T[] types, int level) {
return (level <= 0 || types.length < level) ? null : types[level - 1];
}
public static LibTickValueType getAskPrice(int level) {
return findInArray(ASK_PRICES, level);
}
public static LibTickValueType[] getAskPrices() {
return ASK_PRICES.clone();
}
public static LibTickValueType getAskSize(int level) {
return findInArray(ASK_SIZES, level);
}
public static LibTickValueType[] getAskSizes() {
return ASK_SIZES.clone();
}
public static LibTickValueType getBidPrice(int level) {
return findInArray(BID_PRICES, level);
}
public static LibTickValueType[] getBidPrices() {
return BID_PRICES.clone();
}
public static LibTickValueType getBidSize(int level) {
return findInArray(BID_SIZES, level);
}
public static LibTickValueType[] getBidSizes() {
return BID_SIZES.clone();
}
}