package ch.x42.terye.persistence.hbase;
import java.io.DataInput;
import java.io.IOException;
import java.util.regex.Pattern;
import org.apache.hadoop.hbase.filter.WritableByteArrayComparable;
import org.apache.hadoop.hbase.util.Bytes;
public class RegexStringComparator extends WritableByteArrayComparable {
private Pattern pattern;
public RegexStringComparator() {
}
public RegexStringComparator(String expr) {
super(Bytes.toBytes(expr));
this.pattern = Pattern.compile(expr, Pattern.DOTALL);
}
@Override
public int compareTo(byte[] value, int offset, int length) {
String rowKey = new String(value, offset, length);
return pattern.matcher(rowKey).matches() ? 0 : 1;
}
@Override
public void readFields(DataInput in) throws IOException {
super.readFields(in);
this.pattern = Pattern.compile(Bytes.toString(getValue()));
}
}