org.jaudiotagger.tag.id3
Class ID3v24Frame

java.lang.Object
  extended by org.jaudiotagger.tag.id3.AbstractTagItem
      extended by org.jaudiotagger.tag.id3.AbstractTagFrame
          extended by org.jaudiotagger.tag.id3.AbstractID3v2Frame
              extended by org.jaudiotagger.tag.id3.ID3v24Frame
All Implemented Interfaces:
TagField

public class ID3v24Frame
extends AbstractID3v2Frame

Represents an ID3v2.4 frame.

Version:
$Id: ID3v24Frame.java,v 1.53 2009/11/12 15:42:58 paultaylor Exp $
Author:
: Paul Taylor, : Eric Farng

Nested Class Summary
(package private)  class ID3v24Frame.EncodingFlags
          This represents a frame headers Encoding Flags
(package private)  class ID3v24Frame.StatusFlags
          Member Class This represents a frame headers Status Flags Make adjustments if necessary based on frame type and specification.
 
Field Summary
protected static int FRAME_DATA_LENGTH_SIZE
           
protected static int FRAME_ENCRYPTION_INDICATOR_SIZE
           
protected static int FRAME_FLAGS_SIZE
           
protected static int FRAME_GROUPING_INDICATOR_SIZE
           
protected static int FRAME_HEADER_SIZE
           
protected static int FRAME_ID_SIZE
           
protected static int FRAME_SIZE_SIZE
           
private static java.util.regex.Pattern validFrameIdentifier
           
 
Fields inherited from class org.jaudiotagger.tag.id3.AbstractID3v2Frame
encodingFlags, frameSize, identifier, statusFlags, TYPE_FRAME, TYPE_FRAME_SIZE, UNSUPPORTED_ID
 
Fields inherited from class org.jaudiotagger.tag.id3.AbstractTagFrame
frameBody
 
Fields inherited from class org.jaudiotagger.tag.id3.AbstractTagItem
logger
 
Constructor Summary
ID3v24Frame()
           
ID3v24Frame(AbstractID3v2Frame frame)
          Creates a new ID3v2_4Frame datatype based on another frame of different version Converts the framebody to the equivalent v24 framebody or to UnsupportedFrameBody if identifier is unknown.
ID3v24Frame(java.nio.ByteBuffer byteBuffer)
          Deprecated. use ID3v24Frame(ByteBuffer,String) instead
ID3v24Frame(java.nio.ByteBuffer byteBuffer, java.lang.String loggingFilename)
          Creates a new ID3v24Frame datatype by reading from byteBuffer.
ID3v24Frame(ID3v24Frame frame)
          Copy Constructor:Creates a new ID3v2_4Frame datatype based on another frame.
ID3v24Frame(Lyrics3v2Field field)
          Creates a new ID3v2_4Frame datatype based on Lyrics3.
ID3v24Frame(java.lang.String identifier)
          Creates a new ID3v2_4Frame of type identifier.
 
Method Summary
 void createStructure()
          Return String Representation of body
private  void createV24FrameFromV23Frame(ID3v23Frame frame)
           
 boolean equals(java.lang.Object obj)
          Returns true if this datatype and its body equals the argument and its body.
protected  AbstractID3v2Frame.EncodingFlags getEncodingFlags()
          Get Encoding Flags Object
 int getSize()
          Return size of frame
protected  AbstractID3v2Frame.StatusFlags getStatusFlags()
          Get Status Flags Object
 boolean isBinary()
          Determines whether the represented field contains (is made up of) binary data, instead of text data.
Software can identify fields to be displayed because they are human readable if this method returns false.
 boolean isCommon()
          Identifies a field to be of common use.

Some software may differ between common and not common fields.

 boolean isValidID3v2FrameIdentifier(java.lang.String identifier)
          Does the frame identifier meet the syntax for a idv3v2 frame identifier.
 void read(java.nio.ByteBuffer byteBuffer)
          Read the frame from the specified file.
 void write(java.io.ByteArrayOutputStream tagBuffer)
          Write the frame.
 
Methods inherited from class org.jaudiotagger.tag.id3.AbstractID3v2Frame
copyContent, getId, getIdentifier, getLoggingFilename, getRawContent, isBinary, isEmpty, readBody, readBody, setLoggingFilename
 
Methods inherited from class org.jaudiotagger.tag.id3.AbstractTagFrame
getBody, isSubsetOf, setBody
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.jaudiotagger.tag.TagField
toString
 

Field Detail

validFrameIdentifier

private static java.util.regex.Pattern validFrameIdentifier

FRAME_DATA_LENGTH_SIZE

protected static final int FRAME_DATA_LENGTH_SIZE
See Also:
Constant Field Values

FRAME_ID_SIZE

protected static final int FRAME_ID_SIZE
See Also:
Constant Field Values

FRAME_FLAGS_SIZE

protected static final int FRAME_FLAGS_SIZE
See Also:
Constant Field Values

