|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.jaudiotagger.tag.id3.AbstractTagItem
org.jaudiotagger.tag.id3.AbstractTag
org.jaudiotagger.tag.id3.AbstractID3Tag
org.jaudiotagger.tag.id3.AbstractID3v2Tag
public abstract class AbstractID3v2Tag
This is the abstract base class for all ID3v2 tags.
Field Summary | |
---|---|
java.util.HashMap |
frameMap
Map of all frames for this tag |
static int |
TAG_HEADER_LENGTH
|
Fields inherited from class org.jaudiotagger.tag.id3.AbstractID3Tag |
---|
logger |
Constructor Summary | |
---|---|
AbstractID3v2Tag()
Empty Constructor |
Method Summary | |
---|---|
void |
add(TagField field)
Adds a tagfield to the structure. |
void |
addAlbum(java.lang.String album)
Adds an album to the tag. |
void |
addArtist(java.lang.String artist)
Adds an artist to the tag. |
void |
addComment(java.lang.String comment)
Adds a comment to the tag. |
void |
addGenre(java.lang.String genre)
Adds a genre to the tag. |
void |
addTitle(java.lang.String title)
Adds a title to the tag. |
void |
addTrack(java.lang.String track)
Adds a track to the tag. |
void |
addYear(java.lang.String year)
Adds a year to the Tag. |
void |
adjustPadding(java.io.File file,
int paddingSize,
long audioStart)
Adjust the length of the padding at the beginning of the MP3 file, this is only called when there is currently not enough space before the start of the audio to write the tag. |
TagField |
createAlbumField(java.lang.String content)
|
TagField |
createArtistField(java.lang.String content)
|
TagField |
createArtworkField(byte[] data,
java.lang.String mimeType)
Create Artwork |
TagField |
createCommentField(java.lang.String content)
|
abstract AbstractID3v2Frame |
createFrame(java.lang.String id)
Create Frame of correct ID3 version with the specified id |
TagField |
createGenreField(java.lang.String content)
|
TagField |
createLinkedArtworkField(java.lang.String url)
Create a link to artwork, this is not recommended because the link may be broken if the mp3 or image file is moved |
void |
createStructure()
|
void |
createStructureBody()
|
void |
createStructureHeader()
|
TagField |
createTagField(TagFieldKey genericKey,
java.lang.String value)
Create a new TagField Only textual data supported at the moment. |
TagField |
createTitleField(java.lang.String content)
|
TagField |
createTrackField(java.lang.String content)
|
TagField |
createYearField(java.lang.String content)
|
void |
delete(java.io.RandomAccessFile file)
Delete Tag |
void |
deleteTagField(TagFieldKey genericKey)
Delete fields with this generic key |
boolean |
equals(java.lang.Object obj)
Is this tag equivalent to another |
java.util.List<TagField> |
get(java.lang.String id)
Retrieve the values that exists for this id3 frame id |
java.util.List<TagField> |
get(TagFieldKey genericKey)
Get field(s) for this key |
java.util.List |
getAlbum()
|
java.util.List |
getArtist()
|
java.util.List |
getComment()
|
int |
getDuplicateBytes()
Returns the number of bytes which come from duplicate frames |
java.lang.String |
getDuplicateFrameId()
Return the string which holds the ids of all duplicate frames. |
int |
getEmptyFrameBytes()
Returns the number of bytes which come from empty frames |
int |
getFieldCount()
Return the number of fields |
java.util.Iterator |
getFields()
Iterator over all the fields within the tag, handle multiple fields with the same id |
int |
getFileReadBytes()
Returns the tag size as reported by the tag header |
java.lang.String |
getFirst(java.lang.String identifier)
Retrieve the first value that exists for this identifier If the value is a String it returns that, otherwise returns a summary of the fields information |
java.lang.String |
getFirst(TagFieldKey genericKey)
Retrieve the first value that exists for this generic key |
java.lang.String |
getFirstAlbum()
|
java.lang.String |
getFirstArtist()
|
java.lang.String |
getFirstComment()
|
AbstractID3v2Frame |
getFirstField(java.lang.String identifier)
Retrieve the first tagfield that exists for this identifier |
java.lang.String |
getFirstGenre()
|
java.lang.String |
getFirstTitle()
|
java.lang.String |
getFirstTrack()
|
java.lang.String |
getFirstYear()
|
java.lang.Object |
getFrame(java.lang.String identifier)
For single frames return the frame in this tag with given identifier if it exists, if multiple frames exist with the same identifier it will return a list containing all the frames with this identifier Warning the match is only done against the identifier so if a tag contains a frame with an unsupported body but happens to have an identifier that is valid for another version of the tag it will be returned. |
int |
getFrameCount()
Return the number of frames in this tag of a particular type, multiple frames of the same time will only be counted once |
java.util.Iterator |
getFrameOfType(java.lang.String identifier)
Return all frames which start with the identifier, this can be more than one which is useful if trying to retrieve similar frames e.g TIT1,TIT2,TIT3 ... |
java.util.List |
getGenre()
|
int |
getInvalidFrameBytes()
Return byte count of invalid frames |
int |
getSize()
Return tag size based upon the sizes of the tags rather than the physical no of bytes between start of ID3Tag and start of Audio Data.Should be extended by subclasses to include header. |
java.util.List |
getTitle()
|
java.util.List |
getTrack()
|
static long |
getV2TagSizeIfExists(java.io.File file)
Checks to see if the file contains an ID3tag and if so return its size as reported in the tag header and return the size of the tag (including header), if no such tag exists return zero. |
java.util.List |
getYear()
|
boolean |
hasCommonFields()
Returns true , if at least one of the contained
fields is a common field (TagField.isCommon() ). |
boolean |
hasField(java.lang.String id)
Does this tag contain a field with the specified id |
boolean |
hasFrame(java.lang.String identifier)
Return whether tag has frame with this identifier Warning the match is only done against the identifier so if a tag contains a frame with an unsuported body but happens to have an identifier that is valid for another version of the tag it will return true |
boolean |
hasFrameAndBody(java.lang.String identifier)
Return whether tag has frame with this identifier and a related body. |
boolean |
hasFrameOfType(java.lang.String identifier)
Return whether tag has frame starting with this identifier Warning the match is only done against the identifier so if a tag contains a frame with an unsupported body but happens to have an identifier that is valid for another version of the tag it will return true |
boolean |
isEmpty()
Is this tag empty |
java.util.Iterator |
iterator()
Return the frames in the order they were added |
void |
removeFrame(java.lang.String identifier)
Remove frame(s) with this identifier from tag |
void |
removeFrameOfType(java.lang.String identifier)
Remove any frames starting with this identifier from tag |
void |
removeUnsupportedFrames()
Remove all frame(s) which have an unsupported body, in other words remove all frames that are not part of the standard frameset for this tag |
boolean |
seek(java.nio.ByteBuffer byteBuffer)
Does a tag of the correct version exist in this file. |
void |
set(TagField field)
|
void |
setAlbum(java.lang.String s)
|
void |
setArtist(java.lang.String s)
|
void |
setComment(java.lang.String s)
|
boolean |
setEncoding(java.lang.String enc)
|
void |
setFrame(AbstractID3v2Frame frame)
Add a frame to this tag |
void |
setFrame(java.lang.String identifier,
java.util.List<AbstractID3v2Frame> multiFrame)
Used for setting multiple frames for a single frame Identifier Warning if frame(s) already exists for this identifier thay are overwritten TODO needs to ensure do not add an invalid frame for this tag |
void |
setGenre(java.lang.String s)
|
void |
setTitle(java.lang.String s)
|
void |
setTrack(java.lang.String s)
|
void |
setYear(java.lang.String s)
|
void |
write(java.io.File file,
long audioStartByte)
Write tag to file. |
void |
write(java.io.RandomAccessFile file)
Write tag to file. |
void |
write(java.nio.channels.WritableByteChannel channel)
Write tag to channel. |
Methods inherited from class org.jaudiotagger.tag.id3.AbstractID3Tag |
---|
getIdentifier, getMajorVersion, getRelease, getRevision, toString |
Methods inherited from class org.jaudiotagger.tag.id3.AbstractTagItem |
---|
isSubsetOf, read |
Methods inherited from class java.lang.Object |
---|
getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface org.jaudiotagger.tag.Tag |
---|
toString |
Field Detail |
---|
public static final int TAG_HEADER_LENGTH
public java.util.HashMap frameMap
Constructor Detail |
---|
public AbstractID3v2Tag()
Method Detail |
---|
public int getDuplicateBytes()
public java.lang.String getDuplicateFrameId()
public int getEmptyFrameBytes()
public int getInvalidFrameBytes()
public int getFileReadBytes()
public boolean hasFrame(java.lang.String identifier)
identifier
- frameId to lookup
public boolean hasFrameAndBody(java.lang.String identifier)
identifier
- frameId to lookup
public boolean hasFrameOfType(java.lang.String identifier)
identifier
- start of frameId to lookup
public java.lang.Object getFrame(java.lang.String identifier)
identifier
- is an ID3Frame identifier
public java.lang.String getFirst(java.lang.String identifier)
getFirst
in interface Tag
identifier
-
public AbstractID3v2Frame getFirstField(java.lang.String identifier)
getFirstField
in interface Tag
identifier
-
public void setFrame(AbstractID3v2Frame frame)
frame
- the frame to add
Warning if frame(s) already exists for this identifier thay are overwritten
public void set(TagField field) throws FieldDataInvalidException
set
in interface Tag
field
-
FieldDataInvalidException
public void setAlbum(java.lang.String s) throws FieldDataInvalidException
setAlbum
in interface Tag
FieldDataInvalidException
public void setArtist(java.lang.String s) throws FieldDataInvalidException
setArtist
in interface Tag
FieldDataInvalidException
public void setComment(java.lang.String s) throws FieldDataInvalidException
setComment
in interface Tag
FieldDataInvalidException
public void setGenre(java.lang.String s) throws FieldDataInvalidException
setGenre
in interface Tag
FieldDataInvalidException
public void setTitle(java.lang.String s) throws FieldDataInvalidException
setTitle
in interface Tag
FieldDataInvalidException
public void setTrack(java.lang.String s) throws FieldDataInvalidException
setTrack
in interface Tag
FieldDataInvalidException
public void setYear(java.lang.String s) throws FieldDataInvalidException
setYear
in interface Tag
FieldDataInvalidException
public void add(TagField field) throws FieldDataInvalidException
Tag
It is not recommended to use this method for normal use of the
audiolibrary. The developer will circumvent the underlying
implementation. For example, if one adds a field with the field id
"TALB" for an mp3 file, and the given
TagField
implementation does not return a text field compliant data with
TagField.getRawContent()
other software and the audio library
won't read the file correctly, if they do read it at all.
So for short:
field
-
FieldDataInvalidException
public void addAlbum(java.lang.String album) throws FieldDataInvalidException
addAlbum
in interface Tag
album
- Album description
FieldDataInvalidException
public void addArtist(java.lang.String artist) throws FieldDataInvalidException
addArtist
in interface Tag
artist
- Artist's name
FieldDataInvalidException
public void addComment(java.lang.String comment) throws FieldDataInvalidException
addComment
in interface Tag
comment
- Comment.
FieldDataInvalidException
public void addGenre(java.lang.String genre) throws FieldDataInvalidException
addGenre
in interface Tag
genre
- Genre
FieldDataInvalidException
public void addTitle(java.lang.String title) throws FieldDataInvalidException
addTitle
in interface Tag
title
- Title
FieldDataInvalidException
public void addTrack(java.lang.String track) throws FieldDataInvalidException
addTrack
in interface Tag
track
- Track
FieldDataInvalidException
public void addYear(java.lang.String year) throws FieldDataInvalidException
addYear
in interface Tag
year
- Year
FieldDataInvalidException
public void setFrame(java.lang.String identifier, java.util.List<AbstractID3v2Frame> multiFrame)
public int getFrameCount()
public java.util.Iterator getFrameOfType(java.lang.String identifier)
identifier
-
public void delete(java.io.RandomAccessFile file) throws java.io.IOException
delete
in class AbstractTag
file
- to delete the tag from
java.io.IOException
- if problem accessing the file
public boolean equals(java.lang.Object obj)
equals
in class AbstractTag
obj
- to test for equivalence
public java.util.Iterator iterator()
iterator
in class AbstractTag
public void removeFrame(java.lang.String identifier)
identifier
- frameId to look forpublic void removeUnsupportedFrames()
public void removeFrameOfType(java.lang.String identifier)
identifier
- start of frameId to look forpublic void write(java.io.File file, long audioStartByte) throws java.io.IOException
file
- audioStartByte
-
java.io.IOException
- TODO should be abstractpublic void write(java.io.RandomAccessFile file) throws java.io.IOException
write
in class AbstractTag
file
-
java.io.IOException
- TODO should be abstractpublic void write(java.nio.channels.WritableByteChannel channel) throws java.io.IOException
channel
-
java.io.IOException
- TODO should be abstractpublic static long getV2TagSizeIfExists(java.io.File file) throws java.io.IOException
file
-
java.io.IOException
public boolean seek(java.nio.ByteBuffer byteBuffer)
seek
in class AbstractTag
byteBuffer
- to search through
public void adjustPadding(java.io.File file, int paddingSize, long audioStart) throws java.io.FileNotFoundException, java.io.IOException
ID3v2
tag.
The old file will be deleted, and the new file renamed.
paddingSize
- This is total size required to store tag before audiofile
- The file to adjust the padding length of
java.io.FileNotFoundException
- if the file exists but is a directory
rather than a regular file or cannot be opened for any other
reason
java.io.IOException
- on any I/O errorpublic int getSize()
getSize
in class AbstractTagItem
public void createStructure()
public void createStructureHeader()
public void createStructureBody()
public java.util.List<TagField> get(java.lang.String id) throws KeyNotFoundException
get
in interface Tag
id
- The field id.
TagField
objects with the given "id".
KeyNotFoundException
public java.util.List getAlbum()
getAlbum
in interface Tag
public java.util.List getArtist()
getArtist
in interface Tag
public java.util.List getComment()
getComment
in interface Tag
public java.util.List getGenre()
getGenre
in interface Tag
public java.util.List getTitle()
getTitle
in interface Tag
public java.util.List getTrack()
getTrack
in interface Tag
public java.util.List getYear()
getYear
in interface Tag
public java.lang.String getFirstAlbum()
getFirstAlbum
in interface Tag
public java.lang.String getFirstArtist()
getFirstArtist
in interface Tag
public java.lang.String getFirstComment()
getFirstComment
in interface Tag
public java.lang.String getFirstGenre()
getFirstGenre
in interface Tag
public java.lang.String getFirstTitle()
getFirstTitle
in interface Tag
public java.lang.String getFirstTrack()
getFirstTrack
in interface Tag
public java.lang.String getFirstYear()
getFirstYear
in interface Tag
public abstract AbstractID3v2Frame createFrame(java.lang.String id)
id
-
public TagField createArtistField(java.lang.String content)
content
-
public TagField createAlbumField(java.lang.String content)
content
-
public TagField createTitleField(java.lang.String content)
content
-
public TagField createTrackField(java.lang.String content)
content
-
public TagField createYearField(java.lang.String content)
content
-
public TagField createCommentField(java.lang.String content)
content
-
public TagField createGenreField(java.lang.String content)
content
-
public boolean hasCommonFields()
Tag
true
, if at least one of the contained
fields is a common field (TagField.isCommon()
).
hasCommonFields
in interface Tag
true
if a common
field is present.public boolean hasField(java.lang.String id)
hasField
in interface Tag
id
- The field id to look for.
true
if tag contains a TagField
with the
given id.Tag.hasField(java.lang.String)
public boolean isEmpty()
isEmpty
in interface Tag
true
if tag contains no field.Tag.isEmpty()
public java.util.Iterator getFields()
Tag
getFields
in interface Tag
public int getFieldCount()
Tag
Fields with the same identifiers are counted seperately i.e two title fields would contribute two to the count
getFieldCount
in interface Tag
public boolean setEncoding(java.lang.String enc) throws FieldDataInvalidException
setEncoding
in interface Tag
FieldDataInvalidException
public java.lang.String getFirst(TagFieldKey genericKey) throws KeyNotFoundException
getFirst
in interface Tag
genericKey
-
KeyNotFoundException
public TagField createTagField(TagFieldKey genericKey, java.lang.String value) throws KeyNotFoundException, FieldDataInvalidException
createTagField
in interface Tag
genericKey
- is the generic keyvalue
- to store
KeyNotFoundException
FieldDataInvalidException
public TagField createLinkedArtworkField(java.lang.String url)
url
- specifies the link, it could be a local file or could be a full url
public TagField createArtworkField(byte[] data, java.lang.String mimeType)
data
- mimeType
- of the imagePictureTypes
public void deleteTagField(TagFieldKey genericKey) throws KeyNotFoundException
deleteTagField
in interface Tag
genericKey
-
KeyNotFoundException
public java.util.List<TagField> get(TagFieldKey genericKey) throws KeyNotFoundException
get
in interface Tag
genericKey
-
KeyNotFoundException
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |