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