001
014
015 package com.liferay.portlet.documentlibrary.asset;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.portlet.LiferayPortletRequest;
019 import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
020 import com.liferay.portal.kernel.portlet.LiferayPortletURL;
021 import com.liferay.portal.kernel.repository.model.FileEntry;
022 import com.liferay.portal.kernel.repository.model.FileVersion;
023 import com.liferay.portal.kernel.spring.osgi.OSGiBeanProperties;
024 import com.liferay.portal.kernel.util.Constants;
025 import com.liferay.portal.security.permission.ActionKeys;
026 import com.liferay.portal.security.permission.PermissionChecker;
027 import com.liferay.portal.theme.ThemeDisplay;
028 import com.liferay.portal.util.PortletKeys;
029 import com.liferay.portlet.asset.model.AssetRenderer;
030 import com.liferay.portlet.asset.model.BaseAssetRendererFactory;
031 import com.liferay.portlet.asset.model.ClassTypeReader;
032 import com.liferay.portlet.documentlibrary.model.DLFileEntry;
033 import com.liferay.portlet.documentlibrary.model.DLFileEntryType;
034 import com.liferay.portlet.documentlibrary.model.DLFileEntryTypeConstants;
035 import com.liferay.portlet.documentlibrary.model.DLFolderConstants;
036 import com.liferay.portlet.documentlibrary.service.DLAppLocalServiceUtil;
037 import com.liferay.portlet.documentlibrary.service.DLFileEntryTypeLocalServiceUtil;
038 import com.liferay.portlet.documentlibrary.service.permission.DLFileEntryPermission;
039 import com.liferay.portlet.documentlibrary.service.permission.DLFileEntryTypePermission;
040 import com.liferay.portlet.documentlibrary.service.permission.DLPermission;
041
042 import java.util.Locale;
043
044 import javax.portlet.PortletRequest;
045 import javax.portlet.PortletURL;
046 import javax.portlet.WindowState;
047 import javax.portlet.WindowStateException;
048
049
055 @OSGiBeanProperties(
056 property = {
057 "search.asset.type=com.liferay.portlet.documentlibrary.model.DLFileEntry"
058 }
059 )
060 public class DLFileEntryAssetRendererFactory extends BaseAssetRendererFactory {
061
062 public static final String TYPE = "document";
063
064 public DLFileEntryAssetRendererFactory() {
065 setLinkable(true);
066 setSupportsClassTypes(true);
067 }
068
069 @Override
070 public AssetRenderer getAssetRenderer(long classPK, int type)
071 throws PortalException {
072
073 FileEntry fileEntry = null;
074 FileVersion fileVersion = null;
075
076 if (type == TYPE_LATEST) {
077 fileVersion = DLAppLocalServiceUtil.getFileVersion(classPK);
078
079 fileEntry = fileVersion.getFileEntry();
080 }
081 else {
082 fileEntry = DLAppLocalServiceUtil.getFileEntry(classPK);
083
084 fileVersion = fileEntry.getFileVersion();
085 }
086
087 DLFileEntryAssetRenderer dlFileEntryAssetRenderer =
088 new DLFileEntryAssetRenderer(fileEntry, fileVersion);
089
090 dlFileEntryAssetRenderer.setAssetRendererType(type);
091
092 return dlFileEntryAssetRenderer;
093 }
094
095 @Override
096 public String getClassName() {
097 return DLFileEntry.class.getName();
098 }
099
100 @Override
101 public ClassTypeReader getClassTypeReader() {
102 return new DLFileEntryClassTypeReader();
103 }
104
105 @Override
106 public String getIconCssClass() {
107 return "icon-file-alt";
108 }
109
110 @Override
111 public String getType() {
112 return TYPE;
113 }
114
115 @Override
116 public String getTypeName(Locale locale, long subtypeId) {
117 try {
118 DLFileEntryType dlFileEntryType =
119 DLFileEntryTypeLocalServiceUtil.getFileEntryType(subtypeId);
120
121 return dlFileEntryType.getName(locale);
122 }
123 catch (Exception e) {
124 return super.getTypeName(locale, subtypeId);
125 }
126 }
127
128 @Override
129 public PortletURL getURLAdd(
130 LiferayPortletRequest liferayPortletRequest,
131 LiferayPortletResponse liferayPortletResponse, long classTypeId) {
132
133 PortletURL portletURL = liferayPortletResponse.createRenderURL(
134 PortletKeys.DOCUMENT_LIBRARY);
135
136 portletURL.setParameter(
137 "struts_action", "/document_library/edit_file_entry");
138 portletURL.setParameter(Constants.CMD, Constants.ADD);
139 portletURL.setParameter(
140 "folderId",
141 String.valueOf(DLFolderConstants.DEFAULT_PARENT_FOLDER_ID));
142
143 long fileEntryTypeId =
144 DLFileEntryTypeConstants.FILE_ENTRY_TYPE_ID_BASIC_DOCUMENT;
145
146 if (classTypeId >= 0) {
147 fileEntryTypeId = classTypeId;
148 }
149
150 portletURL.setParameter(
151 "fileEntryTypeId", String.valueOf(fileEntryTypeId));
152
153 portletURL.setParameter("showMountFolder", Boolean.FALSE.toString());
154 portletURL.setParameter("showSelectFolder", Boolean.TRUE.toString());
155
156 return portletURL;
157 }
158
159 @Override
160 public PortletURL getURLView(
161 LiferayPortletResponse liferayPortletResponse,
162 WindowState windowState) {
163
164 LiferayPortletURL liferayPortletURL =
165 liferayPortletResponse.createLiferayPortletURL(
166 PortletKeys.DOCUMENT_LIBRARY_DISPLAY,
167 PortletRequest.RENDER_PHASE);
168
169 try {
170 liferayPortletURL.setWindowState(windowState);
171 }
172 catch (WindowStateException wse) {
173 }
174
175 return liferayPortletURL;
176 }
177
178 @Override
179 public boolean hasAddPermission(
180 PermissionChecker permissionChecker, long groupId, long classTypeId)
181 throws Exception {
182
183 if ((classTypeId > 0) &&
184 !DLFileEntryTypePermission.contains(
185 permissionChecker, classTypeId, ActionKeys.VIEW)) {
186
187 return false;
188 }
189
190 return DLPermission.contains(
191 permissionChecker, groupId, ActionKeys.ADD_DOCUMENT);
192 }
193
194 @Override
195 public boolean hasPermission(
196 PermissionChecker permissionChecker, long classPK, String actionId)
197 throws Exception {
198
199 return DLFileEntryPermission.contains(
200 permissionChecker, classPK, actionId);
201 }
202
203 @Override
204 protected String getIconPath(ThemeDisplay themeDisplay) {
205 return themeDisplay.getPathThemeImages() + "/common/clip.png";
206 }
207
208 }