[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