FRAME_SIZE_SIZE

protected static final int FRAME_SIZE_SIZE
See Also:
Constant Field Values

FRAME_ENCRYPTION_INDICATOR_SIZE

protected static final int FRAME_ENCRYPTION_INDICATOR_SIZE
See Also:
Constant Field Values

FRAME_GROUPING_INDICATOR_SIZE

protected static final int FRAME_GROUPING_INDICATOR_SIZE
See Also:
Constant Field Values

FRAME_HEADER_SIZE

protected static final int FRAME_HEADER_SIZE
See Also:
Constant Field Values
Constructor Detail

ID3v24Frame

public ID3v24Frame()

ID3v24Frame

public ID3v24Frame(java.lang.String identifier)
Creates a new ID3v2_4Frame of type identifier. An empty body of the correct type will be automatically created. This constructor should be used when wish to create a new frame from scratch using user input

Parameters:
identifier - defines the type of body to be created

ID3v24Frame

public ID3v24Frame(ID3v24Frame frame)
Copy Constructor:Creates a new ID3v2_4Frame datatype based on another frame.

Parameters:
frame -

ID3v24Frame

public ID3v24Frame(AbstractID3v2Frame frame)
            throws InvalidFrameException
Creates a new ID3v2_4Frame datatype based on another frame of different version Converts the framebody to the equivalent v24 framebody or to UnsupportedFrameBody if identifier is unknown.

Parameters:
frame - to construct a new frame from
Throws:
InvalidFrameException

ID3v24Frame

public ID3v24Frame(Lyrics3v2Field field)
            throws InvalidTagException
Creates a new ID3v2_4Frame datatype based on Lyrics3.

Parameters:
field -
Throws:
InvalidTagException

ID3v24Frame

public ID3v24Frame(java.nio.ByteBuffer byteBuffer,
                   java.lang.String loggingFilename)
            throws InvalidFrameException
Creates a new ID3v24Frame datatype by reading from byteBuffer.

Parameters:
byteBuffer - to read from
loggingFilename -
Throws:
InvalidFrameException

ID3v24Frame

public ID3v24Frame(java.nio.ByteBuffer byteBuffer)
            throws InvalidFrameException
Deprecated. use ID3v24Frame(ByteBuffer,String) instead

Creates a new ID3v24Frame datatype by reading from byteBuffer.

Parameters:
byteBuffer - to read from
Throws:
InvalidFrameException
Method Detail

createV24FrameFromV23Frame

private void createV24FrameFromV23Frame(ID3v23Frame frame)
                                 throws InvalidFrameException
Throws:
InvalidFrameException

equals

public boolean equals(java.lang.Object obj)
Description copied from class: AbstractTagFrame
Returns true if this datatype and its body equals the argument and its body. this datatype is equal if and only if they are the same class and have the same getSubId id string.

Overrides:
equals in class AbstractTagFrame
Parameters:
obj -
Returns:
if obj is equivalent to this frame

getSize

public int getSize()
Return size of frame

Specified by:
getSize in class AbstractTagItem
Returns:
int frame size

read

public void read(java.nio.ByteBuffer byteBuffer)
          throws InvalidFrameException
Read the frame from the specified file. Read the frame header then delegate reading of data to frame body.

Specified by:
read in class AbstractTagItem
Parameters:
byteBuffer - to read the frame from
Throws:
InvalidFrameException

write

public void write(java.io.ByteArrayOutputStream tagBuffer)
Write the frame. Writes the frame header but writing the data is delegated to the frame body.

Specified by:
write in class AbstractID3v2Frame
Throws:
java.io.IOException

getStatusFlags

protected AbstractID3v2Frame.StatusFlags getStatusFlags()
Get Status Flags Object

Overrides:
getStatusFlags in class AbstractID3v2Frame

getEncodingFlags

protected AbstractID3v2Frame.EncodingFlags getEncodingFlags()
Get Encoding Flags Object

Overrides:
getEncodingFlags in class AbstractID3v2Frame

isValidID3v2FrameIdentifier

public boolean isValidID3v2FrameIdentifier(java.lang.String identifier)
Does the frame identifier meet the syntax for a idv3v2 frame identifier. must start with a capital letter and only contain capital letters and numbers

Parameters:
identifier - to be checked
Returns:
whether the identifier is valid

createStructure

public void createStructure()
Return String Representation of body

Overrides:
createStructure in class AbstractID3v2Frame

isCommon

public boolean isCommon()
Description copied from interface: TagField
Identifies a field to be of common use.

Some software may differ between common and not common fields. A common one is for sure the title field. A web link may not be of common use for tagging. However some file formats, or future development of users expectations will make more fields common than now can be known.

Returns:
true if considered a common frame

isBinary

public boolean isBinary()
Description copied from interface: TagField
Determines whether the represented field contains (is made up of) binary data, instead of text data.
Software can identify fields to be displayed because they are human readable if this method returns false.

Returns:
true if considered a common frame