Scarab commit: svn commit: r11025 - trunk/src/java/org/tigris/scarab: notification om

[email protected] Mon, 22 Nov 2010 14:31:29 -0800 (PST)
Newsgroups gmane.comp.java.scarab.cvs
Message-ID <[email protected]>
Author: dabbous
Date: 2010-11-22 14:31:29-0800
New Revision: 11025

Modified:
   trunk/src/java/org/tigris/scarab/notification/ScarabNotificationManager.java
   trunk/src/java/org/tigris/scarab/om/ActivitySet.java
   trunk/src/java/org/tigris/scarab/om/IssueType.java
   trunk/src/java/org/tigris/scarab/om/NotificationRuleManager.java
   trunk/src/java/org/tigris/scarab/om/NotificationStatus.java

Log:
Fix for SCB3055
Notifications now get sent out for sealed issues when the notification contains the transition to the selead state.

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=11025&r1=11024&r2=11025
==============================================================================
--- trunk/src/java/org/tigris/scarab/notification/ScarabNotificationManager.java	(original)
+++ trunk/src/java/org/tigris/scarab/notification/ScarabNotificationManager.java	2010-11-22 14:31:29-0800
@@ -85,6 +85,7 @@
 import org.tigris.scarab.om.ScarabUser;
 import org.tigris.scarab.om.ScarabUserManager;
 import org.tigris.scarab.services.cache.ScarabCache;
+import org.tigris.scarab.tools.Environment;
 import org.tigris.scarab.tools.localization.L10NKey;
 import org.tigris.scarab.tools.localization.L10NKeySet;
 import org.tigris.scarab.tools.localization.LocalizationKey;
