1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.hadoop.hbase.filter;
21
22 import java.io.DataInput;
23 import java.io.DataOutput;
24 import java.io.IOException;
25 import java.util.List;
26
27 import org.apache.hadoop.hbase.KeyValue;
28
29
30
31
32
33
34 public class ColumnPaginationFilter extends FilterBase
35 {
36 private int limit = 0;
37 private int offset = 0;
38 private int count = 0;
39
40
41
42
43 public ColumnPaginationFilter()
44 {
45 super();
46 }
47
48 public ColumnPaginationFilter(final int limit, final int offset)
49 {
50 this.limit = limit;
51 this.offset = offset;
52 }
53
54 @Override
55 public ReturnCode filterKeyValue(KeyValue v)
56 {
57 if(count >= offset + limit)
58 {
59 return ReturnCode.NEXT_ROW;
60 }
61
62 ReturnCode code = count < offset ? ReturnCode.SKIP : ReturnCode.INCLUDE;
63 count++;
64 return code;
65 }
66
67 @Override
68 public void reset()
69 {
70 this.count = 0;
71 }
72
73 public void readFields(DataInput in) throws IOException
74 {
75 this.limit = in.readInt();
76 this.offset = in.readInt();
77 }
78
79 public void write(DataOutput out) throws IOException
80 {
81 out.writeInt(this.limit);
82 out.writeInt(this.offset);
83 }
84 }