List<Program> programs = matcher.getMatches();
EnumMap<RecordingResult, List<Program>> messages = new EnumMap<RecordingResult, List<Program>>(
RecordingResult.class);
- for (RecordingResult result: RecordingResult.values()) {
+ 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);
- }
+ Program.RecordingResult result = program.record();
+ messages.get(result).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)) {
+
+ 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";
+ if (programs.size() == 0) {
+ msg += "No suitable programs found";
}
-
+
System.out.println(msg);
sendMail(msg);
}
Channel channel = createChannel(action.getName(), action
.execute().getAction("right-now").execute());
channels.add(channel);
- if ( SystemProperties.isDebugMode() ) {
- break; // Only one channel is crawled.
+ if (SystemProperties.isDebugMode()) {
+ break; // Only one channel is crawled.
}
} catch (PageException e) {
LOG.error("Could not create channel information for '"
package org.wamblee.crawler.kiss;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.wamblee.crawler.Action;
import org.wamblee.crawler.Page;
import org.wamblee.crawler.PageException;
/**
- * Represents a television program.
+ * Represents a television program.
*/
public class Program {
+
+ private static final Log LOG = LogFactory.getLog(Program.class);
/**
- * Name of the record action on the program details page.
+ * Name of the record action on the program details page.
*/
private static final String RECORD_ACTION = "record";
-
+
private static final String RESULT_ELEM = "result";
-
+
public enum RecordingResult {
- OK("Successfully recorded programs"),
- DUPLICATE("Already recorded programs"),
- CONFLICT("Programs in conflict with another recorded program"),
- OLDSHOW("Programs that occurred in the past"),
- ERROR("Programs that could not be recorded for technical reasons");
-
- private String _description;
-
- private RecordingResult(String aDescription) {
- _description = aDescription;
- }
-
- public String getDescription() {
- return _description;
- }
+ OK("Successfully recorded programs"), DUPLICATE(
+ "Already recorded programs"), CONFLICT(
+ "Programs in conflict with another recorded program"), OLDSHOW(
+ "Programs that occurred in the past"), ERROR(
+ "Programs that could not be recorded for technical reasons");
+
+ private String _description;
+
+ private RecordingResult(String aDescription) {
+ _description = aDescription;
+ }
+
+ public String getDescription() {
+ return _description;
+ }
};
/**
- * Indent string to use for pretty printing.
+ * Indent string to use for pretty printing.
*/
private static final String INDENT = " ";
/**
- * Channel the program is on.
+ * Channel the program is on.
*/
private String _channel;
/**
- * Program name.
+ * Program name.
*/
private String _name;
/**
- * Program description.
+ * Program description.
*/
private String _description;
/**
- * Keywords or classification of the program.
+ * Keywords or classification of the program.
*/
private String _keywords;
private TimeInterval _interval;
/**
- * Action to execute to obtain program information and/or record the program.
+ * Action to execute to obtain program information and/or record the
+ * program.
*/
private Action _programInfo;
/**
- * Constructs the program.
- * @param aChannel Channel name.
- * @param aName Program name.
- * @param aDescription Description.
- * @param aKeywords Keywords/classification.
- * @param aInterval Time interval.
- * @param aProgramInfo Action to execute for detailed program information or
- * for recording the page.
+ * Constructs the program.
+ *
+ * @param aChannel
+ * Channel name.
+ * @param aName
+ * Program name.
+ * @param aDescription
+ * Description.
+ * @param aKeywords
+ * Keywords/classification.
+ * @param aInterval
+ * Time interval.
+ * @param aProgramInfo
+ * Action to execute for detailed program information or for
+ * recording the page.
*/
public Program(String aChannel, String aName, String aDescription,
String aKeywords, TimeInterval aInterval, Action aProgramInfo) {
/**
* Gets the channel.
+ *
* @return Channel.
*/
public String getChannel() {
/**
* Gets the program name.
- * @return Name.
+ *
+ * @return Name.
*/
public String getName() {
return _name;
/**
* Gets the description.
- * @return Description.
+ *
+ * @return Description.
*/
public String getDescription() {
return _description;
}
/**
- * Gets the keywords/classification.
+ * Gets the keywords/classification.
+ *
* @return Keywords/classification
*/
public String getKeywords() {
}
/**
- * Gets the time interval.
- * @return Time interval.
+ * Gets the time interval.
+ *
+ * @return Time interval.
*/
public TimeInterval getInterval() {
return _interval;
/**
* Records the show.
- * @return True iff an attempt could be made to record the page.
- * @throws PageException In case of problems recording the page.
+ *
+ * @return Status describing the result of recording.
*/
- public RecordingResult record() throws PageException {
- Action record = _programInfo.execute().getAction(RECORD_ACTION);
- if (record == null) {
- return RecordingResult.OLDSHOW;
+ public RecordingResult record() {
+ try {
+ Action record = _programInfo.execute().getAction(RECORD_ACTION);
+ if (record == null) {
+ return RecordingResult.OLDSHOW;
+ }
+ Page result = record.execute();
+ return RecordingResult.valueOf(result.getContent().getText());
+ } catch (PageException e) {
+ LOG.warn("Technical problem recording program: '" + this + "'", e);
+ return RecordingResult.ERROR;
}
- Page result = record.execute();
- return RecordingResult.valueOf(result.getContent().getText());
}
/**
- * Accepts the visitor.
- * @param aVisitor Visitor.
+ * Accepts the visitor.
+ *
+ * @param aVisitor
+ * Visitor.
*/
public void accept(Visitor aVisitor) {
aVisitor.visitProgram(this);