*/
class ProgramConfigurationParser {
+ /**
+ *
+ */
+ private static final int DEFAULT_SMTP_PORT = 25;
+
private static final String ELEM_PASSWORD = "password";
private static final String ELEM_USERNAME = "username";
// 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_PATTERN = "match";
private static final String ELEM_ACTION = "action";
-
+
private static final String ELEM_CATEGORY = "category";
private static final String ACTION_NOTIFY = "notify";
-
- private List<ProgramFilter> _filters;
-
- private Notifier _notifier;
-
- ProgramConfigurationParser() {
- _filters = null;
- _notifier = null;
+
+ private List<ProgramFilter> _filters;
+
+ private Notifier _notifier;
+
+ ProgramConfigurationParser() {
+ _filters = null;
+ _notifier = null;
}
/**
Element categoryElem = program.element(ELEM_CATEGORY);
String category = "";
- if ( categoryElem != null ) {
- category = categoryElem.getText().trim();
+ if (categoryElem != null) {
+ category = categoryElem.getText().trim();
}
-
+
Element actionElem = program.element(ELEM_ACTION);
- ProgramAction action = new RecordProgramAction();
+ ProgramAction action = new RecordProgramAction(1);
if (actionElem != null) {
if (actionElem.getText().equals(ACTION_NOTIFY)) {
action = new InterestingProgramAction(category);
}
}
-
- List<Condition<Program>> regexConditions =
- new ArrayList<Condition<Program>>();
- for (Iterator j = program.elementIterator(ELEM_PATTERN); j.hasNext(); ) {
- Element patternElem = (Element)j.next();
- String fieldName = "name";
- Attribute fieldAttribute = patternElem.attribute("field");
- if ( fieldAttribute != null ) {
- fieldName = fieldAttribute.getText();
+
+ List<Condition<Program>> regexConditions = new ArrayList<Condition<Program>>();
+ for (Iterator j = program.elementIterator(ELEM_PATTERN); j
+ .hasNext();) {
+ Element patternElem = (Element) j.next();
+ String fieldName = "name";
+ Attribute fieldAttribute = patternElem.attribute("field");
+ if (fieldAttribute != null) {
+ fieldName = fieldAttribute.getText();
}
- String pattern = ".*(" + patternElem.getText()
- + ").*";
- regexConditions.add(new PropertyRegexCondition<Program>(fieldName, pattern, true));
+ String pattern = ".*(" + patternElem.getText() + ").*";
+ regexConditions.add(new PropertyRegexCondition<Program>(
+ fieldName, pattern, true));
}
- Condition<Program> condition = new AndCondition<Program>(regexConditions);
+ Condition<Program> condition = new AndCondition<Program>(
+ regexConditions);
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) {
+ 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 );
-
+ 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.
+ *
+ * @param aSmtp
+ * Mail server configuration.
* @return Mail server.
*/
- private MailServer parseMailServer( Element aSmtp ) {
+ private MailServer parseMailServer(Element aSmtp) {
String host = aSmtp.elementTextTrim(ELEM_HOST);
Element portElem = aSmtp.element(ELEM_PORT);
- int port = 25;
- if ( portElem != null ) {
+ 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.
+ *
* @return Filter list.
*/
- public List<ProgramFilter> getFilters() {
+ public List<ProgramFilter> getFilters() {
return _filters;
}
-
+
/**
- * Returns the notifier to use.
+ * Returns the notifier to use.
+ *
* @return Notifier.
*/
- public Notifier getNotifier() {
- return _notifier;
+ public Notifier getNotifier() {
+ return _notifier;
}
}