- 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);
+
+ Set<Program> showsToRecord = new TreeSet<Program>(new Program.TimeSorter());
+ Set<Program> interestingShows = new TreeSet<Program>(new Program.TimeSorter());
+
+ for (ProgramFilter filter : aProgramCondition) {
+ List<Program> 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() + "'");
+ }