Coverage Report - org.jaudiotagger.tag.id3.ID3v22PreferredFrameOrderComparator
 
Classes in this File Line Coverage Branch Coverage Complexity
ID3v22PreferredFrameOrderComparator
97%
84/87
50%
2/4
0
 
 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  270
 public class ID3v22PreferredFrameOrderComparator implements Comparator<String>
 11  
 {
 12  
     private static ID3v22PreferredFrameOrderComparator comparator;
 13  17
     private static List frameIdsInPreferredOrder = new ArrayList<String>();
 14  
     static
 15  
     {
 16  
         //these are the key ones we want at the top
 17  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_UNIQUE_FILE_ID);
 18  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_TITLE);
 19  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ARTIST);
 20  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ALBUM);
 21  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_TORY);
 22  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_GENRE);
 23  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_COMPOSER);
 24  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_CONDUCTOR);
 25  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_CONTENT_GROUP_DESC);
 26  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_TRACK);
 27  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_TYER);
 28  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_TDAT);
 29  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_TIME);
 30  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_BPM);
 31  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ISRC);
 32  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_TORY);
 33  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_TITLE_REFINEMENT);
 34  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_UNSYNC_LYRICS);
 35  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_USER_DEFINED_INFO);
 36  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_USER_DEFINED_URL);
 37  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_URL_ARTIST_WEB);
 38  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_URL_COMMERCIAL);
 39  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_URL_COPYRIGHT);
 40  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_URL_FILE_WEB);
 41  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_URL_OFFICIAL_RADIO);
 42  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_URL_PAYMENT);
 43  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_URL_PUBLISHERS);
 44  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_URL_COMMERCIAL);
 45  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_LYRICIST);
 46  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_MEDIA_TYPE);
 47  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_IPLS);
 48  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_LANGUAGE);
 49  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_TITLE_SORT_ORDER_ITUNES);
 50  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_PLAYLIST_DELAY);
 51  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_PLAY_COUNTER);
 52  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_POPULARIMETER);
 53  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_PUBLISHER);
 54  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ALBUM_ARTIST_SORT_ORDER_ITUNES);
 55  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_COMPOSER_SORT_ORDER_ITUNES);
 56  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_IS_COMPILATION);
 57  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_TITLE_SORT_ORDER_ITUNES);
 58  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ARTIST_SORT_ORDER_ITUNES);
 59  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ALBUM_SORT_ORDER_ITUNES);
 60  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ALBUM_ARTIST_SORT_ORDER_ITUNES);
 61  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_COMPOSER_SORT_ORDER_ITUNES);
 62  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_COMMENT);
 63  
 
 64  
         //Not so bothered about these
 65  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ACCOMPANIMENT);
 66  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_TRDA);
 67  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_COPYRIGHTINFO);
 68  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ENCODEDBY);
 69  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_EQUALISATION);
 70  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_EVENT_TIMING_CODES);
 71  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_FILE_TYPE);
 72  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_HW_SW_SETTINGS);
 73  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_INITIAL_KEY);
 74  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_LENGTH);
 75  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_LINKED_INFO);
 76  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_TSIZ);
 77  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_MPEG_LOCATION_LOOKUP_TABLE);
 78  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ORIGARTIST);
 79  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ORIG_FILENAME);
 80  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ORIG_LYRICIST);
 81  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ORIG_TITLE);
 82  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_RECOMMENDED_BUFFER_SIZE);
 83  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_REMIXED);
 84  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_REVERB);
 85  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_SET);
 86  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_SYNC_LYRIC);
 87  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_SYNC_TEMPO);
 88  
 
 89  
         //Want this near the end because can cause problems with unsyncing
 90  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ATTACHED_PICTURE);
 91  
 
 92  
         //Itunes doesnt seem to like these, and of little use so put right at end
 93  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_MUSIC_CD_ID);
 94  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_AUDIO_ENCRYPTION);
 95  17
         frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_GENERAL_ENCAPS_OBJECT);
 96  17
     }
 97  
 
 98  
 
 99  
     private ID3v22PreferredFrameOrderComparator()
 100  17
     {
 101  
 
 102  17
     }
 103  
 
 104  
     public static ID3v22PreferredFrameOrderComparator getInstanceof()
 105  
     {
 106  51
         if(comparator ==null)
 107  
         {
 108  17
             comparator =new ID3v22PreferredFrameOrderComparator();
 109  
         }
 110  51
         return comparator;
 111  
     }
 112  
 
 113  
     /**
 114  
      *
 115  
      * @param frameId1
 116  
      * @param frameId2
 117  
      * @return
 118  
      */
 119  
     public int compare(String frameId1,String frameId2)
 120  
     {
 121  270
         int frameId1Index= frameIdsInPreferredOrder.indexOf(frameId1);
 122  270
         int frameId2Index= frameIdsInPreferredOrder.indexOf(frameId2);
 123  270
         return frameId1Index - frameId2Index;
 124  
     }
 125  
 
 126  
     public boolean equals(Object obj)
 127  
     {
 128  0
         if(obj instanceof ID3v22PreferredFrameOrderComparator)
 129  
         {
 130  0
             return true;
 131  
         }
 132  0
         return false;
 133  
     }
 134  
 
 135  
 }