Coverage Report - org.jaudiotagger.tag.id3.ID3v24PreferredFrameOrderComparator
 
Classes in this File Line Coverage Branch Coverage Complexity
ID3v24PreferredFrameOrderComparator
97%
97/100
50%
2/4
0
 
 1  
 package org.jaudiotagger.tag.id3;
 2  
 
 3  
 import static org.jaudiotagger.tag.id3.ID3v24Frames.*;
 4  
 
 5  
 import java.util.ArrayList;
 6  
 import java.util.Comparator;
 7  
 import java.util.List;
 8  
 
 9  
 /**
 10  
  * Orders frame Ids so that the most important frames are writtne first
 11  
  */
 12  750
 public class ID3v24PreferredFrameOrderComparator implements Comparator<String>
 13  
 {
 14  
     private static ID3v24PreferredFrameOrderComparator comparator;
 15  29
     private static List frameIdsInPreferredOrder = new ArrayList<String>();
 16  
 
 17  
     static
 18  
     {
 19  
         //these are the key ones we want at the top
 20  29
         frameIdsInPreferredOrder.add(FRAME_ID_UNIQUE_FILE_ID);
 21  29
         frameIdsInPreferredOrder.add(FRAME_ID_TITLE);
 22  29
         frameIdsInPreferredOrder.add(FRAME_ID_ARTIST);
 23  29
         frameIdsInPreferredOrder.add(FRAME_ID_ALBUM);
 24  29
         frameIdsInPreferredOrder.add(FRAME_ID_ALBUM_SORT_ORDER);
 25  29
         frameIdsInPreferredOrder.add(FRAME_ID_GENRE);
 26  29
         frameIdsInPreferredOrder.add(FRAME_ID_COMPOSER);
 27  29
         frameIdsInPreferredOrder.add(FRAME_ID_CONDUCTOR);
 28  29
         frameIdsInPreferredOrder.add(FRAME_ID_CONTENT_GROUP_DESC);
 29  29
         frameIdsInPreferredOrder.add(FRAME_ID_TRACK);
 30  29
         frameIdsInPreferredOrder.add(FRAME_ID_YEAR);
 31  29
         frameIdsInPreferredOrder.add(FRAME_ID_BPM);
 32  29
         frameIdsInPreferredOrder.add(FRAME_ID_ISRC);
 33  29
         frameIdsInPreferredOrder.add(FRAME_ID_TITLE_SORT_ORDER);
 34  29
         frameIdsInPreferredOrder.add(FRAME_ID_TITLE_REFINEMENT);
 35  29
         frameIdsInPreferredOrder.add(FRAME_ID_UNSYNC_LYRICS);
 36  29
         frameIdsInPreferredOrder.add(FRAME_ID_USER_DEFINED_INFO);
 37  29
         frameIdsInPreferredOrder.add(FRAME_ID_USER_DEFINED_URL);
 38  29
         frameIdsInPreferredOrder.add(FRAME_ID_URL_ARTIST_WEB);
 39  29
         frameIdsInPreferredOrder.add(FRAME_ID_URL_COMMERCIAL);
 40  29
         frameIdsInPreferredOrder.add(FRAME_ID_URL_COPYRIGHT);
 41  29
         frameIdsInPreferredOrder.add(FRAME_ID_URL_FILE_WEB);
 42  29
         frameIdsInPreferredOrder.add(FRAME_ID_URL_OFFICIAL_RADIO);
 43  29
         frameIdsInPreferredOrder.add(FRAME_ID_URL_PAYMENT);
 44  29
         frameIdsInPreferredOrder.add(FRAME_ID_URL_PUBLISHERS);
 45  29
         frameIdsInPreferredOrder.add(FRAME_ID_URL_COMMERCIAL);
 46  29
         frameIdsInPreferredOrder.add(FRAME_ID_LYRICIST);
 47  29
         frameIdsInPreferredOrder.add(FRAME_ID_MEDIA_TYPE);
 48  29
         frameIdsInPreferredOrder.add(FRAME_ID_INVOLVED_PEOPLE);
 49  29
         frameIdsInPreferredOrder.add(FRAME_ID_LANGUAGE);
 50  29
         frameIdsInPreferredOrder.add(FRAME_ID_ARTIST_SORT_ORDER);
 51  29
         frameIdsInPreferredOrder.add(FRAME_ID_PLAYLIST_DELAY);
 52  29
         frameIdsInPreferredOrder.add(FRAME_ID_PLAY_COUNTER);
 53  29
         frameIdsInPreferredOrder.add(FRAME_ID_POPULARIMETER);
 54  29
         frameIdsInPreferredOrder.add(FRAME_ID_PUBLISHER);
 55  29
         frameIdsInPreferredOrder.add(FRAME_ID_ALBUM_ARTIST_SORT_ORDER_ITUNES);
 56  29
         frameIdsInPreferredOrder.add(FRAME_ID_COMPOSER_SORT_ORDER_ITUNES);
 57  29
         frameIdsInPreferredOrder.add(FRAME_ID_IS_COMPILATION);
 58  29
         frameIdsInPreferredOrder.add(FRAME_ID_COMMENT);
 59  
         
 60  
         //Not so bothered about these
 61  29
         frameIdsInPreferredOrder.add(FRAME_ID_ACCOMPANIMENT);
 62  29
         frameIdsInPreferredOrder.add(FRAME_ID_AUDIO_SEEK_POINT_INDEX);
 63  29
         frameIdsInPreferredOrder.add(FRAME_ID_COMMERCIAL_FRAME);
 64  29
         frameIdsInPreferredOrder.add(FRAME_ID_COPYRIGHTINFO);
 65  29
         frameIdsInPreferredOrder.add(FRAME_ID_ENCODEDBY);
 66  29
         frameIdsInPreferredOrder.add(FRAME_ID_ENCODING_TIME);
 67  29
         frameIdsInPreferredOrder.add(FRAME_ID_ENCRYPTION);
 68  29
         frameIdsInPreferredOrder.add(FRAME_ID_EQUALISATION2);
 69  29
         frameIdsInPreferredOrder.add(FRAME_ID_EVENT_TIMING_CODES);
 70  29
         frameIdsInPreferredOrder.add(FRAME_ID_FILE_OWNER);
 71  29
         frameIdsInPreferredOrder.add(FRAME_ID_FILE_TYPE);
 72  29
         frameIdsInPreferredOrder.add(FRAME_ID_GROUP_ID_REG);
 73  29
         frameIdsInPreferredOrder.add(FRAME_ID_HW_SW_SETTINGS);
 74  29
         frameIdsInPreferredOrder.add(FRAME_ID_INITIAL_KEY);
 75  29
         frameIdsInPreferredOrder.add(FRAME_ID_LENGTH);
 76  29
         frameIdsInPreferredOrder.add(FRAME_ID_LINKED_INFO);
 77  29
         frameIdsInPreferredOrder.add(FRAME_ID_MOOD);
 78  29
         frameIdsInPreferredOrder.add(FRAME_ID_MPEG_LOCATION_LOOKUP_TABLE);
 79  29
         frameIdsInPreferredOrder.add(FRAME_ID_MUSICIAN_CREDITS);
 80  29
         frameIdsInPreferredOrder.add(FRAME_ID_ORIGARTIST);
 81  29
         frameIdsInPreferredOrder.add(FRAME_ID_ORIGINAL_RELEASE_TIME);
 82  29
         frameIdsInPreferredOrder.add(FRAME_ID_ORIG_FILENAME);
 83  29
         frameIdsInPreferredOrder.add(FRAME_ID_ORIG_LYRICIST);
 84  29
         frameIdsInPreferredOrder.add(FRAME_ID_ORIG_TITLE);
 85  29
         frameIdsInPreferredOrder.add(FRAME_ID_OWNERSHIP);
 86  29
         frameIdsInPreferredOrder.add(FRAME_ID_POSITION_SYNC);
 87  29
         frameIdsInPreferredOrder.add(FRAME_ID_PRODUCED_NOTICE);
 88  29
         frameIdsInPreferredOrder.add(FRAME_ID_RADIO_NAME);
 89  29
         frameIdsInPreferredOrder.add(FRAME_ID_RADIO_OWNER);
 90  29
         frameIdsInPreferredOrder.add(FRAME_ID_RECOMMENDED_BUFFER_SIZE);
 91  29
         frameIdsInPreferredOrder.add(FRAME_ID_RELATIVE_VOLUME_ADJUSTMENT2);
 92  29
         frameIdsInPreferredOrder.add(FRAME_ID_RELEASE_TIME);
 93  29
         frameIdsInPreferredOrder.add(FRAME_ID_REMIXED);
 94  29
         frameIdsInPreferredOrder.add(FRAME_ID_REVERB);
 95  29
         frameIdsInPreferredOrder.add(FRAME_ID_SEEK);
 96  29
         frameIdsInPreferredOrder.add(FRAME_ID_SET);
 97  29
         frameIdsInPreferredOrder.add(FRAME_ID_SET_SUBTITLE);
 98  29
         frameIdsInPreferredOrder.add(FRAME_ID_SIGNATURE);
 99  29
         frameIdsInPreferredOrder.add(FRAME_ID_SYNC_LYRIC);
 100  29
         frameIdsInPreferredOrder.add(FRAME_ID_SYNC_TEMPO);
 101  29
         frameIdsInPreferredOrder.add(FRAME_ID_TAGGING_TIME);
 102  29
         frameIdsInPreferredOrder.add(FRAME_ID_TERMS_OF_USE);
 103  
 
 104  
         //Want this near the end because can cause problems with unsyncing
 105  29
         frameIdsInPreferredOrder.add(FRAME_ID_ATTACHED_PICTURE);
 106  
 
 107  
         //Itunes doesnt seem to like these, and of little use so put right at end
 108  29
         frameIdsInPreferredOrder.add(FRAME_ID_PRIVATE);
 109  29
         frameIdsInPreferredOrder.add(FRAME_ID_MUSIC_CD_ID);
 110  29
         frameIdsInPreferredOrder.add(FRAME_ID_AUDIO_ENCRYPTION);
 111  29
         frameIdsInPreferredOrder.add(FRAME_ID_GENERAL_ENCAPS_OBJECT);
 112  
 
 113  29
     }
 114  
 
 115  
     private ID3v24PreferredFrameOrderComparator()
 116  29
     {
 117  
 
 118  29
     }
 119  
 
 120  
     public static ID3v24PreferredFrameOrderComparator getInstanceof()
 121  
     {
 122  111
         if (comparator == null)
 123  
         {
 124  29
             comparator = new ID3v24PreferredFrameOrderComparator();
 125  
         }
 126  111
         return comparator;
 127  
     }
 128  
 
 129  
 
 130  
     /**
 131  
      * @param frameId1
 132  
      * @param frameId2
 133  
      * @return
 134  
      */
 135  
     public int compare(String frameId1, String frameId2)
 136  
     {
 137  750
         int frameId1Index = frameIdsInPreferredOrder.indexOf(frameId1);
 138  750
         int frameId2Index = frameIdsInPreferredOrder.indexOf(frameId2);
 139  750
         return frameId1Index - frameId2Index;
 140  
     }
 141  
 
 142  
     public boolean equals(Object obj)
 143  
     {
 144  0
         if (obj instanceof ID3v24PreferredFrameOrderComparator)
 145  
         {
 146  0
             return true;
 147  
         }
 148  0
         return false;
 149  
     }
 150  
 
 151  
 }