X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Frhynodge%2Ftriggers%2FNewEpisodeTrigger.java;h=f3aee94649bad172516d4b4a18ba25bd9365d920;hb=4d8b603aea34464189cfeca62cb80f69ef9012fb;hp=55266af3b3ab07396afcdc7f251d261f7906d9d4;hpb=50d770036e53d5ba2795b219ec3f5dc6358406b8;p=rhynodge.git diff --git a/src/main/java/net/pterodactylus/rhynodge/triggers/NewEpisodeTrigger.java b/src/main/java/net/pterodactylus/rhynodge/triggers/NewEpisodeTrigger.java index 55266af..f3aee94 100644 --- a/src/main/java/net/pterodactylus/rhynodge/triggers/NewEpisodeTrigger.java +++ b/src/main/java/net/pterodactylus/rhynodge/triggers/NewEpisodeTrigger.java @@ -37,6 +37,8 @@ import org.apache.commons.lang3.StringEscapeUtils; import com.google.common.base.Function; import com.google.common.collect.FluentIterable; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import com.google.common.collect.Ordering; import com.google.common.collect.Sets; @@ -57,6 +59,8 @@ public class NewEpisodeTrigger implements Trigger { /** All changed episodes. */ private final Collection changedEpisodes = Sets.newHashSet(); + /** All new torrent files. */ + private final Collection newTorrentFiles = Sets.newHashSet(); // // TRIGGER METHODS @@ -72,22 +76,26 @@ public class NewEpisodeTrigger implements Trigger { newEpisodes.clear(); changedEpisodes.clear(); this.allEpisodes.clear(); - Map allEpisodes = FluentIterable.from(((EpisodeState) previousState).episodes()).toMap(new Function() { + newTorrentFiles.clear(); + Map allEpisodes = Maps.newHashMap(FluentIterable.from(((EpisodeState) previousState).episodes()).toMap(new Function() { @Override public Episode apply(Episode episode) { return episode; } - }); + })); for (Episode episode : ((EpisodeState) currentState).episodes()) { if (!allEpisodes.containsKey(episode)) { allEpisodes.put(episode, episode); newEpisodes.add(episode); } - for (TorrentFile torrentFile : episode.torrentFiles()) { + for (TorrentFile torrentFile : Lists.newArrayList(episode.torrentFiles())) { int oldSize = allEpisodes.get(episode).torrentFiles().size(); allEpisodes.get(episode).addTorrentFile(torrentFile); int newSize = allEpisodes.get(episode).torrentFiles().size(); + if (oldSize != newSize) { + newTorrentFiles.add(torrentFile); + } if (!newEpisodes.contains(episode) && (oldSize != newSize)) { changedEpisodes.add(episode); }