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 -->
|
<!-- cleans out-of-date feed entries -->
|
||||||
<bean id="feedCleaner" class="org.alfresco.repo.activities.feed.cleanup.FeedCleaner">
|
<bean id="feedCleaner" class="org.alfresco.repo.activities.feed.cleanup.FeedCleaner">
|
||||||
<property name="feedDAO" ref="feedDAO"/>
|
<property name="feedDAO" ref="feedDAO"/>
|
||||||
|
<property name="siteService" ref="SiteService"/>
|
||||||
<property name="maxAgeMins">
|
<property name="maxAgeMins">
|
||||||
<value>${activities.feed.max.age.mins}</value> <!-- max age in mins, eg. 44640 mins = 31 days -->
|
<value>${activities.feed.max.age.mins}</value> <!-- max age in mins, eg. 44640 mins = 31 days -->
|
||||||
</property>
|
</property>
|
||||||
|
@@ -24,6 +24,8 @@ import java.util.List;
|
|||||||
|
|
||||||
import org.alfresco.repo.domain.activities.ActivityFeedDAO;
|
import org.alfresco.repo.domain.activities.ActivityFeedDAO;
|
||||||
import org.alfresco.repo.domain.activities.ActivityFeedEntity;
|
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.PropertyCheck;
|
||||||
import org.alfresco.util.VmShutdownListener;
|
import org.alfresco.util.VmShutdownListener;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
@@ -45,11 +47,18 @@ public class FeedCleaner
|
|||||||
|
|
||||||
private ActivityFeedDAO feedDAO;
|
private ActivityFeedDAO feedDAO;
|
||||||
|
|
||||||
|
private SiteService siteService;
|
||||||
|
|
||||||
public void setFeedDAO(ActivityFeedDAO feedDAO)
|
public void setFeedDAO(ActivityFeedDAO feedDAO)
|
||||||
{
|
{
|
||||||
this.feedDAO = feedDAO;
|
this.feedDAO = feedDAO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setSiteService(SiteService siteService)
|
||||||
|
{
|
||||||
|
this.siteService = siteService;
|
||||||
|
}
|
||||||
|
|
||||||
public void setMaxAgeMins(int mins)
|
public void setMaxAgeMins(int mins)
|
||||||
{
|
{
|
||||||
this.maxAgeMins = mins;
|
this.maxAgeMins = mins;
|
||||||
@@ -122,11 +131,13 @@ public class FeedCleaner
|
|||||||
for (ActivityFeedEntity feed : feeds)
|
for (ActivityFeedEntity feed : feeds)
|
||||||
{
|
{
|
||||||
String siteId = feed.getSiteNetwork();
|
String siteId = feed.getSiteNetwork();
|
||||||
String feedUserId = feed.getFeedUserId();
|
final String feedUserId = feed.getFeedUserId();
|
||||||
String format = feed.getActivitySummaryFormat();
|
String format = feed.getActivitySummaryFormat();
|
||||||
|
|
||||||
List<ActivityFeedEntity> feedToClean;
|
List<ActivityFeedEntity> feedToClean;
|
||||||
|
|
||||||
|
int feedUserSiteCount = 0;
|
||||||
|
|
||||||
if ((feedUserId == null) || (feedUserId.length() == 0))
|
if ((feedUserId == null) || (feedUserId.length() == 0))
|
||||||
{
|
{
|
||||||
feedToClean = feedDAO.selectSiteFeedEntries(siteId, format);
|
feedToClean = feedDAO.selectSiteFeedEntries(siteId, format);
|
||||||
@@ -134,9 +145,22 @@ public class FeedCleaner
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
feedToClean = feedDAO.selectUserFeedEntries(feedUserId, format, null, false, false);
|
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();
|
Date oldestFeedEntry = feedToClean.get(maxFeedSize-1).getPostDate();
|
||||||
|
|
||||||
|
@@ -680,8 +680,29 @@ public class SiteServiceImpl implements SiteService, SiteModel
|
|||||||
/**
|
/**
|
||||||
* @see org.alfresco.service.cmr.site.SiteService#listSites(java.lang.String)
|
* @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;
|
List<SiteInfo> result = null;
|
||||||
|
|
||||||
// get the Groups this user is contained within (at any level)
|
// get the Groups this user is contained within (at any level)
|
||||||
|
Reference in New Issue
Block a user