Class ProductData

java.lang.Object
org.esa.snap.core.datamodel.ProductData
All Implemented Interfaces:
Cloneable
Direct Known Subclasses:
ProductData.Byte, ProductData.Double, ProductData.Float, ProductData.Int, ProductData.Long, ProductData.Short

public abstract class ProductData extends Object implements Cloneable
The abstract ProductData class represents a generic data buffer used to hold the actual data values stored in remote sensing data products.

A single ProductData instance can have one or more elements of a primitive type. The primitive types are:

The number of elements is an inmutable property of a ProductData instance.

In order to access the data in a ProductData instance, multiple setters and getters are provided which use generic transfer data types in order to make the data transfer in and out of a ProductData instance easy for programmers.
For scalar (one-element) values the prototypes are

    void setElemType(Type elem);
    Type getElemType();
 
For vector (multiple-element) values the prototypes are
    void setElemTypeAt(int index, Type elem);
    Type getElemTypeAt(int index);
 
Where the transfer data type Type is one of int, long, float, double and String.
Version:
$Revision$ $Date$
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
    The ProductData.ASCII class is a ProductData.Byte specialisation representing textual values.
    static class 
    The Byte class is a ProductData specialisation for signed 8-bit integer fields.
    static class 
    The ProductData.Float class is a ProductData specialisation for 64-bit floating point fields.
    static class 
    The ProductData.Float class is a ProductData specialisation for 32-bit floating point fields.
    static class 
    The Int class is a ProductData specialisation for signed 32-bit integer fields.
    static class 
    The Long class is a ProductData specialisation for signed 64-bit integer fields.
    static class 
    The Short class is a ProductData specialisation for signed 16-bit integer fields.
    static class 
    The UByte class is a ProductData specialisation for unsigned 8-bit integer fields.
    static class 
    The UInt class is a ProductData specialisation for unsigned 32-bit integer fields.
    static class 
    The UShort class is a ProductData specialisation for unsigned 16-bit integer fields.
    static class 
    The ProductData.UTC class is a ProductData.UInt specialisation for UTC date/time values.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    The ID for a ASCII string represented by an array of bytes (byte[]).
    static final int
    The ID for a signed 32-bit floating point data type.
    static final int
    The ID for a signed 64-bit floating point data type.
    static final int
    The ID for a signed 16-bit integer data type.
    static final int
    The ID for a signed 32-bit integer data type.
    static final int
    The ID for a signed 64-bit integer data type.
    static final int
    The ID for a signed 8-bit integer data type.
    static final int
    The ID for an unsigned 16-bit integer data type.
    static final int
    The ID for an unsigned 32-bit integer data type.
    static final int
    The ID for an unsigned 64-bit integer data type.
    static final int
    The ID for an unsigned 8-bit integer data type.
    static final int
    The ID for an undefined data type.
    static final int
    The ID for a UTC date/time value represented as Modified Julian Day (MJD) (an int[3]: int[0] = days, int[1] = seconds, int[2] = micro-seconds).
    static final String
    The string representation of TYPE_ASCII
    static final String
    The string representation of TYPE_FLOAT32
    static final String
    The string representation of TYPE_FLOAT64
    static final String
    The string representation of TYPE_INT16
    static final String
    The string representation of TYPE_INT32
    static final String
    The string representation of TYPE_INT64
    static final String
    The string representation of TYPE_INT8
    static final String
    The string representation of TYPE_UINT16
    static final String
    The string representation of TYPE_UINT32
    static final String
    The string representation of TYPE_UINT64
    static final String
    The string representation of TYPE_UINT8
    static final String
    The string representation of TYPE_UTC
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    ProductData(int type)
    Constructs a new value of the given type.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected abstract ProductData
    Retuns a "deep" copy of this product data.
    createInstance(byte[] elems)
     
    createInstance(double[] elems)
     
    createInstance(float[] elems)
     
    createInstance(int type)
    Factory method which creates a value instance of the given type and with exactly one element.
    createInstance(int[] elems)
     
    createInstance(int type, int numElems)
    Factory method which creates a value instance of the given type and with the specified number of elements.
    createInstance(int type, Object data)
    Factory method which creates a value instance of the given type and with the specified number of elements.
    createInstance(long[] elems)
     
    createInstance(short[] elems)
     
     
    createUnsignedInstance(byte[] elems)
     
     
    createUnsignedInstance(short[] elems)
     
    abstract void
    Releases all of the resources used by this object instance and all of its owned children.
    boolean
    Tests whether this ProductData is equal to another one.
    final boolean
    equals(Object other)
    boolean
    Returns the value as an boolean.
    boolean
    getElemBooleanAt(int index)
    Gets the value element with the given index as a boolean.
    double
    Returns the value as an double.
    abstract double
    getElemDoubleAt(int index)
    Gets the value element with the given index as a double.
    float
    Returns the value as an float.
    abstract float
    getElemFloatAt(int index)
    Gets the value element with the given index as a float.
    int
    Returns the value as an int.
    abstract int
    getElemIntAt(int index)
    Gets the value element with the given index as an int.
    long
    Returns the value as a long.
    abstract long
    getElemLongAt(int index)
    Gets the value element with the given index as an long.
    abstract Object
    Returns the internal value.
    int
    Gets the element size of an element of this product data in bytes.
    static int
    getElemSize(int type)
    Gets the element size of an element of the given type in bytes.
    Returns the value as a String.
    abstract String
    getElemStringAt(int index)
    Gets the value element with the given index as a String.
    long
    Returns the value as an unsigned int given as a long.
    abstract long
    getElemUIntAt(int index)
    Gets the value element with the given index as a long.
    abstract int
    Returns the number of data elements this value has.
    int
    Returns this value's type ID.
    static int
    Returns a integer representation of the given data type string.
    Returns this value's data type String.
    static String
    getTypeString(int type)
    Returns a textual representation of the given data type.
    final int
    static boolean
    Tests whether the given value type is a floating point type.
    boolean
    Tests whether this value has an integer.
    static boolean
    isIntType(int type)
    Tests whether the given value type is a signed or unsigned integer type.
    boolean
    Tests if this value is a scalar.
    boolean
    Tests whether the actual instance is an signed data type.
    static boolean
    isUIntType(int type)
    Tests whether the given value type is an unsigned integer type.
    boolean
    Tests whether the actual instance is an unsigned data type.
    abstract void
    readFrom(int startPos, int numElems, ImageInputStream input)
    Reads elements of this ProductData instance from the given output stream.
    void
    readFrom(int startPos, int numElems, ImageInputStream input, long inputPos)
    Reads elements into this ProductData instance from the given input stream.
    void
    readFrom(int pos, ImageInputStream input)
    Reads a single element of this ProductData instance from to the given output stream.
    void
    Reads all elements of this ProductData instance from to the given input stream.
    void
    setElemBoolean(boolean value)
    Sets the value as a boolean.
    void
    setElemBooleanAt(int index, boolean value)
    Sets the value at the specified index as a boolean.
    void
    setElemDouble(double value)
    Sets the value as a double.
    abstract void
    setElemDoubleAt(int index, double value)
    Sets the value at the specified index as a double.
    void
    setElemFloat(float value)
    Sets the value as a float.
    abstract void
    setElemFloatAt(int index, float value)
    Sets the value at the specified index as a float.
    void
    setElemInt(int value)
    Sets the value as an int.
    abstract void
    setElemIntAt(int index, int value)
    Sets the value at the specified index as an int.
    void
    setElemLong(long value)
    Sets the value as a long.
    abstract void
    setElemLongAt(int index, long value)
    Sets the value at the specified index as a long.
    abstract void
    Sets the internal value.
    void
    Sets the value as a String.
    void
    setElemStringAt(int index, String value)
    Sets the value at the specified index as a String.
    void
    setElemUInt(long value)
    Sets the value as an unsigned int given as a long.
    abstract void
    setElemUIntAt(int index, long value)
    Sets the value at the specified index as an unsigned int given as a long.
    Returns a string representation of this value which can be used for debugging purposes.
    abstract void
    writeTo(int startPos, int numElems, ImageOutputStream output)
    Writes elements of this ProductData instance to to the given output stream.
    void
    writeTo(int startPos, int numElems, ImageOutputStream output, long outputPos)
    Writes elements of this ProductData instance to to the given output stream.
    void
    writeTo(int pos, ImageOutputStream output)
    Writes a single element of this ProductData instance to to the given output stream.
    void
    Writes all elements of this ProductData instance to to the given output stream.

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Field Details

    • TYPE_UNDEFINED

      public static final int TYPE_UNDEFINED
      The ID for an undefined data type.
      See Also:
    • TYPE_INT8

      public static final int TYPE_INT8
      The ID for a signed 8-bit integer data type.
      See Also:
    • TYPE_INT16

      public static final int TYPE_INT16
      The ID for a signed 16-bit integer data type.
      See Also:
    • TYPE_INT32

      public static final int TYPE_INT32
      The ID for a signed 32-bit integer data type.
      See Also:
    • TYPE_INT64

      public static final int TYPE_INT64
      The ID for a signed 64-bit integer data type.
      See Also:
    • TYPE_UINT8

      public static final int TYPE_UINT8
      The ID for an unsigned 8-bit integer data type.
      See Also:
    • TYPE_UINT16

      public static final int TYPE_UINT16
      The ID for an unsigned 16-bit integer data type.
      See Also:
    • TYPE_UINT32

      public static final int TYPE_UINT32
      The ID for an unsigned 32-bit integer data type.
      See Also:
    • TYPE_UINT64

      public static final int TYPE_UINT64
      The ID for an unsigned 64-bit integer data type.
      See Also:
    • TYPE_FLOAT32

      public static final int TYPE_FLOAT32
      The ID for a signed 32-bit floating point data type.
      See Also:
    • TYPE_FLOAT64

      public static final int TYPE_FLOAT64
      The ID for a signed 64-bit floating point data type.
      See Also:
    • TYPE_ASCII

      public static final int TYPE_ASCII
      The ID for a ASCII string represented by an array of bytes (byte[]).
      See Also:
    • TYPE_UTC

      public static final int TYPE_UTC
      The ID for a UTC date/time value represented as Modified Julian Day (MJD) (an int[3]: int[0] = days, int[1] = seconds, int[2] = micro-seconds).
      See Also:
    • TYPESTRING_INT8

      public static final String TYPESTRING_INT8
      The string representation of TYPE_INT8
      See Also:
    • TYPESTRING_INT16

      public static final String TYPESTRING_INT16
      The string representation of TYPE_INT16
      See Also:
    • TYPESTRING_INT32

      public static final String TYPESTRING_INT32
      The string representation of TYPE_INT32
      See Also:
    • TYPESTRING_INT64

      public static final String TYPESTRING_INT64
      The string representation of TYPE_INT64
      See Also:
    • TYPESTRING_UINT8

      public static final String TYPESTRING_UINT8
      The string representation of TYPE_UINT8
      See Also:
    • TYPESTRING_UINT16

      public static final String TYPESTRING_UINT16
      The string representation of TYPE_UINT16
      See Also:
    • TYPESTRING_UINT32

      public static final String TYPESTRING_UINT32
      The string representation of TYPE_UINT32
      See Also:
    • TYPESTRING_UINT64

      public static final String TYPESTRING_UINT64
      The string representation of TYPE_UINT64
      See Also:
    • TYPESTRING_FLOAT32

      public static final String TYPESTRING_FLOAT32
      The string representation of TYPE_FLOAT32
      See Also:
    • TYPESTRING_FLOAT64

      public static final String TYPESTRING_FLOAT64
      The string representation of TYPE_FLOAT64
      See Also:
    • TYPESTRING_ASCII

      public static final String TYPESTRING_ASCII
      The string representation of TYPE_ASCII
      See Also:
    • TYPESTRING_UTC

      public static final String TYPESTRING_UTC
      The string representation of TYPE_UTC
      See Also:
  • Constructor Details

    • ProductData

      protected ProductData(int type)
      Constructs a new value of the given type.
      Parameters:
      type - the value's type
  • Method Details

    • createInstance

      public static ProductData createInstance(int type)
      Factory method which creates a value instance of the given type and with exactly one element.
      Parameters:
      type - the value's type
      Returns:
      a new value instance, null if the given type is not known
    • createInstance

      public static ProductData createInstance(int type, int numElems)
      Factory method which creates a value instance of the given type and with the specified number of elements.
      Parameters:
      type - the value's type
      numElems - the number of elements, must be greater than zero if type is not TYPE_UTC
      Returns:
      a new value instance
      Throws:
      IllegalArgumentException - if one of the arguments is invalid
    • createInstance

      public static ProductData createInstance(int type, Object data)
      Factory method which creates a value instance of the given type and with the specified number of elements.
      Parameters:
      type - the value's type
      data - if type is TYPE_ASCII the String, otherwise the primitive array type corresponding to type
      Returns:
      a new value instance, null if the given type is not known
      Throws:
      IllegalArgumentException - if one of the arguments is invalid
    • createInstance

      public static ProductData createInstance(byte[] elems)
    • createUnsignedInstance

      public static ProductData createUnsignedInstance(byte[] elems)
    • createInstance

      public static ProductData createInstance(short[] elems)
    • createUnsignedInstance

      public static ProductData createUnsignedInstance(short[] elems)
    • createInstance

      public static ProductData createInstance(int[] elems)
    • createUnsignedInstance

      public static ProductData createUnsignedInstance(int[] elems)
    • createInstance

      public static ProductData createInstance(long[] elems)
    • createInstance

      public static ProductData createInstance(String strData)
    • createInstance

      public static ProductData createInstance(float[] elems)
    • createInstance

      public static ProductData createInstance(double[] elems)
    • getType

      public int getType()
      Returns this value's type ID.
    • getElemSize

      public static int getElemSize(int type)
      Gets the element size of an element of the given type in bytes.
      Parameters:
      type - the element type
      Returns:
      the size of a single element in bytes.
      Throws:
      IllegalArgumentException - if the type is not supported.
    • getElemSize

      public int getElemSize()
      Gets the element size of an element of this product data in bytes.
      Returns:
      the size of a single element in bytes
    • getTypeString

      public static String getTypeString(int type)
      Returns a textual representation of the given data type.
      Returns:
      a data type string, null if the type is unknown
    • getType

      public static int getType(String type)
      Returns a integer representation of the given data type string.
      Returns:
      a data type integer, null if the type is unknown
    • getTypeString

      public String getTypeString()
      Returns this value's data type String.
    • isInt

      public boolean isInt()
      Tests whether this value has an integer.
      Returns:
      true, if so
    • isIntType

      public static boolean isIntType(int type)
      Tests whether the given value type is a signed or unsigned integer type.
      Returns:
      true, if so
    • isSigned

      public boolean isSigned()
      Tests whether the actual instance is an signed data type.
      Returns:
      true, if so
    • isUnsigned

      public boolean isUnsigned()
      Tests whether the actual instance is an unsigned data type.
      Returns:
      true, if so
    • isUIntType

      public static boolean isUIntType(int type)
      Tests whether the given value type is an unsigned integer type.
      Returns:
      true, if so
    • isFloatingPointType

      public static boolean isFloatingPointType(int type)
      Tests whether the given value type is a floating point type.
      Returns:
      true, if so
    • isScalar

      public boolean isScalar()
      Tests if this value is a scalar.
      Returns:
      true, if so
    • getNumElems

      public abstract int getNumElems()
      Returns the number of data elements this value has.
    • getElemInt

      public int getElemInt()
      Returns the value as an int.

      The method assumes that this value is a scalar and therefore simply returns getElemIntAt(0).

      See Also:
    • getElemUInt

      public long getElemUInt()
      Returns the value as an unsigned int given as a long.

      The method assumes that this value is a scalar and therefore simply returns getElemUIntAt(0).

      See Also:
    • getElemLong

      public long getElemLong()
      Returns the value as a long.

      The method assumes that this value is a scalar and therefore simply returns getElemLongAt(0).

      See Also:
    • getElemFloat

      public float getElemFloat()
      Returns the value as an float.

      The method assumes that this value is a scalar and therefore simply returns getElemFloatAt(0).

      See Also:
    • getElemDouble

      public double getElemDouble()
      Returns the value as an double.

      The method assumes that this value is a scalar and therefore simply returns getElemDoubleAt(0).

      See Also:
    • getElemString

      public String getElemString()
      Returns the value as a String. The text returned is the comma-separated list of elements contained in this value.
      Returns:
      a text representing this fields value, never null
    • getElemBoolean

      public boolean getElemBoolean()
      Returns the value as an boolean.

      The method assumes that this value is a scalar and therefore simply returns getElemBooleanAt(0).

      See Also:
    • getElemIntAt

      public abstract int getElemIntAt(int index)
      Gets the value element with the given index as an int.
      Parameters:
      index - the value index, must be >=0 and <getNumDataElems()
      Throws:
      IndexOutOfBoundsException - if the index is out of bounds
    • getElemUIntAt

      public abstract long getElemUIntAt(int index)
      Gets the value element with the given index as a long.
      Parameters:
      index - the value index, must be >=0 and <getNumDataElems()
      Throws:
      IndexOutOfBoundsException - if the index is out of bounds
    • getElemLongAt

      public abstract long getElemLongAt(int index)
      Gets the value element with the given index as an long.
      Parameters:
      index - the value index, must be >=0 and <getNumDataElems()
      Throws:
      IndexOutOfBoundsException - if the index is out of bounds
    • getElemFloatAt

      public abstract float getElemFloatAt(int index)
      Gets the value element with the given index as a float.
      Parameters:
      index - the value index, must be >=0 and <getNumDataElems()
      Throws:
      IndexOutOfBoundsException - if the index is out of bounds
    • getElemDoubleAt

      public abstract double getElemDoubleAt(int index)
      Gets the value element with the given index as a double.
      Parameters:
      index - the value index, must be >=0 and <getNumDataElems()
      Throws:
      IndexOutOfBoundsException - if the index is out of bounds
    • getElemStringAt

      public abstract String getElemStringAt(int index)
      Gets the value element with the given index as a String.
      Parameters:
      index - the value index, must be >=0 and <getNumDataElems()
      Throws:
      IndexOutOfBoundsException - if the index is out of bounds
    • getElemBooleanAt

      public boolean getElemBooleanAt(int index)
      Gets the value element with the given index as a boolean.
      Parameters:
      index - the value index, must be >=0 and <getNumDataElems()
      Throws:
      IndexOutOfBoundsException - if the index is out of bounds
    • setElemInt

      public void setElemInt(int value)
      Sets the value as an int.

      The method assumes that this value is a scalar and therefore simply calls setElemIntAt(0, value).

      Parameters:
      value - the value to be set
      See Also:
    • setElemUInt

      public void setElemUInt(long value)
      Sets the value as an unsigned int given as a long.

      The method assumes that this value is a scalar and therefore simply calls setElemUIntAt(0, value).

      Parameters:
      value - the value to be set
      See Also:
    • setElemLong

      public void setElemLong(long value)
      Sets the value as a long.

      The method assumes that this value is a scalar and therefore simply calls setElemLongInt(0, value).

      Parameters:
      value - the value to be set
      See Also:
    • setElemFloat

      public void setElemFloat(float value)
      Sets the value as a float.

      The method assumes that this value is a scalar and therefore simply calls setElemFloatAt(0, value).

      Parameters:
      value - the value to be set
      See Also:
    • setElemDouble

      public void setElemDouble(double value)
      Sets the value as a double.

      The method assumes that this value is a scalar and therefore simply calls setElemDoubleAt(0).

      Parameters:
      value - the value to be set
      See Also:
    • setElemString

      public void setElemString(String value)
      Sets the value as a String.

      The method assumes that this value is a scalar and therefore simply calls setElemStringAt(0).

      Parameters:
      value - the value to be set
      See Also:
    • setElemBoolean

      public void setElemBoolean(boolean value)
      Sets the value as a boolean.

      The method assumes that this value is a scalar and therefore simply calls setElemDoubleAt(0).

      Parameters:
      value - the value to be set
      See Also:
    • setElemIntAt

      public abstract void setElemIntAt(int index, int value)
      Sets the value at the specified index as an int.
      Parameters:
      index - the value index, must be >=0 and <getNumDataElems()
      value - the value to be set
      Throws:
      IndexOutOfBoundsException - if the index is out of bounds
    • setElemUIntAt

      public abstract void setElemUIntAt(int index, long value)
      Sets the value at the specified index as an unsigned int given as a long.
      Parameters:
      index - the value index, must be >=0 and <getNumDataElems()
      value - the value to be set
      Throws:
      IndexOutOfBoundsException - if the index is out of bounds
    • setElemLongAt

      public abstract void setElemLongAt(int index, long value)
      Sets the value at the specified index as a long.
      Parameters:
      index - the value index, must be >=0 and <getNumDataElems()
      value - the value to be set
      Throws:
      IndexOutOfBoundsException - if the index is out of bounds
    • setElemFloatAt

      public abstract void setElemFloatAt(int index, float value)
      Sets the value at the specified index as a float.
      Parameters:
      index - the value index, must be >=0 and <getNumDataElems()
      value - the value to be set
      Throws:
      IndexOutOfBoundsException - if the index is out of bounds
    • setElemDoubleAt

      public abstract void setElemDoubleAt(int index, double value)
      Sets the value at the specified index as a double.
      Parameters:
      index - the value index, must be >=0 and <getNumDataElems()
      value - the value to be set
      Throws:
      IndexOutOfBoundsException - if the index is out of bounds
    • setElemStringAt

      public void setElemStringAt(int index, String value)
      Sets the value at the specified index as a String.

      THE METHOD IS CURRENTLY NOT IMPLEMENTED.

      Parameters:
      index - the value index, must be >=0 and <getNumDataElems()
      value - the value to be set
      Throws:
      IndexOutOfBoundsException - if the index is out of bounds
    • setElemBooleanAt

      public void setElemBooleanAt(int index, boolean value)
      Sets the value at the specified index as a boolean.
      Parameters:
      index - the value index, must be >=0 and <getNumDataElems()
      value - the value to be set
      Throws:
      IndexOutOfBoundsException - if the index is out of bounds
    • getElems

      public abstract Object getElems()
      Returns the internal value. The actual type of the returned object should only be one of
      1. byte[] - for signed/unsigned 8-bit integer fields
      2. short[] - for signed/unsigned 16-bit integer fields
      3. int[] - for signed/unsigned 32-bit integer fields
      4. long[] - for signed/unsigned 64-bit integer fields
      5. float[] - for signed 32-bit floating point fields
      6. double[] - for signed 64-bit floating point fields
      Returns:
      an array of one of the described types
    • setElems

      public abstract void setElems(Object data)
      Sets the internal value. The actual type of the given data object should only be one of
      1. byte[] - for signed/unsigned 8-bit integer fields
      2. short[] - for signed/unsigned 16-bit integer fields
      3. int[] - for signed/unsigned 32-bit integer fields
      4. long[] - for signed/unsigned 64-bit integer fields
      5. float[] - for signed 32-bit floating point fields
      6. double[] - for signed 64-bit floating point fields
      7. String[] - for all field types
      Parameters:
      data - an array of one of the described types
    • readFrom

      public void readFrom(ImageInputStream input) throws IOException
      Reads all elements of this ProductData instance from to the given input stream.

      The method subsequentially reads the elements at 0 to getNumElems()-1 of this ProductData instance from the given input stream.
      Reading starts at the current seek position within the input stream.

      Parameters:
      input - a seekable data input stream
      Throws:
      IOException - if an I/O error occurs
    • readFrom

      public void readFrom(int pos, ImageInputStream input) throws IOException
      Reads a single element of this ProductData instance from to the given output stream.

      The method reads the element at pos of this ProductData instance from the given output stream.
      Reading starts at the current seek position within the output stream.

      Parameters:
      pos - the destination position (zero-based)
      input - a seekable data input stream
      Throws:
      IOException - if an I/O error occurs
    • readFrom

      public abstract void readFrom(int startPos, int numElems, ImageInputStream input) throws IOException
      Reads elements of this ProductData instance from the given output stream.

      The method subsequentially reads the elements at startPos to startPos+numElems-1 of this ProductData instance from the given input stream.
      Reading starts at the current seek position of the input stream.

      Parameters:
      startPos - the destination start position (zero-based)
      numElems - the number of elements to read
      input - a seekable data input stream
      Throws:
      IOException - if an I/O error occurs
    • readFrom

      public void readFrom(int startPos, int numElems, ImageInputStream input, long inputPos) throws IOException
      Reads elements into this ProductData instance from the given input stream.

      The method subsequentially reads the elements at startPos to startPos+numElems-1 of this ProductData instance from the given input stream.
      Reading starts at inputPos within the output stream. The method multiplies this position with the value returned by getElemSize() in order to find the correct stream offset in bytes.

      Parameters:
      startPos - the destination start position (zero-based)
      numElems - the number of elements to read
      input - a seekable data input stream
      inputPos - the (zero-based) position in the data output stream where reading starts
      Throws:
      IOException - if an I/O error occurs
    • writeTo

      public void writeTo(ImageOutputStream output) throws IOException
      Writes all elements of this ProductData instance to to the given output stream.

      The method subsequentially writes the elements at 0 to getNumElems()-1 of this ProductData instance to the given output stream.
      Writing starts at the current seek position within the output stream.

      Parameters:
      output - a seekable data output stream
      Throws:
      IOException - if an I/O error occurs
    • writeTo

      public void writeTo(int pos, ImageOutputStream output) throws IOException
      Writes a single element of this ProductData instance to to the given output stream.

      The method writes the element at pos of this ProductData instance to the given output stream.
      Writing starts at the current seek position within the output stream.

      Parameters:
      pos - the source position (zero-based)
      output - a seekable data output stream
      Throws:
      IOException - if an I/O error occurs
    • writeTo

      public abstract void writeTo(int startPos, int numElems, ImageOutputStream output) throws IOException
      Writes elements of this ProductData instance to to the given output stream.

      The method subsequentially writes the elements at startPos to startPos+numElems-1 of this ProductData instance to the given output stream.
      Writing starts at the current seek position within the output stream.

      Parameters:
      startPos - the source start position (zero-based)
      numElems - the number of elements to be written
      output - a seekable data output stream
      Throws:
      IOException - if an I/O error occurs
    • writeTo

      public void writeTo(int startPos, int numElems, ImageOutputStream output, long outputPos) throws IOException
      Writes elements of this ProductData instance to to the given output stream.

      The method subsequentially writes the elements at startPos to startPos+numElems-1 of this ProductData instance to the given output stream.
      Writing starts at outputPos within the output stream. The method multiplies this position with the value returned by getElemSize() in order to find the correct stream offset in bytes.

      Parameters:
      startPos - the source start position (zero-based)
      numElems - the number of elements to be written
      output - a seekable data output stream
      outputPos - the position in the data output stream where writing starts
      Throws:
      IOException - if an I/O error occurs
    • toString

      public String toString()
      Returns a string representation of this value which can be used for debugging purposes.
      Overrides:
      toString in class Object
    • hashCode

      public final int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public final boolean equals(Object other)
      Returns Object.equals(Object). Use equalElems(org.esa.snap.core.datamodel.ProductData) in order to perform an element-wise comparision.
      Overrides:
      equals in class Object
    • equalElems

      public boolean equalElems(ProductData other)
      Tests whether this ProductData is equal to another one. Performs an element-wise comparision if the other object is a ProductData instance of the same data type. Otherwise the method behaves like Object.equals(Object).
      Parameters:
      other - the other one
    • createDeepClone

      protected abstract ProductData createDeepClone()
      Retuns a "deep" copy of this product data.
      Returns:
      a copy of this product data
    • dispose

      public abstract void dispose()
      Releases all of the resources used by this object instance and all of its owned children. Its primary use is to allow the garbage collector to perform a vanilla job.

      This method should be called only if it is for sure that this object instance will never be used again. The results of referencing an instance of this class after a call to dispose() are undefined.