Coverage Report - org.jaudiotagger.tag.id3.ID3v23PreferredFrameOrderComparator
 
Classes in this File Line Coverage Branch Coverage Complexity
ID3v23PreferredFrameOrderComparator
98%
97/98
100%
2/2
1.25
 
 1  
 package org.jaudiotagger.tag.id3;
 2  
 
 3  
 import java.util.Comparator;
 4  
 import java.util.List;
 5  
 import java.util.ArrayList;
 6  
 
 7  
 /**
 8  
  * Orders frame Ids so that the most important frames are writtne first
 9  
  */
 10  2284
 public class ID3v23PreferredFrameOrderComparator implements Comparator<String>
 11  
 {
 12  
     private static ID3v23PreferredFrameOrderComparator comparator;
 13  4
     private static List frameIdsInPreferredOrder = new ArrayList<String>();
 14  
     static
 15  
     {
 16  
         //these are the key ones we want at the top
 17  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_UNIQUE_FILE_ID);
 18  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_TITLE);
 19  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_ARTIST);
 20  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_ALBUM);
 21  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_TORY);
 22  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_GENRE);
 23  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_COMPOSER);
 24  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_CONDUCTOR);
 25  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_CONTENT_GROUP_DESC);
 26  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_TRACK);
 27  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_TYER);
 28  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_TDAT);
 29  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_TIME);
 30  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_BPM);           
 31  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_ISRC);
 32  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_TORY);
 33  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_TITLE_REFINEMENT);
 34  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_UNSYNC_LYRICS);
 35  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_USER_DEFINED_INFO);
 36  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_USER_DEFINED_URL);
 37  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_URL_ARTIST_WEB);
 38  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_URL_COMMERCIAL);
 39  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_URL_COPYRIGHT);
 40  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_URL_FILE_WEB);
 41  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_URL_OFFICIAL_RADIO);
 42  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_URL_PAYMENT);
 43  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_URL_PUBLISHERS);
 44  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_URL_COMMERCIAL);
 45  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_LYRICIST);
 46  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_MEDIA_TYPE);
 47  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_IPLS);
 48  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_LANGUAGE);
 49  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_TITLE_SORT_ORDER_ITUNES);
 50  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_PLAYLIST_DELAY);
 51  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_PLAY_COUNTER);
 52  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_POPULARIMETER);
 53  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_PUBLISHER);
 54  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_ALBUM_ARTIST_SORT_ORDER_ITUNES);
 55  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_COMPOSER_SORT_ORDER_ITUNES);
 56  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_IS_COMPILATION);
 57  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_TITLE_SORT_ORDER_ITUNES);
 58  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_ARTIST_SORT_ORDER_ITUNES);
 59  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_ALBUM_SORT_ORDER_ITUNES);
 60  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_TITLE_SORT_ORDER_MUSICBRAINZ);
 61  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_ARTIST_SORT_ORDER_MUSICBRAINZ);
 62  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_ALBUM_SORT_ORDER_MUSICBRAINZ);
 63  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_ALBUM_ARTIST_SORT_ORDER_ITUNES);
 64  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_COMPOSER_SORT_ORDER_ITUNES);
 65  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_COMMENT);
 66  
 
 67  
 
 68  
         //Not so bothered about these
 69  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_ACCOMPANIMENT);
 70  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_TRDA);
 71  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_COMMERCIAL_FRAME);
 72  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_COPYRIGHTINFO);
 73  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_ENCODEDBY);
 74  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_ENCRYPTION);
 75  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_EQUALISATION);
 76  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_EVENT_TIMING_CODES);
 77  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_FILE_OWNER);
 78  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_FILE_TYPE);
 79  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_GROUP_ID_REG);
 80  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_HW_SW_SETTINGS);
 81  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_INITIAL_KEY);
 82  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_LENGTH);
 83  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_LINKED_INFO);
 84  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_TSIZ);
 85  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_MPEG_LOCATION_LOOKUP_TABLE);
 86  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_ORIGARTIST);
 87  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_ORIG_FILENAME);
 88  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_ORIG_LYRICIST);
 89  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_ORIG_TITLE);
 90  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_OWNERSHIP);
 91  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_POSITION_SYNC);
 92  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_RADIO_NAME);
 93  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_RADIO_OWNER);
 94  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_RECOMMENDED_BUFFER_SIZE);
 95  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_REMIXED);
 96  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_REVERB);
 97  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_SET);
 98  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_SYNC_LYRIC);
 99  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_SYNC_TEMPO);
 100  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_TERMS_OF_USE);
 101  
 
 102  
         //Want this near the end because can cause problems with unsyncing
 103  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_ATTACHED_PICTURE);
 104  
 
 105  
         //Itunes doesnt seem to like these, and of little use so put right at end
 106  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_PRIVATE);
 107  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_MUSIC_CD_ID);
 108  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_AUDIO_ENCRYPTION);
 109  4
         frameIdsInPreferredOrder.add(ID3v23Frames.FRAME_ID_V3_GENERAL_ENCAPS_OBJECT);
 110  4
     }
 111  
 
 112  
 
 113  
     private ID3v23PreferredFrameOrderComparator()
 114  4
     {
 115  
 
 116  4
     }
 117  
 
 118  
     public static ID3v23PreferredFrameOrderComparator getInstanceof()
 119  
     {
 120  449
         if(comparator==null)
 121  
         {
 122  4
             comparator=new  ID3v23PreferredFrameOrderComparator();
 123  
         }
 124  449
         return comparator;
 125  
     }
 126  
 
 127  
     /**
 128  
      *
 129  
      * @param frameId1
 130  
      * @param frameId2
 131  
      * @return
 132  
      */
 133  
     public int compare(String frameId1,String frameId2)
 134  
     {
 135  2284
         int frameId1Index= frameIdsInPreferredOrder.indexOf(frameId1);
 136  2284
         int frameId2Index= frameIdsInPreferredOrder.indexOf(frameId2);
 137  2284
         return frameId1Index - frameId2Index;
 138  
     }
 139  
 
 140  
     public boolean equals(Object obj)
 141  
     {
 142  0
         return obj instanceof ID3v23PreferredFrameOrderComparator;
 143  
     }
 144  
 
 145  
 }