+ /**
+ * Records interesting shows.
+ *
+ * @param aProgramCondition
+ * Condition determining which shows are interesting.
+ * @param aGuide
+ * Television guide.
+ * @throws MessagingException
+ * In case of problems sending a summary mail.
+ */
+ private void recordInterestingShows(Condition<Program> aProgramCondition,
+ TVGuide aGuide) throws MessagingException {
+ MatchVisitor matcher = new MatchVisitor(aProgramCondition);
+ aGuide.accept(matcher);
+ List<Program> programs = matcher.getMatches();
+ EnumMap<RecordingResult, List<Program>> messages = new EnumMap<RecordingResult, List<Program>>(
+ RecordingResult.class);
+ for (RecordingResult result: RecordingResult.values()) {
+ messages.put(result, new ArrayList<Program>());
+ }
+ for (Program program : programs) {
+ try {
+ Program.RecordingResult result = program.record();
+ messages.get(result).add(program);
+ } catch (PageException e) {
+ LOG.info("Attempt to record " + program + " failed.");
+ messages.get(RecordingResult.ERROR).add(program);
+ }
+ }
+ 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";
+ }
+ }
+ }
+ if ( programs.size() == 0 ) {
+ msg += "No suitable programs found";
+ }
+
+ System.out.println(msg);
+ sendMail(msg);