/** * Returns true if a virtual column exists with a particular columnName. * * @param columnName the column name * * @return true or false */ public boolean exists(String columnName) { return getVirtualColumn(columnName) != null; }
private boolean isVirtualColumn(final String columnName) { return virtualColumns.getVirtualColumn(columnName) != null; } }
public ColumnCapabilities getColumnCapabilities(String columnName) { final VirtualColumn virtualColumn = getVirtualColumn(columnName); if (virtualColumn != null) { return Preconditions.checkNotNull( virtualColumn.capabilities(columnName), "capabilities for column[%s]", columnName ); } else { return null; } }
/** * Create a column value selector. * * @param columnName column mame * @param factory base column selector factory * * @return selector * * @throws IllegalArgumentException if the virtual column does not exist (see {@link #exists(String)} */ public ColumnValueSelector<?> makeColumnValueSelector(String columnName, ColumnSelectorFactory factory) { final VirtualColumn virtualColumn = getVirtualColumn(columnName); if (virtualColumn == null) { throw new IAE("No such virtual column[%s]", columnName); } else { final ColumnValueSelector<?> selector = virtualColumn.makeColumnValueSelector(columnName, factory); Preconditions.checkNotNull(selector, "selector"); return selector; } }
private void detectCycles(VirtualColumn virtualColumn, Set<String> columnNames) { // Copy columnNames to avoid modifying it final Set<String> nextSet = columnNames == null ? Sets.newHashSet(virtualColumn.getOutputName()) : Sets.newHashSet(columnNames); for (String columnName : virtualColumn.requiredColumns()) { if (!nextSet.add(columnName)) { throw new IAE("Self-referential column[%s]", columnName); } final VirtualColumn dependency = getVirtualColumn(columnName); if (dependency != null) { detectCycles(dependency, nextSet); } } }
/** * Create a dimension (string) selector. * * @param dimensionSpec the dimensionSpec for this selector * @param factory base column selector factory * * @return selector * * @throws IllegalArgumentException if the virtual column does not exist (see {@link #exists(String)} */ public DimensionSelector makeDimensionSelector(DimensionSpec dimensionSpec, ColumnSelectorFactory factory) { final VirtualColumn virtualColumn = getVirtualColumn(dimensionSpec.getDimension()); if (virtualColumn == null) { throw new IAE("No such virtual column[%s]", dimensionSpec.getDimension()); } else { final DimensionSelector selector = virtualColumn.makeDimensionSelector(dimensionSpec, factory); Preconditions.checkNotNull(selector, "selector"); return selector; } }
@Override public boolean hasMultipleValues(final String dimension) { if (isVirtualColumn(dimension)) { return virtualColumns.getVirtualColumn(dimension).capabilities(dimension).hasMultipleValues(); } final ColumnHolder columnHolder = index.getColumnHolder(dimension); return columnHolder != null && columnHolder.getCapabilities().hasMultipleValues(); }
private boolean isVirtualColumn(final String columnName) { return virtualColumns.getVirtualColumn(columnName) != null; } }
/** * Returns true if a virtual column exists with a particular columnName. * * @param columnName the column name * * @return true or false */ public boolean exists(String columnName) { return getVirtualColumn(columnName) != null; }
public ColumnCapabilities getColumnCapabilities(String columnName) { final VirtualColumn virtualColumn = getVirtualColumn(columnName); if (virtualColumn != null) { return Preconditions.checkNotNull( virtualColumn.capabilities(columnName), "capabilities for column[%s]", columnName ); } else { return null; } }
/** * Create a column value selector. * * @param columnName column mame * @param factory base column selector factory * * @return selector * * @throws IllegalArgumentException if the virtual column does not exist (see {@link #exists(String)} */ public ColumnValueSelector<?> makeColumnValueSelector(String columnName, ColumnSelectorFactory factory) { final VirtualColumn virtualColumn = getVirtualColumn(columnName); if (virtualColumn == null) { throw new IAE("No such virtual column[%s]", columnName); } else { final ColumnValueSelector<?> selector = virtualColumn.makeColumnValueSelector(columnName, factory); Preconditions.checkNotNull(selector, "selector"); return selector; } }
private void detectCycles(VirtualColumn virtualColumn, Set<String> columnNames) { // Copy columnNames to avoid modifying it final Set<String> nextSet = columnNames == null ? Sets.newHashSet(virtualColumn.getOutputName()) : Sets.newHashSet(columnNames); for (String columnName : virtualColumn.requiredColumns()) { if (!nextSet.add(columnName)) { throw new IAE("Self-referential column[%s]", columnName); } final VirtualColumn dependency = getVirtualColumn(columnName); if (dependency != null) { detectCycles(dependency, nextSet); } } }
/** * Create a dimension (string) selector. * * @param dimensionSpec the dimensionSpec for this selector * @param factory base column selector factory * * @return selector * * @throws IllegalArgumentException if the virtual column does not exist (see {@link #exists(String)} */ public DimensionSelector makeDimensionSelector(DimensionSpec dimensionSpec, ColumnSelectorFactory factory) { final VirtualColumn virtualColumn = getVirtualColumn(dimensionSpec.getDimension()); if (virtualColumn == null) { throw new IAE("No such virtual column[%s]", dimensionSpec.getDimension()); } else { final DimensionSelector selector = virtualColumn.makeDimensionSelector(dimensionSpec, factory); Preconditions.checkNotNull(selector, "selector"); return selector; } }
@Override public boolean hasMultipleValues(final String dimension) { if (isVirtualColumn(dimension)) { return virtualColumns.getVirtualColumn(dimension).capabilities(dimension).hasMultipleValues(); } final ColumnHolder columnHolder = index.getColumnHolder(dimension); return columnHolder != null && columnHolder.getCapabilities().hasMultipleValues(); }