org.jaudiotagger.tag.id3.framebody
Class FrameBodyCOMR

java.lang.Object
  extended by org.jaudiotagger.tag.id3.AbstractTagItem
      extended by org.jaudiotagger.tag.id3.AbstractTagFrameBody
          extended by org.jaudiotagger.tag.id3.framebody.AbstractID3v2FrameBody
              extended by org.jaudiotagger.tag.id3.framebody.FrameBodyCOMR
All Implemented Interfaces:
ID3v23FrameBody, ID3v24FrameBody

public class FrameBodyCOMR
extends AbstractID3v2FrameBody
implements ID3v24FrameBody, ID3v23FrameBody

Commercial frame.

This frame enables several competing offers in the same tag by bundling all needed information. That makes this frame rather complex but it's an easier solution than if one tries to achieve the same result with several frames. The frame begins, after the frame ID, size and encoding fields, with a price string field. A price is constructed by one three character currency code, encoded according to ISO-4217 alphabetic currency code, followed by a numerical value where "." is used as decimal seperator. In the price string several prices may be concatenated, seperated by a "/" character, but there may only be one currency of each type.

The price string is followed by an 8 character date string in the format YYYYMMDD, describing for how long the price is valid. After that is a contact URL, with which the user can contact the seller, followed by a one byte 'received as' field. It describes how the audio is delivered when bought according to the following list:

$00 Other
$01 Standard CD album with other songs
$02 Compressed audio on CD
$03 File over the Internet
$04 Stream over the Internet
$05 As note sheets
$06 As note sheets in a book with other sheets
$07 Music on other media
$08 Non-musical merchandise

Next follows a terminated string with the name of the seller followed by a terminated string with a short description of the product. The last thing is the ability to include a company logotype. The first of them is the 'Picture MIME type' field containing information about which picture format is used. In the event that the MIME media type name is omitted, "image/" will be implied. Currently only "image/png" and "image/jpeg" are allowed. This format string is followed by the binary picture data. This two last fields may be omitted if no picture is to attach.

<Header for 'Commercial frame', ID: "COMR">
Text encoding $xx
Price string <text string> $00
Valid until <text string>
Contact URL <text string> $00
Received as $xx
Name of seller<text string according to encoding> $00 (00)
Description <text string according to encoding> $00 (00)
Picture MIME type<string> $00
Seller logo <binary data>

For more details, please refer to the ID3 specifications:

Version:
$Id: FrameBodyCOMR.java,v 1.18 2009/11/12 15:42:56 paultaylor Exp $
Author:
: Paul Taylor, : Eric Farng

Field Summary
 
Fields inherited from class org.jaudiotagger.tag.id3.framebody.AbstractID3v2FrameBody
TYPE_BODY
 
Fields inherited from class org.jaudiotagger.tag.id3.AbstractTagFrameBody
objectList
 
Fields inherited from class org.jaudiotagger.tag.id3.AbstractTagItem
logger
 
Constructor Summary
FrameBodyCOMR()
          Creates a new FrameBodyCOMR datatype.
FrameBodyCOMR(java.nio.ByteBuffer byteBuffer, int frameSize)
          Creates a new FrameBodyCOMR datatype.
FrameBodyCOMR(byte textEncoding, java.lang.String priceString, java.lang.String validUntil, java.lang.String contactUrl, byte recievedAs, java.lang.String nameOfSeller, java.lang.String description, java.lang.String mimeType, byte[] sellerLogo)
          Creates a new FrameBodyCOMR datatype.
FrameBodyCOMR(FrameBodyCOMR body)
           
 
Method Summary
 java.lang.String getIdentifier()
          The ID3v2 frame identifier
 java.lang.String getOwner()
           
 void getOwner(java.lang.String description)
           
protected  void setupObjectList()
          Create the list of Datatypes that this body expects in the correct order This method needs to be implemented by concrete subclasses
 void write(java.io.ByteArrayOutputStream tagBuffer)
          If the seller or description cannot be encoded using current encoder, change the encoder
 
Methods inherited from class org.jaudiotagger.tag.id3.framebody.AbstractID3v2FrameBody
createStructure, equals, getSize, read, setSize, setSize
 
Methods inherited from class org.jaudiotagger.tag.id3.AbstractTagFrameBody
getBriefDescription, getHeader, getLongDescription, getObject, getObjectValue, getTextEncoding, isSubsetOf, iterator, setHeader, setObjectValue, setTextEncoding, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

FrameBodyCOMR

public FrameBodyCOMR()
Creates a new FrameBodyCOMR datatype.


FrameBodyCOMR

public FrameBodyCOMR(FrameBodyCOMR body)

FrameBodyCOMR

public FrameBodyCOMR(byte textEncoding,
                     java.lang.String priceString,
                     java.lang.String validUntil,
                     java.lang.String contactUrl,
                     byte recievedAs,
                     java.lang.String nameOfSeller,
                     java.lang.String description,
                     java.lang.String mimeType,
                     byte[] sellerLogo)
Creates a new FrameBodyCOMR datatype.

Parameters:
textEncoding -
priceString -
validUntil -
contactUrl -
recievedAs -
nameOfSeller -
description -
mimeType -
sellerLogo -

FrameBodyCOMR

public FrameBodyCOMR(java.nio.ByteBuffer byteBuffer,
                     int frameSize)
              throws InvalidTagException
Creates a new FrameBodyCOMR datatype.

Parameters:
byteBuffer -
frameSize -
Throws:
InvalidTagException - if unable to create framebody from buffer
Method Detail

getIdentifier

public java.lang.String getIdentifier()
The ID3v2 frame identifier

Specified by:
getIdentifier in class AbstractID3v2FrameBody
Returns:
the ID3v2 frame identifier for this frame type

getOwner

public java.lang.String getOwner()
Returns:

getOwner

public void getOwner(java.lang.String description)
Parameters:
description -

write

public void write(java.io.ByteArrayOutputStream tagBuffer)
If the seller or description cannot be encoded using current encoder, change the encoder

Overrides:
write in class AbstractID3v2FrameBody

setupObjectList

protected void setupObjectList()
Description copied from class: AbstractTagFrameBody
Create the list of Datatypes that this body expects in the correct order This method needs to be implemented by concrete subclasses

Specified by:
setupObjectList in class AbstractTagFrameBody