public Slice makeSlice(TableRecordInfoDigest digest, List<TableRecord> records) {
Preconditions.checkArgument(records != null && !records.isEmpty(), "records cannot be empty");
Preconditions.checkArgument(records.size() <= nRecordsCap, "batch count cannot exceed " + nRecordsCap);
sliceTimestamp = increaseSliceTimestamp(records.get(0).getTimestamp());
ColumnValueContainer[] containers = new ColumnValueContainer[nColumns];
for (int i : desc.getValueColumns()) {
containers[i] = new CompressedValueContainer(digest, i, nRecordsCap);
}
for (int i : desc.getMetricsColumns()) {
containers[i] = new CompressedValueContainer(digest, i, nRecordsCap);
}
for (TableRecord record : records) {
for (int i = 0; i < nColumns; i++) {
record.getValueBytes(i, temp);
containers[i].append(temp);
}
}
return new Slice(digest, shard, sliceTimestamp, containers);
}