package com.bizosys.hsearch.inpipe;
import java.util.List;
import java.util.Vector;
import com.bizosys.hsearch.common.IStorable;
import com.bizosys.hsearch.common.Record;
import com.bizosys.hsearch.hbase.NV;
import com.bizosys.hsearch.index.TermColumns;
import com.bizosys.hsearch.index.TermFamilies;
import com.bizosys.hsearch.index.TermList;
/**
* This is a Row from Index table which has the
* ability to merge and store with previous values.
* @author karan
*
*/
public class SaveToIndexRecord extends Record {
TermFamilies termFamilies;
public SaveToIndexRecord(IStorable pk) {
super(pk);
}
public SaveToIndexRecord(IStorable pk, List<NV> kvs ) {
super(pk, kvs);
}
public SaveToIndexRecord(IStorable pk, NV kv ) {
super(pk, kv);
}
public void setTermFamilies(TermFamilies termFamilies) {
this.termFamilies = termFamilies;
}
@Override
public List<NV> getNVs() {
List<NV> nvs = new Vector<NV>(200);
termFamilies.toNVs(nvs);
return nvs;
}
@Override
public boolean merge(byte[] fam, byte[] name, byte[] existingB) {
char family = (char) fam[0];
if ( ! termFamilies.families.containsKey(family)) return true;
TermColumns cols = termFamilies.families.get(family);
char col = (char) name[0];
if ( ! cols.columns.containsKey(col)) return true;
TermList terms = cols.columns.get(col);
terms.setExistingBytes(existingB);
return true;
}
}