com.beaglebuddy.id3.v23.frame_body

## Class ID3v23FrameBodyTermsOfUse

- java.lang.Object
- - com.beaglebuddy.util.Utility
  - - com.beaglebuddy.id3.v23.frame_body.ID3v23FrameBodyUtility
    - - com.beaglebuddy.id3.v23.frame_body.ID3v23FrameBody
      - - com.beaglebuddy.id3.v23.frame_body.ID3v23FrameBodyTermsOfUse

-     public class ID3v23FrameBodyTermsOfUse
      extends ID3v23FrameBody

  A terms of use frame body is associated with an ID3v2.3 `USER` `frame` which is used to include a brief description of the terms of use and/or ownership of the .mp3 file. More detailed information concerning the legal terms might be available through the `Copyright/Legal information` frame. The terms of use frame body contains the following fields:

  Terms of Use Frame Body Fields
  | Field | Description
  --- | --- | ---
  1. | `encoding` | character set used to `encode` the text field.
  2. | `language` | language that the text field is written in.
  3. | text | the actual terms of use or ownership of the .mp3 file.

  There may only be one terms of use frame in an `ID3v2.3 tag`.

  See Also:
    `ID3v23Frame`, ID3 tag version 2.3.0 standard, wikipedia history of ID3 tags

- - ### Field Summary

    - ### Fields inherited from class com.beaglebuddy.id3.v23.frame_body.ID3v23FrameBody

      `buffer, dirty, frameType`

    - ### Fields inherited from class com.beaglebuddy.id3.v23.frame_body.ID3v23FrameBodyUtility

      `nextNullTerminatorIndex, nullTerminatorIndex`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ID3v23FrameBodyTermsOfUse()` The default constructor is called when creating a new frame.
    `ID3v23FrameBodyTermsOfUse(Encoding encoding, Language language, java.lang.String text)` This constructor is called when creating a new frame.
    `ID3v23FrameBodyTermsOfUse(java.io.InputStream inputStream, int frameBodySize)` This constructor is called when reading in an existing frame from an .mp3 file.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Encoding` | `getEncoding()` gets the character encoding of the text.
    `Language` | `getLanguage()` gets the `language` the terms of user are written in.
    `java.lang.String` | `getText()` gets the terms of use or ownership of the .mp3 file.
    `void` | `parse()` parses the raw bytes of the frame body and stores the parsed values in the frame's fields.
    `void` | `setBuffer()` If the frame body's values have been modified, then resize the raw binary buffer and store the new values there.
    `void` | `setEncoding(Encoding encoding)` sets the character encoding of the text.
    `void` | `setLanguage(Language language)` sets the `language` the terms of user are written in.
    `void` | `setText(java.lang.String text)` sets the terms of use or ownership of the .mp3 file.
    `java.lang.String` | `toString()` gets a string representation of the terms of use frame body showing all of the frame's fields and their values.

    - ### Methods inherited from class com.beaglebuddy.id3.v23.frame_body.ID3v23FrameBody

      `getFrameType, getNextNullTerminator, getSize, isDirty, save, save`

    - ### Methods inherited from class com.beaglebuddy.id3.v23.frame_body.ID3v23FrameBodyUtility

      `getNextNullTerminator, pricesToString, stringToBytes`

    - ### Methods inherited from class com.beaglebuddy.util.Utility

      `bytesToInt, bytesToInt, bytesToShort, bytesToShort, bytesToSynchsafeInt, bytesToSynchsafeShort, formateDate, hex, hex, hex, intToBytes, littleEndianBytesToInt, pad, shortToBytes, synchsafeIntToBytes`

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

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

- - ### Constructor Detail

    - #### ID3v23FrameBodyTermsOfUse

          public ID3v23FrameBodyTermsOfUse()

      The default constructor is called when creating a new frame. The default values used are:
      - ISO-8859-1 encoding
      - english language
      - empty text

    - #### ID3v23FrameBodyTermsOfUse

          public ID3v23FrameBodyTermsOfUse(Encoding encoding,
                                   Language language,
                                   java.lang.String text)

      This constructor is called when creating a new frame.
      Parameters:
        `encoding` - character set used to encode the terms of use.
        `language` - ISO-639-2 language code.
        `text` - text.

    - #### ID3v23FrameBodyTermsOfUse

          public ID3v23FrameBodyTermsOfUse(java.io.InputStream inputStream,
                                   int frameBodySize)
                                    throws java.io.IOException

      This constructor is called when reading in an existing frame from an .mp3 file. This is then followed by a call to the parse() method.
      Parameters:
        `inputStream` - input stream pointing to a terms of use frame body in the .mp3 file.
        `frameBodySize` - size (in bytes) of the frame's body.
      Throws:
        `java.io.IOException` - if there is an error while reading the frame body.

  - ### Method Detail

    - #### parse

          public void parse()
                     throws java.lang.IllegalArgumentException

      parses the raw bytes of the frame body and stores the parsed values in the frame's fields.
      Overrides:
        `parse` in class `ID3v23FrameBody`
      Throws:
        `java.lang.IllegalArgumentException` - if an invalid value is detected while parsing the frame body's raw bytes.

    - #### getEncoding

          public Encoding getEncoding()

      gets the character encoding of the text.
      Returns:
        the character encoding of the text.
      See Also:
        `setEncoding(Encoding)`

    - #### setEncoding

          public void setEncoding(Encoding encoding)

      sets the character encoding of the text.
      Parameters:
        `encoding` - the character set used to encode the text. Only those supported by the `Encoding` enum are allowed.
      See Also:
        `getEncoding()`

    - #### getLanguage

          public Language getLanguage()

      gets the `language` the terms of user are written in.
      Returns:
        the `language` the terms of user are written in.
      See Also:
        `setLanguage(Language)`

    - #### setLanguage

          public void setLanguage(Language language)

      sets the `language` the terms of user are written in.
      Parameters:
        `language` - `language` the terms of user are written in.
      See Also:
        `getLanguage()`

    - #### getText

          public java.lang.String getText()

      gets the terms of use or ownership of the .mp3 file.
      Returns:
        the terms of use or ownership of the .mp3 file.
      See Also:
        `setText(String)`

    - #### setText

          public void setText(java.lang.String text)

      sets the terms of use or ownership of the .mp3 file.
      Parameters:
        `text` - the terms of use or ownership of the .mp3 file.
      See Also:
        `getText()`

    - #### setBuffer

          public void setBuffer()

      If the frame body's values have been modified, then resize the raw binary buffer and store the new values there. When finished, the dirty flag is reset to indicate that the buffer is up to date, and the frame is now ready to be saved to the .mp3 file.
      Overrides:
        `setBuffer` in class `ID3v23FrameBody`

    - #### toString

          public java.lang.String toString()

      gets a string representation of the terms of use frame body showing all of the frame's fields and their values.
      Overrides:
        `toString` in class `java.lang.Object`
      Returns:
        a string representation of the frame body.