uk.ac.starlink.pds4

## Class SafeFieldAdapter

- java.lang.Object
- - uk.ac.starlink.pds4.SafeFieldAdapter

- All Implemented Interfaces:
    gov.nasa.pds.objectAccess.table.FieldAdapter

      public class SafeFieldAdapter
      extends java.lang.Object
      implements gov.nasa.pds.objectAccess.table.FieldAdapter

  Wrapper for FieldAdapter that catches and logs RuntimeExceptions. Probably such exceptions ought not to happen, but for instance NumberFormatExceptions are not impossible, and it may be preferred to log them than for the entire table read to fail.

  Currently only the `get*` methods are so wrapped, since the `set*` methods are (a) less likely to encounter problems from data and (b) not used by this package.

  Since:
    10 Nov 2022

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `SafeFieldAdapter(gov.nasa.pds.objectAccess.table.FieldAdapter base)` Constructor.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.math.BigInteger` | `getBigInteger(byte[] buf, int offset, int length, int startBit, int stopBit)` Gets the field value as a Java BigInteger.
    `byte` | `getByte(byte[] buf, int offset, int length, int startBit, int stopBit)` Gets the field value as a Java byte.
    `double` | `getDouble(byte[] buf, int offset, int length, int startBit, int stopBit)` Gets the field value as a Java double.
    `float` | `getFloat(byte[] buf, int offset, int length, int startBit, int stopBit)` Gets the field value as a Java float.
    `int` | `getInt(byte[] buf, int offset, int length, int startBit, int stopBit)` Gets the field value as a Java int.
    `long` | `getLong(byte[] buf, int offset, int length, int startBit, int stopBit)` Gets the field value as a Java long.
    `short` | `getShort(byte[] buf, int offset, int length, int startBit, int stopBit)` Gets the field value as a Java short.
    `java.lang.String` | `getString(byte[] buf, int offset, int length, int startBit, int stopBit)` Gets the field value as a Java string, using the US-ASCII character set to convert from bytes to characters.
    `java.lang.String` | `getString(byte[] buf, int offset, int length, int startBit, int stopBit, java.nio.charset.Charset charset)` Gets the field value as a Java string, using a specified character set to convert from bytes to characters.
    `void` | `setBigInteger(java.math.BigInteger value, int offset, int length, java.nio.ByteBuffer buf, boolean isRightJustified)` Sets the field value as a Java BigInteger.
    `void` | `setByte(byte value, int offset, int length, java.nio.ByteBuffer buf, boolean isRightJustified)` Sets the field value as a Java byte.
    `void` | `setDouble(double value, int offset, int length, java.nio.ByteBuffer buf, boolean isRightJustified)` Sets the field value as a Java double.
    `void` | `setFloat(float value, int offset, int length, java.nio.ByteBuffer buf, boolean isRightJustified)` Sets the field value as a Java float.
    `void` | `setInt(int value, int offset, int length, java.nio.ByteBuffer buffer, boolean isRightJustified)` Sets the field value as a Java int.
    `void` | `setLong(long value, int offset, int length, java.nio.ByteBuffer buf, boolean isRightJustified)` Sets the field value as a Java long.
    `void` | `setShort(short value, int offset, int length, java.nio.ByteBuffer buf, boolean isRightJustified)` Sets the field value as a Java short.
    `void` | `setString(java.lang.String value, int offset, int length, java.nio.ByteBuffer buf, boolean isRightJustified)` Sets the field value as a Java string.
    `void` | `setString(java.lang.String value, int offset, int length, java.nio.ByteBuffer buf, boolean isRightJustified, java.nio.charset.Charset charset)` Sets the field value as a Java string, using a specified character set to convert from characters to bytes.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### SafeFieldAdapter

          public SafeFieldAdapter(gov.nasa.pds.objectAccess.table.FieldAdapter base)

      Constructor.
      Parameters:
        `base` - instance on which this object's behaviour is based

  - ### Method Detail

    - #### getByte

          public byte getByte(byte[] buf,
                              int offset,
                              int length,
                              int startBit,
                              int stopBit)

      Description copied from interface: `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Gets the field value as a Java byte.
      Specified by:
        `getByte` in interface `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Parameters:
        `buf` - the byte array containing the field
        `offset` - the field offset
        `length` - the length of the field data
        `startBit` - the start bit, for bit fields
        `stopBit` - the stop bit, for bit fields
      Returns:
        the field value, as a short

    - #### getShort

          public short getShort(byte[] buf,
                                int offset,
                                int length,
                                int startBit,
                                int stopBit)

      Description copied from interface: `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Gets the field value as a Java short.
      Specified by:
        `getShort` in interface `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Parameters:
        `buf` - the byte array containing the field
        `offset` - the field offset
        `length` - the length of the field data
        `startBit` - the start bit, for bit fields
        `stopBit` - the stop bit, for bit fields
      Returns:
        the field value, as a short

    - #### getInt

          public int getInt(byte[] buf,
                            int offset,
                            int length,
                            int startBit,
                            int stopBit)

      Description copied from interface: `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Gets the field value as a Java int.
      Specified by:
        `getInt` in interface `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Parameters:
        `buf` - the byte array containing the field
        `offset` - the field offset
        `length` - the length of the field data
        `startBit` - the start bit, for bit fields
        `stopBit` - the stop bit, for bit fields
      Returns:
        the field value, as an int

    - #### getLong

          public long getLong(byte[] buf,
                              int offset,
                              int length,
                              int startBit,
                              int stopBit)

      Description copied from interface: `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Gets the field value as a Java long.
      Specified by:
        `getLong` in interface `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Parameters:
        `buf` - the byte array containing the field
        `offset` - the field offset
        `length` - the length of the field data
        `startBit` - the start bit, for bit fields
        `stopBit` - the stop bit, for bit fields
      Returns:
        the field value, as a long

    - #### getBigInteger

          public java.math.BigInteger getBigInteger(byte[] buf,
                                                    int offset,
                                                    int length,
                                                    int startBit,
                                                    int stopBit)

      Description copied from interface: `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Gets the field value as a Java BigInteger.
      Specified by:
        `getBigInteger` in interface `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Parameters:
        `buf` - the byte array containing the field
        `offset` - the field offset
        `length` - the length of the field data
        `startBit` - the start bit, for bit fields
        `stopBit` - the stop bit, for bit fields
      Returns:
        the field value, as a `BigInteger`

    - #### getFloat

          public float getFloat(byte[] buf,
                                int offset,
                                int length,
                                int startBit,
                                int stopBit)

      Description copied from interface: `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Gets the field value as a Java float.
      Specified by:
        `getFloat` in interface `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Parameters:
        `buf` - the byte array containing the field
        `offset` - the field offset
        `length` - the length of the field data
        `startBit` - the start bit, for bit fields
        `stopBit` - the stop bit, for bit fields
      Returns:
        the field value, as a float

    - #### getDouble

          public double getDouble(byte[] buf,
                                  int offset,
                                  int length,
                                  int startBit,
                                  int stopBit)

      Description copied from interface: `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Gets the field value as a Java double.
      Specified by:
        `getDouble` in interface `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Parameters:
        `buf` - the byte array containing the field
        `offset` - the field offset
        `length` - the length of the field data
        `startBit` - the start bit, for bit fields
        `stopBit` - the stop bit, for bit fields
      Returns:
        the field value, as a double

    - #### getString

          public java.lang.String getString(byte[] buf,
                                            int offset,
                                            int length,
                                            int startBit,
                                            int stopBit)

      Description copied from interface: `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Gets the field value as a Java string, using the US-ASCII character set to convert from bytes to characters.
      Specified by:
        `getString` in interface `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Parameters:
        `buf` - the byte array containing the field
        `offset` - the field offset
        `length` - the length of the field data
        `startBit` - the start bit, for bit fields
        `stopBit` - the stop bit, for bit fields
      Returns:
        the field value, as a string

    - #### getString

          public java.lang.String getString(byte[] buf,
                                            int offset,
                                            int length,
                                            int startBit,
                                            int stopBit,
                                            java.nio.charset.Charset charset)

      Description copied from interface: `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Gets the field value as a Java string, using a specified character set to convert from bytes to characters.
      Specified by:
        `getString` in interface `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Parameters:
        `buf` - the byte array containing the field
        `offset` - the field offset
        `length` - the length of the field data
        `startBit` - the start bit, for bit fields
        `stopBit` - the stop bit, for bit fields
        `charset` - the character set to use when converting bytes to characters
      Returns:
        the field value, as a string

    - #### setString

          public void setString(java.lang.String value,
                                int offset,
                                int length,
                                java.nio.ByteBuffer buf,
                                boolean isRightJustified)

      Description copied from interface: `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Sets the field value as a Java string.
      Specified by:
        `setString` in interface `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Parameters:
        `value` - the field value
        `offset` - the field offset
        `length` - the length of the value
        `buf` - the byte buffer into which to set the value
        `isRightJustified` - true, if the string value should be right-justified

    - #### setString

          public void setString(java.lang.String value,
                                int offset,
                                int length,
                                java.nio.ByteBuffer buf,
                                boolean isRightJustified,
                                java.nio.charset.Charset charset)

      Description copied from interface: `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Sets the field value as a Java string, using a specified character set to convert from characters to bytes.
      Specified by:
        `setString` in interface `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Parameters:
        `value` - the field value
        `offset` - the field offset
        `length` - the length of the value
        `buf` - the byte buffer into which to set the value
        `isRightJustified` - true, if the string value should be right-justified
        `charset` - the character set to use when converting the string to bytes

    - #### setInt

          public void setInt(int value,
                             int offset,
                             int length,
                             java.nio.ByteBuffer buffer,
                             boolean isRightJustified)

      Description copied from interface: `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Sets the field value as a Java int.
      Specified by:
        `setInt` in interface `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Parameters:
        `value` - the field value
        `offset` - the field offset
        `length` - the length of the value
        `buffer` - the byte buffer into which to set the value
        `isRightJustified` - true, if the string value should be right-justified

    - #### setDouble

          public void setDouble(double value,
                                int offset,
                                int length,
                                java.nio.ByteBuffer buf,
                                boolean isRightJustified)

      Description copied from interface: `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Sets the field value as a Java double.
      Specified by:
        `setDouble` in interface `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Parameters:
        `value` - the field value
        `offset` - the field offset
        `length` - the length of the value
        `buf` - the byte buffer into which to set the value
        `isRightJustified` - true, if the string value should be right-justified

    - #### setFloat

          public void setFloat(float value,
                               int offset,
                               int length,
                               java.nio.ByteBuffer buf,
                               boolean isRightJustified)

      Description copied from interface: `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Sets the field value as a Java float.
      Specified by:
        `setFloat` in interface `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Parameters:
        `value` - the field value
        `offset` - the field offset
        `length` - the length of the value
        `buf` - the byte buffer into which to set the value
        `isRightJustified` - true, if the string value should be right-justified

    - #### setShort

          public void setShort(short value,
                               int offset,
                               int length,
                               java.nio.ByteBuffer buf,
                               boolean isRightJustified)

      Description copied from interface: `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Sets the field value as a Java short.
      Specified by:
        `setShort` in interface `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Parameters:
        `value` - the field value
        `offset` - the field offset
        `length` - the length of the value
        `buf` - the byte buffer into which to set the value
        `isRightJustified` - true, if the string value should be right-justified

    - #### setByte

          public void setByte(byte value,
                              int offset,
                              int length,
                              java.nio.ByteBuffer buf,
                              boolean isRightJustified)

      Description copied from interface: `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Sets the field value as a Java byte.
      Specified by:
        `setByte` in interface `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Parameters:
        `value` - the field value
        `offset` - the field offset
        `length` - the length of the value
        `buf` - the byte buffer into which to set the value
        `isRightJustified` - true, if the string value should be right-justified

    - #### setLong

          public void setLong(long value,
                              int offset,
                              int length,
                              java.nio.ByteBuffer buf,
                              boolean isRightJustified)

      Description copied from interface: `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Sets the field value as a Java long.
      Specified by:
        `setLong` in interface `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Parameters:
        `value` - the field value
        `offset` - the field offset
        `length` - the length of the value
        `buf` - the byte buffer into which to set the value
        `isRightJustified` - true, if the string value should be right-justified

    - #### setBigInteger

          public void setBigInteger(java.math.BigInteger value,
                                    int offset,
                                    int length,
                                    java.nio.ByteBuffer buf,
                                    boolean isRightJustified)

      Description copied from interface: `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Sets the field value as a Java BigInteger.
      Specified by:
        `setBigInteger` in interface `gov.nasa.pds.objectAccess.table.FieldAdapter`
      Parameters:
        `value` - the field value
        `offset` - the field offset
        `length` - the length of the value
        `buf` - the byte buffer into which to set the value
        `isRightJustified` - true, if the string value should be right-justified