private static byte[] encodeValue(final ByteBuffer value, final ColumnSchema columnSchema) { try { switch (columnSchema.getType()) { case LONG: case TIME: { final long longValue = value.getLong(); return Bytes.toBytes(longValue ^ INVERT_SIGN_MASK); } case DOUBLE: { final double doubleValue = value.getDouble(); final long longValue = Double.doubleToLongBits(doubleValue); if (doubleValue < 0.0) { return Bytes.toBytes(~longValue); } return Bytes.toBytes(longValue ^ INVERT_SIGN_MASK); } case BINARY: case STRING: { return Arrays.copyOf(value.array(), columnSchema.getMaxLength()); } default: return value.array(); } } finally { value.rewind(); // rewind the ByteBuffer's index pointer } }
public FieldGenerator(ColumnSchema schema) { switch (schema.getType()) { case ULONG: case LONG: case TIME: { generator = new LongBytesGenerator(); break; } case DOUBLE: { generator = new DoubleBytesGenerator(); break; } case BINARY: { generator = CombinedGenerators.byteArrays( PrimitiveGenerators.integers(0, schema.getMaxLength())); break; } case STRING: { generator = new StringBytesGenerator(schema.getMaxLength()); break; } default: generator = CombinedGenerators.byteArrays( PrimitiveGenerators.fixedValues(32)); } if (schema.getIsNullable()) { generator = CombinedGenerators.nullsAnd(generator, 10); } }