@Override public ColumnValueSelector<?> makeColumnValueSelector(String columnName) { if (virtualColumns.exists(columnName)) { return virtualColumns.makeColumnValueSelector(columnName, baseFactory); } else { return baseFactory.makeColumnValueSelector(columnName); } }
@Override public ColumnValueSelector<?> makeColumnValueSelector(String columnName) { if (virtualColumns.exists(columnName)) { return virtualColumns.makeColumnValueSelector(columnName, this); } if (columnName.equals(ColumnHolder.TIME_COLUMN_NAME)) { return rowHolder; } final Integer dimIndex = index.getDimensionIndex(columnName); if (dimIndex != null) { final IncrementalIndex.DimensionDesc dimensionDesc = index.getDimension(columnName); final DimensionIndexer indexer = dimensionDesc.getIndexer(); return indexer.makeColumnValueSelector(rowHolder, dimensionDesc); } return index.makeMetricColumnValueSelector(columnName, rowHolder); }
@Override public ColumnValueSelector<?> makeColumnValueSelector(String columnName) { if (virtualColumns.exists(columnName)) { return virtualColumns.makeColumnValueSelector(columnName, this); } BaseColumn column = columnCache.computeIfAbsent(columnName, name -> { ColumnHolder holder = index.getColumnHolder(name); if (holder != null) { return closer.register(holder.getColumn()); } else { return null; } }); if (column != null) { return column.makeColumnValueSelector(offset); } else { return NilColumnValueSelector.instance(); } }
@Test public void testNonExistentSelector() { final VirtualColumns virtualColumns = makeVirtualColumns(); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("No such virtual column[bar]"); virtualColumns.makeColumnValueSelector("bar", null); }
@Test public void testMakeSelectorsWithDotSupportBaseNameOnly() { final VirtualColumns virtualColumns = makeVirtualColumns(); final BaseObjectColumnValueSelector objectSelector = virtualColumns.makeColumnValueSelector("foo", null); final DimensionSelector dimensionSelector = virtualColumns.makeDimensionSelector( new DefaultDimensionSpec("foo", "x"), null ); final BaseFloatColumnValueSelector floatSelector = virtualColumns.makeColumnValueSelector("foo", null); final BaseLongColumnValueSelector longSelector = virtualColumns.makeColumnValueSelector("foo", null); Assert.assertEquals(-1L, objectSelector.getObject()); Assert.assertEquals("-1", dimensionSelector.lookupName(dimensionSelector.getRow().get(0))); Assert.assertEquals(-1.0f, floatSelector.getFloat(), 0.0f); Assert.assertEquals(-1L, longSelector.getLong()); }
@Test public void testMakeSelectorsWithDotSupport() { final VirtualColumns virtualColumns = makeVirtualColumns(); final BaseObjectColumnValueSelector objectSelector = virtualColumns.makeColumnValueSelector("foo.5", null); final DimensionSelector dimensionSelector = virtualColumns.makeDimensionSelector( new DefaultDimensionSpec("foo.5", "x"), null ); final BaseFloatColumnValueSelector floatSelector = virtualColumns.makeColumnValueSelector("foo.5", null); final BaseLongColumnValueSelector longSelector = virtualColumns.makeColumnValueSelector("foo.5", null); Assert.assertEquals(5L, objectSelector.getObject()); Assert.assertEquals("5", dimensionSelector.lookupName(dimensionSelector.getRow().get(0))); Assert.assertEquals(5.0f, floatSelector.getFloat(), 0.0f); Assert.assertEquals(5L, longSelector.getLong()); }
@Test public void testMakeSelectors() { final VirtualColumns virtualColumns = makeVirtualColumns(); final BaseObjectColumnValueSelector objectSelector = virtualColumns.makeColumnValueSelector("expr", null); final DimensionSelector dimensionSelector = virtualColumns.makeDimensionSelector( new DefaultDimensionSpec("expr", "x"), null ); final DimensionSelector extractionDimensionSelector = virtualColumns.makeDimensionSelector( new ExtractionDimensionSpec("expr", "x", new BucketExtractionFn(1.0, 0.5)), null ); final BaseFloatColumnValueSelector floatSelector = virtualColumns.makeColumnValueSelector("expr", null); final BaseLongColumnValueSelector longSelector = virtualColumns.makeColumnValueSelector("expr", null); Assert.assertEquals(1L, objectSelector.getObject()); Assert.assertEquals("1", dimensionSelector.lookupName(dimensionSelector.getRow().get(0))); Assert.assertEquals("0.5", extractionDimensionSelector.lookupName(extractionDimensionSelector.getRow().get(0))); Assert.assertEquals(1.0f, floatSelector.getFloat(), 0.0f); Assert.assertEquals(1L, longSelector.getLong()); }
@Override public ColumnValueSelector<?> makeColumnValueSelector(String columnName) { if (virtualColumns.exists(columnName)) { return virtualColumns.makeColumnValueSelector(columnName, baseFactory); } else { return baseFactory.makeColumnValueSelector(columnName); } }
@Override public ColumnValueSelector<?> makeColumnValueSelector(String columnName) { if (virtualColumns.exists(columnName)) { return virtualColumns.makeColumnValueSelector(columnName, this); } if (columnName.equals(ColumnHolder.TIME_COLUMN_NAME)) { return rowHolder; } final Integer dimIndex = index.getDimensionIndex(columnName); if (dimIndex != null) { final IncrementalIndex.DimensionDesc dimensionDesc = index.getDimension(columnName); final DimensionIndexer indexer = dimensionDesc.getIndexer(); return indexer.makeColumnValueSelector(rowHolder, dimensionDesc); } return index.makeMetricColumnValueSelector(columnName, rowHolder); }
@Override public ColumnValueSelector<?> makeColumnValueSelector(String columnName) { if (virtualColumns.exists(columnName)) { return virtualColumns.makeColumnValueSelector(columnName, this); } BaseColumn column = columnCache.computeIfAbsent(columnName, name -> { ColumnHolder holder = index.getColumnHolder(name); if (holder != null) { return closer.register(holder.getColumn()); } else { return null; } }); if (column != null) { return column.makeColumnValueSelector(offset); } else { return NilColumnValueSelector.instance(); } }