X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=crawler%2Fkiss%2Fsrc%2Forg%2Fwamblee%2Fcrawler%2Fkiss%2FKissCrawler.java;fp=crawler%2Fkiss%2Fsrc%2Forg%2Fwamblee%2Fcrawler%2Fkiss%2FKissCrawler.java;h=5922cc4209c175ee1c812a5f83b74769902e1e01;hb=a641296cc35afce34a55bab521150446ea896798;hp=d302fb6e915b8e5bffcf9228837ef015a6fbd453;hpb=7d4551d2167513fe2ec00e62e3fce2ca837a2c74;p=utils diff --git a/crawler/kiss/src/org/wamblee/crawler/kiss/KissCrawler.java b/crawler/kiss/src/org/wamblee/crawler/kiss/KissCrawler.java index d302fb6e..5922cc42 100644 --- a/crawler/kiss/src/org/wamblee/crawler/kiss/KissCrawler.java +++ b/crawler/kiss/src/org/wamblee/crawler/kiss/KissCrawler.java @@ -25,7 +25,6 @@ import java.io.InputStream; import java.io.PrintStream; import java.util.ArrayList; import java.util.Date; -import java.util.EnumMap; import java.util.List; import java.util.Properties; import java.util.Set; @@ -50,7 +49,6 @@ import org.wamblee.crawler.Page; import org.wamblee.crawler.PageException; import org.wamblee.crawler.impl.ConfigurationParser; import org.wamblee.crawler.impl.CrawlerImpl; -import org.wamblee.crawler.kiss.Program.RecordingResult; /** * The KiSS crawler for automatic recording of interesting TV shows. @@ -141,9 +139,7 @@ public class KissCrawler { TVGuide guide = createGuide(page); PrintVisitor printer = new PrintVisitor(System.out); guide.accept(printer); - - - recordInterestingShows(programFilters, guide); + processResults(programFilters, guide); } finally { os.flush(); os.close(); @@ -161,81 +157,22 @@ public class KissCrawler { * @throws MessagingException * In case of problems sending a summary mail. */ - private void recordInterestingShows(List aProgramCondition, + private void processResults(List aProgramCondition, TVGuide aGuide) throws MessagingException { - - Set showsToRecord = new TreeSet(new Program.TimeSorter()); - Set interestingShows = new TreeSet(new Program.TimeSorter()); - + ProgramActionExecutor executor = new ProgramActionExecutor(); for (ProgramFilter filter : aProgramCondition) { - List programs = filter.apply(aGuide); - switch (filter.getAction()) { - case RECORD: { - for (Program program: programs) { - showsToRecord.add(program); - } - break; - } - case NOTIFY: { - for (Program program: programs) { - if ( program.isRecordingPossible()) { - interestingShows.add(program); - } - } - break; - } - default: { - throw new RuntimeException("Unknown action '" + filter.getAction() + "'"); - } + List programs = filter.apply(aGuide); + ProgramAction action = filter.getAction(); + for (Program program: programs) { + action.execute(program, executor); } } - - EnumMap> messages = recordShows(showsToRecord); - - String msg = "Summary of KiSS crawler: \n\n\n"; - - for (RecordingResult result : RecordingResult.values()) { - if (messages.get(result).size() > 0) { - msg += result.getDescription() + "\n\n"; - for (Program program : messages.get(result)) { - msg += program + "\n\n"; - } - } - } - - if ( interestingShows.size() > 0 ) { - msg += "Possibly interesting shows:\n\n"; - for (Program program: interestingShows) { - msg += program + "\n\n"; - } - } - if (showsToRecord.size() + interestingShows.size() == 0) { - msg += "No suitable programs found"; - } - + executor.commit(); + String msg = executor.getReport(); System.out.println(msg); sendMail(msg); } - /** - * Records shows. - * @param showsToRecord Shows to record. - * @return Recording results. - */ - private EnumMap> recordShows(Set showsToRecord) { - EnumMap> messages = new EnumMap>( - RecordingResult.class); - for (RecordingResult result : RecordingResult.values()) { - messages.put(result, new ArrayList()); - } - - for (Program program : showsToRecord) { - Program.RecordingResult result = program.record(); - messages.get(result).add(program); - } - return messages; - } - /** * Creates the crawler. *