public void writeInteger(int repetitionLevel, int value) { column.writeInteger(repetitionLevel, value); }
public void writeLong(int repetitionLevel, long value) { column.writeLong(repetitionLevel, value); }
protected PrimitiveWriter(ColumnDescriptor desc) { this.desc = desc; this.column = ColumnWriter.newWriter(desc); this.children = ImmutableList.of(column); }
@Override public void write(int repetitionLevel, ByteBuffer buffer) { column.writeBinary(repetitionLevel, Binary.fromReusedByteBuffer(buffer)); } }
@Override public void setColumnStore(ColumnWriteStore columnStore) { this.column.setColumnStore(columnStore); } }
@Override public void write(int repetitionLevel, T value) { column.write(repetitionLevel, value); }
public void writeDouble(int repetitionLevel, double value) { column.writeDouble(repetitionLevel, value); } }
public void writeFloat(int repetitionLevel, float value) { column.writeFloat(repetitionLevel, value); }
public void writeBoolean(int repetitionLevel, boolean value) { column.writeBoolean(repetitionLevel, value); }
switch (desc.getType()) { case BOOLEAN: return (ColumnWriter<T>) new ColumnWriter<Boolean>(desc) { @Override public void write(int rl, Boolean value) { return (ColumnWriter<T>) new ColumnWriter<Integer>(desc) { @Override public void write(int rl, Integer value) { return (ColumnWriter<T>) new ColumnWriter<Long>(desc) { @Override public void write(int rl, Long value) { return (ColumnWriter<T>) new ColumnWriter<Float>(desc) { @Override public void write(int rl, Float value) { return (ColumnWriter<T>) new ColumnWriter<Double>(desc) { @Override public void write(int rl, Double value) { case FIXED_LEN_BYTE_ARRAY: case BINARY: return (ColumnWriter<T>) new ColumnWriter<Binary>(desc) { @Override public void write(int rl, Binary value) {
@Override public void write(int repetitionLevel, byte[] value) { column.writeBinary(repetitionLevel, Binary.fromReusedByteArray(value)); } }
@Override public void write(int repetitionLevel, BigDecimal decimal) { Preconditions.checkArgument(decimal.scale() == scale, "Cannot write value as decimal(%s,%s), wrong scale: %s", precision, scale, decimal); Preconditions.checkArgument(decimal.precision() <= precision, "Cannot write value as decimal(%s,%s), too large: %s", precision, scale, decimal); byte fillByte = (byte) (decimal.signum() < 0 ? 0xFF : 0x00); byte[] unscaled = decimal.unscaledValue().toByteArray(); byte[] buf = bytes.get(); int offset = length - unscaled.length; for (int i = 0; i < length; i += 1) { if (i < offset) { buf[i] = fillByte; } else { buf[i] = unscaled[i - offset]; } } column.writeBinary(repetitionLevel, Binary.fromReusedByteArray(buf)); } }
@Override public void write(int repetitionLevel, BigDecimal decimal) { Preconditions.checkArgument(decimal.scale() == scale, "Cannot write value as decimal(%s,%s), wrong scale: %s", precision, scale, decimal); Preconditions.checkArgument(decimal.precision() <= precision, "Cannot write value as decimal(%s,%s), too large: %s", precision, scale, decimal); column.writeLong(repetitionLevel, decimal.unscaledValue().longValue()); } }
@Override public void write(int repetitionLevel, BigDecimal decimal) { Preconditions.checkArgument(decimal.scale() == scale, "Cannot write value as decimal(%s,%s), wrong scale: %s", precision, scale, decimal); Preconditions.checkArgument(decimal.precision() <= precision, "Cannot write value as decimal(%s,%s), too large: %s", precision, scale, decimal); column.writeInteger(repetitionLevel, decimal.unscaledValue().intValue()); } }
@Override public void write(int repetitionLevel, CharSequence value) { if (value instanceof Utf8) { Utf8 utf8 = (Utf8) value; column.writeBinary(repetitionLevel, Binary.fromReusedByteArray(utf8.getBytes(), 0, utf8.getByteLength())); } else { column.writeBinary(repetitionLevel, Binary.fromString(value.toString())); } } }
@Override public void write(int repetitionLevel, LocalTime value) { column.writeLong(repetitionLevel, value.toNanoOfDay() / 1000); } }
@Override public void write(int repetitionLevel, LocalDate value) { column.writeInteger(repetitionLevel, (int) ChronoUnit.DAYS.between(EPOCH_DAY, value)); } }
@Override public void write(int repetitionLevel, Fixed buffer) { column.writeBinary(repetitionLevel, Binary.fromReusedByteArray(buffer.bytes())); } }
@Override public void write(int repetitionLevel, OffsetDateTime value) { column.writeLong(repetitionLevel, ChronoUnit.MICROS.between(EPOCH, value)); } }
@Override public void write(int repetitionLevel, LocalDateTime value) { column.writeLong(repetitionLevel, ChronoUnit.MICROS.between(EPOCH, value.atOffset(ZoneOffset.UTC))); } }