package com.taobao.tddl.executor.rowset; import java.math.BigDecimal; import java.sql.Date; import java.sql.Time; import java.sql.Timestamp; import java.util.List; import com.taobao.tddl.executor.cursor.ICursorMeta; import com.taobao.tddl.optimizer.config.table.ColumnMeta; import com.taobao.tddl.optimizer.core.datatype.DataType; /** * @author mengshi.sunmengshi 2013-12-3 上午11:06:04 * @since 5.0.0 */ public abstract class AbstractRowSet implements IRowSet { private final ICursorMeta iCursorMeta; public AbstractRowSet(ICursorMeta iCursorMeta){ super(); this.iCursorMeta = iCursorMeta; } @Override public ICursorMeta getParentCursorMeta() { return iCursorMeta; } @Override public Integer getInteger(int index) { ColumnMeta cm = iCursorMeta.getColumns().get(index); return DataType.IntegerType.convertFrom(cm.getDataType().getResultGetter().get(this, index)); } @Override public void setInteger(int index, Integer value) { setObject(index, value); } @Override public Long getLong(int index) { ColumnMeta cm = iCursorMeta.getColumns().get(index); return DataType.LongType.convertFrom(cm.getDataType().getResultGetter().get(this, index)); } @Override public void setLong(int index, Long value) { setObject(index, value); } @Override public String getString(int index) { ColumnMeta cm = iCursorMeta.getColumns().get(index); return DataType.StringType.convertFrom(cm.getDataType().getResultGetter().get(this, index)); } @Override public void setString(int index, String str) { setObject(index, str); } @Override public Boolean getBoolean(int index) { ColumnMeta cm = iCursorMeta.getColumns().get(index); return DataType.BooleanType.convertFrom(cm.getDataType().getResultGetter().get(this, index)); } @Override public void setBoolean(int index, Boolean bool) { setObject(index, bool); } @Override public Short getShort(int index) { ColumnMeta cm = iCursorMeta.getColumns().get(index); return DataType.ShortType.convertFrom(cm.getDataType().getResultGetter().get(this, index)); } @Override public void setShort(int index, Short shortval) { setObject(index, shortval); } @Override public Float getFloat(int index) { ColumnMeta cm = iCursorMeta.getColumns().get(index); return DataType.FloatType.convertFrom(cm.getDataType().getResultGetter().get(this, index)); } @Override public void setFloat(int index, Float fl) { setObject(index, fl); } @Override public Double getDouble(int index) { ColumnMeta cm = iCursorMeta.getColumns().get(index); return DataType.DoubleType.convertFrom(cm.getDataType().getResultGetter().get(this, index)); } @Override public void setDouble(int index, Double doub) { setObject(index, doub); } @Override public byte[] getBytes(int index) { ColumnMeta cm = iCursorMeta.getColumns().get(index); return DataType.BytesType.convertFrom(cm.getDataType().getResultGetter().get(this, index)); } @Override public void setBytes(int index, byte[] bytes) { setObject(index, bytes); } @Override public Date getDate(int index) { ColumnMeta cm = iCursorMeta.getColumns().get(index); return DataType.DateType.convertFrom(cm.getDataType().getResultGetter().get(this, index)); } @Override public void setDate(int index, Date date) { setObject(index, date); } @Override public Timestamp getTimestamp(int index) { ColumnMeta cm = iCursorMeta.getColumns().get(index); return DataType.TimestampType.convertFrom(cm.getDataType().getResultGetter().get(this, index)); } @Override public void setTimestamp(int index, Timestamp timestamp) { setObject(index, timestamp); } @Override public Time getTime(int index) { ColumnMeta cm = iCursorMeta.getColumns().get(index); return DataType.TimeType.convertFrom(cm.getDataType().getResultGetter().get(this, index)); } @Override public void setTime(int index, Time time) { setObject(index, time); } @Override public BigDecimal getBigDecimal(int index) { ColumnMeta cm = iCursorMeta.getColumns().get(index); return DataType.BigDecimalType.convertFrom(cm.getDataType().getResultGetter().get(this, index)); } @Override public void setBigDecimal(int index, BigDecimal bigDecimal) { setObject(index, bigDecimal); } @Override public List<Object> getValues() { throw new UnsupportedOperationException(); } @Override public String toString() { StringBuilder sb = new StringBuilder(); for (ColumnMeta cm : this.getParentCursorMeta().getColumns()) { int index = this.getParentCursorMeta().getIndex(cm.getTableName(), cm.getName()); sb.append(cm.getName() + ":" + this.getValues().get(index) + " "); } return sb.toString(); } }