@Override public RowFilter adapt(FilterAdapterContext context, SingleColumnValueFilter filter) throws IOException { if (filter.getFilterIfMissing()) { return createEmitRowsWithValueFilter(context, filter); } else { return RowFilter.newBuilder() .setCondition( Condition.newBuilder() .setPredicateFilter(createColumnSpecFilter(filter)) .setTrueFilter(createEmitRowsWithValueFilter(context, filter)) .setFalseFilter(ALL_VALUES_FILTER)) .build(); } }
public FilterModel(Filter filter) { String typeName = filter.getClass().getSimpleName(); FilterType type = FilterType.valueOf(typeName); this.type = typeName; switch (type) { case ColumnCountGetFilter: this.limit = ((ColumnCountGetFilter) filter).getLimit(); break; case ColumnPaginationFilter: this.limit = ((ColumnPaginationFilter) filter).getLimit(); this.offset = ((ColumnPaginationFilter) filter).getOffset(); break; case ColumnPrefixFilter: this.value = Base64.encodeBytes(((ColumnPrefixFilter) filter).getPrefix()); break; case ColumnRangeFilter: this.minColumn = Base64.encodeBytes(((ColumnRangeFilter) filter).getMinColumn()); this.minColumnInclusive = ((ColumnRangeFilter) filter).getMinColumnInclusive(); this.maxColumn = Base64.encodeBytes(((ColumnRangeFilter) filter).getMaxColumn()); this.maxColumnInclusive = ((ColumnRangeFilter) filter).getMaxColumnInclusive(); break; case DependentColumnFilter: { DependentColumnFilter dcf = (DependentColumnFilter) filter; this.family = Base64.encodeBytes(dcf.getFamily()); byte[] qualifier = dcf.getQualifier(); if (qualifier != null) { this.qualifier = Base64.encodeBytes(qualifier); } this.op = dcf.getOperator().toString(); this.comparator = new WritableByteArrayComparableModel(dcf.getComparator()); this.dropDependentColumn = dcf.dropDependentColumn(); } break; case FilterList: this.op = ((FilterList) filter).getOperator().toString(); this.filters = new ArrayList<FilterModel>(); for (Filter child : ((FilterList) filter).getFilters()) { this.filters.add(new FilterModel(child)); } break; case FirstKeyOnlyFilter: case KeyOnlyFilter: break; case InclusiveStopFilter: this.value = Base64.encodeBytes(((InclusiveStopFilter) filter).getStopRowKey()); break; case MultipleColumnPrefixFilter: this.prefixes = new ArrayList<String>(); for (byte[] prefix : ((MultipleColumnPrefixFilter) filter).getPrefix()) { this.prefixes.add(Base64.encodeBytes(prefix)); } break; case PageFilter: this.value = Long.toString(((PageFilter) filter).getPageSize()); break; case PrefixFilter: this.value = Base64.encodeBytes(((PrefixFilter) filter).getPrefix()); break; case FamilyFilter: case QualifierFilter: case RowFilter: case ValueFilter: this.op = ((CompareFilter) filter).getOperator().toString(); this.comparator = new WritableByteArrayComparableModel(((CompareFilter) filter).getComparator()); break; case RandomRowFilter: this.chance = ((RandomRowFilter) filter).getChance(); break; case SingleColumnValueExcludeFilter: case SingleColumnValueFilter: { SingleColumnValueFilter scvf = (SingleColumnValueFilter) filter; this.family = Base64.encodeBytes(scvf.getFamily()); byte[] qualifier = scvf.getQualifier(); if (qualifier != null) { this.qualifier = Base64.encodeBytes(qualifier); } this.op = scvf.getOperator().toString(); this.comparator = new WritableByteArrayComparableModel(scvf.getComparator()); if (scvf.getFilterIfMissing()) { this.ifMissing = true; } if (scvf.getLatestVersionOnly()) { this.latestVersion = true; } } break; case SkipFilter: this.filters = new ArrayList<FilterModel>(); this.filters.add(new FilterModel(((SkipFilter) filter).getFilter())); break; case TimestampsFilter: this.timestamps = ((TimestampsFilter) filter).getTimestamps(); break; case WhileMatchFilter: this.filters = new ArrayList<FilterModel>(); this.filters.add(new FilterModel(((WhileMatchFilter) filter).getFilter())); break; default: throw new RuntimeException("unhandled filter type " + type); } }