- for (Program program : _showsToRecord) {
- RecordingResult result = program.record();
- _recordings.get(result).add(program);
+ Set<TimeInterval> previouslyRecorded = new HashSet<TimeInterval>();
+ for (Integer priority : _showsToRecord.keySet()) {
+ for (Program program : _showsToRecord.get(priority)) {
+ TimeInterval interval = program.getInterval();
+ if ( recordingConflictExists(previouslyRecorded, interval)) {
+ _recordings.get(RecordingResult.CONFLICT).add(program);
+ } else {
+ RecordingResult result = program.record();
+ _recordings.get(result).add(program);
+ previouslyRecorded.add(interval);
+ }
+ }
+ }
+ }
+
+ /**
+ * Checks an interval for overlap with a previously recorded program.
+ * @param aPreviouslyRecorded Previously recorded programs.
+ * @param interval Interval.
+ * @return True iff there is a recording conflict.
+ */
+ private boolean recordingConflictExists(Set<TimeInterval> aPreviouslyRecorded, TimeInterval interval) {
+ for (TimeInterval recordedInterval: aPreviouslyRecorded ) {
+ if ( interval.overlap(recordedInterval)) {
+ return true;
+ }