in hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/model/ScannerModel.java [568:686]
public Filter build() {
Filter filter;
switch (FilterType.valueOf(type)) {
case ColumnCountGetFilter:
filter = new ColumnCountGetFilter(limit);
break;
case ColumnPaginationFilter:
filter = new ColumnPaginationFilter(limit, offset);
break;
case ColumnPrefixFilter:
filter = new ColumnPrefixFilter(Base64.getDecoder().decode(value));
break;
case ColumnRangeFilter:
filter = new ColumnRangeFilter(Base64.getDecoder().decode(minColumn), minColumnInclusive,
Base64.getDecoder().decode(maxColumn), maxColumnInclusive);
break;
case DependentColumnFilter:
filter = new DependentColumnFilter(Base64.getDecoder().decode(family),
qualifier != null ? Base64.getDecoder().decode(qualifier) : null, dropDependentColumn,
CompareOperator.valueOf(op), comparator.build());
break;
case FamilyFilter:
filter = new FamilyFilter(CompareOperator.valueOf(op), comparator.build());
break;
case FilterList: {
List<Filter> list = new ArrayList<>(filters.size());
for (FilterModel model : filters) {
list.add(model.build());
}
filter = new FilterList(FilterList.Operator.valueOf(op), list);
}
break;
case FirstKeyOnlyFilter:
filter = new FirstKeyOnlyFilter();
break;
case InclusiveStopFilter:
filter = new InclusiveStopFilter(Base64.getDecoder().decode(value));
break;
case KeyOnlyFilter:
filter = new KeyOnlyFilter();
break;
case MultipleColumnPrefixFilter: {
byte[][] values = new byte[prefixes.size()][];
for (int i = 0; i < prefixes.size(); i++) {
values[i] = Base64.getDecoder().decode(prefixes.get(i));
}
filter = new MultipleColumnPrefixFilter(values);
}
break;
case MultiRowRangeFilter: {
ArrayList<MultiRowRangeFilter.RowRange> rowRanges = new ArrayList<>(ranges.size());
for (RowRangeModel rangeModel : ranges) {
rowRanges.add(rangeModel.build());
}
filter = new MultiRowRangeFilter(rowRanges);
}
break;
case PageFilter:
filter = new PageFilter(Long.parseLong(value));
break;
case PrefixFilter:
filter = new PrefixFilter(Base64.getDecoder().decode(value));
break;
case QualifierFilter:
filter = new QualifierFilter(CompareOperator.valueOf(op), comparator.build());
break;
case RandomRowFilter:
filter = new RandomRowFilter(chance);
break;
case RowFilter:
filter = new RowFilter(CompareOperator.valueOf(op), comparator.build());
break;
case SingleColumnValueFilter:
filter = new SingleColumnValueFilter(Base64.getDecoder().decode(family),
qualifier != null ? Base64.getDecoder().decode(qualifier) : null,
CompareOperator.valueOf(op), comparator.build());
if (ifMissing != null) {
((SingleColumnValueFilter) filter).setFilterIfMissing(ifMissing);
}
if (latestVersion != null) {
((SingleColumnValueFilter) filter).setLatestVersionOnly(latestVersion);
}
break;
case SingleColumnValueExcludeFilter:
filter = new SingleColumnValueExcludeFilter(Base64.getDecoder().decode(family),
qualifier != null ? Base64.getDecoder().decode(qualifier) : null,
CompareOperator.valueOf(op), comparator.build());
if (ifMissing != null) {
((SingleColumnValueExcludeFilter) filter).setFilterIfMissing(ifMissing);
}
if (latestVersion != null) {
((SingleColumnValueExcludeFilter) filter).setLatestVersionOnly(latestVersion);
}
break;
case SkipFilter:
filter = new SkipFilter(filters.get(0).build());
break;
case TimestampsFilter:
filter = new TimestampsFilter(timestamps);
break;
case ValueFilter:
filter = new ValueFilter(CompareOperator.valueOf(op), comparator.build());
break;
case WhileMatchFilter:
filter = new WhileMatchFilter(filters.get(0).build());
break;
case FuzzyRowFilter: {
ArrayList<Pair<byte[], byte[]>> fuzzyKeyArgs = new ArrayList<>(fuzzyKeys.size());
for (FuzzyKeyModel keyModel : fuzzyKeys) {
fuzzyKeyArgs.add(keyModel.build());
}
filter = new FuzzyRowFilter(fuzzyKeyArgs);
}
break;
default:
throw new RuntimeException("unhandled filter type: " + type);
}
return filter;
}