package edu.berkeley.cs.succinct;
public class PrimitiveDeserializer {
public static String deserializeString(byte[] data) {
return new String(data);
}
public static Boolean deserialzeBoolean(byte[] data) throws DeserializationException {
if (data.length != 1) {
throw new DeserializationException("Invalid number of bytes for boolean.");
}
if (data[0] != PrimitiveSerializer.SERIALIZED_TRUE
&& data[0] != PrimitiveSerializer.SERIALIZED_FALSE) {
throw new DeserializationException("Invalid boolean data.");
}
return data[0] == PrimitiveSerializer.SERIALIZED_TRUE;
}
public static Byte deserializeByte(byte[] data) throws DeserializationException {
return Byte.parseByte(new String(data));
}
public static Short deserializeShort(byte[] data) throws DeserializationException {
return Short.parseShort(new String(data));
}
public static Integer deserializeInt(byte[] data) throws DeserializationException {
return Integer.parseInt(new String(data));
}
public static Long deserializeLong(byte[] data) throws DeserializationException {
return Long.parseLong(new String(data));
}
public static Float deserializeFloat(byte[] data) throws DeserializationException {
return Float.parseFloat(new String(data));
}
public static Double deserializeDouble(byte[] data) throws DeserializationException {
return Double.parseDouble(new String(data));
}
public static Object deserializePrimitive(byte[] field, DataType dataType)
throws DeserializationException {
switch (dataType) {
case STRING:
return PrimitiveDeserializer.deserializeString(field);
case BOOLEAN:
return PrimitiveDeserializer.deserialzeBoolean(field);
case BYTE:
return PrimitiveDeserializer.deserializeByte(field);
case SHORT:
return PrimitiveDeserializer.deserializeShort(field);
case INT:
return PrimitiveDeserializer.deserializeInt(field);
case LONG:
return PrimitiveDeserializer.deserializeLong(field);
case FLOAT:
return PrimitiveDeserializer.deserializeFloat(field);
case DOUBLE:
return PrimitiveDeserializer.deserializeDouble(field);
default:
throw new DeserializationException("Deserialize using custom deserializer.");
}
}
}