/* * Entagged Audio Tag library * Copyright (c) 2003-2005 Raphaël Slinckx <raphael@slinckx.net> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ package org.jaudiotagger.tag; import java.io.UnsupportedEncodingException; /** * Implementing classes represent a tag field for the entagged audio library.<br> * Very basic functionality is defined for use with * {@link org.jaudiotagger.tag.Tag}. * * @author Rapha�l Slinckx */ public interface TagField { /** * This method copies the data of the given field to the current data.<br> * * @param field The field containing the data to be taken. */ public void copyContent(TagField field); /** * Returns the Id of the represented tag field.<br> * This value should uniquely identify a kind of tag data, like title. * {@link org.jaudiotagger.audio.generic.AbstractTag} will use the "id" to summarize multiple * fields. * * @return Unique identifier for the fields type. (title, artist...) */ public String getId(); /** * This method delivers the binary representation of the fields data in * order to be directly written to the file.<br> * * @return Binary data representing the current tag field.<br> * @throws UnsupportedEncodingException Most tag data represents text. In some cases the underlying * implementation will need to convert the text data in java to * a specific charset encoding. In these cases an * {@link UnsupportedEncodingException} may occur. */ public byte[] getRawContent() throws UnsupportedEncodingException; /** * Determines whether the represented field contains (is made up of) binary * data, instead of text data.<br> * Software can identify fields to be displayed because they are human * readable if this method returns <code>false</code>. * * @return <code>true</code> if field represents binary data (not human * readable). */ public boolean isBinary(); /** * This method will set the field to represent binary data.<br> * <p/> * Some implementations may support conversions.<br> * As of now (Octobre 2005) there is no implementation really using this * method to perform useful operations. * * @param b <code>true</code>, if the field contains binary data. * //@deprecated As for now is of no use. Implementations should use another * // way of setting this property. */ public void isBinary(boolean b); /** * Identifies a field to be of common use.<br> * <p/> * 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. * * @return <code>true</code> if the field is of common use. */ public boolean isCommon(); /** * Determines whether the content of the field is empty.<br> * * @return <code>true</code> if no data is stored (or empty String). */ public boolean isEmpty(); /** * This method returns a human readable description of the fields contents.<br> * For text fields it should be the text itself. Other fields containing * images may return a formatted string with image properties like width, * height and so on. * * @return Description of the fields content. */ public String toString(); }