1
package org.jaudiotagger.tag.id3;
3
import java.util.Comparator;
5
import java.util.ArrayList;
8
* Orders frame Ids so that the most important frames are writtne first
10
public class ID3v22PreferredFrameOrderComparator implements Comparator<String>
12
private static ID3v22PreferredFrameOrderComparator comparator;
13
private static List frameIdsInPreferredOrder = new ArrayList<String>();
16
//these are the key ones we want at the top
17
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_UNIQUE_FILE_ID);
18
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_TITLE);
19
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ARTIST);
20
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ALBUM);
21
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_TORY);
22
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_GENRE);
23
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_COMPOSER);
24
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_CONDUCTOR);
25
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_CONTENT_GROUP_DESC);
26
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_TRACK);
27
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_TYER);
28
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_TDAT);
29
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_TIME);
30
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_BPM);
31
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ISRC);
32
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_TORY);
33
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_TITLE_REFINEMENT);
34
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_UNSYNC_LYRICS);
35
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_USER_DEFINED_INFO);
36
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_USER_DEFINED_URL);
37
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_URL_ARTIST_WEB);
38
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_URL_COMMERCIAL);
39
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_URL_COPYRIGHT);
40
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_URL_FILE_WEB);
41
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_URL_OFFICIAL_RADIO);
42
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_URL_PAYMENT);
43
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_URL_PUBLISHERS);
44
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_URL_COMMERCIAL);
45
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_LYRICIST);
46
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_MEDIA_TYPE);
47
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_IPLS);
48
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_LANGUAGE);
49
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_TITLE_SORT_ORDER_ITUNES);
50
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_PLAYLIST_DELAY);
51
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_PLAY_COUNTER);
52
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_POPULARIMETER);
53
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_PUBLISHER);
54
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ALBUM_ARTIST_SORT_ORDER_ITUNES);
55
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_COMPOSER_SORT_ORDER_ITUNES);
56
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_IS_COMPILATION);
57
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_TITLE_SORT_ORDER_ITUNES);
58
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ARTIST_SORT_ORDER_ITUNES);
59
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ALBUM_SORT_ORDER_ITUNES);
60
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ALBUM_ARTIST_SORT_ORDER_ITUNES);
61
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_COMPOSER_SORT_ORDER_ITUNES);
62
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_COMMENT);
64
//Not so bothered about these
65
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ACCOMPANIMENT);
66
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_TRDA);
67
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_COPYRIGHTINFO);
68
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ENCODEDBY);
69
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_EQUALISATION);
70
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_EVENT_TIMING_CODES);
71
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_FILE_TYPE);
72
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_HW_SW_SETTINGS);
73
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_INITIAL_KEY);
74
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_LENGTH);
75
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_LINKED_INFO);
76
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_TSIZ);
77
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_MPEG_LOCATION_LOOKUP_TABLE);
78
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ORIGARTIST);
79
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ORIG_FILENAME);
80
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ORIG_LYRICIST);
81
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ORIG_TITLE);
82
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_RECOMMENDED_BUFFER_SIZE);
83
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_REMIXED);
84
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_REVERB);
85
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_SET);
86
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_SYNC_LYRIC);
87
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_SYNC_TEMPO);
89
//Want this near the end because can cause problems with unsyncing
90
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_ATTACHED_PICTURE);
92
//Itunes doesnt seem to like these, and of little use so put right at end
93
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_MUSIC_CD_ID);
94
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_AUDIO_ENCRYPTION);
95
frameIdsInPreferredOrder.add(ID3v22Frames.FRAME_ID_V2_GENERAL_ENCAPS_OBJECT);
99
private ID3v22PreferredFrameOrderComparator()
104
public static ID3v22PreferredFrameOrderComparator getInstanceof()
106
if(comparator ==null)
108
comparator =new ID3v22PreferredFrameOrderComparator();
119
public int compare(String frameId1,String frameId2)
121
int frameId1Index= frameIdsInPreferredOrder.indexOf(frameId1);
122
int frameId2Index= frameIdsInPreferredOrder.indexOf(frameId2);
123
return frameId1Index - frameId2Index;
126
public boolean equals(Object obj)
128
if(obj instanceof ID3v22PreferredFrameOrderComparator)