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 org.apache.hadoop.hbase.KeyValue;
26 import org.apache.hadoop.hbase.util.Bytes;
27
28 import java.util.ArrayList;
29
30 import com.google.common.base.Preconditions;
31
32
33
34
35
36
37
38
39 public class KeyOnlyFilter extends FilterBase {
40
41 boolean lenAsVal;
42 public KeyOnlyFilter() { this(false); }
43 public KeyOnlyFilter(boolean lenAsVal) { this.lenAsVal = lenAsVal; }
44
45 @Override
46 public KeyValue transform(KeyValue kv) {
47 return kv.createKeyOnly(this.lenAsVal);
48 }
49
50 public static Filter createFilterFromArguments(ArrayList<byte []> filterArguments) {
51 Preconditions.checkArgument((filterArguments.size() == 0 || filterArguments.size() == 1),
52 "Expected: 0 or 1 but got: %s", filterArguments.size());
53 KeyOnlyFilter filter = new KeyOnlyFilter();
54 if (filterArguments.size() == 1) {
55 filter.lenAsVal = ParseFilter.convertByteArrayToBoolean(filterArguments.get(0));
56 }
57 return filter;
58 }
59
60 public void write(DataOutput out) throws IOException {
61 out.writeBoolean(this.lenAsVal);
62 }
63
64 public void readFields(DataInput in) throws IOException {
65 this.lenAsVal = in.readBoolean();
66 }
67 }