package org.jaudiotagger.audio.aiff;
import java.util.List;
import org.jaudiotagger.audio.generic.AbstractTag;
import org.jaudiotagger.audio.generic.GenericTag;
import org.jaudiotagger.audio.generic.Utils;
import org.jaudiotagger.tag.FieldDataInvalidException;
import org.jaudiotagger.tag.FieldKey;
import org.jaudiotagger.tag.KeyNotFoundException;
import org.jaudiotagger.tag.TagField;
import org.jaudiotagger.tag.TagTextField;
import org.jaudiotagger.tag.images.Artwork;
public class AiffTag extends GenericTag {
private class AiffTagTextField implements TagTextField
{
/**
* Stores the string.
*/
private String content;
/**
* Stores the identifier.
*/
private final String id;
/**
* Creates an instance.
*
* @param fieldId The identifier.
* @param initialContent The string.
*/
public AiffTagTextField(String fieldId, String initialContent)
{
this.id = fieldId;
this.content = initialContent;
}
/**
* (overridden)
*
* @see org.jaudiotagger.tag.TagField#copyContent(org.jaudiotagger.tag.TagField)
*/
public void copyContent(TagField field)
{
if (field instanceof TagTextField)
{
this.content = ((TagTextField) field).getContent();
}
}
/**
* (overridden)
*
* @see org.jaudiotagger.tag.TagTextField#getContent()
*/
public String getContent()
{
return this.content;
}
/**
* (overridden)
*
* @see org.jaudiotagger.tag.TagTextField#getEncoding()
*/
public String getEncoding()
{
return "ISO-8859-1";
}
/**
* (overridden)
*
* @see org.jaudiotagger.tag.TagField#getId()
*/
public String getId()
{
return id;
}
/**
* (overridden)
*
* @see org.jaudiotagger.tag.TagField#getRawContent()
*/
public byte[] getRawContent()
{
return this.content == null ? new byte[]{} : Utils.getDefaultBytes(this.content, getEncoding());
}
/**
* (overridden)
*
* @see org.jaudiotagger.tag.TagField#isBinary()
*/
public boolean isBinary()
{
return false;
}
/**
* (overridden)
*
* @see org.jaudiotagger.tag.TagField#isBinary(boolean)
*/
public void isBinary(boolean b)
{
/* not supported */
}
/**
* (overridden)
*
* @see org.jaudiotagger.tag.TagField#isCommon()
*/
public boolean isCommon()
{
return true;
}
/**
* (overridden)
*
* @see org.jaudiotagger.tag.TagField#isEmpty()
*/
public boolean isEmpty()
{
return this.content.equals("");
}
/**
* (overridden)
*
* @see org.jaudiotagger.tag.TagTextField#setContent(java.lang.String)
*/
public void setContent(String s)
{
this.content = s;
}
/**
* (overridden)
*
* @see org.jaudiotagger.tag.TagTextField#setEncoding(java.lang.String)
*/
public void setEncoding(String s)
{
/* Not allowed */
}
/**
* (overridden)
*
* @see java.lang.Object#toString()
*/
public String toString()
{
return getContent();
}
} // End of AiffTagTextField
public boolean hasField(AiffTagFieldKey fieldKey)
{
return hasField(fieldKey.name());
}
/**
* Create new AIFF-specific field and set it in the tag
*
* @param genericKey
* @param value
* @throws KeyNotFoundException
* @throws FieldDataInvalidException
*/
public void setField(AiffTagFieldKey genericKey, String value) throws KeyNotFoundException, FieldDataInvalidException
{
TagField tagfield = createField(genericKey,value);
setField(tagfield);
}
public TagField createField(AiffTagFieldKey genericKey, String value) throws KeyNotFoundException, FieldDataInvalidException
{
return new AiffTagTextField(genericKey.name(),value);
}
public TagField createCompilationField(boolean value) throws KeyNotFoundException, FieldDataInvalidException
{
return createField(FieldKey.IS_COMPILATION,String.valueOf(value));
}
}