package org.jaudiotagger.tag.id3.reference; /** * Defines the how ratings are stored In Media Monkey for ID3 * * POPM=0 → Rating=0 * POPM=1 → Rating=1 * POPM=2-8 → Rating=0 * POPM=9-18 → Rating=0.5 * POPM=19-28 → Rating=1 (MM2.5:Rating=0.5 → POPM=28) (MM3.0:Rating=0.5 → POPM=26) * POPM=29 → Rating=1.5 * POPM=30-39 → Rating=0.5 * POPM=40-49 → Rating=1 * POPM=50-59 → Rating=1.5 (MM2.5:Rating=1 → POPM=53) (MM3.0:Rating=1 → POPM=51) * POPM=60-69 → Rating=2 * POPM=70-90 → Rating=1.5 * POPM=91-113 → Rating=2 * POPM=114-123 → Rating=2.5 * POPM=124-133 → Rating=3 (MM2.5:Rating=2.5 → POPM=129) (MM3.0:Rating=2.5 → POPM=128) * POPM=134-141 → Rating=2.5 * POPM=142-167 → Rating=3 * POPM=168-191 → Rating=3.5 * POPM=192-218 → Rating=4 * POPM=219-247 → Rating=4.5 * POPM=248-255 → Rating=5 * * * TODO Media Monkey includes half stars so essentially a 10 star scale but not used by anything else much */ public class MediaMonkeyPlayerRating extends ID3Rating { private static ID3Rating rating=null; private MediaMonkeyPlayerRating() { } public int convertRatingFromFiveStarScale(int value) { if(value < 0 || value > 5) { throw new IllegalArgumentException("convert Ratings from Five Star Scale accepts values from 0 to 5 not:"+value); } int newValue=0; switch(value) { case 0: break; case 1: newValue=1; break; case 2: newValue=64; break; case 3: newValue=128; break; case 4: newValue=196; break; case 5: newValue=255; break; } return newValue; } public int convertRatingToFiveStarScale(int value) { int newValue=0; if (value<=0) { newValue = 0; } else if (value<=1) { newValue = 1; } else if (value<=8) { newValue = 0; } else if (value<=18) { newValue = 1; } else if (value<=28) { newValue = 1; } else if (value<=28) { newValue = 1; } else if (value<=28) { newValue = 1; } else if (value<=28) { newValue = 1; } else if (value<=29) { newValue = 2; } else if (value<=39) { newValue = 1; } else if (value<=49) { newValue = 1; } else if (value<=113) { newValue = 2; } else if (value<=167) { newValue = 3; } else if (value<=218) { newValue = 4; } else { newValue = 5; } return newValue; } public static ID3Rating getInstance() { if(rating==null) { rating=new MediaMonkeyPlayerRating(); } return rating; } }