Coverage Report - org.jaudiotagger.tag.id3.ID3v24Frames
 
Classes in this File Line Coverage Branch Coverage Complexity
ID3v24Frames
100%
255/255
100%
2/2
1.333
 
 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 getFields 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.FieldKey;
 19  
 
 20  
 import java.util.EnumMap;
 21  
 
 22  
 /**
 23  
  * Defines ID3v24 frames and collections that categorise frames.
 24  
  * <p/>
 25  
  * <p>You can include frames here that are not officially supported as long as they can be used within an
 26  
  * ID3v24Tag
 27  
  *
 28  
  * @author Paul Taylor
 29  
  * @version $Id: ID3v24Frames.java 830 2009-11-12 12:23:47Z paultaylor $
 30  
  */
 31  
 public class ID3v24Frames extends ID3Frames
 32  
 {
 33  
     /**
 34  
      * Frame IDs begining with T are text frames, & with W are url frames
 35  
      */
 36  
     public static final String FRAME_ID_ACCOMPANIMENT = "TPE2";
 37  
     public static final String FRAME_ID_ALBUM = "TALB";
 38  
     public static final String FRAME_ID_ALBUM_SORT_ORDER = "TSOA";
 39  
     public static final String FRAME_ID_ARTIST = "TPE1";
 40  
     public static final String FRAME_ID_ATTACHED_PICTURE = "APIC";
 41  
     public static final String FRAME_ID_AUDIO_ENCRYPTION = "AENC";
 42  
     public static final String FRAME_ID_AUDIO_SEEK_POINT_INDEX = "ASPI";
 43  
     public static final String FRAME_ID_BPM = "TBPM";
 44  
     public static final String FRAME_ID_COMMENT = "COMM";
 45  
     public static final String FRAME_ID_COMMERCIAL_FRAME = "COMR";
 46  
     public static final String FRAME_ID_COMPOSER = "TCOM";
 47  
     public static final String FRAME_ID_CONDUCTOR = "TPE3";
 48  
     public static final String FRAME_ID_CONTENT_GROUP_DESC = "TIT1";
 49  
     public static final String FRAME_ID_COPYRIGHTINFO = "TCOP";
 50  
     public static final String FRAME_ID_ENCODEDBY = "TENC";
 51  
     public static final String FRAME_ID_ENCODING_TIME = "TDEN";
 52  
     public static final String FRAME_ID_ENCRYPTION = "ENCR";
 53  
     public static final String FRAME_ID_EQUALISATION2 = "EQU2";
 54  
     public static final String FRAME_ID_EVENT_TIMING_CODES = "ETCO";
 55  
     public static final String FRAME_ID_FILE_OWNER = "TOWN";
 56  
     public static final String FRAME_ID_FILE_TYPE = "TFLT";
 57  
     public static final String FRAME_ID_GENERAL_ENCAPS_OBJECT = "GEOB";
 58  
     public static final String FRAME_ID_GENRE = "TCON";
 59  
     public static final String FRAME_ID_GROUP_ID_REG = "GRID";
 60  
     public static final String FRAME_ID_HW_SW_SETTINGS = "TSSE";
 61  
     public static final String FRAME_ID_INITIAL_KEY = "TKEY";
 62  
     public static final String FRAME_ID_INVOLVED_PEOPLE = "TIPL";
 63  
     public static final String FRAME_ID_ISRC = "TSRC";
 64  
     public static final String FRAME_ID_LANGUAGE = "TLAN";
 65  
     public static final String FRAME_ID_LENGTH = "TLEN";
 66  
     public static final String FRAME_ID_LINKED_INFO = "LINK";
 67  
     public static final String FRAME_ID_LYRICIST = "TEXT";
 68  
     public static final String FRAME_ID_MEDIA_TYPE = "TMED";
 69  
     public static final String FRAME_ID_MOOD = "TMOO";
 70  
     public static final String FRAME_ID_MPEG_LOCATION_LOOKUP_TABLE = "MLLT";
 71  
     public static final String FRAME_ID_MUSICIAN_CREDITS = "TMCL";
 72  
     public static final String FRAME_ID_MUSIC_CD_ID = "MCDI";
 73  
     public static final String FRAME_ID_ORIGARTIST = "TOPE";
 74  
     public static final String FRAME_ID_ORIGINAL_RELEASE_TIME = "TDOR";
 75  
     public static final String FRAME_ID_ORIG_FILENAME = "TOFN";
 76  
     public static final String FRAME_ID_ORIG_LYRICIST = "TOLY";
 77  
     public static final String FRAME_ID_ORIG_TITLE = "TOAL";
 78  
     public static final String FRAME_ID_OWNERSHIP = "OWNE";
 79  
     public static final String FRAME_ID_ARTIST_SORT_ORDER = "TSOP";
 80  
     public static final String FRAME_ID_PLAYLIST_DELAY = "TDLY";
 81  
     public static final String FRAME_ID_PLAY_COUNTER = "PCNT";
 82  
     public static final String FRAME_ID_POPULARIMETER = "POPM";
 83  
     public static final String FRAME_ID_POSITION_SYNC = "POSS";
 84  
     public static final String FRAME_ID_PRIVATE = "PRIV";
 85  
     public static final String FRAME_ID_PRODUCED_NOTICE = "TPRO";
 86  
     public static final String FRAME_ID_PUBLISHER = "TPUB";
 87  
     public static final String FRAME_ID_RADIO_NAME = "TRSN";
 88  
     public static final String FRAME_ID_RADIO_OWNER = "TRSO";
 89  
     public static final String FRAME_ID_RECOMMENDED_BUFFER_SIZE = "RBUF";
 90  
     public static final String FRAME_ID_RELATIVE_VOLUME_ADJUSTMENT2 = "RVA2";
 91  
     public static final String FRAME_ID_RELEASE_TIME = "TDRL";
 92  
     public static final String FRAME_ID_REMIXED = "TPE4";
 93  
     public static final String FRAME_ID_REVERB = "RVRB";
 94  
     public static final String FRAME_ID_SEEK = "SEEK";
 95  
     public static final String FRAME_ID_SET = "TPOS";
 96  
     public static final String FRAME_ID_SET_SUBTITLE = "TSST";
 97  
     public static final String FRAME_ID_SIGNATURE = "SIGN";
 98  
     public static final String FRAME_ID_SYNC_LYRIC = "SYLT";
 99  
     public static final String FRAME_ID_SYNC_TEMPO = "SYTC";
 100  
     public static final String FRAME_ID_TAGGING_TIME = "TDTG";
 101  
     public static final String FRAME_ID_TERMS_OF_USE = "USER";
 102  
     public static final String FRAME_ID_TITLE = "TIT2";
 103  
     public static final String FRAME_ID_TITLE_REFINEMENT = "TIT3";
 104  
     public static final String FRAME_ID_TITLE_SORT_ORDER = "TSOT";
 105  
     public static final String FRAME_ID_TRACK = "TRCK";
 106  
     public static final String FRAME_ID_UNIQUE_FILE_ID = "UFID";
 107  
     public static final String FRAME_ID_UNSYNC_LYRICS = "USLT";
 108  
     public static final String FRAME_ID_URL_ARTIST_WEB = "WOAR";
 109  
     public static final String FRAME_ID_URL_COMMERCIAL = "WCOM";
 110  
     public static final String FRAME_ID_URL_COPYRIGHT = "WCOP";
 111  
     public static final String FRAME_ID_URL_FILE_WEB = "WOAF";
 112  
     public static final String FRAME_ID_URL_OFFICIAL_RADIO = "WORS";
 113  
     public static final String FRAME_ID_URL_PAYMENT = "WPAY";
 114  
     public static final String FRAME_ID_URL_PUBLISHERS = "WPUB";
 115  
     public static final String FRAME_ID_URL_SOURCE_WEB = "WOAS";
 116  
     public static final String FRAME_ID_USER_DEFINED_INFO = "TXXX";
 117  
     public static final String FRAME_ID_USER_DEFINED_URL = "WXXX";
 118  
     public static final String FRAME_ID_YEAR = "TDRC";
 119  
 
 120  
     public static final String FRAME_ID_ALBUM_ARTIST_SORT_ORDER_ITUNES = "TSO2";
 121  
     public static final String FRAME_ID_COMPOSER_SORT_ORDER_ITUNES = "TSOC";
 122  
     public static final String FRAME_ID_IS_COMPILATION = "TCMP";
 123  
 
 124  
     //TODO this is temporary to provide backwards compatability
 125  
     public static final String FRAME_ID_PERFORMER_SORT_OWNER = FRAME_ID_ARTIST_SORT_ORDER;
 126  
     public static final String FRAME_ID_TITLE_SORT_OWNER = FRAME_ID_TITLE_SORT_ORDER;
 127  
 
 128  4
     protected EnumMap<FieldKey, ID3v24FieldKey> tagFieldToId3 = new EnumMap<FieldKey, ID3v24FieldKey>(FieldKey.class);
 129  
 
 130  
     private static ID3v24Frames id3v24Frames;
 131  
 
 132  
     public static ID3v24Frames getInstanceOf()
 133  
     {
 134  22087
         if (id3v24Frames == null)
 135  
         {
 136  4
             id3v24Frames = new ID3v24Frames();
 137  
         }
 138  22087
         return id3v24Frames;
 139  
     }
 140  
 
 141  
     private ID3v24Frames()
 142  4
     {
 143  4
         supportedFrames.add(FRAME_ID_ACCOMPANIMENT);
 144  4
         supportedFrames.add(FRAME_ID_ALBUM);
 145  4
         supportedFrames.add(FRAME_ID_ALBUM_SORT_ORDER);
 146  4
         supportedFrames.add(FRAME_ID_ARTIST);
 147  4
         supportedFrames.add(FRAME_ID_ATTACHED_PICTURE);
 148  4
         supportedFrames.add(FRAME_ID_AUDIO_ENCRYPTION);
 149  4
         supportedFrames.add(FRAME_ID_AUDIO_SEEK_POINT_INDEX);
 150  4
         supportedFrames.add(FRAME_ID_BPM);
 151  4
         supportedFrames.add(FRAME_ID_COMMENT);
 152  4
         supportedFrames.add(FRAME_ID_COMMERCIAL_FRAME);
 153  4
         supportedFrames.add(FRAME_ID_COMPOSER);
 154  4
         supportedFrames.add(FRAME_ID_CONDUCTOR);
 155  4
         supportedFrames.add(FRAME_ID_CONTENT_GROUP_DESC);
 156  4
         supportedFrames.add(FRAME_ID_COPYRIGHTINFO);
 157  4
         supportedFrames.add(FRAME_ID_ENCODEDBY);
 158  4
         supportedFrames.add(FRAME_ID_ENCODING_TIME);
 159  4
         supportedFrames.add(FRAME_ID_ENCRYPTION);
 160  4
         supportedFrames.add(FRAME_ID_EQUALISATION2);
 161  4
         supportedFrames.add(FRAME_ID_EVENT_TIMING_CODES);
 162  4
         supportedFrames.add(FRAME_ID_FILE_OWNER);
 163  4
         supportedFrames.add(FRAME_ID_FILE_TYPE);
 164  4
         supportedFrames.add(FRAME_ID_GENERAL_ENCAPS_OBJECT);
 165  4
         supportedFrames.add(FRAME_ID_GENRE);
 166  4
         supportedFrames.add(FRAME_ID_GROUP_ID_REG);
 167  4
         supportedFrames.add(FRAME_ID_HW_SW_SETTINGS);
 168  4
         supportedFrames.add(FRAME_ID_INITIAL_KEY);
 169  4
         supportedFrames.add(FRAME_ID_INVOLVED_PEOPLE);
 170  4
         supportedFrames.add(FRAME_ID_ISRC);
 171  4
         supportedFrames.add(FRAME_ID_LANGUAGE);
 172  4
         supportedFrames.add(FRAME_ID_LENGTH);
 173  4
         supportedFrames.add(FRAME_ID_LINKED_INFO);
 174  4
         supportedFrames.add(FRAME_ID_LYRICIST);
 175  4
         supportedFrames.add(FRAME_ID_MEDIA_TYPE);
 176  4
         supportedFrames.add(FRAME_ID_MOOD);
 177  4
         supportedFrames.add(FRAME_ID_MPEG_LOCATION_LOOKUP_TABLE);
 178  4
         supportedFrames.add(FRAME_ID_MUSIC_CD_ID);
 179  4
         supportedFrames.add(FRAME_ID_ORIGARTIST);
 180  4
         supportedFrames.add(FRAME_ID_ORIGINAL_RELEASE_TIME);
 181  4
         supportedFrames.add(FRAME_ID_ORIG_FILENAME);
 182  4
         supportedFrames.add(FRAME_ID_ORIG_LYRICIST);
 183  4
         supportedFrames.add(FRAME_ID_ORIG_TITLE);
 184  4
         supportedFrames.add(FRAME_ID_OWNERSHIP);
 185  4
         supportedFrames.add(FRAME_ID_ARTIST_SORT_ORDER);
 186  4
         supportedFrames.add(FRAME_ID_PLAYLIST_DELAY);
 187  4
         supportedFrames.add(FRAME_ID_PLAY_COUNTER);
 188  4
         supportedFrames.add(FRAME_ID_POPULARIMETER);
 189  4
         supportedFrames.add(FRAME_ID_POSITION_SYNC);
 190  4
         supportedFrames.add(FRAME_ID_PRIVATE);
 191  4
         supportedFrames.add(FRAME_ID_PRODUCED_NOTICE);
 192  4
         supportedFrames.add(FRAME_ID_PUBLISHER);
 193  4
         supportedFrames.add(FRAME_ID_RADIO_NAME);
 194  4
         supportedFrames.add(FRAME_ID_RADIO_OWNER);
 195  4
         supportedFrames.add(FRAME_ID_RECOMMENDED_BUFFER_SIZE);
 196  4
         supportedFrames.add(FRAME_ID_RELATIVE_VOLUME_ADJUSTMENT2);
 197  4
         supportedFrames.add(FRAME_ID_RELEASE_TIME);
 198  4
         supportedFrames.add(FRAME_ID_REMIXED);
 199  4
         supportedFrames.add(FRAME_ID_REVERB);
 200  4
         supportedFrames.add(FRAME_ID_SEEK);
 201  4
         supportedFrames.add(FRAME_ID_SET);
 202  4
         supportedFrames.add(FRAME_ID_SET_SUBTITLE);
 203  4
         supportedFrames.add(FRAME_ID_SIGNATURE);
 204  4
         supportedFrames.add(FRAME_ID_SYNC_LYRIC);
 205  4
         supportedFrames.add(FRAME_ID_SYNC_TEMPO);
 206  4
         supportedFrames.add(FRAME_ID_TAGGING_TIME);
 207  4
         supportedFrames.add(FRAME_ID_TERMS_OF_USE);
 208  4
         supportedFrames.add(FRAME_ID_TITLE);
 209  4
         supportedFrames.add(FRAME_ID_TITLE_REFINEMENT);
 210  4
         supportedFrames.add(FRAME_ID_TITLE_SORT_ORDER);
 211  4
         supportedFrames.add(FRAME_ID_TRACK);
 212  4
         supportedFrames.add(FRAME_ID_UNIQUE_FILE_ID);
 213  4
         supportedFrames.add(FRAME_ID_UNSYNC_LYRICS);
 214  4
         supportedFrames.add(FRAME_ID_URL_ARTIST_WEB);
 215  4
         supportedFrames.add(FRAME_ID_URL_COMMERCIAL);
 216  4
         supportedFrames.add(FRAME_ID_URL_COPYRIGHT);
 217  4
         supportedFrames.add(FRAME_ID_URL_FILE_WEB);
 218  4
         supportedFrames.add(FRAME_ID_URL_OFFICIAL_RADIO);
 219  4
         supportedFrames.add(FRAME_ID_URL_PAYMENT);
 220  4
         supportedFrames.add(FRAME_ID_URL_PUBLISHERS);
 221  4
         supportedFrames.add(FRAME_ID_URL_SOURCE_WEB);
 222  4
         supportedFrames.add(FRAME_ID_USER_DEFINED_INFO);
 223  4
         supportedFrames.add(FRAME_ID_USER_DEFINED_URL);
 224  4
         supportedFrames.add(FRAME_ID_YEAR);
 225  
 
 226  
         //Extension
 227  4
         extensionFrames.add(FRAME_ID_IS_COMPILATION);
 228  4
         extensionFrames.add(FRAME_ID_ALBUM_ARTIST_SORT_ORDER_ITUNES);
 229  4
         extensionFrames.add(FRAME_ID_COMPOSER_SORT_ORDER_ITUNES);
 230  
 
 231  
         //Common
 232  4
         commonFrames.add(FRAME_ID_ARTIST);
 233  4
         commonFrames.add(FRAME_ID_ALBUM);
 234  4
         commonFrames.add(FRAME_ID_TITLE);
 235  4
         commonFrames.add(FRAME_ID_GENRE);
 236  4
         commonFrames.add(FRAME_ID_TRACK);
 237  4
         commonFrames.add(FRAME_ID_YEAR);
 238  4
         commonFrames.add(FRAME_ID_COMMENT);
 239  
 
 240  
         //Binary
 241  4
         binaryFrames.add(FRAME_ID_ATTACHED_PICTURE);
 242  4
         binaryFrames.add(FRAME_ID_AUDIO_ENCRYPTION);
 243  4
         binaryFrames.add(FRAME_ID_ENCRYPTION);
 244  4
         binaryFrames.add(FRAME_ID_EQUALISATION2);
 245  4
         binaryFrames.add(FRAME_ID_EVENT_TIMING_CODES);
 246  4
         binaryFrames.add(FRAME_ID_GENERAL_ENCAPS_OBJECT);
 247  4
         binaryFrames.add(FRAME_ID_RELATIVE_VOLUME_ADJUSTMENT2);
 248  4
         binaryFrames.add(FRAME_ID_RECOMMENDED_BUFFER_SIZE);
 249  4
         binaryFrames.add(FRAME_ID_UNIQUE_FILE_ID);
 250  
         // Map frameid to a name
 251  4
         idToValue.put(FRAME_ID_ACCOMPANIMENT, "Text: Band/Orchestra/Accompaniment");
 252  4
         idToValue.put(FRAME_ID_ALBUM, "Text: Album/Movie/Show title");
 253  4
         idToValue.put(FRAME_ID_ALBUM_SORT_ORDER, "Album sort order");
 254  4
         idToValue.put(FRAME_ID_ARTIST, "Text: Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group");
 255  4
         idToValue.put(FRAME_ID_ATTACHED_PICTURE, "Attached picture");
 256  4
         idToValue.put(FRAME_ID_AUDIO_ENCRYPTION, "Audio encryption");
 257  4
         idToValue.put(FRAME_ID_AUDIO_SEEK_POINT_INDEX, "Audio seek point index");
 258  4
         idToValue.put(FRAME_ID_BPM, "Text: BPM (Beats Per Minute)");
 259  4
         idToValue.put(FRAME_ID_COMMENT, "Comments");
 260  4
         idToValue.put(FRAME_ID_COMMERCIAL_FRAME, "Commercial Frame");
 261  4
         idToValue.put(FRAME_ID_COMPOSER, "Text: Composer");
 262  4
         idToValue.put(FRAME_ID_CONDUCTOR, "Text: Conductor/Performer refinement");
 263  4
         idToValue.put(FRAME_ID_CONTENT_GROUP_DESC, "Text: Content group description");
 264  4
         idToValue.put(FRAME_ID_COPYRIGHTINFO, "Text: Copyright message");
 265  4
         idToValue.put(FRAME_ID_ENCODEDBY, "Text: Encoded by");
 266  4
         idToValue.put(FRAME_ID_ENCODING_TIME, "Text: Encoding time");
 267  4
         idToValue.put(FRAME_ID_ENCRYPTION, "Encryption method registration");
 268  4
         idToValue.put(FRAME_ID_EQUALISATION2, "Equalization (2)");
 269  4
         idToValue.put(FRAME_ID_EVENT_TIMING_CODES, "Event timing codes");
 270  4
         idToValue.put(FRAME_ID_FILE_OWNER, "Text:File Owner");
 271  4
         idToValue.put(FRAME_ID_FILE_TYPE, "Text: File type");
 272  4
         idToValue.put(FRAME_ID_GENERAL_ENCAPS_OBJECT, "General encapsulated datatype");
 273  4
         idToValue.put(FRAME_ID_GENRE, "Text: Content type");
 274  4
         idToValue.put(FRAME_ID_GROUP_ID_REG, "Group ID Registration");
 275  4
         idToValue.put(FRAME_ID_HW_SW_SETTINGS, "Text: Software/hardware and settings used for encoding");
 276  4
         idToValue.put(FRAME_ID_INITIAL_KEY, "Text: Initial key");
 277  4
         idToValue.put(FRAME_ID_INVOLVED_PEOPLE, "Involved people list");
 278  4
         idToValue.put(FRAME_ID_ISRC, "Text: ISRC (International Standard Recording Code)");
 279  4
         idToValue.put(FRAME_ID_LANGUAGE, "Text: Language(s)");
 280  4
         idToValue.put(FRAME_ID_LENGTH, "Text: Length");
 281  4
         idToValue.put(FRAME_ID_LINKED_INFO, "Linked information");
 282  4
         idToValue.put(FRAME_ID_LYRICIST, "Text: Lyricist/text writer");
 283  4
         idToValue.put(FRAME_ID_MEDIA_TYPE, "Text: Media type");
 284  4
         idToValue.put(FRAME_ID_MOOD, "Text: Mood");
 285  4
         idToValue.put(FRAME_ID_MPEG_LOCATION_LOOKUP_TABLE, "MPEG location lookup table");
 286  4
         idToValue.put(FRAME_ID_MUSIC_CD_ID, "Music CD Identifier");
 287  4
         idToValue.put(FRAME_ID_ORIGARTIST, "Text: Original artist(s)/performer(s)");
 288  4
         idToValue.put(FRAME_ID_ORIGINAL_RELEASE_TIME, "Text: Original release time");
 289  4
         idToValue.put(FRAME_ID_ORIG_FILENAME, "Text: Original filename");
 290  4
         idToValue.put(FRAME_ID_ORIG_LYRICIST, "Text: Original Lyricist(s)/text writer(s)");
 291  4
         idToValue.put(FRAME_ID_ORIG_TITLE, "Text: Original album/Movie/Show title");
 292  4
         idToValue.put(FRAME_ID_OWNERSHIP, "Ownership");
 293  4
         idToValue.put(FRAME_ID_ARTIST_SORT_ORDER, "Performance Sort Order");
 294  4
         idToValue.put(FRAME_ID_PLAYLIST_DELAY, "Text: Playlist delay");
 295  4
         idToValue.put(FRAME_ID_PLAY_COUNTER, "Play counter");
 296  4
         idToValue.put(FRAME_ID_POPULARIMETER, "Popularimeter");
 297  4
         idToValue.put(FRAME_ID_POSITION_SYNC, "Position Sync");
 298  4
         idToValue.put(FRAME_ID_PRIVATE, "Private frame");
 299  4
         idToValue.put(FRAME_ID_PRODUCED_NOTICE, "Produced Notice");
 300  4
         idToValue.put(FRAME_ID_PUBLISHER, "Text: Publisher");
 301  4
         idToValue.put(FRAME_ID_RADIO_NAME, "Text: Radio Name");
 302  4
         idToValue.put(FRAME_ID_RADIO_OWNER, "Text: Radio Owner");
 303  4
         idToValue.put(FRAME_ID_RECOMMENDED_BUFFER_SIZE, "Recommended buffer size");
 304  4
         idToValue.put(FRAME_ID_RELATIVE_VOLUME_ADJUSTMENT2, "Relative volume adjustment(2)");
 305  4
         idToValue.put(FRAME_ID_RELEASE_TIME, "Release Time");
 306  4
         idToValue.put(FRAME_ID_REMIXED, "Text: Interpreted, remixed, or otherwise modified by");
 307  4
         idToValue.put(FRAME_ID_REVERB, "Reverb");
 308  4
         idToValue.put(FRAME_ID_SEEK, "Seek");
 309  4
         idToValue.put(FRAME_ID_SET, "Text: Part of a setField");
 310  4
         idToValue.put(FRAME_ID_SET_SUBTITLE, "Text: Set subtitle");
 311  4
         idToValue.put(FRAME_ID_SIGNATURE, "Signature");
 312  4
         idToValue.put(FRAME_ID_SYNC_LYRIC, "Synchronized lyric/text");
 313  4
         idToValue.put(FRAME_ID_SYNC_TEMPO, "Synced tempo codes");
 314  4
         idToValue.put(FRAME_ID_TAGGING_TIME, "Text: Tagaging time");
 315  4
         idToValue.put(FRAME_ID_TERMS_OF_USE, "Terms of Use");
 316  4
         idToValue.put(FRAME_ID_TITLE, "Text: title");
 317  4
         idToValue.put(FRAME_ID_TITLE_REFINEMENT, "Text: Subtitle/Description refinement");
 318  4
         idToValue.put(FRAME_ID_TITLE_SORT_ORDER, "Text: title sort order");
 319  4
         idToValue.put(FRAME_ID_TRACK, "Text: Track number/Position in setField");
 320  4
         idToValue.put(FRAME_ID_UNIQUE_FILE_ID, "Unique file identifier");
 321  4
         idToValue.put(FRAME_ID_UNSYNC_LYRICS, "Unsychronized lyric/text transcription");
 322  4
         idToValue.put(FRAME_ID_URL_ARTIST_WEB, "URL: Official artist/performer webpage");
 323  4
         idToValue.put(FRAME_ID_URL_COMMERCIAL, "URL: Commercial information");
 324  4
         idToValue.put(FRAME_ID_URL_COPYRIGHT, "URL: Copyright/Legal information");
 325  4
         idToValue.put(FRAME_ID_URL_FILE_WEB, "URL: Official audio file webpage");
 326  4
         idToValue.put(FRAME_ID_URL_OFFICIAL_RADIO, "URL: Official Radio website");
 327  4
         idToValue.put(FRAME_ID_URL_PAYMENT, "URL: Payment for this recording ");
 328  4
         idToValue.put(FRAME_ID_URL_PUBLISHERS, "URL: Publishers official webpage");
 329  4
         idToValue.put(FRAME_ID_URL_SOURCE_WEB, "URL: Official audio source webpage");
 330  4
         idToValue.put(FRAME_ID_USER_DEFINED_INFO, "User defined text information frame");
 331  4
         idToValue.put(FRAME_ID_USER_DEFINED_URL, "User defined URL link frame");
 332  4
         idToValue.put(FRAME_ID_YEAR, "Text:Year");
 333  4
         idToValue.put(FRAME_ID_IS_COMPILATION, "Is Compilation");
 334  4
         idToValue.put(FRAME_ID_ALBUM_ARTIST_SORT_ORDER_ITUNES, "Text:Album Artist Sort Order Frame");
 335  4
         idToValue.put(FRAME_ID_COMPOSER_SORT_ORDER_ITUNES, "Text:Composer Sort Order Frame");
 336  
 
 337  
 
 338  4
         createMaps();
 339  
 
 340  4
         multipleFrames.add(FRAME_ID_USER_DEFINED_INFO);
 341  4
         multipleFrames.add(FRAME_ID_USER_DEFINED_URL);
 342  4
         multipleFrames.add(FRAME_ID_ATTACHED_PICTURE);
 343  4
         multipleFrames.add(FRAME_ID_PRIVATE);
 344  4
         multipleFrames.add(FRAME_ID_COMMENT);
 345  4
         multipleFrames.add(FRAME_ID_UNIQUE_FILE_ID);
 346  4
         multipleFrames.add(FRAME_ID_UNSYNC_LYRICS);
 347  4
         multipleFrames.add(FRAME_ID_POPULARIMETER);
 348  
 
 349  
         //TODO this is a hack to allow multiple TRCK and TPOS frames to be created then subsequently merged
 350  4
         multipleFrames.add(FRAME_ID_TRACK);
 351  4
         multipleFrames.add(FRAME_ID_SET);
 352  
 
 353  4
         discardIfFileAlteredFrames.add(FRAME_ID_EVENT_TIMING_CODES);
 354  4
         discardIfFileAlteredFrames.add(FRAME_ID_MPEG_LOCATION_LOOKUP_TABLE);
 355  4
         discardIfFileAlteredFrames.add(FRAME_ID_POSITION_SYNC);
 356  4
         discardIfFileAlteredFrames.add(FRAME_ID_SYNC_LYRIC);
 357  4
         discardIfFileAlteredFrames.add(FRAME_ID_SYNC_TEMPO);
 358  4
         discardIfFileAlteredFrames.add(FRAME_ID_EVENT_TIMING_CODES);
 359  4
         discardIfFileAlteredFrames.add(FRAME_ID_ENCODEDBY);
 360  4
         discardIfFileAlteredFrames.add(FRAME_ID_LENGTH);
 361  
 
 362  4
         tagFieldToId3.put(FieldKey.ARTIST, ID3v24FieldKey.ARTIST);
 363  4
         tagFieldToId3.put(FieldKey.ALBUM, ID3v24FieldKey.ALBUM);
 364  4
         tagFieldToId3.put(FieldKey.TITLE, ID3v24FieldKey.TITLE);
 365  4
         tagFieldToId3.put(FieldKey.TRACK, ID3v24FieldKey.TRACK);
 366  4
         tagFieldToId3.put(FieldKey.TRACK_TOTAL, ID3v24FieldKey.TRACK_TOTAL);
 367  4
         tagFieldToId3.put(FieldKey.YEAR, ID3v24FieldKey.YEAR);
 368  4
         tagFieldToId3.put(FieldKey.GENRE, ID3v24FieldKey.GENRE);
 369  4
         tagFieldToId3.put(FieldKey.COMMENT, ID3v24FieldKey.COMMENT);
 370  4
         tagFieldToId3.put(FieldKey.ALBUM_ARTIST, ID3v24FieldKey.ALBUM_ARTIST);
 371  4
         tagFieldToId3.put(FieldKey.COMPOSER, ID3v24FieldKey.COMPOSER);
 372  4
         tagFieldToId3.put(FieldKey.GROUPING, ID3v24FieldKey.GROUPING);
 373  4
         tagFieldToId3.put(FieldKey.DISC_NO, ID3v24FieldKey.DISC_NO);
 374  4
         tagFieldToId3.put(FieldKey.DISC_TOTAL, ID3v24FieldKey.DISC_NO);
 375  4
         tagFieldToId3.put(FieldKey.BPM, ID3v24FieldKey.BPM);
 376  4
         tagFieldToId3.put(FieldKey.ENCODER, ID3v24FieldKey.ENCODER);
 377  4
         tagFieldToId3.put(FieldKey.MUSICBRAINZ_ARTISTID, ID3v24FieldKey.MUSICBRAINZ_ARTISTID);
 378  4
         tagFieldToId3.put(FieldKey.MUSICBRAINZ_RELEASEID, ID3v24FieldKey.MUSICBRAINZ_RELEASEID);
 379  4
         tagFieldToId3.put(FieldKey.MUSICBRAINZ_RELEASEARTISTID, ID3v24FieldKey.MUSICBRAINZ_RELEASEARTISTID);
 380  4
         tagFieldToId3.put(FieldKey.MUSICBRAINZ_TRACK_ID, ID3v24FieldKey.MUSICBRAINZ_TRACK_ID);
 381  4
         tagFieldToId3.put(FieldKey.MUSICBRAINZ_DISC_ID, ID3v24FieldKey.MUSICBRAINZ_DISC_ID);
 382  4
         tagFieldToId3.put(FieldKey.MUSICIP_ID, ID3v24FieldKey.MUSICIP_ID);
 383  4
         tagFieldToId3.put(FieldKey.AMAZON_ID, ID3v24FieldKey.AMAZON_ID);
 384  4
         tagFieldToId3.put(FieldKey.MOOD, ID3v24FieldKey.MOOD);
 385  4
         tagFieldToId3.put(FieldKey.MUSICBRAINZ_RELEASE_STATUS, ID3v24FieldKey.MUSICBRAINZ_RELEASE_STATUS);
 386  4
         tagFieldToId3.put(FieldKey.MUSICBRAINZ_RELEASE_TYPE, ID3v24FieldKey.MUSICBRAINZ_RELEASE_TYPE);
 387  4
         tagFieldToId3.put(FieldKey.MUSICBRAINZ_RELEASE_COUNTRY, ID3v24FieldKey.MUSICBRAINZ_RELEASE_COUNTRY);
 388  4
         tagFieldToId3.put(FieldKey.LYRICS, ID3v24FieldKey.LYRICS);
 389  4
         tagFieldToId3.put(FieldKey.IS_COMPILATION, ID3v24FieldKey.IS_COMPILATION);
 390  4
         tagFieldToId3.put(FieldKey.ARTIST_SORT, ID3v24FieldKey.ARTIST_SORT);
 391  4
         tagFieldToId3.put(FieldKey.ALBUM_ARTIST_SORT, ID3v24FieldKey.ALBUM_ARTIST_SORT);
 392  4
         tagFieldToId3.put(FieldKey.ALBUM_SORT, ID3v24FieldKey.ALBUM_SORT);
 393  4
         tagFieldToId3.put(FieldKey.TITLE_SORT, ID3v24FieldKey.TITLE_SORT);
 394  4
         tagFieldToId3.put(FieldKey.COMPOSER_SORT, ID3v24FieldKey.COMPOSER_SORT);
 395  4
         tagFieldToId3.put(FieldKey.COVER_ART, ID3v24FieldKey.COVER_ART);
 396  4
         tagFieldToId3.put(FieldKey.URL_DISCOGS_ARTIST_SITE, ID3v24FieldKey.URL_DISCOGS_ARTIST_SITE);
 397  4
         tagFieldToId3.put(FieldKey.URL_DISCOGS_RELEASE_SITE, ID3v24FieldKey.URL_DISCOGS_RELEASE_SITE);
 398  4
         tagFieldToId3.put(FieldKey.URL_WIKIPEDIA_ARTIST_SITE, ID3v24FieldKey.URL_WIKIPEDIA_ARTIST_SITE);
 399  4
         tagFieldToId3.put(FieldKey.URL_WIKIPEDIA_RELEASE_SITE, ID3v24FieldKey.URL_WIKIPEDIA_RELEASE_SITE);
 400  4
         tagFieldToId3.put(FieldKey.URL_OFFICIAL_ARTIST_SITE, ID3v24FieldKey.URL_OFFICIAL_ARTIST_SITE);
 401  4
         tagFieldToId3.put(FieldKey.URL_OFFICIAL_RELEASE_SITE, ID3v24FieldKey.URL_OFFICIAL_RELEASE_SITE);
 402  4
         tagFieldToId3.put(FieldKey.LANGUAGE, ID3v24FieldKey.LANGUAGE);
 403  4
         tagFieldToId3.put(FieldKey.KEY, ID3v24FieldKey.KEY);
 404  4
         tagFieldToId3.put(FieldKey.URL_LYRICS_SITE, ID3v24FieldKey.URL_LYRICS_SITE);
 405  
 
 406  4
     }
 407  
 
 408  
     /**
 409  
      * @param genericKey
 410  
      * @return id3 key for generic key
 411  
      */
 412  
     public ID3v24FieldKey getId3KeyFromGenericKey(FieldKey genericKey)
 413  
     {
 414  723
         return tagFieldToId3.get(genericKey);
 415  
     }
 416  
 }