1 65 66 67 package org.hsqldb; 68 69 import org.hsqldb.lib.IntLookup; 70 import org.hsqldb.lib.java.JavaSystem; 71 import org.hsqldb.persist.CachedObject; 72 import org.hsqldb.rowio.RowOutputInterface; 73 74 78 88 public class Row implements CachedObject { 89 90 int tableId; 91 int iPos; 92 protected Object [] oData; 93 protected Node nPrimaryNode; 94 95 98 protected Row() {} 99 100 104 Row(Table t, Object [] o) throws HsqlException { 105 106 int index = t.getIndexCount(); 107 108 nPrimaryNode = Node.newNode(this, 0, t); 109 110 Node n = nPrimaryNode; 111 112 for (int i = 1; i < index; i++) { 113 n.nNext = Node.newNode(this, i, t); 114 n = n.nNext; 115 } 116 117 tableId = t.getId(); 118 oData = o; 119 } 120 121 125 Node getNode(int index) { 126 127 Node n = nPrimaryNode; 128 129 while (index-- > 0) { 130 n = n.nNext; 131 } 132 133 return n; 134 } 135 136 140 Node getNextNode(Node n) { 141 142 if (n == null) { 143 n = nPrimaryNode; 144 } else { 145 n = n.nNext; 146 } 147 148 return n; 149 } 150 151 160 Row getUpdatedRow() throws HsqlException { 161 return this; 162 } 163 164 167 public Object [] getData() { 168 return oData; 169 } 170 171 175 void delete() throws HsqlException { 176 177 JavaSystem.memoryRecords++; 178 179 nPrimaryNode = null; 180 } 181 182 void clearNodeLinks() { 183 184 Node last; 185 Node temp; 186 187 last = nPrimaryNode; 188 189 while (last.nNext != null) { 190 temp = last.nNext; 191 last.nNext = null; 192 last = temp; 193 } 194 195 nPrimaryNode = null; 196 } 197 198 boolean isCascadeDeleted() { 199 return nPrimaryNode == null; 200 } 201 202 public int getRealSize(RowOutputInterface out) { 203 return 0; 204 } 205 206 public void setStorageSize(int size) { 207 ; 208 } 209 210 public int getStorageSize() { 211 return 0; 212 } 213 214 public long getId() { 215 return ((long) tableId << 32) + ((long) iPos); 216 } 217 218 public static long getId(Table table, int pos) { 219 return ((long) table.getId() << 32) + ((long) pos); 220 } 221 222 public int getPos() { 223 return iPos; 224 } 225 226 public void setPos(int pos) { 227 iPos = pos; 228 } 229 230 public boolean hasChanged() { 231 return false; 232 } 233 234 public boolean isKeepInMemory() { 235 return true; 236 } 237 238 public void keepInMemory(boolean keep) {} 239 240 public boolean isInMemory() { 241 return true; 242 } 243 244 public void setInMemory(boolean in) {} 245 246 public void write(RowOutputInterface out) {} 247 248 public void write(RowOutputInterface out, IntLookup lookup) {} 249 250 259 public boolean equals(Object obj) { 260 261 if (obj == this) { 262 return true; 263 } 264 265 if (obj instanceof Row) { 266 return ((Row) obj).iPos == iPos; 267 } 268 269 return false; 270 } 271 272 277 public int hashCode() { 278 return iPos; 279 } 280 } 281 | Popular Tags |