| 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.Vector ; 47 48 import java.sql.SQLException ; 49 50 import com.quadcap.sql.types.Value; 51 import com.quadcap.sql.types.ValueNull; 52 53 import com.quadcap.util.Debug; 54 55 60 public class JoinMapRow extends Row { 61 Row a; 62 Row b; 63 64 int[] map; 66 67 public JoinMapRow(int[] map) { 68 this.map = map; 69 } 70 71 public final void setA(Row a) { this.a = a; } 72 public final void setB(Row b) { this.b = b; } 73 74 public final Row getA() { return a; } 75 public final Row getB() { return b; } 76 77 public final int size() { return map.length; } 78 79 public final Value item(int i) throws SQLException { 80 int n = map[i-1]; 81 if (n < 0) return a == null ? ValueNull.valueNull : a.item(0-n); 82 if (n > 0) return b == null ? ValueNull.valueNull : b.item(n); 83 return ValueNull.valueNull; 84 } 85 86 public final void set(int i, Value val) throws SQLException { 87 int n = map[i-1]; 88 if (n < 0 && a != null) a.set(0-n, val); 89 if (n > 0 && b != null) b.set(n, val); 90 } 91 92 public String toString1() { 94 StringBuffer sb = new StringBuffer ("{"); 95 for (int i = 1; i <= size(); i++) { 96 if (i > 1) sb.append(","); 97 int n = map[i-1]; 98 if (n < 0) { 99 sb.append("A"); 100 n = 0 - n; 101 sb.append(n); 102 } else if (n > 0) { 103 sb.append("B"); 104 sb.append(n); 105 } else if (n == 0) { 106 sb.append("0:null"); 107 continue; 108 } 109 sb.append(":"); 110 try { 111 sb.append(item(i).toString()); 112 } catch (Throwable t) { 113 sb.append(t.toString()); 114 } 115 } 116 sb.append("}"); 117 return sb.toString(); 118 } 119 } 121 | Popular Tags |