public static Filter createFilterFromArguments(ArrayList<byte []> filterArguments) { byte [][] prefixes = new byte [filterArguments.size()][]; for (int i = 0 ; i < filterArguments.size(); i++) { byte [] columnPrefix = ParseFilter.removeQuotesFromByteArray(filterArguments.get(i)); prefixes[i] = columnPrefix; } return new MultipleColumnPrefixFilter(prefixes); }
@Test public void testMultipleColumnPrefixFilter() throws IOException { String filterString = " MultipleColumnPrefixFilter('qualifier1', 'qualifier2' ) "; MultipleColumnPrefixFilter multipleColumnPrefixFilter = doTestFilter(filterString, MultipleColumnPrefixFilter.class); byte [][] prefixes = multipleColumnPrefixFilter.getPrefix(); assertEquals("qualifier1", new String(prefixes[0], StandardCharsets.UTF_8)); assertEquals("qualifier2", new String(prefixes[1], StandardCharsets.UTF_8)); }
@Override public ReturnCode filterCell(final Cell c) { if (sortedPrefixes.isEmpty()) { return ReturnCode.INCLUDE; } else { return filterColumn(c); } }
@Test public void testMultipleColumnPrefixFilter() throws Exception { // empty array byte [][] prefixes = null; MultipleColumnPrefixFilter multipleColumnPrefixFilter = new MultipleColumnPrefixFilter(prefixes); assertTrue(multipleColumnPrefixFilter.areSerializedFieldsEqual( ProtobufUtil.toFilter(ProtobufUtil.toFilter(multipleColumnPrefixFilter)))); // non-empty array prefixes = new byte[2][]; prefixes[0] = Bytes.toBytes("a"); prefixes[1] = Bytes.toBytes(""); multipleColumnPrefixFilter = new MultipleColumnPrefixFilter(prefixes); assertTrue(multipleColumnPrefixFilter.areSerializedFieldsEqual( ProtobufUtil.toFilter(ProtobufUtil.toFilter(multipleColumnPrefixFilter)))); }
@Override public String toString() { return toString(MAX_LOG_PREFIXES); }
@Deprecated @Override public ReturnCode filterKeyValue(final Cell c) { return filterCell(c); }
@Override public boolean equals(Object obj) { return obj instanceof Filter && areSerializedFieldsEqual((Filter) obj); }
@Test public void testMultipleColumnPrefixFilter() throws Exception { // empty array byte [][] prefixes = null; MultipleColumnPrefixFilter multipleColumnPrefixFilter = new MultipleColumnPrefixFilter(prefixes); assertTrue(multipleColumnPrefixFilter.areSerializedFieldsEqual( ProtobufUtil.toFilter(ProtobufUtil.toFilter(multipleColumnPrefixFilter)))); // non-empty array prefixes = new byte[2][]; prefixes[0] = Bytes.toBytes("a"); prefixes[1] = Bytes.toBytes(""); multipleColumnPrefixFilter = new MultipleColumnPrefixFilter(prefixes); assertTrue(multipleColumnPrefixFilter.areSerializedFieldsEqual( ProtobufUtil.toFilter(ProtobufUtil.toFilter(multipleColumnPrefixFilter)))); }
@Override public String toString() { return toString(MAX_LOG_PREFIXES); }
@Deprecated @Override public ReturnCode filterKeyValue(final Cell c) { return filterCell(c); }
/** * @param pbBytes A pb serialized {@link MultipleColumnPrefixFilter} instance * @return An instance of {@link MultipleColumnPrefixFilter} made from <code>bytes</code> * @throws DeserializationException * @see #toByteArray */ public static MultipleColumnPrefixFilter parseFrom(final byte [] pbBytes) throws DeserializationException { FilterProtos.MultipleColumnPrefixFilter proto; try { proto = FilterProtos.MultipleColumnPrefixFilter.parseFrom(pbBytes); } catch (InvalidProtocolBufferException e) { throw new DeserializationException(e); } int numPrefixes = proto.getSortedPrefixesCount(); byte [][] prefixes = new byte[numPrefixes][]; for (int i = 0; i < numPrefixes; ++i) { prefixes[i] = proto.getSortedPrefixes(i).toByteArray(); } return new MultipleColumnPrefixFilter(prefixes); }
case MultipleColumnPrefixFilter: this.prefixes = new ArrayList<>(); for (byte[] prefix: ((MultipleColumnPrefixFilter)filter).getPrefix()) { this.prefixes.add(Bytes.toString(Base64.getEncoder().encode(prefix)));
@Override public ReturnCode filterCell(final Cell c) { if (sortedPrefixes.isEmpty()) { return ReturnCode.INCLUDE; } else { return filterColumn(c); } }
@Override public String toString() { return toString(MAX_LOG_PREFIXES); }
@Deprecated @Override public ReturnCode filterKeyValue(final Cell c) { return filterCell(c); }
values[i] = Base64.getDecoder().decode(prefixes.get(i)); filter = new MultipleColumnPrefixFilter(values); } break; case MultiRowRangeFilter: {
MultipleColumnPrefixFilter prefixFilter = (MultipleColumnPrefixFilter) filter; buf.append(filter.getClass().getSimpleName() + ": "); byte[][] prefixes = prefixFilter.getPrefix(); for (int i = 0; i < prefixes.length; i++) { String prefix = new String(prefixes[i]);
@Override public ReturnCode filterCell(final Cell c) { if (sortedPrefixes.isEmpty()) { return ReturnCode.INCLUDE; } else { return filterColumn(c); } }
@Override public String toString() { return toString(MAX_LOG_PREFIXES); }
filter_prefix[1] = new byte [] {'q'}; filter = new MultipleColumnPrefixFilter(filter_prefix); scan.setFilter(filter); List<Cell> results = new ArrayList<>();