Merged BRANCHES/DEV/CLOUD1-BUG-FIX to HEAD:

42884: ALF-1059 / CLOUD-469: Post activities for folder(s) add + delete


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@42891 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Jan Vonka
2012-10-19 17:38:37 +00:00
parent c9853b161f
commit 78a151522e
6 changed files with 84 additions and 33 deletions

View File

@@ -27,13 +27,14 @@ import org.alfresco.service.cmr.repository.NodeRef;
*
* @author sglover
*/
// TODO consolidate with ActivityPost for WebDAV
public interface ActivityPoster
{
void postFileAdded(FileInfo fileInfo);
void postFileFolderAdded(FileInfo fileInfo);
void postFileUpdated(NodeRef nodeRef);
void postFileFolderUpdated(boolean isFolder, NodeRef nodeRef);
void postFileDeleted(ActivityInfo activityInfo);
void postFileFolderDeleted(ActivityInfo activityInfo);
ActivityInfo getActivityInfo(NodeRef nodeRef);
}

View File

@@ -48,6 +48,7 @@ import org.springframework.beans.factory.InitializingBean;
* @see ActivityPoster
* @author sglover
*/
// TODO consolidate with ActivityPost for WebDAV
public class ActivityPosterImpl implements ActivityPoster, InitializingBean
{
private static final String APP_TOOL = "CMIS";
@@ -165,18 +166,37 @@ public class ActivityPosterImpl implements ActivityPoster, InitializingBean
* {@inheritDoc}
*/
@Override
public void postFileAdded(FileInfo fileInfo)
public void postFileFolderAdded(FileInfo fileInfo)
{
if(activitiesEnabled && !fileInfo.isHidden())
{
NodeRef nodeRef = fileInfo.getNodeRef();
SiteInfo siteInfo = siteService.getSite(nodeRef);
String siteId = (siteInfo != null ? siteInfo.getShortName() : null);
if(siteId != null && !siteId.equals(""))
{
// post only for nodes within sites
NodeRef parentNodeRef = nodeService.getPrimaryParent(nodeRef).getParentRef();
postFileActivity(ActivityType.FILE_ADDED, null, parentNodeRef, nodeRef, siteId, fileInfo.getName());
String path = null;
if (fileInfo.isFolder())
{
NodeRef documentLibrary = siteService.getContainer(siteId, SiteService.DOCUMENT_LIBRARY);
path = "/";
try
{
path = getPathFromNode(documentLibrary, nodeRef);
}
catch (FileNotFoundException error)
{
if (logger.isDebugEnabled())
{
logger.debug("No " + SiteService.DOCUMENT_LIBRARY + " container found.");
}
}
}
postFileFolderActivity((fileInfo.isFolder() ? ActivityType.FOLDER_ADDED : ActivityType.FILE_ADDED), path, parentNodeRef, nodeRef, siteId, fileInfo.getName());
}
}
}
@@ -185,7 +205,7 @@ public class ActivityPosterImpl implements ActivityPoster, InitializingBean
* {@inheritDoc}
*/
@Override
public void postFileUpdated(NodeRef nodeRef)
public void postFileFolderUpdated(boolean isFolder, NodeRef nodeRef)
{
if(activitiesEnabled && hiddenAspect.getVisibility(Client.cmis, nodeRef) == Visibility.Visible)
{
@@ -195,7 +215,11 @@ public class ActivityPosterImpl implements ActivityPoster, InitializingBean
{
// post only for nodes within sites
String fileName = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
postFileActivity(ActivityType.FILE_UPDATED, null, null, nodeRef, siteId, fileName);
if (!isFolder)
{
postFileFolderActivity(ActivityType.FILE_UPDATED, null, null, nodeRef, siteId, fileName);
}
}
}
}
@@ -204,24 +228,27 @@ public class ActivityPosterImpl implements ActivityPoster, InitializingBean
* {@inheritDoc}
*/
@Override
public void postFileDeleted(ActivityInfo activityInfo)
public void postFileFolderDeleted(ActivityInfo activityInfo)
{
if(activitiesEnabled && activityInfo.getSiteId() != null)
{
// post only for nodes within sites
postFileActivity(ActivityType.FILE_DELETED, activityInfo.getParentPath(), activityInfo.getParentNodeRef(), activityInfo.getNodeRef(),
postFileFolderActivity((activityInfo.isFolder() ? ActivityType.FOLDER_DELETED : ActivityType.FILE_DELETED), activityInfo.getParentPath(), activityInfo.getParentNodeRef(), activityInfo.getNodeRef(),
activityInfo.getSiteId(), activityInfo.getFileName());
}
}
public ActivityInfo getActivityInfo(NodeRef nodeRef)
{
NodeRef parentNodeRef = nodeService.getPrimaryParent(nodeRef).getParentRef();
String fileName = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
SiteInfo siteInfo = siteService.getSite(nodeRef);
String siteId = (siteInfo != null ? siteInfo.getShortName() : null);
if(siteId != null && !siteId.equals(""))
{
NodeRef parentNodeRef = nodeService.getPrimaryParent(nodeRef).getParentRef();
FileInfo fileInfo = fileFolderService.getFileInfo(nodeRef);
String name = fileInfo.getName();
boolean isFolder = fileInfo.isFolder();
NodeRef documentLibrary = siteService.getContainer(siteId, SiteService.DOCUMENT_LIBRARY);
String parentPath = "/";
try
@@ -236,7 +263,7 @@ public class ActivityPosterImpl implements ActivityPoster, InitializingBean
}
}
return new ActivityInfo(nodeRef, parentPath, parentNodeRef, siteId, fileName);
return new ActivityInfo(nodeRef, parentPath, parentNodeRef, siteId, name, isFolder);
}
else
{
@@ -244,15 +271,15 @@ public class ActivityPosterImpl implements ActivityPoster, InitializingBean
}
}
private void postFileActivity(
private void postFileFolderActivity(
String activityType,
String parentPath,
String path,
NodeRef parentNodeRef,
NodeRef nodeRef,
String siteId,
String fileName)
String name)
{
JSONObject json = createActivityJSON(getCurrentTenantDomain(), parentPath, parentNodeRef, nodeRef, fileName);
JSONObject json = createActivityJSON(getCurrentTenantDomain(), path, parentNodeRef, nodeRef, name);
activityService.postActivity(
activityType,
@@ -273,7 +300,7 @@ public class ActivityPosterImpl implements ActivityPoster, InitializingBean
*/
private JSONObject createActivityJSON(
String tenantDomain,
String parentPath,
String path,
NodeRef parentNodeRef,
NodeRef nodeRef,
String fileName)
@@ -289,10 +316,10 @@ public class ActivityPosterImpl implements ActivityPoster, InitializingBean
json.put("parentNodeRef", parentNodeRef);
}
if (parentPath != null)
if (path != null)
{
// Used for deleted files.
json.put("page", "documentlibrary?path=" + parentPath);
// Used for deleted files and folders (added or deleted)
json.put("page", "documentlibrary?path=" + path);
}
else
{
@@ -322,9 +349,10 @@ public class ActivityPosterImpl implements ActivityPoster, InitializingBean
private NodeRef parentNodeRef;
private String siteId;
private String fileName;
private boolean isFolder;
public ActivityInfo(NodeRef nodeRef, String parentPath, NodeRef parentNodeRef,
String siteId, String fileName)
String siteId, String fileName, boolean isFolder)
{
super();
this.nodeRef = nodeRef;
@@ -332,6 +360,7 @@ public class ActivityPosterImpl implements ActivityPoster, InitializingBean
this.parentNodeRef = parentNodeRef;
this.siteId = siteId;
this.fileName = fileName;
this.isFolder = isFolder;
}
public NodeRef getNodeRef()
@@ -358,5 +387,10 @@ public class ActivityPosterImpl implements ActivityPoster, InitializingBean
{
return fileName;
}
public boolean isFolder()
{
return isFolder;
}
}
}

