1 /* 2 * Copyright 2010 The Apache Software Foundation 3 * 4 * Licensed to the Apache Software Foundation (ASF) under one 5 * or more contributor license agreements. See the NOTICE file 6 * distributed with this work for additional information 7 * regarding copyright ownership. The ASF licenses this file 8 * to you under the Apache License, Version 2.0 (the 9 * "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 */ 19 20 package org.apache.hadoop.hbase.filter; 21 22 import org.apache.hadoop.hbase.KeyValue; 23 24 import java.util.List; 25 26 /** 27 * Abstract base class to help you implement new Filters. Common "ignore" or NOOP type 28 * methods can go here, helping to reduce boiler plate in an ever-expanding filter 29 * library. 30 * 31 * If you could instantiate FilterBase, it would end up being a "null" filter - 32 * that is one that never filters anything. 33 * 34 * @inheritDoc 35 */ 36 public abstract class FilterBase implements Filter { 37 38 /** 39 * Filters that are purely stateless and do nothing in their reset() methods can inherit 40 * this null/empty implementation. 41 * 42 * @inheritDoc 43 */ 44 @Override 45 public void reset() { 46 } 47 48 /** 49 * Filters that do not filter by row key can inherit this implementation that 50 * never filters anything. (ie: returns false). 51 * 52 * @inheritDoc 53 */ 54 @Override 55 public boolean filterRowKey(byte [] buffer, int offset, int length) { 56 return false; 57 } 58 59 /** 60 * Filters that never filter all remaining can inherit this implementation that 61 * never stops the filter early. 62 * 63 * @inheritDoc 64 */ 65 @Override 66 public boolean filterAllRemaining() { 67 return false; 68 } 69 70 /** 71 * Filters that dont filter by key value can inherit this implementation that 72 * includes all KeyValues. 73 * 74 * @inheritDoc 75 */ 76 @Override 77 public ReturnCode filterKeyValue(KeyValue ignored) { 78 return ReturnCode.INCLUDE; 79 } 80 81 /** 82 * Filters that never filter by modifying the returned List of KeyValues can 83 * inherit this implementation that does nothing. 84 * 85 * @inheritDoc 86 */ 87 @Override 88 public void filterRow(List<KeyValue> ignored) { 89 } 90 91 /** 92 * Fitlers that never filter by modifying the returned List of KeyValues can 93 * inherit this implementation that does nothing. 94 * 95 * @inheritDoc 96 */ 97 @Override 98 public boolean hasFilterRow() { 99 return false; 100 } 101 102 /** 103 * Filters that never filter by rows based on previously gathered state from 104 * @{link #filterKeyValue(KeyValue)} can inherit this implementation that 105 * never filters a row. 106 * 107 * @inheritDoc 108 */ 109 @Override 110 public boolean filterRow() { 111 return false; 112 } 113 }