FrameBodyCOMRpublic class FrameBodyCOMR extends AbstractID3v2FrameBody implements ID3v24FrameBody, ID3v23FrameBodyCommercial 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:
|
Constructors Summary |
---|
public FrameBodyCOMR()Creates a new FrameBodyCOMR datatype.
// this.setObject("Text Encoding", new Byte((byte) 0));
// this.setObject("Price String", "");
// this.setObject("Valid Until", "");
// this.setObject("Contact URL", "");
// this.setObject("Recieved As", new Byte((byte) 0));
// this.setObject("Name Of Seller", "");
// this.setObject(ObjectTypes.OBJ_DESCRIPTION, "");
// this.setObject("Picture MIME Type", "");
// this.setObject("Seller Logo", new byte[0]);
| public FrameBodyCOMR(FrameBodyCOMR body)
super(body);
| public FrameBodyCOMR(byte textEncoding, String priceString, String validUntil, String contactUrl, byte recievedAs, String nameOfSeller, String description, String mimeType, byte[] sellerLogo)Creates a new FrameBodyCOMR datatype.
this.setObjectValue(DataTypes.OBJ_TEXT_ENCODING, textEncoding);
this.setObjectValue(DataTypes.OBJ_PRICE_STRING, priceString);
this.setObjectValue(DataTypes.OBJ_VALID_UNTIL, validUntil);
this.setObjectValue(DataTypes.OBJ_CONTACT_URL, contactUrl);
this.setObjectValue(DataTypes.OBJ_RECIEVED_AS, recievedAs);
this.setObjectValue(DataTypes.OBJ_SELLER_NAME, nameOfSeller);
this.setObjectValue(DataTypes.OBJ_DESCRIPTION, description);
this.setObjectValue(DataTypes.OBJ_MIME_TYPE, mimeType);
this.setObjectValue(DataTypes.OBJ_SELLER_LOGO, sellerLogo);
| public FrameBodyCOMR(ByteBuffer byteBuffer, int frameSize)Creates a new FrameBodyCOMR datatype.
super(byteBuffer, frameSize);
|
Methods Summary |
---|
public java.lang.String | getIdentifier()The ID3v2 frame identifier
return ID3v24Frames.FRAME_ID_COMMERCIAL_FRAME;
| public java.lang.String | getOwner()
return (String) getObjectValue(DataTypes.OBJ_OWNER);
| public void | getOwner(java.lang.String description)
setObjectValue(DataTypes.OBJ_OWNER, description);
| protected void | setupObjectList()
objectList.add(new NumberHashMap(DataTypes.OBJ_TEXT_ENCODING, this, TextEncoding.TEXT_ENCODING_FIELD_SIZE));
objectList.add(new StringNullTerminated(DataTypes.OBJ_PRICE_STRING, this));
objectList.add(new StringDate(DataTypes.OBJ_VALID_UNTIL, this));
objectList.add(new StringNullTerminated(DataTypes.OBJ_CONTACT_URL, this));
objectList.add(new NumberHashMap(DataTypes.OBJ_RECIEVED_AS, this, ReceivedAsTypes.RECEIVED_AS_FIELD_SIZE));
objectList.add(new TextEncodedStringNullTerminated(DataTypes.OBJ_SELLER_NAME, this));
objectList.add(new TextEncodedStringNullTerminated(DataTypes.OBJ_DESCRIPTION, this));
objectList.add(new StringNullTerminated(DataTypes.OBJ_MIME_TYPE, this));
objectList.add(new ByteArraySizeTerminated(DataTypes.OBJ_SELLER_LOGO, this));
| public void | write(java.io.ByteArrayOutputStream tagBuffer)If the seller or description cannot be encoded using current encoder, change the encoder
if (!((AbstractString) getObject(DataTypes.OBJ_SELLER_NAME)).canBeEncoded())
{
this.setTextEncoding(TextEncoding.UTF_16);
}
if (!((AbstractString) getObject(DataTypes.OBJ_DESCRIPTION)).canBeEncoded())
{
this.setTextEncoding(TextEncoding.UTF_16);
}
super.write(tagBuffer);
|
|