User status changes now generate activities

Activities Dashlet:
- added "I'm following" filter
- prepared activities filter (not working yet)

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28589 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Florian Mü
2011-06-25 17:58:43 +00:00
parent 28161f0e2b
commit 1904f66734
7 changed files with 89 additions and 21 deletions

View File

@@ -21,6 +21,7 @@ package org.alfresco.repo.activities;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.repo.activities.feed.cleanup.FeedCleaner;
@@ -167,19 +168,27 @@ public class ActivityServiceImpl implements ActivityService, InitializingBean
*/
public List<String> getUserFeedEntries(String feedUserId, String format, String siteId)
{
return getUserFeedEntries(feedUserId, format, siteId, false, false);
return getUserFeedEntries(feedUserId, format, siteId, false, false, null, null);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.activities.ActivityService#getUserFeedEntries(java.lang.String, java.lang.String, java.lang.String, boolean, boolean)
*/
public List<String> getUserFeedEntries(String feedUserId, String format, String siteId, boolean excludeThisUser, boolean excludeOtherUsers)
{
return getUserFeedEntries(feedUserId, format, siteId,excludeThisUser, excludeOtherUsers, null, null);
}
/* (non-Javadoc)
* @see org.alfresco.service.cmr.activities.ActivityService#getUserFeedEntries(java.lang.String, java.lang.String, java.lang.String, boolean, boolean, java.util.Set<String>, java.util.Set<String>)
*/
public List<String> getUserFeedEntries(String feedUserId, String format, String siteId, boolean excludeThisUser, boolean excludeOtherUsers, Set<String> userFilter, Set<String> actvityFilter)
{
List<String> activityFeedEntries = new ArrayList<String>();
try
{
List<ActivityFeedEntity> activityFeeds = getUserFeedEntries(feedUserId, format, siteId, excludeThisUser, excludeOtherUsers, -1);
List<ActivityFeedEntity> activityFeeds = getUserFeedEntries(feedUserId, format, siteId, excludeThisUser, excludeOtherUsers, userFilter, actvityFilter, -1);
if (activityFeeds != null)
{
@@ -200,6 +209,11 @@ public class ActivityServiceImpl implements ActivityService, InitializingBean
}
public List<ActivityFeedEntity> getUserFeedEntries(String feedUserId, String format, String siteId, boolean excludeThisUser, boolean excludeOtherUsers, long minFeedId)
{
return getUserFeedEntries(feedUserId, format, siteId, excludeThisUser, excludeOtherUsers, null, null, minFeedId);
}
public List<ActivityFeedEntity> getUserFeedEntries(String feedUserId, String format, String siteId, boolean excludeThisUser, boolean excludeOtherUsers, Set<String> userFilter, Set<String> actvityFilter, long minFeedId)
{
// NOTE: siteId is optional
ParameterCheck.mandatoryString("feedUserId", feedUserId);
@@ -232,6 +246,14 @@ public class ActivityServiceImpl implements ActivityService, InitializingBean
for (ActivityFeedEntity activityFeed : activityFeeds)
{
if (actvityFilter != null && !actvityFilter.contains(activityFeed.getActivityType())) {
continue;
}
if (userFilter != null && !userFilter.contains(activityFeed.getPostUserId())) {
continue;
}
activityFeed.setSiteNetwork(tenantService.getBaseName(activityFeed.getSiteNetwork()));
result.add(activityFeed);
}

View File

@@ -130,17 +130,17 @@ public class ActivityServiceImplTest extends BaseSpringTest
assertNotNull(userFeedEntries);
assertTrue(userFeedEntries.isEmpty());
userFeedEntries = this.activityService.getUserFeedEntries("unknown user", "a format", "some site", true, false);
userFeedEntries = this.activityService.getUserFeedEntries("unknown user", "a format", "some site", true, false, null, null);
assertNotNull(userFeedEntries);
assertTrue(userFeedEntries.isEmpty());
userFeedEntries = this.activityService.getUserFeedEntries("unknown user", "a format", "some site", false, true);
userFeedEntries = this.activityService.getUserFeedEntries("unknown user", "a format", "some site", false, true, null, null);
assertNotNull(userFeedEntries);
assertTrue(userFeedEntries.isEmpty());
userFeedEntries = this.activityService.getUserFeedEntries("unknown user", "a format", "some site", true, true);
userFeedEntries = this.activityService.getUserFeedEntries("unknown user", "a format", "some site", true, true, null, null);
assertNotNull(userFeedEntries);
assertTrue(userFeedEntries.isEmpty());

View File

@@ -302,7 +302,7 @@ public class SiteActivityTest extends TestCase
{
userId = AuthenticationUtil.getFullyAuthenticatedUser();
}
assertEquals(expectedCount, activityService.getUserFeedEntries(userId, "json", siteId, excludeThisUser, excludeOtherUsers).size());
assertEquals(expectedCount, activityService.getUserFeedEntries(userId, "json", siteId, excludeThisUser, excludeOtherUsers, null, null).size());
}
public void testUserFeedControls() throws Exception

View File

@@ -19,9 +19,7 @@
package org.alfresco.repo.activities.feed;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -397,7 +395,7 @@ public class FeedNotifierImpl implements FeedNotifier
// own + others (note: template can be changed to filter out user's own activities if needed)
List<ActivityFeedEntity> feedEntries = activityService.getUserFeedEntries(feedUserId, FeedTaskProcessor.FEED_FORMAT_JSON, null, false, false, emailFeedDBID);
List<ActivityFeedEntity> feedEntries = activityService.getUserFeedEntries(feedUserId, FeedTaskProcessor.FEED_FORMAT_JSON, null, false, false, null, null, emailFeedDBID);
if (feedEntries.size() > 0)
{

View File

@@ -264,14 +264,9 @@ public abstract class FeedTaskProcessor
followers.put(activityPost.getUserId(), followerUsers);
}
recipients.addAll(followerUsers);
if(recipients.size() == 0) {
if (logger.isDebugEnabled())
{
logger.debug("No recipients for activity post " + activityPost.getId() + ".");
}
return;
}
// Add the originator to recipients
recipients.add(activityPost.getUserId());
try
{

View File

@@ -75,7 +75,8 @@ public class SubscriptionsDAOImpl extends AbstractSubscriptionsDAO
map.put("userNodeId", userPair.getFirst());
map.put("false", Boolean.FALSE);
int maxItems = (pagingRequest.getMaxItems() < 0 ? Integer.MAX_VALUE - 1 : pagingRequest.getMaxItems());
int maxItems = (pagingRequest.getMaxItems() < 0 || pagingRequest.getMaxItems() > Integer.MAX_VALUE - 1 ? Integer.MAX_VALUE - 1
: pagingRequest.getMaxItems() + 1);
@SuppressWarnings("unchecked")
List<SubscriptionNodeEntity> nodeList = (List<SubscriptionNodeEntity>) template.selectList(
@@ -219,7 +220,8 @@ public class SubscriptionsDAOImpl extends AbstractSubscriptionsDAO
map.put("userNodeId", userPair.getFirst());
map.put("false", Boolean.FALSE);
int maxItems = (pagingRequest.getMaxItems() < 0 ? Integer.MAX_VALUE - 1 : pagingRequest.getMaxItems() + 1);
int maxItems = (pagingRequest.getMaxItems() < 0 || pagingRequest.getMaxItems() > Integer.MAX_VALUE - 1 ? Integer.MAX_VALUE - 1
: pagingRequest.getMaxItems() + 1);
@SuppressWarnings("unchecked")
List<String> userList = (List<String>) template.selectList("alfresco.subscriptions.select_Following", map,
@@ -256,7 +258,8 @@ public class SubscriptionsDAOImpl extends AbstractSubscriptionsDAO
map.put("userNodeId", userPair.getFirst());
map.put("false", Boolean.FALSE);
int maxItems = (pagingRequest.getMaxItems() < 0 ? Integer.MAX_VALUE - 1 : pagingRequest.getMaxItems() + 1);
int maxItems = (pagingRequest.getMaxItems() < 0 || pagingRequest.getMaxItems() > Integer.MAX_VALUE - 1 ? Integer.MAX_VALUE - 1
: pagingRequest.getMaxItems() + 1);
@SuppressWarnings("unchecked")
List<String> userList = (List<String>) template.selectList("alfresco.subscriptions.select_Followers", map,

View File

@@ -19,10 +19,10 @@
package org.alfresco.service.cmr.activities;
import java.util.List;
import java.util.Set;
import org.alfresco.repo.domain.activities.ActivityFeedEntity;
import org.alfresco.service.NotAuditable;
import org.alfresco.service.PublicService;
/**
@@ -67,6 +67,30 @@ public interface ActivityService extends ActivityPostService
*/
@NotAuditable
public List<String> getUserFeedEntries(String userId, String format, String siteId, boolean excludeThisUser, boolean excludeOtherUsers);
/**
* Retrieve user feed with optional site filter and optional user filters
*
* Will return activities for users across all sites, or optionally for users for specified site.
*
* User filters are:
* - all user activities (excludeThisUser = false, excludeOtherUsers = false)
* - other user activities (excludeThisUser = true, excludeOtherUsers = false)
* - my user activities (excludeThisUser = false, excludeOtherUsers = true)
* note: if both excludes are true then no activities will be returned.
*
* @param userId - required
* @param format - required
* @param siteId - optional, if set then will filter by given siteId else return all sites
* @param excludeThisUser - if TRUE then will exclude activities for this user (hence returning other users only)
* @param excludeOthersUsers - if TRUE then will exclude activities for other users (hence returning this user only)
* @param userFilter - if not NULL then will only return activities of users in this set
* @param actvityFilter - if not NULL then will only return activities that are in this set
* @return list of JSON feed entries
*/
@NotAuditable
public List<String> getUserFeedEntries(String userId, String format, String siteId, boolean excludeThisUser, boolean excludeOtherUsers, Set<String> userFilter, Set<String> actvityFilter);
/**
* Retrieve user feed with optional site filter and optional user filters and optional min feed DB id
@@ -84,12 +108,38 @@ public interface ActivityService extends ActivityPostService
* @param siteId - optional, if set then will filter by given siteId else return all sites
* @param excludeThisUser - if TRUE then will exclude activities for this user (hence returning other users only)
* @param excludeOthersUsers - if TRUE then will exclude activities for other users (hence returning this user only)
* @param onlyFollowing - if TRUE then will only return activities of users this user follows
* @param minFeedId - inclusive from min feed DB id, if -1 then return all available
* @return list of JSON feed entries
*/
@NotAuditable
public List<ActivityFeedEntity> getUserFeedEntries(String feedUserId, String format, String siteId, boolean excludeThisUser, boolean excludeOtherUsers, long minFeedId);
/**
* Retrieve user feed with optional site filter and optional user filters and optional min feed DB id
*
* Will return activities for users across all sites, or optionally for users for specified site.
*
* User filters are:
* - all user activities (excludeThisUser = false, excludeOtherUsers = false)
* - other user activities (excludeThisUser = true, excludeOtherUsers = false)
* - my user activities (excludeThisUser = false, excludeOtherUsers = true)
* note: if both excludes are true then no activities will be returned.
*
* @param userId - required
* @param format - required
* @param siteId - optional, if set then will filter by given siteId else return all sites
* @param excludeThisUser - if TRUE then will exclude activities for this user (hence returning other users only)
* @param excludeOthersUsers - if TRUE then will exclude activities for other users (hence returning this user only)
* @param onlyFollowing - if TRUE then will only return activities of users this user follows
* @param userFilter - if not NULL then will only return activities of users in this set
* @param actvityFilter - if not NULL then will only return activities that are in this set
* @param minFeedId - inclusive from min feed DB id, if -1 then return all available
* @return list of JSON feed entries
*/
@NotAuditable
public List<ActivityFeedEntity> getUserFeedEntries(String feedUserId, String format, String siteId, boolean excludeThisUser, boolean excludeOtherUsers, Set<String> userFilter, Set<String> actvityFilter, long minFeedId);
/**
* Retrieve site feed
*