Class DataType

java.lang.Object
uk.ac.bristol.star.cdf.DataType

public abstract class DataType extends Object
Enumerates the data types supported by the CDF format.
Since:
20 Jun 2013
  • Field Details

    • INT1

      public static final DataType INT1
    • INT2

      public static final DataType INT2
    • INT4

      public static final DataType INT4
    • INT8

      public static final DataType INT8
    • UINT1

      public static final DataType UINT1
    • UINT2

      public static final DataType UINT2
    • UINT4

      public static final DataType UINT4
    • REAL4

      public static final DataType REAL4
    • REAL8

      public static final DataType REAL8
    • CHAR

      public static final DataType CHAR
    • EPOCH16

      public static final DataType EPOCH16
    • BYTE

      public static final DataType BYTE
    • FLOAT

      public static final DataType FLOAT
    • DOUBLE

      public static final DataType DOUBLE
    • EPOCH

      public static final DataType EPOCH
    • TIME_TT2000

      public static final DataType TIME_TT2000
    • UCHAR

      public static final DataType UCHAR
  • Method Details

    • getName

      public String getName()
      Returns the name for this data type.
      Returns:
      data type name
    • getByteCount

      public int getByteCount()
      Returns the number of bytes used in a CDF to store a single item of this type.
      Returns:
      size in bytes
    • getArrayElementClass

      public Class<?> getArrayElementClass()
      Returns the element class of an array that this data type can be read into. In most cases this is a primitive type or String.
      Returns:
      array raw value element class
    • getScalarClass

      public Class<?> getScalarClass()
      Returns the type of objects obtained by the getScalar method.
      Returns:
      scalar type associated with this data type
    • getGroupSize

      public int getGroupSize()
      Number of elements of type arrayElementClass that are read into valueArray for a single item read. This is usually 1, but not, for instance, for EPOCH16.
      Returns:
      number of array elements per item
    • getArrayIndex

      public int getArrayIndex(int itemIndex)
      Returns the index into a value array which corresponds to the item'th element.
      Returns:
      itemIndex * groupSize
    • hasMultipleElementsPerItem

      public boolean hasMultipleElementsPerItem()
      True if this type may turn a variable number of elements from the value array into a single read item. This is usually false, but true for character types, which turn into strings.
      Returns:
      true iff type may have multiple elements per read item
    • getDefaultPadValueArray

      public Object getDefaultPadValueArray()
      Returns an array of array-class values containing a single item with the default pad value for this type.
      Returns:
      default raw pad value array
      See Also:
      • "Section 2.3.20 of CDF User's Guide"
    • readValues

      public abstract void readValues(Buf buf, long offset, int nelPerItem, Object valueArray, int count) throws IOException
      Reads data of this data type from a buffer into an appropriately typed value array.
      Parameters:
      buf - data buffer
      offset - byte offset into buffer at which data starts
      nelPerItem - number of elements per item; usually 1, but may not be for strings
      valueArray - array to receive result data
      count - number of items to read
      Throws:
      IOException
    • getScalar

      public abstract Object getScalar(Object valueArray, int arrayIndex)
      Reads a single item from an array which has previously been populated by readValues. The class of the returned value is that returned by getScalarClass().

      The arrayIndex argument is the index into the array object, not necessarily the item index - see the getArrayIndex method.

      Parameters:
      valueArray - array filled with data for this data type
      arrayIndex - index into array at which the item to read is found
      Returns:
      scalar representation of object at position index in valueArray
    • formatScalarValue

      public String formatScalarValue(Object value)
      Provides a string view of a scalar value obtained for this data type.
      Parameters:
      value - value returned by getScalar
      Returns:
      string representation
    • formatArrayValue

      public String formatArrayValue(Object array, int arrayIndex)
      Provides a string view of an item obtained from an array value of this data type.

      The arrayIndex argument is the index into the array object, not necessarily the item index - see the getArrayIndex method.

      Parameters:
      array - array value populated by readValues
      arrayIndex - index into array
      Returns:
      string representation
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getDataType

      public static DataType getDataType(int dataType, CdfInfo cdfInfo) throws CdfFormatException
      Returns a DataType corresponding to a CDF data type code, possibly customised for a particular CDF file.

      Currently, this returns the same as getDataType(int), except for TIME_TT2000 columns, in which case the last known leap second may be taken into account.

      Parameters:
      dataType - dataType field of AEDR or VDR
      cdfInfo - specifics of CDF file
      Returns:
      data type object
      Throws:
      CdfFormatException
    • getDataType

      public static DataType getDataType(int dataType) throws CdfFormatException
      Returns the DataType object corresponding to a CDF data type code.
      Parameters:
      dataType - dataType field of AEDR or VDR
      Returns:
      data type object
      Throws:
      CdfFormatException