Scarab commit: svn commit: r10906 - trunk/src/java/org/tigris/scarab/notification/ScarabNotificationManager.java

Hussayn Dabbous <[email protected]>
Newsgroups gmane.comp.java.scarab.cvs
Message-ID <[email protected]>
Author: dabbous
Date: 2010-02-11 08:44:50-0800
New Revision: 10906

Modified:
   trunk/src/java/org/tigris/scarab/notification/ScarabNotificationManager.java

Log:
Code enhancement. Added a dataDaump and an additional level of try/catch to the NotificationManager. That allows better tracking of Errors within the NotificationManager.

Modified: trunk/src/java/org/tigris/scarab/notification/ScarabNotificationManager.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/notification/ScarabNotificationManager.java?view=diff&pathrev=10906&r1=10905&r2=10906
==============================================================================
--- trunk/src/java/org/tigris/scarab/notification/ScarabNotificationManager.java	(original)
+++ trunk/src/java/org/tigris/scarab/notification/ScarabNotificationManager.java	2010-02-11 08:44:50-0800
@@ -162,52 +162,84 @@
                 Activity act = (Activity)it.next();
                 if (act.getIssue().equals(issue))
                 {
-                    notification = new NotificationStatus(Email.getArchiveUser(), act);
-                    NotificationStatusPeer.doInsert(notification);
-
-                    Module module = issue.getModule();
-                    Set<ScarabUser> users = issue.getAllUsersToEmail(AttributePeer.EMAIL_TO);
-                    users.addAll(issue.getAllUsersToEmail(AttributePeer.CC_TO));
-                    users.addAll(activitySet.getRemovedUsers(issue));
-
-                    // Add all ScarabUsers defined in the module's ArchiveEmail string
-                    // Note 1: Only those entries will be taken into account, which can
-                    //         be identified as valid and existing Scarab users in the local
-                    //         repository.
-                    // Note 2: the users notification settings apply here!
-                    // Note 3: All foreign EmailAddresses stored in the module's ArchiveEmail
-                    //         will be ignored here and later added without any constraints
-                    //         during actual sending of the EMail!
-                    users.addAll(module.getArchivingScarabUsers());
-
-                    // FIXME: Should we still make difference between CC & TO? If so...
-                    // ...do we need this info in the notification_status table??
-
-                    // FIXME: SCB1439. does the user really have permissions
-                    // to view this attribute?
-
-                    String activityType = act.getActivityType();
-
-                    for (Iterator<ScarabUser> itusers = users.iterator(); itusers.hasNext(); )
+                    try
                     {
-                        ScarabUser user     = (ScarabUser)itusers.next();
-                        Integer userId      = user.getUserId();
-
-                        boolean isSelf = userId.equals(fromUser.getUserId());
-                        boolean wantsNotification = NotificationRuleManager.isNotificationEnabledFor(user, issue, isSelf, activityType);
-                        
-                        if(wantsNotification)
+                        notification = new NotificationStatus(Email.getArchiveUser(), act);
+                        NotificationStatusPeer.doInsert(notification);
+    
+                        Module module = issue.getModule();
+                        Set<ScarabUser> users = issue.getAllUsersToEmail(AttributePeer.EMAIL_TO);
+                        users.addAll(issue.getAllUsersToEmail(AttributePeer.CC_TO));
+                        users.addAll(activitySet.getRemovedUsers(issue));
+    
+                        // Add all ScarabUsers defined in the module's ArchiveEmail string
+                        // Note 1: Only those entries will be taken into account, which can
+                        //         be identified as valid and existing Scarab users in the local
+                        //         repository.
+                        // Note 2: the users notification settings apply here!
+                        // Note 3: All foreign EmailAddresses stored in the module's ArchiveEmail
+                        //         will be ignored here and later added without any constraints
+                        //         during actual sending of the EMail!
+                        users.addAll(module.getArchivingScarabUsers());
+    
+                        // FIXME: Should we still make difference between CC & TO? If so...
+                        // ...do we need this info in the notification_status table??
+    
+                        // FIXME: SCB1439. does the user really have permissions
+                        // to view this attribute?
+    
+                        String activityType = act.getActivityType();
+    
+                        for (Iterator<ScarabUser> itusers = users.iterator(); itusers.hasNext(); )
                         {
-                            notification = new NotificationStatus(user, act);
-                            NotificationStatusPeer.doInsert(notification);
+                            ScarabUser user     = (ScarabUser)itusers.next();
+                            Integer userId      = user.getUserId();
+    
+                            boolean isSelf = userId.equals(fromUser.getUserId());
+                            boolean wantsNotification = NotificationRuleManager.isNotificationEnabledFor(user, issue, isSelf, activityType);
+                            
+                            if(wantsNotification)
+                            {
+                                notification = new NotificationStatus(user, act);
+                                NotificationStatusPeer.doInsert(notification);
+                            }
                         }
                     }
+                    catch (Exception e)
+                    {
+                        log.error("queueNotifications(): while processing activity queue: " + e.getMessage(),e);
+                        logNotificationData(notification);
+                        log.error("queueNotifications(): Abort this run");
+                        break;
+                    }
+                    
                 }
             }
         }
         catch (Exception e)
         {
-            log.error("queueNotifications(): ",e);
+            log.error("queueNotifications(): while setting up the activity queue: " + e.getMessage(),e);
+        }
+    }
+
+
+    private void logNotificationData(NotificationStatus notification) throws TorqueException
+    {
+        try
+        {
+            log.error("queueNotifications():comment:"      + notification.getComment());
+            log.error("queueNotifications():changeDate:"   + notification.getChangeDate());
+            log.error("queueNotifications():creationDate:" + notification.getCreationDate());
+            log.error("queueNotifications():creator:"      + notification.getCreator().toString());
+            log.error("queueNotifications():issueId:"      + notification.getIssueId());
+            log.error("queueNotifications():primaryKey:"   + notification.getPrimaryKey().toString());
+            log.error("queueNotifications():queryKey:"     + notification.getQueryKey());
+            log.error("queueNotifications():receiver:"     + notification.getReceiver().toString());
+            log.error("queueNotifications():status:"       + notification.getStatusLabel());
+        }
+        catch(Exception e)
+        {
+            log.error("queueNotifications(): while dumping notificationData: " + e.getMessage(),e);
         }
     }
 
