Coverage Report - org.jaudiotagger.tag.id3.ID3v22Frames
 
Classes in this File Line Coverage Branch Coverage Complexity
ID3v22Frames
100%
212/212
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 ID3v22 frames and collections that categorise frames within an ID3v22 tag.
 24  
  * <p/>
 25  
  * You can include frames here that are not officially supported as long as they can be used within an
 26  
  * ID3v22Tag
 27  
  *
 28  
  * @author Paul Taylor
 29  
  * @version $Id: ID3v22Frames.java,v 1.13 2008/12/05 11:11:23 paultaylor Exp $
 30  
  */
 31  
 public class ID3v22Frames extends ID3Frames
 32  
 {
 33  
     //V2 Frames (only 3 chars)
 34  
     public static final String FRAME_ID_V2_ACCOMPANIMENT = "TP2";
 35  
     public static final String FRAME_ID_V2_ALBUM = "TAL";
 36  
     public static final String FRAME_ID_V2_ARTIST = "TP1";
 37  
     public static final String FRAME_ID_V2_ATTACHED_PICTURE = "PIC";
 38  
     public static final String FRAME_ID_V2_AUDIO_ENCRYPTION = "CRA";
 39  
     public static final String FRAME_ID_V2_BPM = "TBP";
 40  
     public static final String FRAME_ID_V2_COMMENT = "COM";
 41  
     public static final String FRAME_ID_V2_COMPOSER = "TCM";
 42  
     public static final String FRAME_ID_V2_CONDUCTOR = "TPE";
 43  
     public static final String FRAME_ID_V2_CONTENT_GROUP_DESC = "TT1";
 44  
     public static final String FRAME_ID_V2_COPYRIGHTINFO = "TCR";
 45  
     public static final String FRAME_ID_V2_ENCODEDBY = "TEN";
 46  
     public static final String FRAME_ID_V2_ENCRYPTED_FRAME = "CRM";
 47  
     public static final String FRAME_ID_V2_EQUALISATION = "EQU";
 48  
     public static final String FRAME_ID_V2_EVENT_TIMING_CODES = "ETC";
 49  
     public static final String FRAME_ID_V2_FILE_TYPE = "TFT";
 50  
     public static final String FRAME_ID_V2_GENERAL_ENCAPS_OBJECT = "GEO";
 51  
     public static final String FRAME_ID_V2_GENRE = "TCO";
 52  
     public static final String FRAME_ID_V2_HW_SW_SETTINGS = "TSS";
 53  
     public static final String FRAME_ID_V2_INITIAL_KEY = "TKE";
 54  
     public static final String FRAME_ID_V2_IPLS = "IPL";
 55  
     public static final String FRAME_ID_V2_ISRC = "TRC";
 56  
     public static final String FRAME_ID_V2_LANGUAGE = "TLA";
 57  
     public static final String FRAME_ID_V2_LENGTH = "TLE";
 58  
     public static final String FRAME_ID_V2_LINKED_INFO = "LNK";
 59  
     public static final String FRAME_ID_V2_LYRICIST = "TXT";
 60  
     public static final String FRAME_ID_V2_MEDIA_TYPE = "TMT";
 61  
     public static final String FRAME_ID_V2_MPEG_LOCATION_LOOKUP_TABLE = "MLL";
 62  
     public static final String FRAME_ID_V2_MUSIC_CD_ID = "MCI";
 63  
     public static final String FRAME_ID_V2_ORIGARTIST = "TOA";
 64  
     public static final String FRAME_ID_V2_ORIG_FILENAME = "TOF";
 65  
     public static final String FRAME_ID_V2_ORIG_LYRICIST = "TOL";
 66  
     public static final String FRAME_ID_V2_ORIG_TITLE = "TOT";
 67  
     public static final String FRAME_ID_V2_PLAYLIST_DELAY = "TDY";
 68  
     public static final String FRAME_ID_V2_PLAY_COUNTER = "CNT";
 69  
     public static final String FRAME_ID_V2_POPULARIMETER = "POP";
 70  
     public static final String FRAME_ID_V2_PUBLISHER = "TPB";
 71  
     public static final String FRAME_ID_V2_RECOMMENDED_BUFFER_SIZE = "BUF";
 72  
     public static final String FRAME_ID_V2_RELATIVE_VOLUME_ADJUSTMENT = "RVA";
 73  
     public static final String FRAME_ID_V2_REMIXED = "TP4";
 74  
     public static final String FRAME_ID_V2_REVERB = "REV";
 75  
     public static final String FRAME_ID_V2_SET = "TPA";
 76  
     public static final String FRAME_ID_V2_SYNC_LYRIC = "SLT";
 77  
     public static final String FRAME_ID_V2_SYNC_TEMPO = "STC";
 78  
     public static final String FRAME_ID_V2_TDAT = "TDA";
 79  
     public static final String FRAME_ID_V2_TIME = "TIM";
 80  
     public static final String FRAME_ID_V2_TITLE = "TT2";
 81  
     public static final String FRAME_ID_V2_TITLE_REFINEMENT = "TT3";
 82  
     public static final String FRAME_ID_V2_TORY = "TOR";
 83  
     public static final String FRAME_ID_V2_TRACK = "TRK";
 84  
     public static final String FRAME_ID_V2_TRDA = "TRD";
 85  
     public static final String FRAME_ID_V2_TSIZ = "TSI";
 86  
     public static final String FRAME_ID_V2_TYER = "TYE";
 87  
     public static final String FRAME_ID_V2_UNIQUE_FILE_ID = "UFI";
 88  
     public static final String FRAME_ID_V2_UNSYNC_LYRICS = "ULT";
 89  
     public static final String FRAME_ID_V2_URL_ARTIST_WEB = "WAR";
 90  
     public static final String FRAME_ID_V2_URL_COMMERCIAL = "WCM";
 91  
     public static final String FRAME_ID_V2_URL_COPYRIGHT = "WCP";
 92  
     public static final String FRAME_ID_V2_URL_FILE_WEB = "WAF";
 93  
     public static final String FRAME_ID_V2_URL_OFFICIAL_RADIO = "WRS";
 94  
     public static final String FRAME_ID_V2_URL_PAYMENT = "WPAY";
 95  
     public static final String FRAME_ID_V2_URL_PUBLISHERS = "WPB";
 96  
     public static final String FRAME_ID_V2_URL_SOURCE_WEB = "WAS";
 97  
     public static final String FRAME_ID_V2_USER_DEFINED_INFO = "TXX";
 98  
     public static final String FRAME_ID_V2_USER_DEFINED_URL = "WXX";
 99  
 
 100  
     public static final String FRAME_ID_V2_IS_COMPILATION = "TCP";
 101  
     public static final String FRAME_ID_V2_TITLE_SORT_ORDER_ITUNES = "TST";
 102  
     public static final String FRAME_ID_V2_ARTIST_SORT_ORDER_ITUNES = "TSP";
 103  
     public static final String FRAME_ID_V2_ALBUM_SORT_ORDER_ITUNES = "TSA";
 104  
     public static final String FRAME_ID_V2_ALBUM_ARTIST_SORT_ORDER_ITUNES = "TS2";
 105  
     public static final String FRAME_ID_V2_COMPOSER_SORT_ORDER_ITUNES = "TSC";
 106  
 
 107  
     private static ID3v22Frames id3v22Frames;
 108  
 
 109  
     /**
 110  
      * Maps from Generic key to ID3 key
 111  
      */
 112  40
     protected EnumMap<TagFieldKey, ID3v22FieldKey> tagFieldToId3 = new EnumMap<TagFieldKey, ID3v22FieldKey>(TagFieldKey.class);
 113  
 
 114  
     public static ID3v22Frames getInstanceOf()
 115  
     {
 116  1496
         if (id3v22Frames == null)
 117  
         {
 118  40
             id3v22Frames = new ID3v22Frames();
 119  
         }
 120  1496
         return id3v22Frames;
 121  
     }
 122  
 
 123  
     private ID3v22Frames()
 124  40
     {
 125  
         // The defined v22 frames
 126  40
         supportedFrames.add(FRAME_ID_V2_ACCOMPANIMENT);
 127  40
         supportedFrames.add(FRAME_ID_V2_ALBUM);
 128  40
         supportedFrames.add(FRAME_ID_V2_ARTIST);
 129  40
         supportedFrames.add(FRAME_ID_V2_ATTACHED_PICTURE);
 130  40
         supportedFrames.add(FRAME_ID_V2_AUDIO_ENCRYPTION);
 131  40
         supportedFrames.add(FRAME_ID_V2_BPM);
 132  40
         supportedFrames.add(FRAME_ID_V2_COMMENT);
 133  40
         supportedFrames.add(FRAME_ID_V2_COMPOSER);
 134  40
         supportedFrames.add(FRAME_ID_V2_CONDUCTOR);
 135  40
         supportedFrames.add(FRAME_ID_V2_CONTENT_GROUP_DESC);
 136  40
         supportedFrames.add(FRAME_ID_V2_COPYRIGHTINFO);
 137  40
         supportedFrames.add(FRAME_ID_V2_ENCODEDBY);
 138  40
         supportedFrames.add(FRAME_ID_V2_ENCRYPTED_FRAME);
 139  40
         supportedFrames.add(FRAME_ID_V2_EQUALISATION);
 140  40
         supportedFrames.add(FRAME_ID_V2_EVENT_TIMING_CODES);
 141  40
         supportedFrames.add(FRAME_ID_V2_FILE_TYPE);
 142  40
         supportedFrames.add(FRAME_ID_V2_GENERAL_ENCAPS_OBJECT);
 143  40
         supportedFrames.add(FRAME_ID_V2_GENRE);
 144  40
         supportedFrames.add(FRAME_ID_V2_HW_SW_SETTINGS);
 145  40
         supportedFrames.add(FRAME_ID_V2_INITIAL_KEY);
 146  40
         supportedFrames.add(FRAME_ID_V2_IPLS);
 147  40
         supportedFrames.add(FRAME_ID_V2_ISRC);
 148  40
         supportedFrames.add(FRAME_ID_V2_LANGUAGE);
 149  40
         supportedFrames.add(FRAME_ID_V2_LENGTH);
 150  40
         supportedFrames.add(FRAME_ID_V2_LINKED_INFO);
 151  40
         supportedFrames.add(FRAME_ID_V2_LYRICIST);
 152  40
         supportedFrames.add(FRAME_ID_V2_MEDIA_TYPE);
 153  40
         supportedFrames.add(FRAME_ID_V2_MPEG_LOCATION_LOOKUP_TABLE);
 154  40
         supportedFrames.add(FRAME_ID_V2_MUSIC_CD_ID);
 155  40
         supportedFrames.add(FRAME_ID_V2_ORIGARTIST);
 156  40
         supportedFrames.add(FRAME_ID_V2_ORIG_FILENAME);
 157  40
         supportedFrames.add(FRAME_ID_V2_ORIG_LYRICIST);
 158  40
         supportedFrames.add(FRAME_ID_V2_ORIG_TITLE);
 159  40
         supportedFrames.add(FRAME_ID_V2_PLAYLIST_DELAY);
 160  40
         supportedFrames.add(FRAME_ID_V2_PLAY_COUNTER);
 161  40
         supportedFrames.add(FRAME_ID_V2_POPULARIMETER);
 162  40
         supportedFrames.add(FRAME_ID_V2_PUBLISHER);
 163  40
         supportedFrames.add(FRAME_ID_V2_RECOMMENDED_BUFFER_SIZE);
 164  40
         supportedFrames.add(FRAME_ID_V2_RELATIVE_VOLUME_ADJUSTMENT);
 165  40
         supportedFrames.add(FRAME_ID_V2_REMIXED);
 166  40
         supportedFrames.add(FRAME_ID_V2_REVERB);
 167  40
         supportedFrames.add(FRAME_ID_V2_SET);
 168  40
         supportedFrames.add(FRAME_ID_V2_SYNC_LYRIC);
 169  40
         supportedFrames.add(FRAME_ID_V2_SYNC_TEMPO);
 170  40
         supportedFrames.add(FRAME_ID_V2_TDAT);
 171  40
         supportedFrames.add(FRAME_ID_V2_TIME);
 172  40
         supportedFrames.add(FRAME_ID_V2_TITLE);
 173  40
         supportedFrames.add(FRAME_ID_V2_TITLE_REFINEMENT);
 174  40
         supportedFrames.add(FRAME_ID_V2_TORY);
 175  40
         supportedFrames.add(FRAME_ID_V2_TRACK);
 176  40
         supportedFrames.add(FRAME_ID_V2_TRDA);
 177  40
         supportedFrames.add(FRAME_ID_V2_TSIZ);
 178  40
         supportedFrames.add(FRAME_ID_V2_TYER);
 179  40
         supportedFrames.add(FRAME_ID_V2_UNIQUE_FILE_ID);
 180  40
         supportedFrames.add(FRAME_ID_V2_UNSYNC_LYRICS);
 181  40
         supportedFrames.add(FRAME_ID_V2_URL_ARTIST_WEB);
 182  40
         supportedFrames.add(FRAME_ID_V2_URL_COMMERCIAL);
 183  40
         supportedFrames.add(FRAME_ID_V2_URL_COPYRIGHT);
 184  40
         supportedFrames.add(FRAME_ID_V2_URL_FILE_WEB);
 185  40
         supportedFrames.add(FRAME_ID_V2_URL_OFFICIAL_RADIO);
 186  40
         supportedFrames.add(FRAME_ID_V2_URL_PAYMENT);
 187  40
         supportedFrames.add(FRAME_ID_V2_URL_PUBLISHERS);
 188  40
         supportedFrames.add(FRAME_ID_V2_URL_SOURCE_WEB);
 189  40
         supportedFrames.add(FRAME_ID_V2_USER_DEFINED_INFO);
 190  40
         supportedFrames.add(FRAME_ID_V2_USER_DEFINED_URL);
 191  
 
 192  
         //Extension
 193  40
         extensionFrames.add(FRAME_ID_V2_IS_COMPILATION);
 194  40
         extensionFrames.add(FRAME_ID_V2_TITLE_SORT_ORDER_ITUNES);
 195  40
         extensionFrames.add(FRAME_ID_V2_ARTIST_SORT_ORDER_ITUNES);
 196  40
         extensionFrames.add(FRAME_ID_V2_ALBUM_SORT_ORDER_ITUNES);
 197  40
         extensionFrames.add(FRAME_ID_V2_ALBUM_ARTIST_SORT_ORDER_ITUNES);
 198  40
         extensionFrames.add(FRAME_ID_V2_COMPOSER_SORT_ORDER_ITUNES);
 199  
 
 200  
         //Common
 201  40
         commonFrames.add(FRAME_ID_V2_ARTIST);
 202  40
         commonFrames.add(FRAME_ID_V2_ALBUM);
 203  40
         commonFrames.add(FRAME_ID_V2_TITLE);
 204  40
         commonFrames.add(FRAME_ID_V2_GENRE);
 205  40
         commonFrames.add(FRAME_ID_V2_TRACK);
 206  40
         commonFrames.add(FRAME_ID_V2_TYER);
 207  40
         commonFrames.add(FRAME_ID_V2_COMMENT);
 208  
 
 209  
         //Binary
 210  40
         binaryFrames.add(FRAME_ID_V2_ATTACHED_PICTURE);
 211  40
         binaryFrames.add(FRAME_ID_V2_AUDIO_ENCRYPTION);
 212  40
         binaryFrames.add(FRAME_ID_V2_ENCRYPTED_FRAME);
 213  40
         binaryFrames.add(FRAME_ID_V2_EQUALISATION);
 214  40
         binaryFrames.add(FRAME_ID_V2_EVENT_TIMING_CODES);
 215  40
         binaryFrames.add(FRAME_ID_V2_GENERAL_ENCAPS_OBJECT);
 216  40
         binaryFrames.add(FRAME_ID_V2_RELATIVE_VOLUME_ADJUSTMENT);
 217  40
         binaryFrames.add(FRAME_ID_V2_RECOMMENDED_BUFFER_SIZE);
 218  40
         binaryFrames.add(FRAME_ID_V2_UNIQUE_FILE_ID);
 219  
 
 220  
         // Map frameid to a name
 221  40
         idToValue.put(FRAME_ID_V2_ACCOMPANIMENT, "Text: Band/Orchestra/Accompaniment");
 222  40
         idToValue.put(FRAME_ID_V2_ALBUM, "Text: Album/Movie/Show title");
 223  40
         idToValue.put(FRAME_ID_V2_ARTIST, "Text: Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group");
 224  40
         idToValue.put(FRAME_ID_V2_ATTACHED_PICTURE, "Attached picture");
 225  40
         idToValue.put(FRAME_ID_V2_AUDIO_ENCRYPTION, "Audio encryption");
 226  40
         idToValue.put(FRAME_ID_V2_BPM, "Text: BPM (Beats Per Minute)");
 227  40
         idToValue.put(FRAME_ID_V2_COMMENT, "Comments");
 228  40
         idToValue.put(FRAME_ID_V2_COMPOSER, "Text: Composer");
 229  40
         idToValue.put(FRAME_ID_V2_CONDUCTOR, "Text: Conductor/Performer refinement");
 230  40
         idToValue.put(FRAME_ID_V2_CONTENT_GROUP_DESC, "Text: Content group description");
 231  40
         idToValue.put(FRAME_ID_V2_COPYRIGHTINFO, "Text: Copyright message");
 232  40
         idToValue.put(FRAME_ID_V2_ENCODEDBY, "Text: Encoded by");
 233  40
         idToValue.put(FRAME_ID_V2_ENCRYPTED_FRAME, "Encrypted meta frame");
 234  40
         idToValue.put(FRAME_ID_V2_EQUALISATION, "Equalization");
 235  40
         idToValue.put(FRAME_ID_V2_EVENT_TIMING_CODES, "Event timing codes");
 236  40
         idToValue.put(FRAME_ID_V2_FILE_TYPE, "Text: File type");
 237  40
         idToValue.put(FRAME_ID_V2_GENERAL_ENCAPS_OBJECT, "General encapsulated datatype");
 238  40
         idToValue.put(FRAME_ID_V2_GENRE, "Text: Content type");
 239  40
         idToValue.put(FRAME_ID_V2_HW_SW_SETTINGS, "Text: Software/hardware and settings used for encoding");
 240  40
         idToValue.put(FRAME_ID_V2_INITIAL_KEY, "Text: Initial key");
 241  40
         idToValue.put(FRAME_ID_V2_IPLS, "Involved people list");
 242  40
         idToValue.put(FRAME_ID_V2_ISRC, "Text: ISRC (International Standard Recording Code)");
 243  40
         idToValue.put(FRAME_ID_V2_LANGUAGE, "Text: Language(s)");
 244  40
         idToValue.put(FRAME_ID_V2_LENGTH, "Text: Length");
 245  40
         idToValue.put(FRAME_ID_V2_LINKED_INFO, "Linked information");
 246  40
         idToValue.put(FRAME_ID_V2_LYRICIST, "Text: Lyricist/text writer");
 247  40
         idToValue.put(FRAME_ID_V2_MEDIA_TYPE, "Text: Media type");
 248  40
         idToValue.put(FRAME_ID_V2_MPEG_LOCATION_LOOKUP_TABLE, "MPEG location lookup table");
 249  40
         idToValue.put(FRAME_ID_V2_MUSIC_CD_ID, "Music CD Identifier");
 250  40
         idToValue.put(FRAME_ID_V2_ORIGARTIST, "Text: Original artist(s)/performer(s)");
 251  40
         idToValue.put(FRAME_ID_V2_ORIG_FILENAME, "Text: Original filename");
 252  40
         idToValue.put(FRAME_ID_V2_ORIG_LYRICIST, "Text: Original Lyricist(s)/text writer(s)");
 253  40
         idToValue.put(FRAME_ID_V2_ORIG_TITLE, "Text: Original album/Movie/Show title");
 254  40
         idToValue.put(FRAME_ID_V2_PLAYLIST_DELAY, "Text: Playlist delay");
 255  40
         idToValue.put(FRAME_ID_V2_PLAY_COUNTER, "Play counter");
 256  40
         idToValue.put(FRAME_ID_V2_POPULARIMETER, "Popularimeter");
 257  40
         idToValue.put(FRAME_ID_V2_PUBLISHER, "Text: Publisher");
 258  40
         idToValue.put(FRAME_ID_V2_RECOMMENDED_BUFFER_SIZE, "Recommended buffer size");
 259  40
         idToValue.put(FRAME_ID_V2_RELATIVE_VOLUME_ADJUSTMENT, "Relative volume adjustment");
 260  40
         idToValue.put(FRAME_ID_V2_REMIXED, "Text: Interpreted, remixed, or otherwise modified by");
 261  40
         idToValue.put(FRAME_ID_V2_REVERB, "Reverb");
 262  40
         idToValue.put(FRAME_ID_V2_SET, "Text: Part of a set");
 263  40
         idToValue.put(FRAME_ID_V2_SYNC_LYRIC, "Synchronized lyric/text");
 264  40
         idToValue.put(FRAME_ID_V2_SYNC_TEMPO, "Synced tempo codes");
 265  40
         idToValue.put(FRAME_ID_V2_TDAT, "Text: Date");
 266  40
         idToValue.put(FRAME_ID_V2_TIME, "Text: Time");
 267  40
         idToValue.put(FRAME_ID_V2_TITLE, "Text: Title/Songname/Content description");
 268  40
         idToValue.put(FRAME_ID_V2_TITLE_REFINEMENT, "Text: Subtitle/Description refinement");
 269  40
         idToValue.put(FRAME_ID_V2_TORY, "Text: Original release year");
 270  40
         idToValue.put(FRAME_ID_V2_TRACK, "Text: Track number/Position in set");
 271  40
         idToValue.put(FRAME_ID_V2_TRDA, "Text: Recording dates");
 272  40
         idToValue.put(FRAME_ID_V2_TSIZ, "Text: Size");
 273  40
         idToValue.put(FRAME_ID_V2_TYER, "Text: Year");
 274  40
         idToValue.put(FRAME_ID_V2_UNIQUE_FILE_ID, "Unique file identifier");
 275  40
         idToValue.put(FRAME_ID_V2_UNSYNC_LYRICS, "Unsychronized lyric/text transcription");
 276  40
         idToValue.put(FRAME_ID_V2_URL_ARTIST_WEB, "URL: Official artist/performer webpage");
 277  40
         idToValue.put(FRAME_ID_V2_URL_COMMERCIAL, "URL: Commercial information");
 278  40
         idToValue.put(FRAME_ID_V2_URL_COPYRIGHT, "URL: Copyright/Legal information");
 279  40
         idToValue.put(FRAME_ID_V2_URL_FILE_WEB, "URL: Official audio file webpage");
 280  40
         idToValue.put(FRAME_ID_V2_URL_OFFICIAL_RADIO, "URL: Official radio station");
 281  40
         idToValue.put(FRAME_ID_V2_URL_PAYMENT, "URL: Official payment site");
 282  40
         idToValue.put(FRAME_ID_V2_URL_PUBLISHERS, "URL: Publishers official webpage");
 283  40
         idToValue.put(FRAME_ID_V2_URL_SOURCE_WEB, "URL: Official audio source webpage");
 284  40
         idToValue.put(FRAME_ID_V2_USER_DEFINED_INFO, "User defined text information frame");
 285  40
         idToValue.put(FRAME_ID_V2_USER_DEFINED_URL, "User defined URL link frame");
 286  
 
 287  40
         idToValue.put(FRAME_ID_V2_IS_COMPILATION, "Is Compilation");
 288  40
         idToValue.put(FRAME_ID_V2_TITLE_SORT_ORDER_ITUNES, "Text: title sort order");
 289  40
         idToValue.put(FRAME_ID_V2_ARTIST_SORT_ORDER_ITUNES, "Text: artist sort order");
 290  40
         idToValue.put(FRAME_ID_V2_ALBUM_SORT_ORDER_ITUNES, "Text: album sort order");
 291  40
         idToValue.put(FRAME_ID_V2_ALBUM_ARTIST_SORT_ORDER_ITUNES, "Text:Album Artist Sort Order Frame");
 292  40
         idToValue.put(FRAME_ID_V2_COMPOSER_SORT_ORDER_ITUNES, "Text:Composer Sort Order Frame");
 293  
 
 294  
 
 295  40
         createMaps();
 296  
 
 297  40
         multipleFrames.add(FRAME_ID_V2_ATTACHED_PICTURE);
 298  40
         multipleFrames.add(FRAME_ID_V2_UNIQUE_FILE_ID);
 299  40
         multipleFrames.add(FRAME_ID_V2_POPULARIMETER);
 300  40
         multipleFrames.add(FRAME_ID_V2_USER_DEFINED_INFO);
 301  40
         multipleFrames.add(FRAME_ID_V2_USER_DEFINED_URL);
 302  40
         multipleFrames.add(FRAME_ID_V2_COMMENT);
 303  40
         multipleFrames.add(FRAME_ID_V2_UNSYNC_LYRICS);
 304  
 
 305  
         //Mapping generic key to id3v22 key
 306  40
         tagFieldToId3.put(TagFieldKey.ARTIST, ID3v22FieldKey.ARTIST);
 307  40
         tagFieldToId3.put(TagFieldKey.ALBUM, ID3v22FieldKey.ALBUM);
 308  40
         tagFieldToId3.put(TagFieldKey.TITLE, ID3v22FieldKey.TITLE);
 309  40
         tagFieldToId3.put(TagFieldKey.TRACK, ID3v22FieldKey.TRACK);
 310  40
         tagFieldToId3.put(TagFieldKey.YEAR, ID3v22FieldKey.YEAR);
 311  40
         tagFieldToId3.put(TagFieldKey.GENRE, ID3v22FieldKey.GENRE);
 312  40
         tagFieldToId3.put(TagFieldKey.COMMENT, ID3v22FieldKey.COMMENT);
 313  40
         tagFieldToId3.put(TagFieldKey.ALBUM_ARTIST, ID3v22FieldKey.ALBUM_ARTIST);
 314  40
         tagFieldToId3.put(TagFieldKey.COMPOSER, ID3v22FieldKey.COMPOSER);
 315  40
         tagFieldToId3.put(TagFieldKey.GROUPING, ID3v22FieldKey.GROUPING);
 316  40
         tagFieldToId3.put(TagFieldKey.DISC_NO, ID3v22FieldKey.DISC_NO);
 317  40
         tagFieldToId3.put(TagFieldKey.BPM, ID3v22FieldKey.BPM);
 318  40
         tagFieldToId3.put(TagFieldKey.ENCODER, ID3v22FieldKey.ENCODER);
 319  40
         tagFieldToId3.put(TagFieldKey.MUSICBRAINZ_ARTISTID, ID3v22FieldKey.MUSICBRAINZ_ARTISTID);
 320  40
         tagFieldToId3.put(TagFieldKey.MUSICBRAINZ_RELEASEID, ID3v22FieldKey.MUSICBRAINZ_RELEASEID);
 321  40
         tagFieldToId3.put(TagFieldKey.MUSICBRAINZ_RELEASEARTISTID, ID3v22FieldKey.MUSICBRAINZ_RELEASEARTISTID);
 322  40
         tagFieldToId3.put(TagFieldKey.MUSICBRAINZ_TRACK_ID, ID3v22FieldKey.MUSICBRAINZ_TRACK_ID);
 323  40
         tagFieldToId3.put(TagFieldKey.MUSICBRAINZ_DISC_ID, ID3v22FieldKey.MUSICBRAINZ_DISC_ID);
 324  40
         tagFieldToId3.put(TagFieldKey.MUSICIP_ID, ID3v22FieldKey.MUSICIP_ID);
 325  40
         tagFieldToId3.put(TagFieldKey.AMAZON_ID, ID3v22FieldKey.AMAZON_ID);
 326  40
         tagFieldToId3.put(TagFieldKey.MUSICBRAINZ_RELEASE_STATUS, ID3v22FieldKey.MUSICBRAINZ_RELEASE_STATUS);
 327  40
         tagFieldToId3.put(TagFieldKey.MUSICBRAINZ_RELEASE_TYPE, ID3v22FieldKey.MUSICBRAINZ_RELEASE_TYPE);
 328  40
         tagFieldToId3.put(TagFieldKey.MUSICBRAINZ_RELEASE_COUNTRY, ID3v22FieldKey.MUSICBRAINZ_RELEASE_COUNTRY);
 329  40
         tagFieldToId3.put(TagFieldKey.LYRICS, ID3v22FieldKey.LYRICS);
 330  40
         tagFieldToId3.put(TagFieldKey.IS_COMPILATION, ID3v22FieldKey.IS_COMPILATION);
 331  40
         tagFieldToId3.put(TagFieldKey.ARTIST_SORT, ID3v22FieldKey.ARTIST_SORT);
 332  40
         tagFieldToId3.put(TagFieldKey.ALBUM_ARTIST_SORT, ID3v22FieldKey.ALBUM_ARTIST_SORT);
 333  40
         tagFieldToId3.put(TagFieldKey.ALBUM_SORT, ID3v22FieldKey.ALBUM_SORT);
 334  40
         tagFieldToId3.put(TagFieldKey.TITLE_SORT, ID3v22FieldKey.TITLE_SORT);
 335  40
         tagFieldToId3.put(TagFieldKey.COMPOSER_SORT, ID3v22FieldKey.COMPOSER_SORT);
 336  40
         tagFieldToId3.put(TagFieldKey.COVER_ART, ID3v22FieldKey.COVER_ART);
 337  40
         tagFieldToId3.put(TagFieldKey.URL_DISCOGS_ARTIST_SITE, ID3v22FieldKey.URL_DISCOGS_ARTIST_SITE);
 338  40
         tagFieldToId3.put(TagFieldKey.URL_DISCOGS_RELEASE_SITE, ID3v22FieldKey.URL_DISCOGS_RELEASE_SITE);
 339  40
         tagFieldToId3.put(TagFieldKey.URL_WIKIPEDIA_ARTIST_SITE, ID3v22FieldKey.URL_WIKIPEDIA_ARTIST_SITE);
 340  40
         tagFieldToId3.put(TagFieldKey.URL_WIKIPEDIA_RELEASE_SITE, ID3v22FieldKey.URL_WIKIPEDIA_RELEASE_SITE);
 341  40
         tagFieldToId3.put(TagFieldKey.URL_OFFICIAL_ARTIST_SITE, ID3v22FieldKey.URL_OFFICIAL_ARTIST_SITE);
 342  40
         tagFieldToId3.put(TagFieldKey.URL_OFFICIAL_RELEASE_SITE, ID3v22FieldKey.URL_OFFICIAL_RELEASE_SITE);
 343  40
         tagFieldToId3.put(TagFieldKey.LANGUAGE, ID3v22FieldKey.LANGUAGE);
 344  40
         tagFieldToId3.put(TagFieldKey.KEY, ID3v22FieldKey.KEY);
 345  40
     }
 346  
 
 347  
     /**
 348  
      * @param genericKey
 349  
      * @return id3 key for generic key
 350  
      */
 351  
     public ID3v22FieldKey getId3KeyFromGenericKey(TagFieldKey genericKey)
 352  
     {
 353  81
         return tagFieldToId3.get(genericKey);
 354  
     }
 355  
 
 356  
 
 357  
 }