View File

@@ -1085,13 +1085,17 @@ public class AlfrescoCmisServiceImpl extends AbstractCmisService implements Alfr
connector.checkChildObjectType(parentInfo, type.getTypeId());
// run transaction
NodeRef nodeRef = connector.getFileFolderService().create(
parentInfo.getNodeRef(), name, type.getAlfrescoClass()).getNodeRef();
FileInfo fileInfo = connector.getFileFolderService().create(
parentInfo.getNodeRef(), name, type.getAlfrescoClass());
NodeRef nodeRef = fileInfo.getNodeRef();
connector.setProperties(nodeRef, type, properties, new String[] { PropertyIds.NAME, PropertyIds.OBJECT_TYPE_ID });
connector.applyPolicies(nodeRef, type, policies);
connector.applyACL(nodeRef, type, addAces, removeAces);
connector.getActivityPoster().postFileFolderAdded(fileInfo);
return nodeRef.toString();
}
@@ -1175,7 +1179,7 @@ public class AlfrescoCmisServiceImpl extends AbstractCmisService implements Alfr
String objectId = connector.createObjectId(nodeRef);
connector.getActivityPoster().postFileAdded(fileInfo);
connector.getActivityPoster().postFileFolderAdded(fileInfo);
return objectId;
}
@@ -1223,7 +1227,7 @@ public class AlfrescoCmisServiceImpl extends AbstractCmisService implements Alfr
connector.applyACL(nodeRef, type, addAces, removeAces);
connector.applyVersioningState(nodeRef, versioningState);
connector.getActivityPoster().postFileAdded(fileInfo);
connector.getActivityPoster().postFileFolderAdded(fileInfo);
return connector.createObjectId(nodeRef);
}
@@ -1369,7 +1373,7 @@ public class AlfrescoCmisServiceImpl extends AbstractCmisService implements Alfr
objectId.setValue(connector.createObjectId(nodeRef));
connector.getActivityPoster().postFileUpdated(nodeRef);
connector.getActivityPoster().postFileFolderUpdated(info.isFolder(), nodeRef);
}
@Override
@@ -1395,7 +1399,7 @@ public class AlfrescoCmisServiceImpl extends AbstractCmisService implements Alfr
connector.getNodeService().setProperty(nodeRef, ContentModel.PROP_CONTENT, null);
connector.getActivityPoster().postFileUpdated(nodeRef);
connector.getActivityPoster().postFileFolderUpdated(info.isFolder(), nodeRef);
objectId.setValue(connector.createObjectId(nodeRef));
}
@@ -1480,7 +1484,7 @@ public class AlfrescoCmisServiceImpl extends AbstractCmisService implements Alfr
getObjectInfo(repositoryId, objectId.getValue(), "*", IncludeRelationships.NONE);
}
connector.getActivityPoster().postFileUpdated(nodeRef);
connector.getActivityPoster().postFileFolderUpdated(info.isFolder(), nodeRef);
}
}

