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