Store new torrents.
[rhynodge.git] / src / main / java / net / pterodactylus / rhynodge / triggers / NewEpisodeTrigger.java
index 55266af..f3aee94 100644 (file)
@@ -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<Episode> changedEpisodes = Sets.newHashSet();
 
+       /** All new torrent files. */
+       private final Collection<TorrentFile> newTorrentFiles = Sets.newHashSet();
 
        //
        // TRIGGER METHODS
@@ -72,22 +76,26 @@ public class NewEpisodeTrigger implements Trigger {
                newEpisodes.clear();
                changedEpisodes.clear();
                this.allEpisodes.clear();
-               Map<Episode, Episode> allEpisodes = FluentIterable.from(((EpisodeState) previousState).episodes()).toMap(new Function<Episode, Episode>() {
+               newTorrentFiles.clear();
+               Map<Episode, Episode> allEpisodes = Maps.newHashMap(FluentIterable.from(((EpisodeState) previousState).episodes()).toMap(new Function<Episode, Episode>() {
 
                        @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);
                                }