diff --git a/fmframework/src/META-INF/MANIFEST.MF b/fmframework/src/META-INF/MANIFEST.MF deleted file mode 100644 index 5e94951..0000000 --- a/fmframework/src/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Class-Path: - diff --git a/fmframework/src/sarsoo/fmframework/util/FMObjList.java b/fmframework/src/sarsoo/fmframework/util/FMObjList.java index 0adcc6c..0801c9d 100644 --- a/fmframework/src/sarsoo/fmframework/util/FMObjList.java +++ b/fmframework/src/sarsoo/fmframework/util/FMObjList.java @@ -9,7 +9,7 @@ import sarsoo.fmframework.music.Artist; import sarsoo.fmframework.music.FMObj; import sarsoo.fmframework.music.Track; -public class FMObjList extends ArrayList implements Comparable, Serializable{ +public class FMObjList extends ArrayList implements Comparable, Serializable { private static final long serialVersionUID = 1L; @@ -25,57 +25,49 @@ public class FMObjList extends ArrayList implements Comparable } public int getTotalUserScrobbles() { - int counter; - int totalScrobbles = 0; - for (counter = 0; counter < size(); counter++) { - FMObj obj = get(counter); - if (obj.getClass() == Artist.class) - totalScrobbles += obj.getUserPlayCount(); - - else if (obj.getClass() == Track.class) { - Track track = (Track) obj; - - Artist artist = track.getArtist(); - - boolean found = false; - int counter2; - for (counter2 = 0; counter2 < size(); counter2++) { - if (artist.equals(get(counter2))) { - found = true; - break; + int totalScrobbles = stream().filter(t -> t.getClass() == Artist.class).mapToInt(FMObj::getUserPlayCount).sum(); + + totalScrobbles += stream().filter(t -> { + if (t.getClass() == Album.class) { + + Album album = (Album) t; + + if (contains(album.getArtist())) { + return false; + } else { + return true; + } + } else { + return false; + } + }).mapToInt(FMObj::getUserPlayCount).sum(); + + totalScrobbles += stream().filter(t -> { + if (t.getClass() == Track.class) { + + Track track = (Track) t; + + if (contains(track.getArtist())) { + return false; + } else { + + if (track.getAlbum() != null) { + if (contains(track.getAlbum())) { + return false; + } else { + return true; + } + } else { + return true; } } - if (!found) { - totalScrobbles += obj.getUserPlayCount(); - } - -// if (!super.contains(track.getArtist())) { -// Album album = track.getAlbum(); -// if (album != null) { -// if (!super.contains(album)) -// totalScrobbles += obj.getUserPlayCount(); -// } -// } - } - else if (obj.getClass() == Album.class) { - Album album = (Album) obj; - Artist artist = album.getArtist(); - - boolean found = false; - int counter2; - for (counter2 = 0; counter2 < size(); counter2++) { - if (artist.equals(get(counter2))) { - found = true; - break; - } - } - if (!found) { - totalScrobbles += obj.getUserPlayCount(); - } + } else { + return false; } - } + }).mapToInt(FMObj::getUserPlayCount).sum(); + return totalScrobbles; } @@ -106,12 +98,12 @@ public class FMObjList extends ArrayList implements Comparable public int compareTo(FMObjList list) { return getTotalUserScrobbles() - list.getTotalUserScrobbles(); } - + public void refresh() { int counter; - for(counter = 0; counter < size(); counter++) { + for (counter = 0; counter < size(); counter++) { get(counter).refresh(); } - + } }