com.beaglebuddy.id3.v23.frame_body

## Class ID3v23FrameBodyInvolvedPeopleList

- 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.ID3v23FrameBodyInvolvedPeopleList

-     public class ID3v23FrameBodyInvolvedPeopleList
      extends ID3v23FrameBody

  An involved people list frame body is associated with an ID3v2.3 `IPLS` `frame` which is used to list the people who were involved in the song. The involved people list frame body contains the following fields:

  Involved People List
  | Field | Description
  --- | --- | ---
  1. | `encoding` | character set used to `encode` the involved people field.
  2. | involvedPeople | List of people involved in making the .mp3 song.

  There may only be one involved people list frame in an ID3v2.3 `tag`.

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

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `ID3v23FrameBodyInvolvedPeopleList.InvolvedPerson` contains the involvement (what the person did) and the person's name.

  - ### 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
    `ID3v23FrameBodyInvolvedPeopleList()` The default constructor is called when creating a new frame.
    `ID3v23FrameBodyInvolvedPeopleList(Encoding encoding, java.util.List<ID3v23FrameBodyInvolvedPeopleList.InvolvedPerson> involvedPeople)` This constructor is called when creating a new frame.
    `ID3v23FrameBodyInvolvedPeopleList(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 involved people.
    `java.util.List<ID3v23FrameBodyInvolvedPeopleList.InvolvedPerson>` | `getInvolvedPeople()` gets the list of people involved with the song.
    `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 involved people.
    `void` | `setInvolvedPeople(java.util.List<ID3v23FrameBodyInvolvedPeopleList.InvolvedPerson> involvedPeople)` sets the list of involved people and their role.
    `java.lang.String` | `toString()` gets a string representation of the involved people list 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, getUTF16String, getUTF8String, 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

    - #### ID3v23FrameBodyInvolvedPeopleList

          public ID3v23FrameBodyInvolvedPeopleList()

      The default constructor is called when creating a new frame. The default values used are:
      - ISO-8859-1 encoding
      - empty involved people list

    - #### ID3v23FrameBodyInvolvedPeopleList

          public ID3v23FrameBodyInvolvedPeopleList(Encoding encoding,
                                           java.util.List<ID3v23FrameBodyInvolvedPeopleList.InvolvedPerson> involvedPeople)

      This constructor is called when creating a new frame.
      Parameters:
        `encoding` - character set used to encode the entries of a person and their involvement.
        `involvedPeople` - list of involved people and their roles.

    - #### ID3v23FrameBodyInvolvedPeopleList

          public ID3v23FrameBodyInvolvedPeopleList(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 an involved people list 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 involved people.
      Returns:
        the character encoding of the involved people.
      See Also:
        `setEncoding(Encoding)`

    - #### setEncoding

          public void setEncoding(Encoding encoding)

      sets the character encoding of the involved people.
      Parameters:
        `encoding` - the character set used to encode the involved people. Only ISO 8859-1 and UTF-16 are allowed.
      See Also:
        `getEncoding()`

    - #### getInvolvedPeople

          public java.util.List<ID3v23FrameBodyInvolvedPeopleList.InvolvedPerson> getInvolvedPeople()

      gets the list of people involved with the song.
      Returns:
        the list of involved people.
      See Also:
        `setInvolvedPeople(List)`

    - #### setInvolvedPeople

          public void setInvolvedPeople(java.util.List<ID3v23FrameBodyInvolvedPeopleList.InvolvedPerson> involvedPeople)

      sets the list of involved people and their role.
      Parameters:
        `involvedPeople` - the involved people.
      See Also:
        `getInvolvedPeople()`

    - #### 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 involved people list 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.