Class RecordMap

java.lang.Object
uk.ac.bristol.star.cdf.record.RecordMap

public class RecordMap extends Object
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 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), where fr is 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 getBuf and getOffset methods.

      Parameters:
      irec - record index
      Returns:
      index of entry covering irec, or a negative value if no entry covers it
    • getBuf

      public Buf getBuf(int ient)
      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. The ient parameter must reference an actual entry (it must be non-negative), and that entry must contain the given record irec,
      Parameters:
      ient - entry index for entry containing irec
      irec - record index
      Returns:
      offset into the entry's buffer at which irec can 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 record
      recFact - record factory
      recSize - size in bytes of each variable value record
      Returns:
      record map
      Throws:
      IOException