[jboss-cvs] jboss-mail/src/java/org/jboss/mail/maillistener ...
Aron Sogor
bigman at gmail.com
Fri Jul 28 00:57:44 EDT 2006
User: asogor
Date: 06/07/28 00:57:44
Modified: src/java/org/jboss/mail/maillistener
CalendarMailListener.java
Log:
Plan and schedule alias v 0.1 working
Revision Changes Path
1.6 +402 -342 jboss-mail/src/java/org/jboss/mail/maillistener/CalendarMailListener.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: CalendarMailListener.java
===================================================================
RCS file: /cvsroot/jboss/jboss-mail/src/java/org/jboss/mail/maillistener/CalendarMailListener.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- CalendarMailListener.java 14 Jul 2006 03:52:17 -0000 1.5
+++ CalendarMailListener.java 28 Jul 2006 04:57:44 -0000 1.6
@@ -49,12 +49,15 @@
import org.jboss.mail.MailException;
import org.jboss.mail.MailListener;
import org.jboss.mail.calendar.data.InviteStatus;
+import org.jboss.mail.calendar.eventbus.mail.HelpEvent;
import org.jboss.mail.calendar.eventbus.mail.MailRequest;
import org.jboss.mail.calendar.eventbus.mail.PlanEvent;
import org.jboss.mail.calendar.eventbus.mail.ScheduleEvent;
import org.jboss.mail.calendar.eventbus.mail.StatusChange;
import org.jboss.mail.message.Mail;
import org.jboss.mail.message.MailAddress;
+import org.jboss.mail.message.MailBody;
+import org.jboss.mail.message.MailHeaders;
import org.jboss.mail.message.Message;
import org.jboss.system.ServiceMBeanSupport;
@@ -184,8 +187,7 @@
* supplied the following defaults are used: startDate = today0.00 +
* defaultStartHour endDate = startDate + defaultDurationInHour
* incrementSize = defaultIncrementSize incrementCount =
- * defaultIncrementCount
- * Invite list is generated based on the To field.
+ * defaultIncrementCount Invite list is generated based on the To field.
*
* @param mail
* @param address
@@ -211,8 +213,9 @@
defaultIncrementSize);
incrementCnt = parseInt(KEY_INCEREMENT_CNT, paramMap,
defaultIncrementCnt);
- PlanEvent request = new PlanEvent(address[acnt].getRawAddress(),
- createInvites(mail, address[acnt]), start, end,
+ PlanEvent request = new PlanEvent(mail.getFrom().getRawAddress(),
+ createInvites(mail, address[acnt]), dateFormat,
+ extractTitle(mail), extractNote(mail), start, end,
incrementSize, incrementCnt);
handleResponse(request);
} catch (ParseException e) {
@@ -241,8 +244,8 @@
/**
* Create a schedule request. Format:
- * SCHEDULE.startdate=x.enddate=y.calendar at host
- * Invite list is generated based on the To field.
+ * SCHEDULE.startdate=x.enddate=y.calendar at host Invite list is generated
+ * based on the To field.
*
* @param mail
* @param address
@@ -256,9 +259,39 @@
try {
start = parseDate(KEY_START_DATE, paramMap, null);
end = parseDate(KEY_END_DATE, paramMap, null);
- ScheduleEvent request = new ScheduleEvent(address[acnt]
+ ScheduleEvent request = new ScheduleEvent(mail.getFrom()
.getRawAddress(), createInvites(mail, address[acnt]),
- start, end);
+ start, end, extractNote(mail), extractTitle(mail));
+ handleResponse(request);
+ } catch (ParseException e) {
+ handleRequestSyntaxError(mail, e);
+ }
+
+ mail.removeTo(address[acnt]);
+ }
+
+ /**
+ * Create a schedule request. Format:
+ * SCHEDULE.startdate=x.enddate=y.calendar at host Invite list is generated
+ * based on the To field.
+ *
+ * @param mail
+ * @param address
+ * @param acnt
+ * @param params
+ */
+ protected void handleHelpRequest(Mail mail, MailAddress[] address,
+ int acnt, String[] params) {
+ Map paramMap = parseParams(params, 1);
+ Date start, end;
+ try {
+ start = parseDate(KEY_START_DATE, paramMap, null);
+ end = parseDate(KEY_END_DATE, paramMap, null);
+
+ // String aactor, DateFormat calDateFormat, Date endDate, int
+ // incerementCnt, int incrementSize, Date startDate
+ HelpEvent request = new HelpEvent(mail.getFrom().getRawAddress(),
+ dateFormat);
handleResponse(request);
} catch (ParseException e) {
handleRequestSyntaxError(mail, e);
@@ -318,6 +351,9 @@
if (params[0].toUpperCase().equals("SCHEDULE")) {
handleScheduleRequest(mail, address, acnt, params);
}
+ if (params[0].toUpperCase().equals("HELP")) {
+ handleHelpRequest(mail, address, acnt, params);
+ }
}
}
}
@@ -411,4 +447,28 @@
public void setDestinationType(String destType) {
this.destinationType = destType;
}
+
+ /**
+ * Use the mail subject as the title for the meeting.
+ *
+ * @param mail
+ * @return
+ */
+ private String extractTitle(Mail mail) {
+ String value = mail.getHeader(MailHeaders.HEADER_SUBJECT)[0];
+ return (value == null ? "" : value.trim());
+ }
+
+ /**
+ * This is a suboptimal choice for truncateing the message. The calendar
+ * Note field is still VERY limited in size, there is not point to carry any
+ * bigger message.
+ *
+ * @param mail
+ * @return
+ */
+ private String extractNote(Mail mail) {
+ MailBody value = mail.getMailBody().get(0);
+ return (value == null ? "" : (new String(value.getData())).trim());
+ }
}
More information about the jboss-cvs-commits
mailing list