1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.hadoop.hbase.client;
19
20 import java.io.IOException;
21 import java.util.Objects;
22
23 import org.apache.hadoop.hbase.Cell;
24 import org.apache.hadoop.hbase.classification.InterfaceAudience;
25 import org.apache.hadoop.hbase.exceptions.DeserializationException;
26 import org.apache.hadoop.hbase.filter.FilterBase;
27 import org.apache.hadoop.hbase.util.Bytes;
28
29 @InterfaceAudience.Private
30 public final class ColumnCountOnRowFilter extends FilterBase {
31
32 private final int limit;
33
34 private int count = 0;
35
36 public ColumnCountOnRowFilter(int limit) {
37 this.limit = limit;
38 }
39
40 @Override
41 public ReturnCode filterKeyValue(Cell v) throws IOException {
42 count++;
43 return count > limit ? ReturnCode.NEXT_ROW : ReturnCode.INCLUDE;
44 }
45
46 @Override
47 public void reset() throws IOException {
48 this.count = 0;
49 }
50
51 @Override
52 public byte[] toByteArray() throws IOException {
53 return Bytes.toBytes(limit);
54 }
55
56 public static ColumnCountOnRowFilter parseFrom(byte[] bytes) throws DeserializationException {
57 return new ColumnCountOnRowFilter(Bytes.toInt(bytes));
58 }
59
60 @Override
61 public boolean equals(Object obj) {
62 if (!(obj instanceof ColumnCountOnRowFilter)) {
63 return false;
64 }
65 if (this == obj) {
66 return true;
67 }
68 ColumnCountOnRowFilter f = (ColumnCountOnRowFilter) obj;
69 return this.limit == f.limit;
70 }
71
72 @Override
73 public int hashCode() {
74 return Objects.hash(this.limit);
75 }
76 }