View File

@@ -754,7 +754,7 @@ public class CMISConnector implements ApplicationContextAware, ApplicationListen
// post activity after removal of the node
if(postActivity && activityInfo != null)
{
activityPoster.postFileDeleted(activityInfo);
activityPoster.postFileFolderDeleted(activityInfo);
}
}

View File

@@ -35,11 +35,20 @@ public interface ActivityType
public static final String SUBSCRIPTIONS_SUBSCRIBE = "org.alfresco.subscriptions.subscribed";
public static final String SUBSCRIPTIONS_FOLLOW = "org.alfresco.subscriptions.followed";
public static final String FILE_ADDED = "org.alfresco.documentlibrary.file-added";
public static final String FILE_ADDED = "org.alfresco.documentlibrary.file-added";
public static final String FILE_UPDATED = "org.alfresco.documentlibrary.file-updated";
public static final String FILE_DELETED = "org.alfresco.documentlibrary.file-deleted";
public static final String FILES_ADDED = "org.alfresco.documentlibrary.files-added";
public static final String FILES_ADDED = "org.alfresco.documentlibrary.files-added";
public static final String FILES_UPDATED = "org.alfresco.documentlibrary.files-updated";
public static final String FILES_DELETED = "org.alfresco.documentlibrary.files-deleted";
public static final String FOLDER_ADDED = "org.alfresco.documentlibrary.folder-added";
public static final String FOLDER_DELETED = "org.alfresco.documentlibrary.folder-deleted";
public static final String FOLDERS_ADDED = "org.alfresco.documentlibrary.folders-added";
public static final String FOLDERS_DELETED = "org.alfresco.documentlibrary.folders-deleted";
public static final String FILE_LIKED = "org.alfresco.documentlibrary.file-liked";
public static final String FOLDER_LIKED = "org.alfresco.documentlibrary.folder-liked";
}

View File

@@ -153,6 +153,9 @@ public class PostLookup
rollupTypes.put(ActivityType.FILE_ADDED, ActivityType.FILES_ADDED);
rollupTypes.put(ActivityType.FILE_UPDATED, ActivityType.FILES_UPDATED);
rollupTypes.put(ActivityType.FILE_DELETED, ActivityType.FILES_DELETED);
rollupTypes.put(ActivityType.FOLDER_ADDED, ActivityType.FOLDERS_ADDED);
rollupTypes.put(ActivityType.FOLDER_DELETED, ActivityType.FOLDERS_DELETED);
}
public void execute() throws JobExecutionException