1 package com.quadcap.sql; 2 3 40 41 import java.io.Externalizable ; 42 import java.io.IOException ; 43 import java.io.ObjectInput ; 44 import java.io.ObjectOutput ; 45 46 import java.util.ArrayList ; 47 48 import java.sql.SQLException ; 49 50 import com.quadcap.sql.types.Type; 51 import com.quadcap.sql.types.Value; 52 import com.quadcap.sql.types.ValueBlob; 53 54 import com.quadcap.util.Debug; 55 56 61 public class Row { 62 int blobCnt = 0; 63 ArrayList v = null; 64 65 68 public Row() { v = new ArrayList (); } 69 70 73 public Row(int size) { 74 this.v = new ArrayList (size); 75 while (v.size() < size) v.add(null); 76 } 77 78 81 public Row(Row r, Tuple tuple) throws SQLException { 82 v = new ArrayList (); 83 for (int i = 1; i <= r.size(); i++) { 84 Value rv = r.item(i); 85 if (tuple != null) { 86 Type type = tuple.getColumn(i).getType(); 87 Value v1 = type.convert(rv); 88 rv = v1; 89 } 90 if (rv instanceof ValueBlob) blobCnt++; 91 v.add(rv); 92 } 93 } 94 95 99 public Row(ArrayList v) { 100 this.v = v; 101 for (int i = 0; i < v.size(); i++) { 102 if (v.get(i) instanceof ValueBlob) blobCnt++; 103 } 104 } 105 106 109 public int size() { return v.size(); } 110 111 115 public int getBlobCount() throws IOException { return blobCnt; } 116 117 120 public Value item(int i) throws SQLException { 121 if (i < 1 || i > v.size()) { 122 throw new SQLException ("bad column: " + i, "42000"); 123 } 124 return (Value)v.get(i-1); 125 } 126 127 130 public Value getItem(int i) { 131 return (Value)v.get(i-1); 132 } 133 134 137 public void set(int i, Value val) throws SQLException { 138 final int idx = i-1; 139 if (v.get(idx) instanceof ValueBlob) blobCnt--; 140 if (val instanceof ValueBlob) blobCnt++; 141 v.set(idx, val); 142 if (Trace.bit(7)) { 144 Debug.println("Row.set(" + i + "), " + blobCnt + " blobs"); 145 } 146 } 148 149 152 public boolean isUpdateable(int i) { 153 return true; 154 } 155 156 public void addElement(Value val) { 157 if (val instanceof ValueBlob) blobCnt++; 158 v.add(val); 159 } 160 161 public String toString() { 163 StringBuffer sb = new StringBuffer (); 164 sb.append("{"); 165 for (int i = 1; i <= size(); i++) { 166 if (i > 1) sb.append(","); 167 try { 168 Value vx = item(i); 169 sb.append(vx.toString()); 172 } catch (Throwable e) { 173 sb.append("<" + e.toString() + ">"); 174 } 175 } 176 sb.append("}"); 177 return sb.toString(); 178 } 179 } 181 | Popular Tags |