package com.bizosys.hsearch.index; import java.io.IOException; import java.util.ArrayList; import java.util.List; import com.bizosys.hsearch.filter.IStorable; import com.bizosys.hsearch.filter.MergedBlocks; import com.bizosys.hsearch.filter.Storable; import com.bizosys.hsearch.hbase.NV; import com.bizosys.hsearch.schema.IOConstants; import com.bizosys.hsearch.util.Record; public class PreviewDeleteRecord extends Record { List<Short> docPos = new ArrayList<Short>(); byte[] metaH = null, aclH = null, teaserH = null; public PreviewDeleteRecord(IStorable pk) { super(pk); } public PreviewDeleteRecord(IStorable pk, List<Short> docPos) { super(pk); this.docPos = docPos; } @Override public List<NV> getBlankNVs() throws IOException { List<NV> nvs = new ArrayList<NV>(3); nvs.add(new NV(IOConstants.SEARCH_BYTES, IOConstants.META_HEADER, null) ); nvs.add(new NV(IOConstants.SEARCH_BYTES, IOConstants.ACL_HEADER, null ) ); nvs.add(new NV(IOConstants.TEASER_BYTES, IOConstants.TEASER_HEADER, null ) ); return nvs; } @Override public boolean merge(byte[] fam, byte[] name, byte[] data) { switch ( name[0]) { case IOConstants.ACL_HEADER_0: aclH = data; break; case IOConstants.META_HEADER_0: metaH = data; break; case IOConstants.TEASER_HEADER_0: teaserH = data; break; default: break; } return true; } public List<NV> getNVs() throws IOException { List<NV> nvs = new ArrayList<NV>(3); /** * Compute the Meta Merged Bytes */ for (Short pos : docPos) { if ( null != metaH) { MergedBlocks.delete(metaH, pos); } if ( null != aclH) MergedBlocks.delete(aclH, pos); if ( null != teaserH) MergedBlocks.delete(teaserH, pos); } nvs.add(new NV(IOConstants.SEARCH_BYTES, IOConstants.ACL_HEADER, new Storable(aclH))); nvs.add(new NV(IOConstants.SEARCH_BYTES, IOConstants.META_HEADER, new Storable(metaH))); nvs.add(new NV(IOConstants.TEASER_BYTES, IOConstants.TEASER_HEADER, new Storable(teaserH))); return nvs; } }