* @see com.serotonin.m2m2.db.dao.nosql.NoSQLDataSerializer#getBytes(com.serotonin.m2m2.db.dao.nosql.NoSQLDataEntry)
*/
@Override
public byte[] getBytes(ITime obj) {
PointValueTime value = (PointValueTime)obj;
ByteArrayBuilder b = new ByteArrayBuilder();
//First put in the data type
b.putShort((short) value.getValue().getDataType());
//Second put in the data value
switch(value.getValue().getDataType()){
case DataTypes.ALPHANUMERIC:
b.putString(value.getStringValue());
break;
case DataTypes.BINARY:
b.putBoolean(value.getBooleanValue());
break;
case DataTypes.IMAGE:
throw new ShouldNeverHappenException("Images are not supported");
case DataTypes.MULTISTATE:
b.putInt(value.getIntegerValue());
break;
case DataTypes.NUMERIC:
b.putDouble(value.getDoubleValue());
break;
default:
throw new ShouldNeverHappenException("Data type of " + value.getValue().getDataType() + " is not supported");
}
//Put in annotation
if(value.isAnnotated()){
AnnotatedPointValueTime apv = (AnnotatedPointValueTime)value;
b.putString(apv.getSourceMessage().serialize());
}else
b.putString(null);
byte[] buffer = b.getBuffer();
byte[] bytes = new byte[b.getWriteOffset()];
System.arraycopy(buffer, 0, bytes, 0, b.getWriteOffset());
return bytes;
}