uk.ac.bristol.star.cdf
Class DataType

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

public abstract class DataType
extends java.lang.Object

Enumerates the data types supported by the CDF format.

Since:
20 Jun 2013

Field Summary
static DataType BYTE
           
static DataType CHAR
           
static DataType DOUBLE
           
static DataType EPOCH
           
static DataType EPOCH16
           
static DataType FLOAT
           
static DataType INT1
           
static DataType INT2
           
static DataType INT4
           
static DataType INT8
           
static DataType REAL4
           
static DataType REAL8
           
static DataType TIME_TT2000
           
static DataType UCHAR
           
static DataType UINT1
           
static DataType UINT2
           
static DataType UINT4
           
 
Method Summary
 java.lang.String formatArrayValue(java.lang.Object array, int arrayIndex)
          Provides a string view of an item obtained from an array value of this data type.
 java.lang.String formatScalarValue(java.lang.Object value)
          Provides a string view of a scalar value obtained for this data type.
 java.lang.Class<?> getArrayElementClass()
          Returns the element class of an array that this data type can be read into.
 int getArrayIndex(int itemIndex)
          Returns the index into a value array which corresponds to the item'th element.
 int getByteCount()
          Returns the number of bytes used in a CDF to store a single item of this type.
static DataType getDataType(int dataType)
          Returns the DataType object corresponding to a CDF data type code.
static DataType getDataType(int dataType, CdfInfo cdfInfo)
          Returns a DataType corresponding to a CDF data type code, possibly customised for a particular CDF file.
 java.lang.Object getDefaultPadValueArray()
          Returns an array of array-class values containing a single item with the default pad value for this type.
 int getGroupSize()
          Number of elements of type arrayElementClass that are read into valueArray for a single item read.
 java.lang.String getName()
          Returns the name for this data type.
abstract  java.lang.Object getScalar(java.lang.Object valueArray, int arrayIndex)
          Reads a single item from an array which has previously been populated by readValues.
 java.lang.Class<?> getScalarClass()
          Returns the type of objects obtained by the getScalar method.
 boolean hasMultipleElementsPerItem()
          True if this type may turn a variable number of elements from the value array into a single read item.
abstract  void readValues(Buf buf, long offset, int nelPerItem, java.lang.Object valueArray, int count)
          Reads data of this data type from a buffer into an appropriately typed value array.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

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 Detail

getName

public java.lang.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 java.lang.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 java.lang.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 java.lang.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,
                                java.lang.Object valueArray,
                                int count)
                         throws java.io.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:
java.io.IOException

getScalar

public abstract java.lang.Object getScalar(java.lang.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 java.lang.String formatScalarValue(java.lang.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 java.lang.String formatArrayValue(java.lang.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 java.lang.String toString()
Overrides:
toString in class java.lang.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