Package uk.ac.bristol.star.cdf.record
Class RecordMap
java.lang.Object
uk.ac.bristol.star.cdf.record.RecordMap
Keeps track of where a variable's record data is stored.
To work out the buffer and offset from which to read a record value, you can do something like this:
int ient = recMap.getEntryIndex(irec);
Object value =
ient >= 0
? readBuffer(recMap.getBuf(ient), recMap.getOffset(ient,irec))
: NO_STORED_VALUE;
- Since:
- 21 Jun 2013
-
Method Summary
Modifier and TypeMethodDescriptionstatic RecordMapcreateRecordMap(VariableDescriptorRecord vdr, RecordFactory recFact, int recSize) Returns a record map for a given variable.getBuf(int ient) Returns the data buffer for a given entry.intReturns the number of entries managed by this map.intgetEntryIndex(int irec) Returns the index of the entry containing a given record.longgetFinalOffsetInEntry(int ient) Returns the offset of the last record in a given entry.longgetOffset(int ient, int irec) Returns the byte offset for a record in a given entry.
-
Method Details
-
getEntryCount
public int getEntryCount()Returns the number of entries managed by this map.- Returns:
- entry count
-
getEntryIndex
public int getEntryIndex(int irec) Returns the index of the entry containing a given record. If one of the entries contains the given record, return its index. If no entry contains it (the record is in a sparse region), return(-fr-2), wherefris the index of the previous entry. A value of -1 indicates that the requested record is in a sparse region before the first stored record.If non-negative, the result can be used with the
getBufandgetOffsetmethods.- Parameters:
irec- record index- Returns:
- index of entry covering
irec, or a negative value if no entry covers it
-
getBuf
Returns the data buffer for a given entry. The entry index must correspond to an actual entry, that is it must not be negative.- Parameters:
ient- entry index- Returns:
- buf
- See Also:
-
getOffset
public long getOffset(int ient, int irec) Returns the byte offset for a record in a given entry. Theientparameter must reference an actual entry (it must be non-negative), and that entry must contain the given recordirec,- Parameters:
ient- entry index for entry containingirecirec- record index- Returns:
- offset into the entry's buffer at which
ireccan be found - See Also:
-
getFinalOffsetInEntry
public long getFinalOffsetInEntry(int ient) Returns the offset of the last record in a given entry.- Parameters:
ient- non-negative entry index- Returns:
- offset into ient's buffer of ient's final record
-
createRecordMap
public static RecordMap createRecordMap(VariableDescriptorRecord vdr, RecordFactory recFact, int recSize) throws IOException Returns a record map for a given variable.- Parameters:
vdr- variable descriptor recordrecFact- record factoryrecSize- size in bytes of each variable value record- Returns:
- record map
- Throws:
IOException
-