package com.kabouzeid.gramophone.util; import com.kabouzeid.gramophone.lastfm.rest.model.LastFmAlbum.Album; import com.kabouzeid.gramophone.lastfm.rest.model.LastFmArtist.Artist; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; /** * @author Karim Abou Zeid (kabouzeid) */ public class LastFMUtil { public enum ImageSize { SMALL, MEDIUM, LARGE, EXTRALARGE, MEGA, UNKNOWN } public static String getLargestArtistImageUrl(List<Artist.Image> images) { Map<ImageSize, String> imageUrls = new HashMap<>(); for (Artist.Image image : images) { ImageSize size = null; final String attribute = image.getSize(); if (attribute == null) { size = ImageSize.UNKNOWN; } else { try { size = ImageSize.valueOf(attribute.toUpperCase(Locale.ENGLISH)); } catch (final IllegalArgumentException e) { // if they suddenly again introduce a new image size } } if (size != null) { imageUrls.put(size, image.getText()); } } return getLargestImageUrl(imageUrls); } public static String getLargestAlbumImageUrl(List<Album.Image> images) { Map<ImageSize, String> imageUrls = new HashMap<>(); for (Album.Image image : images) { ImageSize size = null; final String attribute = image.getSize(); if (attribute == null) { size = ImageSize.UNKNOWN; } else { try { size = ImageSize.valueOf(attribute.toUpperCase(Locale.ENGLISH)); } catch (final IllegalArgumentException e) { // if they suddenly again introduce a new image size } } if (size != null) { imageUrls.put(size, image.getText()); } } return getLargestImageUrl(imageUrls); } private static String getLargestImageUrl(Map<ImageSize, String> imageUrls) { if (imageUrls.containsKey(ImageSize.MEGA)) { return imageUrls.get(ImageSize.MEGA); } if (imageUrls.containsKey(ImageSize.EXTRALARGE)) { return imageUrls.get(ImageSize.EXTRALARGE); } if (imageUrls.containsKey(ImageSize.LARGE)) { return imageUrls.get(ImageSize.LARGE); } if (imageUrls.containsKey(ImageSize.MEDIUM)) { return imageUrls.get(ImageSize.MEDIUM); } if (imageUrls.containsKey(ImageSize.SMALL)) { return imageUrls.get(ImageSize.SMALL); } if (imageUrls.containsKey(ImageSize.UNKNOWN)) { return imageUrls.get(ImageSize.UNKNOWN); } return null; } }