package com.sohu.tv.jedis.stat.enums;
import java.util.HashMap;
import java.util.Map;
import com.sohu.tv.jedis.stat.utils.NumberUtil;
/**
* 值分布
*
* @author leifu
* @Time 2014年7月21日
*/
public enum ValueSizeDistriEnum {
// 单位字节
BETWEEN_MIN_TO_0_BYTE("-2147483648_0", "wrong", 0),
BETWEEN_0_TO_50_BYTE("0_50", "0-0.05k", 1),
BETWEEN_50_TO_100_BYTE("50_100", "0.05k-0.1k", 2),
BETWEEN_100_TO_200_BYTE("100_200", "0.1k-0.2k", 3),
BETWEEN_200_TO_500_BYTE("200_500", "0.2k-0.5k", 4),
BETWEEN_500_TO_1024_BYTE("500_1024", "0.5k-1k", 5),
BETWEEN_1024_TO_2048_BYTE("1024_2048", "1-2k", 6),
BETWEEN_2048_TO_5120_BYTE("2048_5120", "2-5k", 7),
BETWEEN_5120_TO_10240_BYTE("5120_10240", "5-10k", 8),
BETWEEN_10240_TO_20480_BYTE("10240_20480", "10-20k", 9),
BETWEEN_20480_TO_51200_BYTE("20480_51200", "20-50k", 10),
BETWEEN_51200_TO_102400_BYTE("51200_102400", "50-100k", 11),
BETWEEN_102400_TO_204800_BYTE("102400_204800", "100-200k", 12),
BETWEEN_204800_TO_512000_BYTE("204800_512000", "200-500k", 13),
BETWEEN_512000_TO_MAX_BYTE("512000_2147483647", "above 500k", 14);
private String value;
private String info;
private int type;
private ValueSizeDistriEnum(String value, String info, int type) {
this.value = value;
this.info = info;
this.type = type;
}
public int getType() {
return type;
}
public String getValue() {
return value;
}
public String getInfo() {
return info;
}
public final static Map<String, ValueSizeDistriEnum> MAP = new HashMap<String, ValueSizeDistriEnum>();
static {
for (ValueSizeDistriEnum enumObject : ValueSizeDistriEnum.values()) {
MAP.put(enumObject.getValue(), enumObject);
}
}
public static ValueSizeDistriEnum getByValue(String targetValue){
return MAP.get(targetValue);
}
/**
* 查看length在哪个区间
*
* @param length
* @return
*/
public static ValueSizeDistriEnum getRightSizeBetween(int size) {
ValueSizeDistriEnum[] enumArr = ValueSizeDistriEnum.values();
for (ValueSizeDistriEnum enumObject : enumArr) {
if (isInSize(enumObject, size)) {
return enumObject;
}
}
return null;
}
/**
* 确定length在指定区间
*
* @param enumObject
* @param size
* @return
*/
private static boolean isInSize(ValueSizeDistriEnum enumObject, int size) {
String value = enumObject.getValue();
int index = value.indexOf("_");
int start = NumberUtil.toInt(value.substring(0, index));
int end = NumberUtil.toInt(value.substring(index + 1));
if (size >= start && size < end) {
return true;
}
return false;
}
}