import org.wamblee.conditions.Condition;
import org.wamblee.conditions.PropertyRegexCondition;
import org.wamblee.crawler.kiss.guide.Program;
-import org.wamblee.crawler.kiss.notification.MailNotifier;
-import org.wamblee.crawler.kiss.notification.MailServer;
-import org.wamblee.crawler.kiss.notification.Notifier;
/**
* Parse the configuration of desired programs.
*/
class ProgramConfigurationParser {
-
- /**
- *
- */
- private static final int DEFAULT_SMTP_PORT = 25;
-
- private static final String ELEM_PASSWORD = "password";
-
- private static final String ELEM_USERNAME = "username";
-
- private static final String ELEM_PORT = "port";
-
- private static final String ELEM_HOST = "host";
-
- // Formatting configuration.
- private static final String ELEM_FORMAT = "format";
-
- private static final String ELEM_TEXT = "text";
-
- private static final String ELEM_HTML = "html";
-
- // Mail server configuration.
-
- private static final String ELEM_NOTIFICATION = "notification";
-
- private static final String ELEM_SMTP = "smtp";
-
- private static final String ELEM_SUBJECT = "subject";
-
- private static final String ELEM_TO = "to";
-
- private static final String ELEM_FROM = "from";
+ private static final int DEFAULT_PRIORITY = 1;
// Configuration of interesting programs.
private static final String ELEM_PROGRAM = "program";
+
+ private static final String ELEM_PRIORITY = "priority";
private static final String ELEM_PATTERN = "match";
private List<ProgramFilter> _filters;
- private Notifier _notifier;
-
ProgramConfigurationParser() {
_filters = null;
- _notifier = null;
}
/**
}
Element actionElem = program.element(ELEM_ACTION);
- ProgramAction action = new RecordProgramAction(1);
+ int priority = DEFAULT_PRIORITY;
+ String priorityString = program.elementTextTrim(ELEM_PRIORITY);
+ if ( priorityString != null ) {
+ priority = Integer.valueOf(priorityString);
+ }
+ ProgramAction action = new RecordProgramAction(priority);
if (actionElem != null) {
if (actionElem.getText().equals(ACTION_NOTIFY)) {
action = new InterestingProgramAction(category);
filters.add(new ProgramFilter(condition, action));
}
_filters = filters;
-
- Element notifier = root.element(ELEM_NOTIFICATION);
- _notifier = parseNotifier(notifier);
-
} catch (DocumentException e) {
throw new RuntimeException("Error parsing program configuraiton", e);
}
}
- /**
- * Parses the notifier
- *
- * @return Notifier
- */
- private Notifier parseNotifier(Element aNotifier) {
- String from = aNotifier.elementTextTrim(ELEM_FROM);
- String to = aNotifier.elementTextTrim(ELEM_TO);
- String subject = aNotifier.elementTextTrim(ELEM_SUBJECT);
-
- Element smtp = aNotifier.element(ELEM_SMTP);
- MailServer server = parseMailServer(smtp);
-
- Element format = aNotifier.element(ELEM_FORMAT);
- String htmlXslt = format.elementTextTrim(ELEM_HTML);
- String textXslt = format.elementTextTrim(ELEM_TEXT);
-
- return new MailNotifier(from, to, subject, htmlXslt, textXslt, server);
- }
-
- /**
- * Parses the mail server from the XML.
- *
- * @param aSmtp
- * Mail server configuration.
- * @return Mail server.
- */
- private MailServer parseMailServer(Element aSmtp) {
- String host = aSmtp.elementTextTrim(ELEM_HOST);
- Element portElem = aSmtp.element(ELEM_PORT);
- int port = DEFAULT_SMTP_PORT;
- if (portElem != null) {
- port = Integer.valueOf(portElem.getTextTrim());
- }
- String username = aSmtp.elementTextTrim(ELEM_USERNAME);
- String password = aSmtp.elementTextTrim(ELEM_PASSWORD);
-
- MailServer server = new MailServer(host, port, username, password);
- return server;
- }
-
/**
* Returns the list of program filters.
*
public List<ProgramFilter> getFilters() {
return _filters;
}
-
- /**
- * Returns the notifier to use.
- *
- * @return Notifier.
- */
- public Notifier getNotifier() {
- return _notifier;
- }
}