package org.mapdb.serializer;
import java.util.HashMap;
import org.mapdb.Serializer;
import static org.mapdb.Serializer.*;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.*;
/**
* Created by jan on 2/28/16.
*/
public final class SerializerUtils {
private static final Map<Class<?>, Serializer<?>> SERIALIZER_FOR_CLASS = new HashMap<>();
static {
put(char.class, CHAR);
put(Character.class, CHAR);
put(String.class, STRING);
put(long.class, LONG);
put(Long.class, LONG);
put(int.class, INTEGER);
put(Integer.class, INTEGER);
put(boolean.class, BOOLEAN);
put(Boolean.class, BOOLEAN);
put(byte[].class, BYTE_ARRAY);
put(char[].class, CHAR_ARRAY);
put(int[].class, INT_ARRAY);
put(long[].class, LONG_ARRAY);
put(double[].class, DOUBLE_ARRAY);
put(UUID.class, UUID);
put(byte.class, BYTE);
put(Byte.class, BYTE);
put(float.class, FLOAT);
put(Float.class, FLOAT);
put(double.class, DOUBLE);
put(Double.class, DOUBLE);
put(short.class, SHORT);
put(Short.class, SHORT);
put(short[].class, SHORT_ARRAY);
put(float[].class, FLOAT_ARRAY);
put(BigDecimal.class, BIG_DECIMAL);
put(BigInteger.class, BIG_INTEGER);
put(Class.class, CLASS);
put(Date.class, DATE);
put(java.sql.Date.class, SQL_DATE);
put(java.sql.Time.class, SQL_TIME);
put(java.sql.Timestamp.class, SQL_TIMESTAMP);
}
// Make sure we are type safe!
private static <T> void put(Class<? super T> clazz, Serializer<T> serializer) {
SERIALIZER_FOR_CLASS.put(clazz, serializer);
}
public static <R> Serializer<R> serializerForClass(Class<R> clazz) {
@SuppressWarnings("unchecked")
final Serializer<R> result = (Serializer<R>) SERIALIZER_FOR_CLASS.get(clazz);
return result;
}
public static int compareInt(int x, int y) {
return (x < y) ? -1 : ((x == y) ? 0 : 1);
}
private SerializerUtils() {
throw new UnsupportedOperationException("Instance of utility class not allowed");
}
}