Get an reusa existing episode.
[rhynodge.git] / src / main / java / net / pterodactylus / rhynodge / triggers / NewEpisodeTrigger.java
index 9d42572..5f09560 100644 (file)
@@ -37,6 +37,7 @@ 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;
@@ -58,6 +59,8 @@ public class NewEpisodeTrigger implements Trigger {
        /** All changed episodes. */
        private final Collection<Episode> changedEpisodes = Sets.newHashSet();
 
+       /** All new torrent files. */
+       private final Collection<TorrentFile> newTorrentFiles = Sets.newHashSet();
 
        //
        // TRIGGER METHODS
@@ -73,6 +76,7 @@ public class NewEpisodeTrigger implements Trigger {
                newEpisodes.clear();
                changedEpisodes.clear();
                this.allEpisodes.clear();
+               newTorrentFiles.clear();
                Map<Episode, Episode> allEpisodes = Maps.newHashMap(FluentIterable.from(((EpisodeState) previousState).episodes()).toMap(new Function<Episode, Episode>() {
 
                        @Override
@@ -85,12 +89,16 @@ public class NewEpisodeTrigger implements Trigger {
                                allEpisodes.put(episode, episode);
                                newEpisodes.add(episode);
                        }
-                       for (TorrentFile torrentFile : episode.torrentFiles()) {
-                               int oldSize = allEpisodes.get(episode).torrentFiles().size();
-                               allEpisodes.get(episode).addTorrentFile(torrentFile);
-                               int newSize = allEpisodes.get(episode).torrentFiles().size();
-                               if (!newEpisodes.contains(episode) && (oldSize != newSize)) {
-                                       changedEpisodes.add(episode);
+                       Episode existingEpisode = allEpisodes.get(episode);
+                       for (TorrentFile torrentFile : Lists.newArrayList(episode.torrentFiles())) {
+                               int oldSize = existingEpisode.torrentFiles().size();
+                               existingEpisode.addTorrentFile(torrentFile);
+                               int newSize = existingEpisode.torrentFiles().size();
+                               if (oldSize != newSize) {
+                                       newTorrentFiles.add(torrentFile);
+                               }
+                               if (!newEpisodes.contains(existingEpisode) && (oldSize != newSize)) {
+                                       changedEpisodes.add(existingEpisode);
                                }
                        }
                }