private void addBitMapContainer(int col) { BitMapContainer c = new BitMapContainer(info, col); c.fromBytes(bitMapValues); addContainer(col, c); bitMapValues.clear(); }
private Slice doneSlice() { Slice r = null; if (nRecords > 0) { for (int i = 0; i < nColumns; i++) { containers[i].closeForChange(); } r = new Slice(info.getDigest(), shard, sliceTimestamp, containers); } // reset for next slice nRecords = 0; containers = new ColumnValueContainer[nColumns]; for (int i : info.getDescriptor().getBitmapColumns()) { containers[i] = new BitMapContainer(info.getDigest(), i); } for (int i : info.getDescriptor().getValueColumns()) { containers[i] = new CompressedValueContainer(info.getDigest(), i, nRecordsCap); } for (int i : info.getDescriptor().getMetricsColumns()) { containers[i] = new CompressedValueContainer(info.getDigest(), i, nRecordsCap); } return r; }
@Test public void testBitMapContainer() { // create container BitMapContainer container = new BitMapContainer(info.getDigest(), 0); Dictionary<String> dict = info.dict(0); for (int v = dict.getMinId(); v <= dict.getMaxId(); v++) { container.append(v); } container.append(Dictionary.NULL_ID[dict.getSizeOfId()]); container.closeForChange(); // copy by serialization List<ImmutableBytesWritable> bytes = container.toBytes(); BitMapContainer container2 = new BitMapContainer(info.getDigest(), 0); container2.fromBytes(bytes); // check the copy int i = 0; for (int v = dict.getMinId(); v <= dict.getMaxId(); v++) { int value = container2.getValueIntAt(i++); assertEquals(v, value); } assertEquals(Dictionary.NULL_ID[dict.getSizeOfId()], container2.getValueIntAt(i++)); assertEquals(container, container2); }