Scarab commit: svn commit: r10208 - branches/release/b21/src/java/org/tigris/scarab: notification om

[email protected]
Newsgroups gmane.comp.java.scarab.cvs
Message-ID <[email protected]>
Author: dabbous
Date: 2006-07-19 02:04:05-0700
New Revision: 10208

Modified:
   branches/release/b21/src/java/org/tigris/scarab/notification/ScarabNewNotificationManager.java
   branches/release/b21/src/java/org/tigris/scarab/om/NotificationStatus.java

Log:
archiver emails did not contain email body. fixed.

Modified: branches/release/b21/src/java/org/tigris/scarab/notification/ScarabNewNotificationManager.java
Url: http://scarab.tigris.org/source/browse/scarab/branches/release/b21/src/java/org/tigris/scarab/notification/ScarabNewNotificationManager.java?view=diff&rev=10208&p1=branches/release/b21/src/java/org/tigris/scarab/notification/ScarabNewNotificationManager.java&p2=branches/release/b21/src/java/org/tigris/scarab/notification/ScarabNewNotificationManager.java&r1=10207&r2=10208
==============================================================================
--- branches/release/b21/src/java/org/tigris/scarab/notification/ScarabNewNotificationManager.java	(original)
+++ branches/release/b21/src/java/org/tigris/scarab/notification/ScarabNewNotificationManager.java	2006-07-19 02:04:05-0700
@@ -56,8 +56,6 @@
 import java.util.Set;
 import java.util.List;
 import java.util.StringTokenizer;
-
-import javax.mail.internet.InternetAddress;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
@@ -153,8 +151,11 @@
                 Activity act = (Activity)it.next();
                 if (act.getIssue().equals(issue))
                 {
-                    Set users = act.getIssue().getAllUsersToEmail(AttributePeer.EMAIL_TO);
-                    users.addAll(act.getIssue().getAllUsersToEmail(AttributePeer.CC_TO));
+                    Issue actIssue = act.getIssue();
+                    Set users = issue.getAllUsersToEmail(AttributePeer.EMAIL_TO);
+                    users.addAll(actIssue.getAllUsersToEmail(AttributePeer.CC_TO));
+                    //users.addAll(getArchiveUsers(actIssue));
+                    
                     // FIXME: Should we still make difference between CC & TO? If so...
                     // ...do we need this info in the notification_status table??
                     
@@ -173,8 +174,18 @@
                         ScarabUser user     = (ScarabUser)itusers.next();
                         String activityType = act.getActivityType();
                         Integer userId      = user.getUserId();
-                        boolean isSelf = user.getUserId().equals(fromUser.getUserId());
-                        boolean wantsNotification = NotificationFilterManager.isNotificationEnabledFor(moduleId, userId, isSelf, activityType);
+                        boolean wantsNotification;
+                        if(userId != null)
+                        {
+                            boolean isSelf = userId.equals(fromUser.getUserId());
+                            wantsNotification = NotificationFilterManager.isNotificationEnabledFor(moduleId, userId, isSelf, activityType);
+                        }
+                        else
+                        {
+                            // users without userId are considered to be email archivers, who always want notifications.
+                            wantsNotification = true;
+                        }
+                        
                         if(wantsNotification)
                         {
                             NotificationStatus notification = new NotificationStatus(user, act);
@@ -211,6 +222,7 @@
         Map pendingIssueMap = getPendingIssueMap(pending);
 
         Map issueActivities                  = new HashMap(); 
+        Map archiverActivities               = new HashMap();
         Set creators                         = new HashSet();
         NotificationStatus firstNotification;
         NotificationStatus lastNotification;
@@ -223,6 +235,7 @@
             String issueId = "???";
             // clear volatile data structures ...
             issueActivities.clear();
+            archiverActivities.clear();
             creators.clear();
             firstNotification        = null;
             lastNotification         = null;
@@ -236,16 +249,23 @@
                 NotificationStatus currentNotification = (NotificationStatus) it.next();
                 firstNotification = getOldestNotification(currentNotification, firstNotification);
                 lastNotification  = getYoungestNotification(currentNotification, lastNotification);
-
                 try
                 {
                     issueId = issue.getUniqueId();
-                    ScarabUser receiver = currentNotification.getReceiver();
+                    ScarabUser receiver=null;
+                    try
+                    {
+                        receiver = currentNotification.getReceiver();
+                    }
+                    catch(TorqueException te)
+                    {
+                        log.warn("current notification has no reciever.");
+                    }
                     creators.add(currentNotification.getCreator());
                    
-                    Map userNotifications = getNotificationsForUser(issueActivities, receiver);
-                    addNotification(currentNotification, userNotifications);
-
+                    Map userActivities = getActivitiesForUser(issueActivities, receiver);
+                    addActivity(currentNotification, userActivities);
+                    addActivity(currentNotification, archiverActivities);
                     issueTime = adjustTimeToNewer(issueTime, currentNotification);
                 }
                 catch (TorqueException te)
@@ -283,22 +303,11 @@
                     ectx.put("lastNotification", lastNotification);
                     
                     Map groupedActivities = (Map) issueActivities.get(user);
-                    if(groupedActivities != null)
+                    if(groupedActivities == null)
                     {
-                        ectx.put("ActivityIssue", groupedActivities
-                            .get(L10NKeySet.ActivityIssue));
-                        ectx.put("ActivityAttributeChanges", groupedActivities
-                            .get(L10NKeySet.ActivityAttributeChanges));
-                        ectx.put("ActivityPersonnelChanges", groupedActivities
-                            .get(L10NKeySet.ActivityPersonnelChanges));
-                        ectx.put("ActivityComments", groupedActivities
-                            .get(L10NKeySet.ActivityComments));
-                        ectx.put("ActivityAssociatedInfo", groupedActivities
-                            .get(L10NKeySet.ActivityAssociatedInfo));
-                        ectx.put("ActivityDependencies", groupedActivities
-                            .get(L10NKeySet.ActivityDependencies));
-                        ectx.put("ActivityReasons", consolidateActivityReasons(groupedActivities));
+                        groupedActivities = archiverActivities;
                     }
+                    addActivitiesToEmailContext(ectx, groupedActivities);
                     
                     Exception exception = null;
                     try
@@ -334,6 +343,28 @@
 
 
     /**
+     * @param ectx
+     * @param groupedActivities
+     */
+    private void addActivitiesToEmailContext(EmailContext ectx, Map groupedActivities)
+    {
+        ectx.put("ActivityIssue", groupedActivities
+            .get(L10NKeySet.ActivityIssue));
+        ectx.put("ActivityAttributeChanges", groupedActivities
+            .get(L10NKeySet.ActivityAttributeChanges));
+        ectx.put("ActivityPersonnelChanges", groupedActivities
+            .get(L10NKeySet.ActivityPersonnelChanges));
+        ectx.put("ActivityComments", groupedActivities
+            .get(L10NKeySet.ActivityComments));
+        ectx.put("ActivityAssociatedInfo", groupedActivities
+            .get(L10NKeySet.ActivityAssociatedInfo));
+        ectx.put("ActivityDependencies", groupedActivities
+            .get(L10NKeySet.ActivityDependencies));
+        ectx.put("ActivityReasons", consolidateActivityReasons(groupedActivities));
+    }
+
+
+    /**
      * @param issueActivities
      * @return
      */
@@ -348,6 +379,19 @@
             userlist.add(user);
         }
         
+        userlist.addAll(getArchiveUsers(issue));
+
+        Iterator usersToNotifyIterator = userlist.iterator();
+        return usersToNotifyIterator;
+    }
+
+
+    /**
+     * @param issue
+     */
+    private Set getArchiveUsers(Issue issue)
+    {
+        Set userSet = new HashSet();
         try
         {
             String archiveEmail = issue.getModule().getArchiveEmail();
@@ -363,7 +407,7 @@
                     String ccTarget = (String)iter.next();
                     ScarabUser otherUser = new ScarabUserImpl();
                     otherUser.setEmail(ccTarget);
-                    userlist.add(otherUser);
+                    userSet.add(otherUser);
                 }
             }
         }
