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.PermissionChecker;
022 import com.liferay.portal.service.ServiceContext;
023 import com.liferay.portlet.asset.AssetRendererFactoryRegistryUtil;
024 import com.liferay.portlet.asset.model.AssetRenderer;
025 import com.liferay.portlet.asset.model.AssetRendererFactory;
026 import com.liferay.portlet.documentlibrary.model.DLFileEntry;
027 import com.liferay.portlet.documentlibrary.model.DLFileVersion;
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.SocialActivityConstants;
033 import com.liferay.portlet.trash.util.TrashUtil;
034
035
039 public class DLFileEntryActivityInterpreter
040 extends BaseSocialActivityInterpreter {
041
042 public String[] getClassNames() {
043 return _CLASS_NAMES;
044 }
045
046 @Override
047 protected String getBody(
048 SocialActivity activity, ServiceContext serviceContext)
049 throws Exception {
050
051 FileEntry fileEntry = DLAppLocalServiceUtil.getFileEntry(
052 activity.getClassPK());
053
054 if (TrashUtil.isInTrash(
055 DLFileEntry.class.getName(), fileEntry.getFileEntryId())) {
056
057 return StringPool.BLANK;
058 }
059
060 StringBundler sb = new StringBundler(3);
061
062 AssetRendererFactory assetRendererFactory =
063 AssetRendererFactoryRegistryUtil.getAssetRendererFactoryByClassName(
064 DLFileEntry.class.getName());
065
066 AssetRenderer assetRenderer = assetRendererFactory.getAssetRenderer(
067 fileEntry.getFileEntryId());
068
069 String fileEntryLink = assetRenderer.getURLDownload(
070 serviceContext.getThemeDisplay());
071
072 sb.append(wrapLink(fileEntryLink, "download-file", serviceContext));
073
074 sb.append(StringPool.SPACE);
075
076 String folderLink = getFolderLink(fileEntry, serviceContext);
077
078 sb.append(wrapLink(folderLink, "go-to-folder", serviceContext));
079
080 return sb.toString();
081 }
082
083 @Override
084 protected String getEntryTitle(
085 SocialActivity activity, ServiceContext serviceContext)
086 throws Exception {
087
088 FileEntry fileEntry = DLAppLocalServiceUtil.getFileEntry(
089 activity.getClassPK());
090
091 if (fileEntry.getModel() instanceof DLFileEntry) {
092 DLFileEntry dlFileEntry = (DLFileEntry)fileEntry.getModel();
093
094 DLFileVersion dlFileVersion = dlFileEntry.getFileVersion();
095
096 if (dlFileVersion.isInTrash()) {
097 return TrashUtil.getOriginalTitle(fileEntry.getTitle());
098 }
099 }
100
101 return fileEntry.getTitle();
102 }
103
104 protected String getFolderLink(
105 FileEntry fileEntry, ServiceContext serviceContext) {
106
107 StringBundler sb = new StringBundler(6);
108
109 sb.append(serviceContext.getPortalURL());
110 sb.append(serviceContext.getPathMain());
111 sb.append("/document_library/find_folder?groupId=");
112 sb.append(fileEntry.getRepositoryId());
113 sb.append("&folderId=");
114 sb.append(fileEntry.getFolderId());
115
116 return sb.toString();
117 }
118
119 @Override
120 protected String getPath(
121 SocialActivity activity, ServiceContext serviceContext) {
122
123 return "/document_library/find_file_entry?fileEntryId=" +
124 activity.getClassPK();
125 }
126
127 @Override
128 protected String getTitlePattern(
129 String groupName, SocialActivity activity) {
130
131 int activityType = activity.getType();
132
133 if (activityType == DLActivityKeys.ADD_FILE_ENTRY) {
134 if (Validator.isNull(groupName)) {
135 return "activity-document-library-file-add-file";
136 }
137 else {
138 return "activity-document-library-file-add-file-in";
139 }
140 }
141 else if (activityType == DLActivityKeys.UPDATE_FILE_ENTRY) {
142 if (Validator.isNull(groupName)) {
143 return "activity-document-library-file-update-file";
144 }
145 else {
146 return "activity-document-library-file-update-file-in";
147 }
148 }
149 else if (activityType == SocialActivityConstants.TYPE_MOVE_TO_TRASH) {
150 if (Validator.isNull(groupName)) {
151 return "activity-document-library-file-move-to-trash";
152 }
153 else {
154 return "activity-document-library-file-move-to-trash-in";
155 }
156 }
157 else if (activityType ==
158 SocialActivityConstants.TYPE_RESTORE_FROM_TRASH) {
159
160 if (Validator.isNull(groupName)) {
161 return "activity-document-library-file-restore-from-trash";
162 }
163 else {
164 return "activity-document-library-file-restore-from-trash-in";
165 }
166 }
167
168 return null;
169 }
170
171 @Override
172 protected boolean hasPermissions(
173 PermissionChecker permissionChecker, SocialActivity activity,
174 String actionId, ServiceContext serviceContext)
175 throws Exception {
176
177 return DLFileEntryPermission.contains(
178 permissionChecker, activity.getClassPK(), actionId);
179 }
180
181 private static final String[] _CLASS_NAMES = {DLFileEntry.class.getName()};
182
183 }