Class TupleEncoding<T extends Tuple>

java.lang.Object
io.permazen.encoding.AbstractEncoding<T>
io.permazen.encoding.TupleEncoding<T>
All Implemented Interfaces:
Encoding<T>, NaturalSortAware, Serializable, Comparator<T>
Direct Known Subclasses:
Tuple2Encoding, Tuple3Encoding, Tuple4Encoding, Tuple5Encoding

public abstract class TupleEncoding<T extends Tuple> extends AbstractEncoding<T>
Superclass for Encodings created from the concatenation of other Encodings.
See Also:
  • Constructor Details

    • TupleEncoding

      protected TupleEncoding(EncodingId encodingId, TypeToken<T> typeToken, Encoding<?>... encodings)
      Constructor.
      Parameters:
      encodingId - encoding ID, or null for an anonymous instance
      typeToken - this encoding's composite value type
      encodings - encodings to concatenate
      Throws:
      IllegalArgumentException - if typeToken or encodings is null
  • Method Details

    • getSize

      public int getSize()
      Get the number of component encodings in this encoding.
      Returns:
      number of component encodings
    • read

      public T read(ByteReader reader)
      Description copied from interface: Encoding
      Read a value from the given input.
      Parameters:
      reader - byte input
      Returns:
      field value (possibly null)
    • write

      public void write(ByteWriter writer, T tuple)
      Description copied from interface: Encoding
      Write a value to the given output.
      Parameters:
      writer - byte output
      tuple - value to write (possibly null)
    • skip

      public void skip(ByteReader reader)
      Description copied from interface: Encoding
      Read and discard a byte[] encoded value from the given input.
      Parameters:
      reader - byte input
    • toString

      public String toString(T tuple)
      Description copied from interface: Encoding
      Encode a non-null value as a String for later decoding by fromString().

      Each of the characters in the returned String must be one of the valid XML characters (tab, newline, carriage return, \u0020 - \ud7ff, and \ue000 - \ufffd).

      Parameters:
      tuple - actual value, never null
      Returns:
      string encoding of value acceptable to fromString()
      See Also:
    • fromString

      public T fromString(String string)
      Description copied from interface: Encoding
      Parse a non-null value previously encoded by toString(T).
      Parameters:
      string - non-null value previously encoded as a String by toString(T)
      Returns:
      actual value
    • compare

      public int compare(Tuple tuple1, Tuple tuple2)
      Description copied from interface: Encoding
      Order two field values.

      This method must provide a total ordering of all supported Java values that is consistent with the database ordering, i.e., the unsigned lexicographical ordering of the corresponding byte[] encoded field values.

      If null is a supported Java value, then the this method must accept null parameters without throwing an exception (note, this is a stronger requirement than the Comparator interface normally requires).

      Note: by convention, null values usually sort last.

    • hasPrefix0xff

      public boolean hasPrefix0xff()
      Description copied from interface: Encoding
      Determine whether any of this encoding's encoded values start with a 0xff byte. Certain optimizations are possible when this is not the case. It is safe for this method to always return true.

      Note: changing the result of this method may result in an incompatible encoding if this encoding is wrapped in another class.

      The implementation in Encoding returns true.

      Returns:
      true if an encoded value starting with 0xff exists
    • hasPrefix0x00

      public boolean hasPrefix0x00()
      Description copied from interface: Encoding
      Determine whether any of this encoding's encoded values start with a 0x00 byte. Certain optimizations are possible when this is not the case. It is safe for this method to always return true.

      Note: changing the result of this method may result in an incompatible encoding if this encoding is wrapped in another class.

      The implementation in Encoding returns true.

      Returns:
      true if an encoded value starting with 0x00 exists
    • createTuple

      protected abstract T createTuple(Object[] values)