//package com.taobao.tddl.executor.record; // //import java.util.ArrayList; //import java.util.Arrays; //import java.util.HashMap; //import java.util.List; //import java.util.Map; //import java.util.Map.Entry; // //import com.taobao.tddl.executor.common.IRecord; //import com.taobao.tddl.optimizer.config.table.ColumnMeta; // ///** // * @author mengshi.sunmengshi 2013-12-3 下午1:51:18 // * @since 5.0.0 // */ //public class FixedLengthBaseRecord extends NamedRecord { // // public FixedLengthBaseRecord(List<ColumnMeta> keys){ // this(keys, ""); // } // // public FixedLengthBaseRecord(List<ColumnMeta> keys, String tableName){ // this.index = new HashMap<String, Integer>(keys.size()); // for (ColumnMeta key : keys) { // index.put(key.getName(), index.size()); // } // this.values = new Object[index.size()]; // this.tableName = tableName; // this.name = tableName; // } // // public FixedLengthBaseRecord(Map<String, Integer> index, int mapSizeCache){ // this(index, mapSizeCache, ""); // } // // public FixedLengthBaseRecord(Map<String, Integer> index, int mapSizeCache, String tableName){ // this.index = index; // this.values = new Object[mapSizeCache]; // this.tableName = tableName; // this.name = tableName; // } // // String tableName; // String indexName; // Object[] values; // Map<String, Integer> index; // // public String getTableName() { // return tableName; // } // // public void setTableName(String tableName) { // this.tableName = tableName; // } // // @Override // public Object get(String name, String key) { // return getIngoreTableName(key); // } // // @Override // public Object getIngoreTableName(String key) { // Integer i = index.get(key); // if (i == null) { // return null; // } // return values[(index.get(key))]; // } // // @Override // public CloneableRecord put(String name, String key, Object value) { // put(key, value); // return this; // } // // @Override // public IRecord put(String key, Object value) { // values[index.get(key)] = value; // return this; // } // // @Override // public Object get(String key) { // Integer i = index.get(key); // if (i == null) { // return null; // } // return values[index.get(key)]; // } // // @Override // public IRecord putAll(Map<String, Object> all) { // for (Entry<String, Object> e : all.entrySet()) { // put(e.getKey(), e.getValue()); // } // return this; // } // // @Override // public Object getValueByIndex(int index) { // return values[index]; // } // // @Override // public IRecord setValueByIndex(int index, Object val) { // values[index] = val; // return this; // } // // @Override // public IRecord addAll(List<Object> values) { // values.addAll(values); // return this; // } // // @Override // public Map<String, Integer> getColumnMap() { // return index; // } // // @Override // public List<String> getColumnList() { // List<String> ret = new ArrayList(index.size()); // ret.addAll(index.keySet()); // return ret; // } // // @Override // public List<Object> getValueList() { // return Arrays.asList(values); // } // // @Override // public Map<String, Object> getMap() { // Map<String, Object> ret = new HashMap(values.length); // for (Entry<String, Integer> e : index.entrySet()) { // ret.put(e.getKey(), values[e.getValue()]); // } // return ret; // } // // @Override // public int compareTo(IRecord o) { // List<Object> values1 = null; // if (o instanceof NamedRecord) { // values1 = ((FixedLengthRecord) ((NamedRecord) o).getRecord()).getValueList(); // } else { // values1 = ((FixedLengthRecord) o).getValueList(); // } // for (int k = 0; k < values1.size(); k++) { // Object v1 = values1.get(k); // Object v = values[k]; // int r = 0; // if (v instanceof byte[]) { // byte[] a = (byte[]) v; // byte[] b = (byte[]) v1; // int len = Math.min(a.length, b.length); // for (int i = 0; i < len; i++) { // byte ai = a[i]; // byte bi = b[i]; // if (ai != bi) { // if (ai - bi != 0) { // r = ai - bi; // break; // } // } // } // r = a.length - b.length; // } else { // if (v != null && v1 != null) { // r = ((Comparable) v).compareTo((Comparable) v1); // } else if (v == null && v1 == null) { // r = 0; // } else if (v == null) { // r = -1; // } else if (v1 == null) { // r = 1; // } // } // if (r != 0) { // return r; // } // } // return 0; // } // // @Override // public Object clone() { // return super.clone(); // } // // @Override // public String toString() { // return "FixedLengthRecord{" + " values=" + Arrays.asList(values) + ", index=" + index + '}'; // } // // @Override // public boolean equals(Object obj) { // if (obj == null) { // return false; // } // if (getClass() != obj.getClass()) { // return false; // } // final FixedLengthRecord other = (FixedLengthRecord) obj; // if (!Arrays.deepEquals(this.values, other.values)) { // return false; // } // if (this.index != other.index && (this.index == null || !this.index.equals(other.index))) { // return false; // } // return true; // } // // @Override // public int hashCode() { // int hash = 7; // hash = 29 * hash + Arrays.deepHashCode(this.values); // hash = 29 * hash + (this.index != null ? this.index.hashCode() : 0); // return hash; // } // // }