com.beaglebuddy.id3.v23.frame_body

## Class ID3v23FrameBodyGroupIdentificationRegistration

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

-     public class ID3v23FrameBodyGroupIdentificationRegistration
      extends ID3v23FrameBody

  An group identification registration frame body is associated with an ID3v2.3 `GRID` `frame` which is used to group otherwise unrelated frames. To identify which frames belongs to a set of frames, a group identifier must be registered in the tag with this frame. The group identification registration frame body contains the following fields:

  Group Identification Registration Frame Body Fields
  | Field | Description
  --- | --- | ---
  1. | ownerId | URL containing an e-mail address, or a link to a location where an e-mail address can be found, that belongs to the organization responsible for this specific encrypted audio file. Questions regarding the grouping should be sent to the indicated e-mail address.
  2. | groupSymbol | id which uniquely identifies a group and with which all associated frames will references. Values below 0x80 are reserved.
  4. | data | This optional field contains group specific data, such as a digital signature. If not used, it will contain a byte array of length 0.

  There may be more than one group identification registration frame in an ID3v2.3 `tag`, but only one containing the same owner and only one containing the same group symbol. The group symbol must be used somewhere in another frame in the 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
    `ID3v23FrameBodyGroupIdentificationRegistration()` The default constructor is called when creating a new frame.
    `ID3v23FrameBodyGroupIdentificationRegistration(java.io.InputStream inputStream, int frameBodySize)` This constructor is called when reading in an existing frame from an .mp3 file.
    `ID3v23FrameBodyGroupIdentificationRegistration(java.lang.String ownerId, byte groupSymbol, byte[] data)` This constructor is called when creating a new frame.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `byte[]` | `getData()` gets the group specific data, such as a digital signature.
    `byte` | `getGroupSymbol()` gets the group symbol.
    `java.lang.String` | `getOwnerId()` gets the owner id of the frame.
    `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` | `setData(byte[] data)` sets the group specific data.
    `void` | `setGroupSymbol(byte groupSymbol)` sets the group symbol.
    `void` | `setOwnerId(java.lang.String ownerId)` sets the owner id, which is a URL containing an e-mail address, or a link to a location where an e-mail address can be found, that belongs to the organization responsible for the frame.
    `java.lang.String` | `toString()` gets a string representation of the group identification registration 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

    - #### ID3v23FrameBodyGroupIdentificationRegistration

          public ID3v23FrameBodyGroupIdentificationRegistration()

      The default constructor is called when creating a new frame. The default values used are:
      - empty owner id
      - 0x80 group symbol
      - no data (byte array of length 0)

    - #### ID3v23FrameBodyGroupIdentificationRegistration

          public ID3v23FrameBodyGroupIdentificationRegistration(java.lang.String ownerId,
                                                        byte groupSymbol,
                                                        byte[] data)

      This constructor is called when creating a new frame.
      Parameters:
        `ownerId` - e-mail address, or a link to a location where an e-mail address can be found, that belongs to the organization responsible for this grouping.
        `groupSymbol` - id of the group.
        `data` - group specific data, such as a digital signature. this field is optional and may be empty.

    - #### ID3v23FrameBodyGroupIdentificationRegistration

          public ID3v23FrameBodyGroupIdentificationRegistration(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 group identification registration 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.

    - #### getOwnerId

          public java.lang.String getOwnerId()

      gets the owner id of the frame.
      Returns:
        the owner id of the frame.
      See Also:
        `setOwnerId(String)`

    - #### setOwnerId

          public void setOwnerId(java.lang.String ownerId)

      sets the owner id, which is a URL containing an e-mail address, or a link to a location where an e-mail address can be found, that belongs to the organization responsible for the frame. Questions regarding the frame should be sent to the indicated e-mail address.
      Parameters:
        `ownerId` - the id of the owner of the data.
      See Also:
        `getOwnerId()`

    - #### getGroupSymbol

          public byte getGroupSymbol()

      gets the group symbol.
      Returns:
        the group symbol.
      See Also:
        `setGroupSymbol(byte)`

    - #### setGroupSymbol

          public void setGroupSymbol(byte groupSymbol)

      sets the group symbol.
      Parameters:
        `groupSymbol` - the group symbol.
      See Also:
        `getGroupSymbol()`

    - #### getData

          public byte[] getData()

      gets the group specific data, such as a digital signature. If not used, it will contain a byte[] array of length 0.
      Returns:
        the group specific data.
      See Also:
        `setData(byte[])`

    - #### setData

          public void setData(byte[] data)

      sets the group specific data. this field is optional and may be empty.
      Parameters:
        `data` - the group specific data.
      See Also:
        `getData()`

    - #### 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 group identification registration 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.