@@ -371,9 +415,7 @@
         {
             log.warn("Could not notify archive ["+te.getMessage()+"]");
         }
-
-        Iterator usersToNotifyIterator = userlist.iterator();
-        return usersToNotifyIterator;
+        return userSet;
     }
 
 
@@ -591,7 +633,7 @@
      * @param user
      * @return
      */
-    private Map getNotificationsForUser(Map issueActivities, ScarabUser user)
+    private Map getActivitiesForUser(Map issueActivities, ScarabUser user)
     {
         Map userActivities = (Map) issueActivities.get(user);
         if (null == userActivities)
@@ -607,7 +649,7 @@
      * @param notification
      * @param userActivities
      */
-    private void addNotification(NotificationStatus notification, Map userActivities)
+    private void addActivity(NotificationStatus notification, Map userActivities)
     {
         LocalizationKey activityGroup = getActivityGroup(notification.getActivityType());
         List typeNotifications = (List) userActivities.get(activityGroup);

Modified: branches/release/b21/src/java/org/tigris/scarab/om/NotificationStatus.java
Url: http://scarab.tigris.org/source/browse/scarab/branches/release/b21/src/java/org/tigris/scarab/om/NotificationStatus.java?view=diff&rev=10208&p1=branches/release/b21/src/java/org/tigris/scarab/om/NotificationStatus.java&p2=branches/release/b21/src/java/org/tigris/scarab/om/NotificationStatus.java&r1=10207&r2=10208
==============================================================================
--- branches/release/b21/src/java/org/tigris/scarab/om/NotificationStatus.java	(original)
+++ branches/release/b21/src/java/org/tigris/scarab/om/NotificationStatus.java	2006-07-19 02:04:05-0700
@@ -72,6 +72,8 @@
     static public final Integer FAIL           = new Integer(4);
     static public final Integer SENT           = new Integer(5);
     static public final Integer MARK_DELETED   = new Integer(6);
+    
+    static private final Integer ARCHIVER_ID   = new Integer(-1);
        
     private String activityType;
     private Long issueId;
@@ -99,8 +101,12 @@
             att = activity.getActivitySet().getAttachment();
             if (att != null)
             	this.setComment(att.getData());
-            
-            this.setReceiverId(receiver.getUserId());
+            Integer receiverId = receiver.getUserId();
+            if(receiverId == null)
+            {
+                receiverId = ARCHIVER_ID;
+            }
+            this.setReceiverId(receiverId);
         }
         catch(TorqueException te)
         {
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.