1 33 package smallsql.database; 34 35 import java.io.*; 36 import java.sql.SQLException ; 37 41 public class FileIndexNode extends IndexNode { 42 43 private final RandomAccessFile file; 44 private long fileOffset; 45 46 47 51 FileIndexNode(boolean unique, char digit, RandomAccessFile file){ 52 super(unique, digit); 53 this.file = file; 54 } 55 56 57 protected IndexNode createIndexNode(boolean unique, char digit){ 58 return new FileIndexNode(unique, digit, file); 59 } 60 61 62 void save() throws Exception { 63 MemoryStream output = new MemoryStream(); 64 save(output); 65 file.seek(fileOffset); 66 output.writeTo(file); 67 } 68 69 void saveRef(MemoryStream output){ 70 output.writeLong(fileOffset); 71 } 72 73 IndexNode readRef( long offset ) throws SQLException { 74 MemoryStream input = new MemoryStream(); 75 FileIndexNode node = new FileIndexNode( getUnique(), (char)input.readShort(), file ); 76 node.fileOffset = offset; 77 load( input ); 78 return node; 79 } 80 } 81 | Popular Tags |