package com.taobao.tddl.repo.bdb.spi; import java.util.ArrayList; import java.util.List; import com.taobao.tddl.executor.common.KVPair; import com.taobao.tddl.executor.cursor.ICursorMeta; import com.taobao.tddl.executor.record.CloneableRecord; import com.taobao.tddl.executor.rowset.AbstractRowSet; import com.taobao.tddl.executor.rowset.IRowSet; public class RowSetKVPairImp extends AbstractRowSet implements IRowSet { private final KVPair kvPair; private final int keyLength; public RowSetKVPairImp(ICursorMeta cursorMeta, KVPair kvPair){ super(cursorMeta); this.kvPair = kvPair; keyLength = kvPair.getKey().getColumnMap().size(); } @Override public Object getObject(int index) { if (keyLength > index) { return kvPair.getKey().getValueByIndex(index); } else { index = index - keyLength; return kvPair.getValue().getValueByIndex(index); } } @Override public void setObject(int index, Object value) { if (keyLength > index) { kvPair.getKey().setValueByIndex(index, value); } else { index = index - keyLength; kvPair.getValue().setValueByIndex(index, value); } } @Override public List<Object> getValues() { CloneableRecord cr = kvPair.getKey(); List<Object> ret = null; if (cr != null) { ret = new ArrayList<Object>(kvPair.getKey().getValueList()); } else { ret = new ArrayList<Object>(); } cr = kvPair.getValue(); if (cr != null) { ret.addAll(cr.getValueList()); } return ret; } }