001
014
015 package com.liferay.portlet.documentlibrary.social;
016
017 import com.liferay.portal.kernel.repository.model.FileEntry;
018 import com.liferay.portal.kernel.util.StringBundler;
019 import com.liferay.portal.kernel.util.StringPool;
020 import com.liferay.portal.kernel.util.Validator;
021 import com.liferay.portal.security.permission.ActionKeys;
022 import com.liferay.portal.security.permission.PermissionChecker;
023 import com.liferay.portal.theme.ThemeDisplay;
024 import com.liferay.portlet.asset.AssetRendererFactoryRegistryUtil;
025 import com.liferay.portlet.asset.model.AssetRenderer;
026 import com.liferay.portlet.asset.model.AssetRendererFactory;
027 import com.liferay.portlet.documentlibrary.model.DLFileEntry;
028 import com.liferay.portlet.documentlibrary.service.DLAppLocalServiceUtil;
029 import com.liferay.portlet.documentlibrary.service.permission.DLFileEntryPermission;
030 import com.liferay.portlet.social.model.BaseSocialActivityInterpreter;
031 import com.liferay.portlet.social.model.SocialActivity;
032 import com.liferay.portlet.social.model.SocialActivityFeedEntry;
033
034
037 public class DLActivityInterpreter extends BaseSocialActivityInterpreter {
038
039 public String[] getClassNames() {
040 return _CLASS_NAMES;
041 }
042
043 @Override
044 protected SocialActivityFeedEntry doInterpret(
045 SocialActivity activity, ThemeDisplay themeDisplay)
046 throws Exception {
047
048 PermissionChecker permissionChecker =
049 themeDisplay.getPermissionChecker();
050
051 FileEntry fileEntry = DLAppLocalServiceUtil.getFileEntry(
052 activity.getClassPK());
053
054 if (!DLFileEntryPermission.contains(
055 permissionChecker, fileEntry.getFileEntryId(),
056 ActionKeys.VIEW)) {
057
058 return null;
059 }
060
061 String groupName = StringPool.BLANK;
062
063 if (activity.getGroupId() != themeDisplay.getScopeGroupId()) {
064 groupName = getGroupName(activity.getGroupId(), themeDisplay);
065 }
066
067 String creatorUserName = getUserName(
068 activity.getUserId(), themeDisplay);
069
070 int activityType = activity.getType();
071
072
073
074 StringBundler sb = new StringBundler(4);
075
076 sb.append(themeDisplay.getPortalURL());
077 sb.append(themeDisplay.getPathMain());
078 sb.append("/document_library/find_file_entry?fileEntryId=");
079 sb.append(fileEntry.getFileEntryId());
080
081 String link = sb.toString();
082
083
084
085 String titlePattern = null;
086
087 if (activityType == DLActivityKeys.ADD_FILE_ENTRY) {
088 if (Validator.isNull(groupName)) {
089 titlePattern = "activity-document-library-add-file";
090 }
091 else {
092 titlePattern = "activity-document-library-add-file-in";
093 }
094 }
095 else if (activityType == DLActivityKeys.UPDATE_FILE_ENTRY) {
096 if (Validator.isNull(groupName)) {
097 titlePattern = "activity-document-library-update-file";
098 }
099 else {
100 titlePattern = "activity-document-library-update-file-in";
101 }
102 }
103
104 String fileTitle = getValue(
105 activity.getExtraData(), "title", fileEntry.getTitle());
106
107 Object[] titleArguments = new Object[] {
108 groupName, creatorUserName, wrapLink(link, fileTitle)
109 };
110
111 String title = themeDisplay.translate(titlePattern, titleArguments);
112
113
114
115 sb.setIndex(0);
116
117 AssetRendererFactory assetRendererFactory =
118 AssetRendererFactoryRegistryUtil.getAssetRendererFactoryByClassName(
119 DLFileEntry.class.getName());
120
121 AssetRenderer assetRenderer = assetRendererFactory.getAssetRenderer(
122 fileEntry.getFileEntryId());
123
124 String fileEntryLink = assetRenderer.getURLDownload(themeDisplay);
125
126 sb.append(wrapLink(fileEntryLink, "download-file", themeDisplay));
127
128 sb.append(StringPool.SPACE);
129
130 String folderLink = getFolderLink(themeDisplay, fileEntry);
131
132 sb.append(wrapLink(folderLink, "go-to-folder", themeDisplay));
133
134 String body = sb.toString();
135
136 return new SocialActivityFeedEntry(link, title, body);
137 }
138
139 protected String getFolderLink(
140 ThemeDisplay themeDisplay, FileEntry fileEntry) {
141
142 StringBundler sb = new StringBundler(6);
143
144 sb.append(themeDisplay.getPortalURL());
145 sb.append(themeDisplay.getPathMain());
146 sb.append("/document_library/find_folder?groupId=");
147 sb.append(fileEntry.getRepositoryId());
148 sb.append("&folderId=");
149 sb.append(fileEntry.getFolderId());
150
151 return sb.toString();
152 }
153
154 private static final String[] _CLASS_NAMES = new String[] {
155 DLFileEntry.class.getName()
156 };
157
158 }