Coverage Report - org.jaudiotagger.tag.id3.ID3v23Frames
 
Classes in this File Line Coverage Branch Coverage Complexity
ID3v23Frames
100%
248/248
100%
2/2
0
 
 1  
 /*
 2  
  * Jaudiotagger Copyright (C)2004,2005
 3  
  *
 4  
  * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser
 5  
  * General Public  License as published by the Free Software Foundation; either version 2.1 of the License,
 6  
  * or (at your option) any later version.
 7  
  *
 8  
  * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
 9  
  * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 10  
  * See the GNU Lesser General Public License for more details.
 11  
  *
 12  
  * You should have received a copy of the GNU Lesser General Public License along with this library; if not,
 13  
  * you can get a copy from http://www.opensource.org/licenses/lgpl-license.php or write to the Free Software
 14  
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 15  
  */
 16  
 package org.jaudiotagger.tag.id3;
 17  
 
 18  
 import org.jaudiotagger.tag.TagFieldKey;
 19  
 
 20  
 import java.util.EnumMap;
 21  
 
 22  
 /**
 23  
  * Defines ID3v23 frames and collections that categorise frames within an ID3v23 tag.
 24  
  * <p/>
 25  
  * You can include frames here that are not officially supported as long as they can be used within an
 26  
  * ID3v23Tag
 27  
  *
 28  
  * @author Paul Taylor
 29  
  * @version $Id: ID3v23Frames.java,v 1.13 2008/12/05 11:11:54 paultaylor Exp $
 30  
  */
 31  
 public class ID3v23Frames extends ID3Frames
 32  
 {
 33  
     /**
 34  
      * Define all frames that are valid within ID3v23
 35  
      * Frame IDs begining with T are text frames, & with W are url frames
 36  
      */
 37  
     public static final String FRAME_ID_V3_ACCOMPANIMENT = "TPE2";
 38  
     public static final String FRAME_ID_V3_ALBUM = "TALB";
 39  
     public static final String FRAME_ID_V3_ARTIST = "TPE1";
 40  
     public static final String FRAME_ID_V3_ATTACHED_PICTURE = "APIC";
 41  
     public static final String FRAME_ID_V3_AUDIO_ENCRYPTION = "AENC";
 42  
     public static final String FRAME_ID_V3_BPM = "TBPM";
 43  
     public static final String FRAME_ID_V3_COMMENT = "COMM";
 44  
     public static final String FRAME_ID_V3_COMMERCIAL_FRAME = "COMR";
 45  
     public static final String FRAME_ID_V3_COMPOSER = "TCOM";
 46  
     public static final String FRAME_ID_V3_CONDUCTOR = "TPE3";
 47  
     public static final String FRAME_ID_V3_CONTENT_GROUP_DESC = "TIT1";
 48  
     public static final String FRAME_ID_V3_COPYRIGHTINFO = "TCOP";
 49  
     public static final String FRAME_ID_V3_ENCODEDBY = "TENC";
 50  
     public static final String FRAME_ID_V3_ENCRYPTION = "ENCR";
 51  
     public static final String FRAME_ID_V3_EQUALISATION = "EQUA";
 52  
     public static final String FRAME_ID_V3_EVENT_TIMING_CODES = "ETCO";
 53  
     public static final String FRAME_ID_V3_FILE_OWNER = "TOWN";
 54  
     public static final String FRAME_ID_V3_FILE_TYPE = "TFLT";
 55  
     public static final String FRAME_ID_V3_GENERAL_ENCAPS_OBJECT = "GEOB";
 56  
     public static final String FRAME_ID_V3_GENRE = "TCON";
 57  
     public static final String FRAME_ID_V3_GROUP_ID_REG = "GRID";
 58  
     public static final String FRAME_ID_V3_HW_SW_SETTINGS = "TSSE";
 59  
     public static final String FRAME_ID_V3_INITIAL_KEY = "TKEY";
 60  
     public static final String FRAME_ID_V3_IPLS = "IPLS";
 61  
     public static final String FRAME_ID_V3_ISRC = "TSRC";
 62  
     public static final String FRAME_ID_V3_LANGUAGE = "TLAN";
 63  
     public static final String FRAME_ID_V3_LENGTH = "TLEN";
 64  
     public static final String FRAME_ID_V3_LINKED_INFO = "LINK";
 65  
     public static final String FRAME_ID_V3_LYRICIST = "TEXT";
 66  
     public static final String FRAME_ID_V3_MEDIA_TYPE = "TMED";
 67  
     public static final String FRAME_ID_V3_MPEG_LOCATION_LOOKUP_TABLE = "MLLT";
 68  
     public static final String FRAME_ID_V3_MUSIC_CD_ID = "MCDI";
 69  
     public static final String FRAME_ID_V3_ORIGARTIST = "TOPE";
 70  
     public static final String FRAME_ID_V3_ORIG_FILENAME = "TOFN";
 71  
     public static final String FRAME_ID_V3_ORIG_LYRICIST = "TOLY";
 72  
     public static final String FRAME_ID_V3_ORIG_TITLE = "TOAL";
 73  
     public static final String FRAME_ID_V3_OWNERSHIP = "OWNE";
 74  
     public static final String FRAME_ID_V3_PLAYLIST_DELAY = "TDLY";
 75  
     public static final String FRAME_ID_V3_PLAY_COUNTER = "PCNT";
 76  
     public static final String FRAME_ID_V3_POPULARIMETER = "POPM";
 77  
     public static final String FRAME_ID_V3_POSITION_SYNC = "POSS";
 78  
     public static final String FRAME_ID_V3_PRIVATE = "PRIV";
 79  
     public static final String FRAME_ID_V3_PUBLISHER = "TPUB";
 80  
     public static final String FRAME_ID_V3_RADIO_NAME = "TRSN";
 81  
     public static final String FRAME_ID_V3_RADIO_OWNER = "TRSO";
 82  
     public static final String FRAME_ID_V3_RECOMMENDED_BUFFER_SIZE = "RBUF";
 83  
     public static final String FRAME_ID_V3_RELATIVE_VOLUME_ADJUSTMENT = "RVAD";
 84  
     public static final String FRAME_ID_V3_REMIXED = "TPE4";
 85  
     public static final String FRAME_ID_V3_REVERB = "RVRB";
 86  
     public static final String FRAME_ID_V3_SET = "TPOS";
 87  
     public static final String FRAME_ID_V3_SYNC_LYRIC = "SYLT";
 88  
     public static final String FRAME_ID_V3_SYNC_TEMPO = "SYTC";
 89  
     public static final String FRAME_ID_V3_TDAT = "TDAT";
 90  
     public static final String FRAME_ID_V3_TERMS_OF_USE = "USER";
 91  
     public static final String FRAME_ID_V3_TIME = "TIME";
 92  
     public static final String FRAME_ID_V3_TITLE = "TIT2";
 93  
     public static final String FRAME_ID_V3_TITLE_REFINEMENT = "TIT3";
 94  
     public static final String FRAME_ID_V3_TORY = "TORY";
 95  
     public static final String FRAME_ID_V3_TRACK = "TRCK";
 96  
     public static final String FRAME_ID_V3_TRDA = "TRDA";
 97  
     public static final String FRAME_ID_V3_TSIZ = "TSIZ";
 98  
     public static final String FRAME_ID_V3_TYER = "TYER";
 99  
     public static final String FRAME_ID_V3_UNIQUE_FILE_ID = "UFID";
 100  
     public static final String FRAME_ID_V3_UNSYNC_LYRICS = "USLT";
 101  
     public static final String FRAME_ID_V3_URL_ARTIST_WEB = "WOAR";
 102  
     public static final String FRAME_ID_V3_URL_COMMERCIAL = "WCOM";
 103  
     public static final String FRAME_ID_V3_URL_COPYRIGHT = "WCOP";
 104  
     public static final String FRAME_ID_V3_URL_FILE_WEB = "WOAF";
 105  
     public static final String FRAME_ID_V3_URL_OFFICIAL_RADIO = "WORS";
 106  
     public static final String FRAME_ID_V3_URL_PAYMENT = "WPAY";
 107  
     public static final String FRAME_ID_V3_URL_PUBLISHERS = "WPUB";
 108  
     public static final String FRAME_ID_V3_URL_SOURCE_WEB = "WOAS";
 109  
     public static final String FRAME_ID_V3_USER_DEFINED_INFO = "TXXX";
 110  
     public static final String FRAME_ID_V3_USER_DEFINED_URL = "WXXX";
 111  
 
 112  
     public static final String FRAME_ID_V3_IS_COMPILATION = "TCMP";
 113  
     public static final String FRAME_ID_V3_TITLE_SORT_ORDER_ITUNES = "TSOT";
 114  
     public static final String FRAME_ID_V3_ARTIST_SORT_ORDER_ITUNES = "TSOP";
 115  
     public static final String FRAME_ID_V3_ALBUM_SORT_ORDER_ITUNES = "TSOA";
 116  
     public static final String FRAME_ID_V3_TITLE_SORT_ORDER_MUSICBRAINZ = "XSOT";
 117  
     public static final String FRAME_ID_V3_ARTIST_SORT_ORDER_MUSICBRAINZ = "XSOP";
 118  
     public static final String FRAME_ID_V3_ALBUM_SORT_ORDER_MUSICBRAINZ = "XSOA";
 119  
     public static final String FRAME_ID_V3_ALBUM_ARTIST_SORT_ORDER_ITUNES = "TSO2";
 120  
     public static final String FRAME_ID_V3_COMPOSER_SORT_ORDER_ITUNES = "TSOC";
 121  
 
 122  
     private static ID3v23Frames id3v23Frames;
 123  
 
 124  
     /**
 125  
      * Maps from Generic key to ID3 key
 126  
      */
 127  42
     protected EnumMap<TagFieldKey, ID3v23FieldKey> tagFieldToId3 = new EnumMap<TagFieldKey, ID3v23FieldKey>(TagFieldKey.class);
 128  
 
 129  
     public static ID3v23Frames getInstanceOf()
 130  
     {
 131  3477
         if (id3v23Frames == null)
 132  
         {
 133  42
             id3v23Frames = new ID3v23Frames();
 134  
         }
 135  3477
         return id3v23Frames;
 136  
     }
 137  
 
 138  
     private ID3v23Frames()
 139  42
     {
 140  
         // The defined v23 frames,
 141  42
         supportedFrames.add(FRAME_ID_V3_ACCOMPANIMENT);
 142  42
         supportedFrames.add(FRAME_ID_V3_ALBUM);
 143  42
         supportedFrames.add(FRAME_ID_V3_ARTIST);
 144  42
         supportedFrames.add(FRAME_ID_V3_ATTACHED_PICTURE);
 145  42
         supportedFrames.add(FRAME_ID_V3_AUDIO_ENCRYPTION);
 146  42
         supportedFrames.add(FRAME_ID_V3_BPM);
 147  42
         supportedFrames.add(FRAME_ID_V3_COMMENT);
 148  42
         supportedFrames.add(FRAME_ID_V3_COMMERCIAL_FRAME);
 149  42
         supportedFrames.add(FRAME_ID_V3_COMPOSER);
 150  42
         supportedFrames.add(FRAME_ID_V3_CONDUCTOR);
 151  42
         supportedFrames.add(FRAME_ID_V3_CONTENT_GROUP_DESC);
 152  42
         supportedFrames.add(FRAME_ID_V3_COPYRIGHTINFO);
 153  42
         supportedFrames.add(FRAME_ID_V3_ENCODEDBY);
 154  42
         supportedFrames.add(FRAME_ID_V3_ENCRYPTION);
 155  42
         supportedFrames.add(FRAME_ID_V3_EQUALISATION);
 156  42
         supportedFrames.add(FRAME_ID_V3_EVENT_TIMING_CODES);
 157  42
         supportedFrames.add(FRAME_ID_V3_FILE_OWNER);
 158  42
         supportedFrames.add(FRAME_ID_V3_FILE_TYPE);
 159  42
         supportedFrames.add(FRAME_ID_V3_GENERAL_ENCAPS_OBJECT);
 160  42
         supportedFrames.add(FRAME_ID_V3_GENRE);
 161  42
         supportedFrames.add(FRAME_ID_V3_GROUP_ID_REG);
 162  42
         supportedFrames.add(FRAME_ID_V3_HW_SW_SETTINGS);
 163  42
         supportedFrames.add(FRAME_ID_V3_INITIAL_KEY);
 164  42
         supportedFrames.add(FRAME_ID_V3_IPLS);
 165  42
         supportedFrames.add(FRAME_ID_V3_ISRC);
 166  42
         supportedFrames.add(FRAME_ID_V3_LANGUAGE);
 167  42
         supportedFrames.add(FRAME_ID_V3_LENGTH);
 168  42
         supportedFrames.add(FRAME_ID_V3_LINKED_INFO);
 169  42
         supportedFrames.add(FRAME_ID_V3_LYRICIST);
 170  42
         supportedFrames.add(FRAME_ID_V3_MEDIA_TYPE);
 171  42
         supportedFrames.add(FRAME_ID_V3_MPEG_LOCATION_LOOKUP_TABLE);
 172  42
         supportedFrames.add(FRAME_ID_V3_MUSIC_CD_ID);
 173  42
         supportedFrames.add(FRAME_ID_V3_ORIGARTIST);
 174  42
         supportedFrames.add(FRAME_ID_V3_ORIG_FILENAME);
 175  42
         supportedFrames.add(FRAME_ID_V3_ORIG_LYRICIST);
 176  42
         supportedFrames.add(FRAME_ID_V3_ORIG_TITLE);
 177  42
         supportedFrames.add(FRAME_ID_V3_OWNERSHIP);
 178  42
         supportedFrames.add(FRAME_ID_V3_PLAYLIST_DELAY);
 179  42
         supportedFrames.add(FRAME_ID_V3_PLAY_COUNTER);
 180  42
         supportedFrames.add(FRAME_ID_V3_POPULARIMETER);
 181  42
         supportedFrames.add(FRAME_ID_V3_POSITION_SYNC);
 182  42
         supportedFrames.add(FRAME_ID_V3_PRIVATE);
 183  42
         supportedFrames.add(FRAME_ID_V3_PUBLISHER);
 184  42
         supportedFrames.add(FRAME_ID_V3_RADIO_NAME);
 185  42
         supportedFrames.add(FRAME_ID_V3_RADIO_OWNER);
 186  42
         supportedFrames.add(FRAME_ID_V3_RECOMMENDED_BUFFER_SIZE);
 187  42
         supportedFrames.add(FRAME_ID_V3_RELATIVE_VOLUME_ADJUSTMENT);
 188  42
         supportedFrames.add(FRAME_ID_V3_REMIXED);
 189  42
         supportedFrames.add(FRAME_ID_V3_REVERB);
 190  42
         supportedFrames.add(FRAME_ID_V3_SET);
 191  42
         supportedFrames.add(FRAME_ID_V3_SYNC_LYRIC);
 192  42
         supportedFrames.add(FRAME_ID_V3_SYNC_TEMPO);
 193  42
         supportedFrames.add(FRAME_ID_V3_TDAT);
 194  42
         supportedFrames.add(FRAME_ID_V3_TERMS_OF_USE);
 195  42
         supportedFrames.add(FRAME_ID_V3_TIME);
 196  42
         supportedFrames.add(FRAME_ID_V3_TITLE);
 197  42
         supportedFrames.add(FRAME_ID_V3_TITLE_REFINEMENT);
 198  42
         supportedFrames.add(FRAME_ID_V3_TORY);
 199  42
         supportedFrames.add(FRAME_ID_V3_TRACK);
 200  42
         supportedFrames.add(FRAME_ID_V3_TRDA);
 201  42
         supportedFrames.add(FRAME_ID_V3_TSIZ);
 202  42
         supportedFrames.add(FRAME_ID_V3_TYER);
 203  42
         supportedFrames.add(FRAME_ID_V3_UNIQUE_FILE_ID);
 204  42
         supportedFrames.add(FRAME_ID_V3_UNSYNC_LYRICS);
 205  42
         supportedFrames.add(FRAME_ID_V3_URL_ARTIST_WEB);
 206  42
         supportedFrames.add(FRAME_ID_V3_URL_COMMERCIAL);
 207  42
         supportedFrames.add(FRAME_ID_V3_URL_COPYRIGHT);
 208  42
         supportedFrames.add(FRAME_ID_V3_URL_FILE_WEB);
 209  42
         supportedFrames.add(FRAME_ID_V3_URL_OFFICIAL_RADIO);
 210  42
         supportedFrames.add(FRAME_ID_V3_URL_PAYMENT);
 211  42
         supportedFrames.add(FRAME_ID_V3_URL_PUBLISHERS);
 212  42
         supportedFrames.add(FRAME_ID_V3_URL_SOURCE_WEB);
 213  42
         supportedFrames.add(FRAME_ID_V3_USER_DEFINED_INFO);
 214  42
         supportedFrames.add(FRAME_ID_V3_USER_DEFINED_URL);
 215  
 
 216  
         //Extension
 217  42
         extensionFrames.add(FRAME_ID_V3_IS_COMPILATION);
 218  42
         extensionFrames.add(FRAME_ID_V3_TITLE_SORT_ORDER_ITUNES);
 219  42
         extensionFrames.add(FRAME_ID_V3_ARTIST_SORT_ORDER_ITUNES);
 220  42
         extensionFrames.add(FRAME_ID_V3_ALBUM_SORT_ORDER_ITUNES);
 221  42
         extensionFrames.add(FRAME_ID_V3_TITLE_SORT_ORDER_MUSICBRAINZ);
 222  42
         extensionFrames.add(FRAME_ID_V3_ARTIST_SORT_ORDER_MUSICBRAINZ);
 223  42
         extensionFrames.add(FRAME_ID_V3_ALBUM_SORT_ORDER_MUSICBRAINZ);
 224  42
         extensionFrames.add(FRAME_ID_V3_ALBUM_ARTIST_SORT_ORDER_ITUNES);
 225  42
         extensionFrames.add(FRAME_ID_V3_COMPOSER_SORT_ORDER_ITUNES);
 226  
 
 227  
         //Common
 228  42
         commonFrames.add(FRAME_ID_V3_ARTIST);
 229  42
         commonFrames.add(FRAME_ID_V3_ALBUM);
 230  42
         commonFrames.add(FRAME_ID_V3_TITLE);
 231  42
         commonFrames.add(FRAME_ID_V3_GENRE);
 232  42
         commonFrames.add(FRAME_ID_V3_TRACK);
 233  42
         commonFrames.add(FRAME_ID_V3_TYER);
 234  42
         commonFrames.add(FRAME_ID_V3_COMMENT);
 235  
 
 236  
         //Binary
 237  42
         binaryFrames.add(FRAME_ID_V3_ATTACHED_PICTURE);
 238  42
         binaryFrames.add(FRAME_ID_V3_AUDIO_ENCRYPTION);
 239  42
         binaryFrames.add(FRAME_ID_V3_ENCRYPTION);
 240  42
         binaryFrames.add(FRAME_ID_V3_EQUALISATION);
 241  42
         binaryFrames.add(FRAME_ID_V3_EVENT_TIMING_CODES);
 242  42
         binaryFrames.add(FRAME_ID_V3_GENERAL_ENCAPS_OBJECT);
 243  42
         binaryFrames.add(FRAME_ID_V3_RELATIVE_VOLUME_ADJUSTMENT);
 244  42
         binaryFrames.add(FRAME_ID_V3_RECOMMENDED_BUFFER_SIZE);
 245  42
         binaryFrames.add(FRAME_ID_V3_UNIQUE_FILE_ID);
 246  
 
 247  
         // Map frameid to a name
 248  42
         idToValue.put(FRAME_ID_V3_ACCOMPANIMENT, "Text: Band/Orchestra/Accompaniment");
 249  42
         idToValue.put(FRAME_ID_V3_ALBUM, "Text: Album/Movie/Show title");
 250  42
         idToValue.put(FRAME_ID_V3_ARTIST, "Text: Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group");
 251  42
         idToValue.put(FRAME_ID_V3_ATTACHED_PICTURE, "Attached picture");
 252  42
         idToValue.put(FRAME_ID_V3_AUDIO_ENCRYPTION, "Audio encryption");
 253  42
         idToValue.put(FRAME_ID_V3_BPM, "Text: BPM (Beats Per Minute)");
 254  42
         idToValue.put(FRAME_ID_V3_COMMENT, "Comments");
 255  42
         idToValue.put(FRAME_ID_V3_COMMERCIAL_FRAME, "");
 256  42
         idToValue.put(FRAME_ID_V3_COMPOSER, "Text: Composer");
 257  42
         idToValue.put(FRAME_ID_V3_CONDUCTOR, "Text: Conductor/Performer refinement");
 258  42
         idToValue.put(FRAME_ID_V3_CONTENT_GROUP_DESC, "Text: Content group description");
 259  42
         idToValue.put(FRAME_ID_V3_COPYRIGHTINFO, "Text: Copyright message");
 260  42
         idToValue.put(FRAME_ID_V3_ENCODEDBY, "Text: Encoded by");
 261  42
         idToValue.put(FRAME_ID_V3_ENCRYPTION, "Encryption method registration");
 262  42
         idToValue.put(FRAME_ID_V3_EQUALISATION, "Equalization");
 263  42
         idToValue.put(FRAME_ID_V3_EVENT_TIMING_CODES, "Event timing codes");
 264  42
         idToValue.put(FRAME_ID_V3_FILE_OWNER, "");
 265  42
         idToValue.put(FRAME_ID_V3_FILE_TYPE, "Text: File type");
 266  42
         idToValue.put(FRAME_ID_V3_GENERAL_ENCAPS_OBJECT, "General encapsulated datatype");
 267  42
         idToValue.put(FRAME_ID_V3_GENRE, "Text: Content type");
 268  42
         idToValue.put(FRAME_ID_V3_GROUP_ID_REG, "");
 269  42
         idToValue.put(FRAME_ID_V3_HW_SW_SETTINGS, "Text: Software/hardware and settings used for encoding");
 270  42
         idToValue.put(FRAME_ID_V3_INITIAL_KEY, "Text: Initial key");
 271  42
         idToValue.put(FRAME_ID_V3_IPLS, "Involved people list");
 272  42
         idToValue.put(FRAME_ID_V3_ISRC, "Text: ISRC (International Standard Recording Code)");
 273  42
         idToValue.put(FRAME_ID_V3_LANGUAGE, "Text: Language(s)");
 274  42
         idToValue.put(FRAME_ID_V3_LENGTH, "Text: Length");
 275  42
         idToValue.put(FRAME_ID_V3_LINKED_INFO, "Linked information");
 276  42
         idToValue.put(FRAME_ID_V3_LYRICIST, "Text: Lyricist/text writer");
 277  42
         idToValue.put(FRAME_ID_V3_MEDIA_TYPE, "Text: Media type");
 278  42
         idToValue.put(FRAME_ID_V3_MPEG_LOCATION_LOOKUP_TABLE, "MPEG location lookup table");
 279  42
         idToValue.put(FRAME_ID_V3_MUSIC_CD_ID, "Music CD Identifier");
 280  42
         idToValue.put(FRAME_ID_V3_ORIGARTIST, "Text: Original artist(s)/performer(s)");
 281  42
         idToValue.put(FRAME_ID_V3_ORIG_FILENAME, "Text: Original filename");
 282  42
         idToValue.put(FRAME_ID_V3_ORIG_LYRICIST, "Text: Original Lyricist(s)/text writer(s)");
 283  42
         idToValue.put(FRAME_ID_V3_ORIG_TITLE, "Text: Original album/Movie/Show title");
 284  42
         idToValue.put(FRAME_ID_V3_OWNERSHIP, "");
 285  42
         idToValue.put(FRAME_ID_V3_PLAYLIST_DELAY, "Text: Playlist delay");
 286  42
         idToValue.put(FRAME_ID_V3_PLAY_COUNTER, "Play counter");
 287  42
         idToValue.put(FRAME_ID_V3_POPULARIMETER, "Popularimeter");
 288  42
         idToValue.put(FRAME_ID_V3_POSITION_SYNC, "Position Sync");
 289  42
         idToValue.put(FRAME_ID_V3_PRIVATE, "Private frame");
 290  42
         idToValue.put(FRAME_ID_V3_PUBLISHER, "Text: Publisher");
 291  42
         idToValue.put(FRAME_ID_V3_RADIO_NAME, "");
 292  42
         idToValue.put(FRAME_ID_V3_RADIO_OWNER, "");
 293  42
         idToValue.put(FRAME_ID_V3_RECOMMENDED_BUFFER_SIZE, "Recommended buffer size");
 294  42
         idToValue.put(FRAME_ID_V3_RELATIVE_VOLUME_ADJUSTMENT, "Relative volume adjustment");
 295  42
         idToValue.put(FRAME_ID_V3_REMIXED, "Text: Interpreted, remixed, or otherwise modified by");
 296  42
         idToValue.put(FRAME_ID_V3_REVERB, "Reverb");
 297  42
         idToValue.put(FRAME_ID_V3_SET, "Text: Part of a set");
 298  42
         idToValue.put(FRAME_ID_V3_SYNC_LYRIC, "Synchronized lyric/text");
 299  42
         idToValue.put(FRAME_ID_V3_SYNC_TEMPO, "Synced tempo codes");
 300  42
         idToValue.put(FRAME_ID_V3_TDAT, "Text: Date");
 301  42
         idToValue.put(FRAME_ID_V3_TERMS_OF_USE, "");
 302  42
         idToValue.put(FRAME_ID_V3_TIME, "Text: Time");
 303  42
         idToValue.put(FRAME_ID_V3_TITLE, "Text: Title/Songname/Content description");
 304  42
         idToValue.put(FRAME_ID_V3_TITLE_REFINEMENT, "Text: Subtitle/Description refinement");
 305  42
         idToValue.put(FRAME_ID_V3_TORY, "Text: Original release year");
 306  42
         idToValue.put(FRAME_ID_V3_TRACK, "Text: Track number/Position in set");
 307  42
         idToValue.put(FRAME_ID_V3_TRDA, "Text: Recording dates");
 308  42
         idToValue.put(FRAME_ID_V3_TSIZ, "Text: Size");
 309  42
         idToValue.put(FRAME_ID_V3_TYER, "Text: Year");
 310  42
         idToValue.put(FRAME_ID_V3_UNIQUE_FILE_ID, "Unique file identifier");
 311  42
         idToValue.put(FRAME_ID_V3_UNSYNC_LYRICS, "Unsychronized lyric/text transcription");
 312  42
         idToValue.put(FRAME_ID_V3_URL_ARTIST_WEB, "URL: Official artist/performer webpage");
 313  42
         idToValue.put(FRAME_ID_V3_URL_COMMERCIAL, "URL: Commercial information");
 314  42
         idToValue.put(FRAME_ID_V3_URL_COPYRIGHT, "URL: Copyright/Legal information");
 315  42
         idToValue.put(FRAME_ID_V3_URL_FILE_WEB, "URL: Official audio file webpage");
 316  42
         idToValue.put(FRAME_ID_V3_URL_OFFICIAL_RADIO, "Official Radio");
 317  42
         idToValue.put(FRAME_ID_V3_URL_PAYMENT, "URL: Payment");
 318  42
         idToValue.put(FRAME_ID_V3_URL_PUBLISHERS, "URL: Publishers official webpage");
 319  42
         idToValue.put(FRAME_ID_V3_URL_SOURCE_WEB, "URL: Official audio source webpage");
 320  42
         idToValue.put(FRAME_ID_V3_USER_DEFINED_INFO, "User defined text information frame");
 321  42
         idToValue.put(FRAME_ID_V3_USER_DEFINED_URL, "User defined URL link frame");
 322  42
         idToValue.put(FRAME_ID_V3_IS_COMPILATION, "Is Compilation");
 323  42
         idToValue.put(FRAME_ID_V3_TITLE_SORT_ORDER_ITUNES, "Text: title sort order");
 324  42
         idToValue.put(FRAME_ID_V3_ARTIST_SORT_ORDER_ITUNES, "Text: artist sort order");
 325  42
         idToValue.put(FRAME_ID_V3_ALBUM_SORT_ORDER_ITUNES, "Text: album sort order");
 326  42
         idToValue.put(FRAME_ID_V3_TITLE_SORT_ORDER_MUSICBRAINZ, "Text: title sort order");
 327  42
         idToValue.put(FRAME_ID_V3_ARTIST_SORT_ORDER_MUSICBRAINZ, "Text: artist sort order");
 328  42
         idToValue.put(FRAME_ID_V3_ALBUM_SORT_ORDER_MUSICBRAINZ, "Text: album sort order");
 329  42
         idToValue.put(FRAME_ID_V3_ALBUM_ARTIST_SORT_ORDER_ITUNES, "Text:Album Artist Sort Order Frame");
 330  42
         idToValue.put(FRAME_ID_V3_COMPOSER_SORT_ORDER_ITUNES, "Text:Composer Sort Order Frame");
 331  
 
 332  42
         createMaps();
 333  
 
 334  42
         multipleFrames.add(FRAME_ID_V3_USER_DEFINED_INFO);
 335  42
         multipleFrames.add(FRAME_ID_V3_USER_DEFINED_URL);
 336  42
         multipleFrames.add(FRAME_ID_V3_ATTACHED_PICTURE);
 337  42
         multipleFrames.add(FRAME_ID_V3_PRIVATE);
 338  42
         multipleFrames.add(FRAME_ID_V3_COMMENT);
 339  42
         multipleFrames.add(FRAME_ID_V3_UNIQUE_FILE_ID);
 340  42
         multipleFrames.add(FRAME_ID_V3_UNSYNC_LYRICS);
 341  42
         multipleFrames.add(FRAME_ID_V3_POPULARIMETER);
 342  
 
 343  42
         discardIfFileAlteredFrames.add(FRAME_ID_V3_EVENT_TIMING_CODES);
 344  42
         discardIfFileAlteredFrames.add(FRAME_ID_V3_EQUALISATION);
 345  42
         discardIfFileAlteredFrames.add(FRAME_ID_V3_MPEG_LOCATION_LOOKUP_TABLE);
 346  42
         discardIfFileAlteredFrames.add(FRAME_ID_V3_POSITION_SYNC);
 347  42
         discardIfFileAlteredFrames.add(FRAME_ID_V3_SYNC_LYRIC);
 348  42
         discardIfFileAlteredFrames.add(FRAME_ID_V3_SYNC_TEMPO);
 349  42
         discardIfFileAlteredFrames.add(FRAME_ID_V3_RELATIVE_VOLUME_ADJUSTMENT);
 350  42
         discardIfFileAlteredFrames.add(FRAME_ID_V3_EVENT_TIMING_CODES);
 351  42
         discardIfFileAlteredFrames.add(FRAME_ID_V3_ENCODEDBY);
 352  42
         discardIfFileAlteredFrames.add(FRAME_ID_V3_LENGTH);
 353  42
         discardIfFileAlteredFrames.add(FRAME_ID_V3_TSIZ);
 354  
 
 355  
         //Mapping to generic key
 356  42
         tagFieldToId3.put(TagFieldKey.ARTIST, ID3v23FieldKey.ARTIST);
 357  42
         tagFieldToId3.put(TagFieldKey.ALBUM, ID3v23FieldKey.ALBUM);
 358  42
         tagFieldToId3.put(TagFieldKey.TITLE, ID3v23FieldKey.TITLE);
 359  42
         tagFieldToId3.put(TagFieldKey.TRACK, ID3v23FieldKey.TRACK);
 360  42
         tagFieldToId3.put(TagFieldKey.YEAR, ID3v23FieldKey.YEAR);
 361  42
         tagFieldToId3.put(TagFieldKey.GENRE, ID3v23FieldKey.GENRE);
 362  42
         tagFieldToId3.put(TagFieldKey.COMMENT, ID3v23FieldKey.COMMENT);
 363  42
         tagFieldToId3.put(TagFieldKey.ALBUM_ARTIST, ID3v23FieldKey.ALBUM_ARTIST);
 364  42
         tagFieldToId3.put(TagFieldKey.COMPOSER, ID3v23FieldKey.COMPOSER);
 365  42
         tagFieldToId3.put(TagFieldKey.GROUPING, ID3v23FieldKey.GROUPING);
 366  42
         tagFieldToId3.put(TagFieldKey.DISC_NO, ID3v23FieldKey.DISC_NO);
 367  42
         tagFieldToId3.put(TagFieldKey.BPM, ID3v23FieldKey.BPM);
 368  42
         tagFieldToId3.put(TagFieldKey.ENCODER, ID3v23FieldKey.ENCODER);
 369  42
         tagFieldToId3.put(TagFieldKey.MUSICBRAINZ_ARTISTID, ID3v23FieldKey.MUSICBRAINZ_ARTISTID);
 370  42
         tagFieldToId3.put(TagFieldKey.MUSICBRAINZ_RELEASEID, ID3v23FieldKey.MUSICBRAINZ_RELEASEID);
 371  42
         tagFieldToId3.put(TagFieldKey.MUSICBRAINZ_RELEASEARTISTID, ID3v23FieldKey.MUSICBRAINZ_RELEASEARTISTID);
 372  42
         tagFieldToId3.put(TagFieldKey.MUSICBRAINZ_TRACK_ID, ID3v23FieldKey.MUSICBRAINZ_TRACK_ID);
 373  42
         tagFieldToId3.put(TagFieldKey.MUSICBRAINZ_DISC_ID, ID3v23FieldKey.MUSICBRAINZ_DISC_ID);
 374  42
         tagFieldToId3.put(TagFieldKey.MUSICIP_ID, ID3v23FieldKey.MUSICIP_ID);
 375  42
         tagFieldToId3.put(TagFieldKey.AMAZON_ID, ID3v23FieldKey.AMAZON_ID);
 376  42
         tagFieldToId3.put(TagFieldKey.MUSICBRAINZ_RELEASE_STATUS, ID3v23FieldKey.MUSICBRAINZ_RELEASE_STATUS);
 377  42
         tagFieldToId3.put(TagFieldKey.MUSICBRAINZ_RELEASE_TYPE, ID3v23FieldKey.MUSICBRAINZ_RELEASE_TYPE);
 378  42
         tagFieldToId3.put(TagFieldKey.MUSICBRAINZ_RELEASE_COUNTRY, ID3v23FieldKey.MUSICBRAINZ_RELEASE_COUNTRY);
 379  42
         tagFieldToId3.put(TagFieldKey.LYRICS, ID3v23FieldKey.LYRICS);
 380  42
         tagFieldToId3.put(TagFieldKey.IS_COMPILATION, ID3v23FieldKey.IS_COMPILATION);
 381  42
         tagFieldToId3.put(TagFieldKey.ARTIST_SORT, ID3v23FieldKey.ARTIST_SORT);
 382  42
         tagFieldToId3.put(TagFieldKey.ALBUM_ARTIST_SORT, ID3v23FieldKey.ALBUM_ARTIST_SORT);
 383  42
         tagFieldToId3.put(TagFieldKey.ALBUM_SORT, ID3v23FieldKey.ALBUM_SORT);
 384  42
         tagFieldToId3.put(TagFieldKey.TITLE_SORT, ID3v23FieldKey.TITLE_SORT);
 385  42
         tagFieldToId3.put(TagFieldKey.COMPOSER_SORT, ID3v23FieldKey.COMPOSER_SORT);
 386  42
         tagFieldToId3.put(TagFieldKey.COVER_ART, ID3v23FieldKey.COVER_ART);
 387  42
         tagFieldToId3.put(TagFieldKey.URL_DISCOGS_ARTIST_SITE, ID3v23FieldKey.URL_DISCOGS_ARTIST_SITE);
 388  42
         tagFieldToId3.put(TagFieldKey.URL_DISCOGS_RELEASE_SITE, ID3v23FieldKey.URL_DISCOGS_RELEASE_SITE);
 389  42
         tagFieldToId3.put(TagFieldKey.URL_WIKIPEDIA_ARTIST_SITE, ID3v23FieldKey.URL_WIKIPEDIA_ARTIST_SITE);
 390  42
         tagFieldToId3.put(TagFieldKey.URL_WIKIPEDIA_RELEASE_SITE, ID3v23FieldKey.URL_WIKIPEDIA_RELEASE_SITE);
 391  42
         tagFieldToId3.put(TagFieldKey.URL_OFFICIAL_ARTIST_SITE, ID3v23FieldKey.URL_OFFICIAL_ARTIST_SITE);
 392  42
         tagFieldToId3.put(TagFieldKey.URL_OFFICIAL_RELEASE_SITE, ID3v23FieldKey.URL_OFFICIAL_RELEASE_SITE);
 393  42
         tagFieldToId3.put(TagFieldKey.LANGUAGE, ID3v23FieldKey.LANGUAGE);
 394  42
         tagFieldToId3.put(TagFieldKey.KEY, ID3v23FieldKey.KEY);
 395  42
     }
 396  
 
 397  
 
 398  
     /**
 399  
      * @param genericKey
 400  
      * @return id3 key for generic key
 401  
      */
 402  
     public ID3v23FieldKey getId3KeyFromGenericKey(TagFieldKey genericKey)
 403  
     {
 404  82
         return tagFieldToId3.get(genericKey);
 405  
     }
 406  
 }