mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Activities feed cleaner: improvement to maxFeedSize (to take into account current Share Activitities dashlet use-case)
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@19950 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
<!-- cleans out-of-date feed entries -->
|
||||
<bean id="feedCleaner" class="org.alfresco.repo.activities.feed.cleanup.FeedCleaner">
|
||||
<property name="feedDAO" ref="feedDAO"/>
|
||||
<property name="siteService" ref="SiteService"/>
|
||||
<property name="maxAgeMins">
|
||||
<value>${activities.feed.max.age.mins}</value> <!-- max age in mins, eg. 44640 mins = 31 days -->
|
||||
</property>
|
||||
|
@@ -24,6 +24,8 @@ import java.util.List;
|
||||
|
||||
import org.alfresco.repo.domain.activities.ActivityFeedDAO;
|
||||
import org.alfresco.repo.domain.activities.ActivityFeedEntity;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||
import org.alfresco.service.cmr.site.SiteService;
|
||||
import org.alfresco.util.PropertyCheck;
|
||||
import org.alfresco.util.VmShutdownListener;
|
||||
import org.apache.commons.logging.Log;
|
||||
@@ -45,11 +47,18 @@ public class FeedCleaner
|
||||
|
||||
private ActivityFeedDAO feedDAO;
|
||||
|
||||
private SiteService siteService;
|
||||
|
||||
public void setFeedDAO(ActivityFeedDAO feedDAO)
|
||||
{
|
||||
this.feedDAO = feedDAO;
|
||||
}
|
||||
|
||||
public void setSiteService(SiteService siteService)
|
||||
{
|
||||
this.siteService = siteService;
|
||||
}
|
||||
|
||||
public void setMaxAgeMins(int mins)
|
||||
{
|
||||
this.maxAgeMins = mins;
|
||||
@@ -122,11 +131,13 @@ public class FeedCleaner
|
||||
for (ActivityFeedEntity feed : feeds)
|
||||
{
|
||||
String siteId = feed.getSiteNetwork();
|
||||
String feedUserId = feed.getFeedUserId();
|
||||
final String feedUserId = feed.getFeedUserId();
|
||||
String format = feed.getActivitySummaryFormat();
|
||||
|
||||
List<ActivityFeedEntity> feedToClean;
|
||||
|
||||
int feedUserSiteCount = 0;
|
||||
|
||||
if ((feedUserId == null) || (feedUserId.length() == 0))
|
||||
{
|
||||
feedToClean = feedDAO.selectSiteFeedEntries(siteId, format);
|
||||
@@ -134,9 +145,22 @@ public class FeedCleaner
|
||||
else
|
||||
{
|
||||
feedToClean = feedDAO.selectUserFeedEntries(feedUserId, format, null, false, false);
|
||||
|
||||
if (siteService != null)
|
||||
{
|
||||
// note: allow for fact that Share Activities dashlet currently uses userfeed within site context
|
||||
feedUserSiteCount = AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<Integer>()
|
||||
{
|
||||
public Integer doWork() throws Exception
|
||||
{
|
||||
return siteService.listSites(feedUserId).size();
|
||||
}
|
||||
}, AuthenticationUtil.SYSTEM_USER_NAME);
|
||||
}
|
||||
}
|
||||
|
||||
if (feedToClean.size() > maxFeedSize)
|
||||
if (((feedUserSiteCount == 0) && (feedToClean.size() > maxFeedSize)) ||
|
||||
((feedToClean.size() > (maxFeedSize * feedUserSiteCount))))
|
||||
{
|
||||
Date oldestFeedEntry = feedToClean.get(maxFeedSize-1).getPostDate();
|
||||
|
||||
|
@@ -680,7 +680,28 @@ public class SiteServiceImpl implements SiteService, SiteModel
|
||||
/**
|
||||
* @see org.alfresco.service.cmr.site.SiteService#listSites(java.lang.String)
|
||||
*/
|
||||
public List<SiteInfo> listSites(String userName)
|
||||
public List<SiteInfo> listSites(final String userName)
|
||||
{
|
||||
// MT share - for activity service system callback
|
||||
if (tenantService.isEnabled() && (AuthenticationUtil.SYSTEM_USER_NAME.equals(AuthenticationUtil.getRunAsUser())) && tenantService.isTenantUser(userName))
|
||||
{
|
||||
final String tenantDomain = tenantService.getUserDomain(userName);
|
||||
|
||||
return AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<List<SiteInfo>>()
|
||||
{
|
||||
public List<SiteInfo> doWork() throws Exception
|
||||
{
|
||||
return listSitesImpl(userName);
|
||||
}
|
||||
}, tenantService.getDomainUser(AuthenticationUtil.getSystemUserName(), tenantDomain));
|
||||
}
|
||||
else
|
||||
{
|
||||
return listSitesImpl(userName);
|
||||
}
|
||||
}
|
||||
|
||||
private List<SiteInfo> listSitesImpl(String userName)
|
||||
{
|
||||
List<SiteInfo> result = null;
|
||||
|
||||
|
Reference in New Issue
Block a user