@Override public void initColumnValues(ColumnValueSelector selector, int columnIndex, Object[] valuess) { final DimensionSelector dimSelector = (DimensionSelector) selector; final IndexedInts row = dimSelector.getRow(); ArrayBasedIndexedInts newRow = (ArrayBasedIndexedInts) valuess[columnIndex]; if (newRow == null) { newRow = new ArrayBasedIndexedInts(); valuess[columnIndex] = newRow; } int rowSize = row.size(); newRow.ensureSize(rowSize); for (int i = 0; i < rowSize; i++) { final String value = dimSelector.lookupName(row.get(i)); final int dictId = reverseDictionary.getInt(value); if (dictId < 0) { dictionary.add(value); reverseDictionary.put(value, nextId); newRow.setValue(i, nextId); nextId++; } else { newRow.setValue(i, dictId); } } newRow.setSize(rowSize); }
@Override public void setValueFrom(ColumnValueSelector<?> selector) { DimensionSelector dimensionSelector = (DimensionSelector) selector; keptSelector = dimensionSelector; IndexedInts row = dimensionSelector.getRow(); int rowSize = row.size(); keptRow.ensureSize(rowSize); for (int i = 0; i < rowSize; i++) { keptRow.setValue(i, row.get(i)); } keptRow.setSize(rowSize); }
@Override public IndexedInts getRow() { return new ArrayBasedIndexedInts(new int[]{2, 4, 6}); }
/** * Sets the values from the given array. The given values array is not reused and not prone to be mutated later. * Instead, the values from this array are copied into an array which is internal to ArrayBasedIndexedInts. */ public void setValues(int[] values, int size) { if (size < 0 || size > values.length) { throw new IAE("Size[%d] should be between 0 and %d", size, values.length); } ensureSize(size); System.arraycopy(values, 0, expansion, 0, size); this.size = size; }
@Override public IndexedInts getRow() { IndexedInts baseRow = selector.getRow(); int baseRowSize = baseRow.size(); row.ensureSize(baseRowSize); int resultSize = 0; for (int i = 0; i < baseRowSize; i++) { int forwardedValue = forwardMapping.get(baseRow.get(i)); if (forwardedValue >= 0) { row.setValue(resultSize, forwardedValue); resultSize++; } } row.setSize(resultSize); return row; }
public static VSizeColumnarInts fromArray(int[] array, int maxValue) { return fromIndexedInts(new ArrayBasedIndexedInts(array), maxValue); }
/** * Sets the values from the given array. The given values array is not reused and not prone to be mutated later. * Instead, the values from this array are copied into an array which is internal to ArrayBasedIndexedInts. */ public void setValues(int[] values, int size) { if (size < 0 || size > values.length) { throw new IAE("Size[%d] should be between 0 and %d", size, values.length); } ensureSize(size); System.arraycopy(values, 0, expansion, 0, size); this.size = size; }
@Override public IndexedInts getRow() { IndexedInts baseRow = selector.getRow(); int baseRowSize = baseRow.size(); row.ensureSize(baseRowSize); int resultSize = 0; for (int i = 0; i < baseRowSize; i++) { if (predicate.apply(selector.lookupName(baseRow.get(i)))) { row.setValue(resultSize, i); resultSize++; } } row.setSize(resultSize); return row; }
@Override public void initColumnValues(ColumnValueSelector selector, int columnIndex, Object[] valuess) { final DimensionSelector dimSelector = (DimensionSelector) selector; final IndexedInts row = dimSelector.getRow(); ArrayBasedIndexedInts newRow = (ArrayBasedIndexedInts) valuess[columnIndex]; if (newRow == null) { newRow = new ArrayBasedIndexedInts(); valuess[columnIndex] = newRow; } int rowSize = row.size(); newRow.ensureSize(rowSize); for (int i = 0; i < rowSize; i++) { final String value = dimSelector.lookupName(row.get(i)); final int dictId = reverseDictionary.getInt(value); if (dictId < 0) { dictionary.add(value); reverseDictionary.put(value, nextId); newRow.setValue(i, nextId); nextId++; } else { newRow.setValue(i, dictId); } } newRow.setSize(rowSize); }
@Parameterized.Parameters public static Collection<?> constructorFeeder() { return Arrays.asList( new Object[][]{ {VSizeColumnarInts.fromArray(array)}, {new ArrayBasedIndexedInts(array)} } ); }
@Override public void setValueFrom(ColumnValueSelector<?> selector) { DimensionSelector dimensionSelector = (DimensionSelector) selector; keptSelector = dimensionSelector; IndexedInts row = dimensionSelector.getRow(); int rowSize = row.size(); keptRow.ensureSize(rowSize); for (int i = 0; i < rowSize; i++) { keptRow.setValue(i, row.get(i)); } keptRow.setSize(rowSize); }
private void checkSerializedSizeAndData() throws Exception { int maxValue = vals.length == 0 ? 0 : Ints.max(vals); VSizeColumnarIntsSerializer writer = new VSizeColumnarIntsSerializer(segmentWriteOutMedium, maxValue); VSizeColumnarInts intsFromList = VSizeColumnarInts.fromIndexedInts(new ArrayBasedIndexedInts(vals), maxValue); writer.open(); for (int val : vals) { writer.addValue(val); } long writtenLength = writer.getSerializedSize(); WriteOutBytes writeOutBytes = segmentWriteOutMedium.makeWriteOutBytes(); writer.writeTo(writeOutBytes, null); assertEquals(writtenLength, intsFromList.getSerializedSize()); // read from ByteBuffer and check values VSizeColumnarInts intsFromByteBuffer = VSizeColumnarInts.readFromByteBuffer( ByteBuffer.wrap(IOUtils.toByteArray(writeOutBytes.asInputStream())) ); assertEquals(vals.length, intsFromByteBuffer.size()); for (int i = 0; i < vals.length; ++i) { assertEquals(vals[i], intsFromByteBuffer.get(i)); } }
@Override public IndexedInts getRow() { IndexedInts baseRow = selector.getRow(); int baseRowSize = baseRow.size(); row.ensureSize(baseRowSize); int resultSize = 0; for (int i = 0; i < baseRowSize; i++) { if (predicate.apply(selector.lookupName(baseRow.get(i)))) { row.setValue(resultSize, i); resultSize++; } } row.setSize(resultSize); return row; }
writer.open(); for (int[] val : vals) { writer.addValues(new ArrayBasedIndexedInts(val));
@Override public IndexedInts getRow() { IndexedInts baseRow = selector.getRow(); int baseRowSize = baseRow.size(); row.ensureSize(baseRowSize); int resultSize = 0; for (int i = 0; i < baseRowSize; i++) { int forwardedValue = forwardMapping.get(baseRow.get(i)); if (forwardedValue >= 0) { row.setValue(resultSize, forwardedValue); resultSize++; } } row.setSize(resultSize); return row; }
writer.open(); for (int[] val : vals) { writer.addValues(new ArrayBasedIndexedInts(val));
public static VSizeColumnarInts fromArray(int[] array, int maxValue) { return fromIndexedInts(new ArrayBasedIndexedInts(array), maxValue); }