package message.datasource.convert;
import message.base.convert.ConvertGetter;
import message.utils.StringUtils;
/**
* 默认的枚举转换器,没有特殊情况就直接继承.
*
* @author sunhao(sunhao.java@gmail.com)
* @version V1.0, 15/6/24 下午10:18
*/
public abstract class DefaultConvert<T extends Enum<?> & ConvertGetter> implements Convert<T> {
private final T[] enums;
public DefaultConvert(Class<T> type) {
if (type == null) {
throw new IllegalArgumentException("Type argument cannot be null");
}
this.enums = type.getEnumConstants();
if (this.enums == null) {
throw new IllegalArgumentException(type.getSimpleName() + " does not represent an enum type.");
}
}
@Override
public String getDbValue(T t) {
return t.getValue();
}
@Override
public String getDbNullValue(T t) {
return StringUtils.EMPTY;
}
@Override
public T getPoJoValue(String value) {
return convert(value);
}
@Override
public T getPoJoNullValue(String value) {
return convert(value);
}
private T convert(String value) {
for (T em : enums) {
if (em.getValue().equals(value)) {
return em;
}
}
return null;
}
}