@@ -467,7 +499,7 @@
                         ActivitySet activitySet = activity.getActivitySet();
                         Integer userId          = activitySet.getCreatedBy();
                         ScarabUser user         = ScarabUserManager.getInstance(userId);
-                        createWakeupNotification(issue, user);
+                        createWakeupNotification(issue, user, "WakeupFromOnHoldstate");
                     }
                 }
             }
@@ -479,7 +511,7 @@
         
     }
     
-    private void createWakeupNotification(Issue issue, ScarabUser user) throws TorqueException
+    private void createWakeupNotification(Issue issue, ScarabUser user, String wakeupMessage) throws TorqueException
     {
         Date date;
         try {
@@ -503,7 +535,7 @@
             
             Attachment attachment = AttachmentManager.getInstance();
             attachment.setTextFields(user, issue,Attachment.COMMENT__PK);
-            attachment.setData("WakeupFromOnHoldstate");
+            attachment.setData(wakeupMessage);
             attachment.setName("comment");
             attachment.save();
             
@@ -515,7 +547,8 @@
                 activitySet = ActivitySetManager.getInstance(tt, user);
                 activitySet.addActivity(activity);
                 activitySet.save();
-                addActivityNotification(ActivityType.ISSUE_ONHOLD, activitySet, issue, user);                
+                
+                addActivityNotification(ActivityType.ISSUE_REMINDER, activitySet, issue, user);                
             } catch (ScarabException e) {
                 throw new RuntimeException(e);
             }
@@ -1079,6 +1112,7 @@
         typeDescriptions.put(ActivityType.DEPENDENCY_CHANGED.getCode(), L10NKeySet.ActivityDependencies);
         typeDescriptions.put(ActivityType.DEPENDENCY_DELETED.getCode(), L10NKeySet.ActivityDependencies);
         typeDescriptions.put(ActivityType.ISSUE_ONHOLD.getCode(),       L10NKeySet.ActivityComments);
+        typeDescriptions.put(ActivityType.ISSUE_REMINDER.getCode(),     L10NKeySet.ActivityComments);
     }

------------------------------------------------------
http://scarab.tigris.org/ds/viewMessage.do?dsForumId=3577&dsMessageId=2446753
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.