[jboss-cvs] jboss-mail/src/calendar/calendarejb/src/java/org/jboss/mail/calendar/mdb ...
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/calendar/calendarejb/src/java/org/jboss/mail/calendar/mdb
MailResposeHandlerMDB.java
BaseUserNotificationMDB.java
Log:
Plan and schedule alias v 0.1 working
Revision Changes Path
1.5 +121 -17 jboss-mail/src/calendar/calendarejb/src/java/org/jboss/mail/calendar/mdb/MailResposeHandlerMDB.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: MailResposeHandlerMDB.java
===================================================================
RCS file: /cvsroot/jboss/jboss-mail/src/calendar/calendarejb/src/java/org/jboss/mail/calendar/mdb/MailResposeHandlerMDB.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- MailResposeHandlerMDB.java 14 Jul 2006 03:52:17 -0000 1.4
+++ MailResposeHandlerMDB.java 28 Jul 2006 04:57:44 -0000 1.5
@@ -6,13 +6,23 @@
*/
package org.jboss.mail.calendar.mdb;
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
import javax.ejb.EJBException;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.ObjectMessage;
+import org.jboss.mail.calendar.data.CalendarEvent;
import org.jboss.mail.calendar.data.Invite;
+import org.jboss.mail.calendar.data.ServerInfo;
import org.jboss.mail.calendar.data.User;
+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;
@@ -21,12 +31,15 @@
import org.jboss.mail.calendar.interfaces.AddressManagerUtil;
import org.jboss.mail.calendar.interfaces.ScheduleManagerLocal;
import org.jboss.mail.calendar.interfaces.ScheduleManagerUtil;
+import org.jboss.mail.calendar.util.availability.AvailabilityCalculator;
+
+import freemarker.ext.beans.BeansWrapper;
/**
* Mail event response Handler takes
*
* @author Aron Sogor
- * @version $Revision: 1.4 $
+ * @version $Revision: 1.5 $
*
* @ejb.bean name="/ejb/reporting/MailResposeHandlerMDB"
* acknowledge-mode="Auto-acknowledge"
@@ -42,16 +55,23 @@
*/
public class MailResposeHandlerMDB extends BaseUserNotificationMDB {
+ /** DOCUMENT ME! */
+ public static final String TEMP_MEETINGPLAN = "MeetingPlan";
+
+ public static final String TEMP_HELP = "Help";
+
public void onMessage(Message aMessage) {
MailRequest response = null;
try {
response = (MailRequest) ((ObjectMessage) aMessage).getObject();
- if(response instanceof ScheduleEvent)
- processScheduleEvent((ScheduleEvent)response);
- if(response instanceof PlanEvent)
- processPlanEvent((PlanEvent)response);
- if(response instanceof StatusChange)
- processStatusChange((StatusChange)response);
+ if (response instanceof ScheduleEvent)
+ processScheduleEvent((ScheduleEvent) response);
+ if (response instanceof PlanEvent)
+ processPlanEvent((PlanEvent) response);
+ if (response instanceof StatusChange)
+ processStatusChange((StatusChange) response);
+ if (response instanceof HelpEvent)
+ processHelp((HelpEvent) response);
log.info("Received user response + " + response);
} catch (JMSException ex) {
log.error("Problem getting message in : "
@@ -64,15 +84,84 @@
}
- public void processScheduleEvent(ScheduleEvent event){
-
+ public void processScheduleEvent(ScheduleEvent event) {
+ try {
+ AddressManagerLocal addLocal = AddressManagerUtil.getLocalHome()
+ .create();
+ ScheduleManagerLocal schLocal = ScheduleManagerUtil.getLocalHome()
+ .create();
+ Set <String>invites = new HashSet<String>();
+ // get orgaizer's name
+ User organizer = addLocal.getUserByEmailAddress(event.getActor());
+ invites.add(organizer.getUserName());
+ // get invites's name
+ User invitedUser = null;
+ for (int i = 0; i < event.getInvites().length; i++) {
+ invitedUser = addLocal
+ .getUserByEmailAddress(event.getInvites()[i]);
+ invites.add(invitedUser.getUserName());
+ }
+ CalendarEvent calEvent = new CalendarEvent();
+ calEvent.setStartDate(event.getStartDate());
+ calEvent.setEndDate(event.getEndDate());
+ calEvent.setTitle(event.getTitle());
+ calEvent.setNote(event.getNote());
+ schLocal.scheduleEvent(invites.toArray(new String[0]),calEvent,organizer.getUserName());
+ } catch (Exception e) {
+ log.error("Failed to schedule meeting", e);
+ }
}
- public void processPlanEvent(PlanEvent event){
-
+ public void processPlanEvent(PlanEvent event) {
+ try {
+ AddressManagerLocal addLocal = AddressManagerUtil.getLocalHome()
+ .create();
+ ScheduleManagerLocal schLocal = ScheduleManagerUtil.getLocalHome()
+ .create();
+ Set invites = new HashSet<Invite>();
+ // get orgaizers schedule
+ User organizer = addLocal.getUserByEmailAddress(event.getActor());
+ invites.addAll(Arrays.asList(schLocal.listInvites(event
+ .getStartDate(), event.getEndDate(), organizer
+ .getUserName())));
+ // get invites schedule
+ User invitedUser = null;
+ for (int i = 0; i < event.getInvites().length; i++) {
+ invitedUser = addLocal
+ .getUserByEmailAddress(event.getInvites()[i]);
+ invites.addAll(Arrays.asList(schLocal.listInvites(event
+ .getStartDate(), event.getEndDate(), invitedUser
+ .getUserName())));
+ }
+ // calculate
+ CalendarEvent[] planedEvents = AvailabilityCalculator.calculate(
+ (Invite[]) invites.toArray(new Invite[0]), event
+ .getStartDate(), event.getEndDate(), event
+ .getIncrementSize(), event.getIncerementCnt());
+
+ // populate title and notes
+ for (int i = 0; i < planedEvents.length; i++) {
+ planedEvents[i].setTitle(event.getTitle());
+ planedEvents[i].setNote(event.getNote());
+ }
+ BeansWrapper wrapper = new BeansWrapper();
+ Map params = new HashMap();
+ params.put("invites", event.getInvites());
+ params.put("title", event.getTitle());
+ params.put("calDateFormat", ((SimpleDateFormat) event
+ .getCalDateFormat()).toPattern());
+ params.put("planedEvents", wrapper.wrap(planedEvents));
+ params.put("calendarAcct", ServerInfo
+ .getInfo(ServerInfo.NOTIFICATION_MAIL_ADDRESS));
+ this.processMessage(new String[] { event.getActor() }, params,
+ TEMP_MEETINGPLAN, organizer.getPreference()
+ .getCalendarNotification());
+ } catch (Exception e) {
+ log.error("Failed to create plan e-mail", e);
+ }
}
- public void processStatusChange(StatusChange event){
+ public void processStatusChange(StatusChange event) {
try {
AddressManagerLocal addLocal = AddressManagerUtil.getLocalHome()
.create();
@@ -86,8 +175,23 @@
schLocal.updateInvite(invites[i], user.getUserName());
}
} catch (Exception e) {
- log.error("Failed to update event:" + event.getEventGUID() + " status:"
- + " for user:" + event.getActor() ,e);
+ log.error("Failed to update event:" + event.getEventGUID()
+ + " status:" + " for user:" + event.getActor(), e);
+ }
+ }
+
+ public void processHelp(HelpEvent event) {
+ try {
+ AddressManagerLocal addLocal = AddressManagerUtil.getLocalHome()
+ .create();
+ User user = addLocal.getUserByEmailAddress(event.getActor());
+ BeansWrapper wrapper = new BeansWrapper();
+ Map params = new HashMap();
+ params.put("helpcontext", wrapper.wrap(event));
+ this.processMessage(new String[] { event.getActor() }, params,
+ TEMP_HELP, user.getPreference().getCalendarNotification());
+ } catch (Exception e) {
+ log.error("Failed to send help message", e);
}
}
}
1.4 +11 -17 jboss-mail/src/calendar/calendarejb/src/java/org/jboss/mail/calendar/mdb/BaseUserNotificationMDB.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: BaseUserNotificationMDB.java
===================================================================
RCS file: /cvsroot/jboss/jboss-mail/src/calendar/calendarejb/src/java/org/jboss/mail/calendar/mdb/BaseUserNotificationMDB.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- BaseUserNotificationMDB.java 6 Apr 2006 04:21:05 -0000 1.3
+++ BaseUserNotificationMDB.java 28 Jul 2006 04:57:44 -0000 1.4
@@ -6,45 +6,39 @@
*/
package org.jboss.mail.calendar.mdb;
-import freemarker.cache.ClassTemplateLoader;
-import freemarker.cache.FileTemplateLoader;
-import freemarker.cache.MultiTemplateLoader;
-import freemarker.cache.TemplateLoader;
-
-import freemarker.template.Configuration;
-import freemarker.template.Template;
-import freemarker.template.TemplateException;
-
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
-
import java.util.Date;
-import java.util.HashMap;
+import java.util.Map;
import javax.ejb.MessageDrivenBean;
-
import javax.jms.MessageListener;
-
import javax.mail.Address;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
-
import javax.naming.InitialContext;
-
import javax.rmi.PortableRemoteObject;
import org.jboss.mail.calendar.data.PreferenceConstants;
import org.jboss.mail.calendar.data.ServerInfo;
+import freemarker.cache.ClassTemplateLoader;
+import freemarker.cache.FileTemplateLoader;
+import freemarker.cache.MultiTemplateLoader;
+import freemarker.cache.TemplateLoader;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import freemarker.template.TemplateException;
+
/**
* Basic functions for MDB's in moses.
*
* @author $Author: asogor $
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
*/
public abstract class BaseUserNotificationMDB extends MosesMDB implements
MessageDrivenBean, MessageListener {
@@ -103,7 +97,7 @@
public void ejbRemove() {
}
- protected void processMessage(String[] toUserAddress, HashMap values,
+ protected void processMessage(String[] toUserAddress, Map values,
String templateName, int preference) throws MessagingException {
StringWriter message = new StringWriter();
String subject = ""; //$NON-NLS-1$
More information about the jboss-cvs-commits
mailing list