@@ -159,6 +160,7 @@
     {
         try
         {
+            boolean containsTransitionToSealed = activitySet.hasTransitionSealed();
             NotificationStatus notification = null;
             for (Iterator<Activity> it = activitySet.getActivityList().iterator(); it.hasNext(); )
             {
@@ -199,7 +201,7 @@
                             Integer userId      = user.getUserId();
     
                             boolean isSelf = userId.equals(fromUser.getUserId());
-                            boolean wantsNotification = NotificationRuleManager.isNotificationEnabledFor(user, issue, isSelf, activityType);
+                            boolean wantsNotification = NotificationRuleManager.isNotificationEnabledFor(user, issue, isSelf, activityType, containsTransitionToSealed);
                             
                             if(wantsNotification)
                             {
@@ -225,7 +227,6 @@
         }
     }
 
-
     private void logNotificationData(NotificationStatus notification) throws TorqueException
     {
         try

Modified: trunk/src/java/org/tigris/scarab/om/ActivitySet.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/om/ActivitySet.java?view=diff&pathrev=11025&r1=11024&r2=11025
==============================================================================
--- trunk/src/java/org/tigris/scarab/om/ActivitySet.java	(original)
+++ trunk/src/java/org/tigris/scarab/om/ActivitySet.java	2010-11-22 14:31:29-0800
@@ -61,6 +61,7 @@
 import org.tigris.scarab.notification.ActivityType;
 import org.tigris.scarab.om.ScarabUser;
 import org.tigris.scarab.om.ScarabUserManager;
+import org.tigris.scarab.tools.Environment;
 import org.tigris.scarab.tools.localization.L10NKeySet;
 import org.tigris.scarab.util.ScarabException;
 import org.tigris.scarab.services.cache.ScarabCache;
@@ -98,9 +99,9 @@
     /**
      * Returns a list of Activity objects associated with this ActivitySet.
      */
-    public List getActivityList() throws ScarabException
+    public List<Activity> getActivityList() throws ScarabException
     {
-        List result = null;
+        List<Activity> result = null;
 /* FIXME: caching is disabled here because new Activities can be
           added to this activityset and the addition does not trigger 
           a reset of this cache (JSS).
@@ -241,4 +242,43 @@
         return getActivityList(issue, historyTypeList);  
     }
 
+    public boolean hasTransitionSealed() throws ScarabException, TorqueException 
+    {
+        boolean result = false;
+        String status = Environment.getConfigurationProperty("scarab.common.status.id", null);
+        if (status != null)
+        {
+            String value = Environment.getConfigurationProperty("scarab.common.status.sealed", null);
+            if(value != null)
+            {
+                
+                List<Activity> activities = getActivityList();
+                Iterator<Activity> iter = activities.iterator();
+                
+                Activity act = null;
+                while((act = iter.next()) != null)
+                {
+                    ActivityType at = ActivityType.getActivityType(act.getActivityType());
+                    if(at == ActivityType.ATTRIBUTE_CHANGED)
+                    {
+                        Attribute att = act.getAttribute();
+                        String name = att.getName();
+                        if(name.equals(status))
+                        {
+                           String oldv = act.getOldValue();
+                           String newv = act.getNewValue();
+                           
+                           if(oldv.equals(value) || newv.equals(value))
+                           {
+                               result = true;
+                               break;
+                           }
+                        }
+                    }
+                }
+            }
+        }
+        return result;
+    }
+
 }

Modified: trunk/src/java/org/tigris/scarab/om/IssueType.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/om/IssueType.java?view=diff&pathrev=11025&r1=11024&r2=11025
==============================================================================
--- trunk/src/java/org/tigris/scarab/om/IssueType.java	(original)
+++ trunk/src/java/org/tigris/scarab/om/IssueType.java	2010-11-22 14:31:29-0800
@@ -137,6 +137,18 @@
     // this will not change, so only look it up once.
     private IssueType parentIssueType;
 
+    public IssueType()
+    {
+        super();
+    }
+
+    
+    public IssueType(Integer issueTypeId) throws TorqueException 
+    {
+        this();
+        this.setIssueTypeId(issueTypeId);
+    }
+    
     /**
      * Gets the IssueType template for this IssueType. The template
      * is a special type of IssueType.

Modified: trunk/src/java/org/tigris/scarab/om/NotificationRuleManager.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/om/NotificationRuleManager.java?view=diff&pathrev=11025&r1=11024&r2=11025
==============================================================================
--- trunk/src/java/org/tigris/scarab/om/NotificationRuleManager.java	(original)
+++ trunk/src/java/org/tigris/scarab/om/NotificationRuleManager.java	2010-11-22 14:31:29-0800
@@ -104,7 +104,7 @@
      * @throws ScarabException 
      * @throws TorqueException 
      */
-    public static boolean isNotificationEnabledFor(ScarabUser user, Issue issue, boolean isSelf, String activityType) throws ScarabException, TorqueException
+    public static boolean isNotificationEnabledFor(ScarabUser user, Issue issue, boolean isSelf, String activityType, boolean hasGetSealedActivity) throws ScarabException, TorqueException
     {
         Integer userId   = user.getUserId();
         Module module    = issue.getModule();
@@ -118,7 +118,7 @@
         }
         else
         {
-            if(issue.isSealed())
+            if(issue.isSealed() && !hasGetSealedActivity)
             {
                 isEnabled = false; // Do not send notifications to other users when Issue is "closed"
             }

Modified: trunk/src/java/org/tigris/scarab/om/NotificationStatus.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/om/NotificationStatus.java?view=diff&pathrev=11025&r1=11024&r2=11025
==============================================================================
--- trunk/src/java/org/tigris/scarab/om/NotificationStatus.java	(original)
+++ trunk/src/java/org/tigris/scarab/om/NotificationStatus.java	2010-11-22 14:31:29-0800
@@ -273,7 +273,18 @@
                 rdo = not1.getActivityType().getCode().compareTo(not2.getActivityType().getCode());
                 if (0 == rdo)
                 {
-                    rdo = not1.getCreationDate().compareTo(not2.getCreationDate());
+                    try
+                    {
+                        rdo = not1.getActivity().getDisplayName().compareTo(not2.getActivity().getDisplayName());
+                    }
+                    catch(Exception e)
+                    {
+                        // [HD] Compare can not be performed, just ignore it (needs enhancement!!!)
+                    }
+                    if(rdo == 0)
+                    {    
+                        rdo = not1.getCreationDate().compareTo(not2.getCreationDate());
+                    }
                 }
             }

------------------------------------------------------
http://scarab.tigris.org/ds/viewMessage.do?dsForumId=3577&dsMessageId=2684520