mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
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:
@@ -21,6 +21,7 @@ package org.alfresco.repo.activities;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.alfresco.error.AlfrescoRuntimeException;
|
import org.alfresco.error.AlfrescoRuntimeException;
|
||||||
import org.alfresco.repo.activities.feed.cleanup.FeedCleaner;
|
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)
|
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)
|
/* (non-Javadoc)
|
||||||
* @see org.alfresco.service.cmr.activities.ActivityService#getUserFeedEntries(java.lang.String, java.lang.String, java.lang.String, boolean, boolean)
|
* @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)
|
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>();
|
List<String> activityFeedEntries = new ArrayList<String>();
|
||||||
|
|
||||||
try
|
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)
|
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)
|
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
|
// NOTE: siteId is optional
|
||||||
ParameterCheck.mandatoryString("feedUserId", feedUserId);
|
ParameterCheck.mandatoryString("feedUserId", feedUserId);
|
||||||
@@ -232,6 +246,14 @@ public class ActivityServiceImpl implements ActivityService, InitializingBean
|
|||||||
|
|
||||||
for (ActivityFeedEntity activityFeed : activityFeeds)
|
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()));
|
activityFeed.setSiteNetwork(tenantService.getBaseName(activityFeed.getSiteNetwork()));
|
||||||
result.add(activityFeed);
|
result.add(activityFeed);
|
||||||
}
|
}
|
||||||
|
@@ -130,17 +130,17 @@ public class ActivityServiceImplTest extends BaseSpringTest
|
|||||||
assertNotNull(userFeedEntries);
|
assertNotNull(userFeedEntries);
|
||||||
assertTrue(userFeedEntries.isEmpty());
|
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);
|
assertNotNull(userFeedEntries);
|
||||||
assertTrue(userFeedEntries.isEmpty());
|
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);
|
assertNotNull(userFeedEntries);
|
||||||
assertTrue(userFeedEntries.isEmpty());
|
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);
|
assertNotNull(userFeedEntries);
|
||||||
assertTrue(userFeedEntries.isEmpty());
|
assertTrue(userFeedEntries.isEmpty());
|
||||||
|
@@ -302,7 +302,7 @@ public class SiteActivityTest extends TestCase
|
|||||||
{
|
{
|
||||||
userId = AuthenticationUtil.getFullyAuthenticatedUser();
|
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
|
public void testUserFeedControls() throws Exception
|
||||||
|
@@ -19,9 +19,7 @@
|
|||||||
package org.alfresco.repo.activities.feed;
|
package org.alfresco.repo.activities.feed;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
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)
|
// 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)
|
if (feedEntries.size() > 0)
|
||||||
{
|
{
|
||||||
|
@@ -265,13 +265,8 @@ public abstract class FeedTaskProcessor
|
|||||||
}
|
}
|
||||||
recipients.addAll(followerUsers);
|
recipients.addAll(followerUsers);
|
||||||
|
|
||||||
if(recipients.size() == 0) {
|
// Add the originator to recipients
|
||||||
if (logger.isDebugEnabled())
|
recipients.add(activityPost.getUserId());
|
||||||
{
|
|
||||||
logger.debug("No recipients for activity post " + activityPost.getId() + ".");
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@@ -75,7 +75,8 @@ public class SubscriptionsDAOImpl extends AbstractSubscriptionsDAO
|
|||||||
map.put("userNodeId", userPair.getFirst());
|
map.put("userNodeId", userPair.getFirst());
|
||||||
map.put("false", Boolean.FALSE);
|
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")
|
@SuppressWarnings("unchecked")
|
||||||
List<SubscriptionNodeEntity> nodeList = (List<SubscriptionNodeEntity>) template.selectList(
|
List<SubscriptionNodeEntity> nodeList = (List<SubscriptionNodeEntity>) template.selectList(
|
||||||
@@ -219,7 +220,8 @@ public class SubscriptionsDAOImpl extends AbstractSubscriptionsDAO
|
|||||||
map.put("userNodeId", userPair.getFirst());
|
map.put("userNodeId", userPair.getFirst());
|
||||||
map.put("false", Boolean.FALSE);
|
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")
|
@SuppressWarnings("unchecked")
|
||||||
List<String> userList = (List<String>) template.selectList("alfresco.subscriptions.select_Following", map,
|
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("userNodeId", userPair.getFirst());
|
||||||
map.put("false", Boolean.FALSE);
|
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")
|
@SuppressWarnings("unchecked")
|
||||||
List<String> userList = (List<String>) template.selectList("alfresco.subscriptions.select_Followers", map,
|
List<String> userList = (List<String>) template.selectList("alfresco.subscriptions.select_Followers", map,
|
||||||
|
@@ -19,10 +19,10 @@
|
|||||||
package org.alfresco.service.cmr.activities;
|
package org.alfresco.service.cmr.activities;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.alfresco.repo.domain.activities.ActivityFeedEntity;
|
import org.alfresco.repo.domain.activities.ActivityFeedEntity;
|
||||||
import org.alfresco.service.NotAuditable;
|
import org.alfresco.service.NotAuditable;
|
||||||
import org.alfresco.service.PublicService;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -68,6 +68,30 @@ public interface ActivityService extends ActivityPostService
|
|||||||
@NotAuditable
|
@NotAuditable
|
||||||
public List<String> getUserFeedEntries(String userId, String format, String siteId, boolean excludeThisUser, boolean excludeOtherUsers);
|
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
|
* 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 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 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 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
|
* @param minFeedId - inclusive from min feed DB id, if -1 then return all available
|
||||||
* @return list of JSON feed entries
|
* @return list of JSON feed entries
|
||||||
*/
|
*/
|
||||||
@NotAuditable
|
@NotAuditable
|
||||||
public List<ActivityFeedEntity> getUserFeedEntries(String feedUserId, String format, String siteId, boolean excludeThisUser, boolean excludeOtherUsers, long minFeedId);
|
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
|
* Retrieve site feed
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user