1 24 package org.objectweb.jalisto.se.storage.raf; 25 26 import java.io.DataInput ; 27 import java.io.DataOutput ; 28 import java.io.IOException ; 29 30 public class RecordHeader { 31 32 private int dataCapacity; 33 34 35 private int dataCount; 36 37 38 private int indexPosition; 39 40 41 private long dataPointer; 42 43 public RecordHeader() { 44 } 45 46 public RecordHeader(long dataPointer, int dataCapacity) { 47 if (dataCapacity < 1) { 48 throw new IllegalArgumentException ("Bad record size: " + dataCapacity); 49 } 50 this.dataPointer = dataPointer; 51 this.dataCapacity = dataCapacity; 52 this.dataCount = 0; 53 } 54 55 public void setDataCapacity(int dataCapacity) { 56 this.dataCapacity = dataCapacity; 57 } 58 59 public int getDataCapacity() { 60 return dataCapacity; 61 } 62 63 public void setDataCount(int dataCount) { 64 this.dataCount = dataCount; 65 } 66 67 public int getDataCount() { 68 return dataCount; 69 } 70 71 public void setDataPointer(long dataPointer) { 72 this.dataPointer = dataPointer; 73 } 74 75 public long getDataPointer() { 76 return dataPointer; 77 } 78 79 public int getFreeSpace() { 80 return dataCapacity - dataCount; 81 } 82 83 public void setIndexPosition(int indexPosition) { 84 this.indexPosition = indexPosition; 85 } 86 87 public int getIndexPosition() { 88 return indexPosition; 89 } 90 91 public static RecordHeader readHeader(DataInput in) throws IOException { 92 RecordHeader r = new RecordHeader(); 93 r.read(in); 94 return r; 95 } 96 97 101 public RecordHeader split() { 102 long newFp = dataPointer + (long) dataCount; 103 RecordHeader newRecord = new RecordHeader(newFp, getFreeSpace()); 104 dataCapacity = dataCount; 105 return newRecord; 106 } 107 108 public void write(DataOutput out) throws IOException { 109 out.writeLong(dataPointer); 110 out.writeInt(dataCapacity); 111 out.writeInt(dataCount); 112 } 113 114 public void read(DataInput in) throws IOException { 115 dataPointer = in.readLong(); 116 dataCapacity = in.readInt(); 117 dataCount = in.readInt(); 118 } 119 120 public boolean equals(Object object) { 121 try { 122 RecordHeader candidate = (RecordHeader) object; 123 return (dataCount == candidate.dataCount); 128 } catch (Exception e) { 129 } 130 return false; 131 } 132 133 public String toString() { 134 StringBuffer sb = new StringBuffer (); 135 sb.append("RecordHeader("); 136 sb.append("dCap").append(dataCapacity); 137 sb.append(",dCnt").append(dataCount); 138 sb.append("dPnt").append(dataPointer); 139 sb.append("iPos").append(indexPosition); 140 sb.append(")"); 141 return sb.toString(); 142 } 143 } 144 | Popular Tags |