/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.document.library.web.internal.portlet.action; import com.liferay.document.library.kernel.exception.NoSuchFileEntryException; import com.liferay.document.library.kernel.exception.NoSuchFolderException; import com.liferay.document.library.kernel.model.DLFolder; import com.liferay.document.library.kernel.service.DLAppServiceUtil; import com.liferay.document.library.kernel.util.RawMetadataProcessorUtil; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.log.Log; import com.liferay.portal.kernel.log.LogFactoryUtil; import com.liferay.portal.kernel.model.Repository; import com.liferay.portal.kernel.portlet.PortletPreferencesFactoryUtil; import com.liferay.portal.kernel.repository.model.FileEntry; import com.liferay.portal.kernel.repository.model.FileShortcut; import com.liferay.portal.kernel.repository.model.FileVersion; import com.liferay.portal.kernel.repository.model.Folder; import com.liferay.portal.kernel.security.permission.ActionKeys; import com.liferay.portal.kernel.service.RepositoryServiceUtil; import com.liferay.portal.kernel.theme.PortletDisplay; import com.liferay.portal.kernel.theme.ThemeDisplay; import com.liferay.portal.kernel.util.Constants; import com.liferay.portal.kernel.util.GetterUtil; import com.liferay.portal.kernel.util.ParamUtil; import com.liferay.portal.kernel.util.PortalUtil; import com.liferay.portal.kernel.util.Validator; import com.liferay.portal.kernel.util.WebKeys; import com.liferay.portlet.documentlibrary.service.permission.DLPermission; import java.util.ArrayList; import java.util.List; import javax.portlet.PortletPreferences; import javax.portlet.PortletRequest; import javax.servlet.http.HttpServletRequest; /** * @author Brian Wing Shun Chan * @author Sergio González * @author Roberto Díaz */ public class ActionUtil { public static List<FileEntry> getFileEntries(HttpServletRequest request) throws PortalException { List<FileEntry> fileEntries = new ArrayList<>(); long[] fileEntryIds = ParamUtil.getLongValues( request, "rowIdsFileEntry"); for (long fileEntryId : fileEntryIds) { try { FileEntry fileEntry = DLAppServiceUtil.getFileEntry( fileEntryId); fileEntries.add(fileEntry); } catch (NoSuchFileEntryException nsfee) { if (_log.isDebugEnabled()) { _log.debug(nsfee, nsfee); } } } return fileEntries; } public static List<FileEntry> getFileEntries(PortletRequest portletRequest) throws PortalException { HttpServletRequest request = PortalUtil.getHttpServletRequest( portletRequest); return getFileEntries(request); } public static FileEntry getFileEntry(HttpServletRequest request) throws PortalException { long fileEntryId = ParamUtil.getLong(request, "fileEntryId"); FileEntry fileEntry = null; if (fileEntryId > 0) { fileEntry = DLAppServiceUtil.getFileEntry(fileEntryId); } if (fileEntry == null) { return null; } String cmd = ParamUtil.getString(request, Constants.CMD); if (fileEntry.isInTrash() && !cmd.equals(Constants.MOVE_FROM_TRASH)) { throw new NoSuchFileEntryException( "{fileEntryId=" + fileEntryId + "}"); } return fileEntry; } public static FileEntry getFileEntry(PortletRequest portletRequest) throws PortalException { HttpServletRequest request = PortalUtil.getHttpServletRequest( portletRequest); return getFileEntry(request); } public static FileShortcut getFileShortcut(HttpServletRequest request) throws PortalException { long fileShortcutId = ParamUtil.getLong(request, "fileShortcutId"); FileShortcut fileShortcut = null; if (fileShortcutId > 0) { fileShortcut = DLAppServiceUtil.getFileShortcut(fileShortcutId); } return fileShortcut; } public static FileShortcut getFileShortcut(PortletRequest portletRequest) throws PortalException { HttpServletRequest request = PortalUtil.getHttpServletRequest( portletRequest); return getFileShortcut(request); } public static List<FileShortcut> getFileShortcuts( HttpServletRequest request) throws PortalException { long[] fileShortcutIds = ParamUtil.getLongValues( request, "rowIdsDLFileShortcut"); List<FileShortcut> fileShortcuts = new ArrayList<>(); for (long fileShortcutId : fileShortcutIds) { if (fileShortcutId > 0) { fileShortcuts.add( DLAppServiceUtil.getFileShortcut(fileShortcutId)); } } return fileShortcuts; } public static List<FileShortcut> getFileShortcuts( PortletRequest portletRequest) throws PortalException { HttpServletRequest request = PortalUtil.getHttpServletRequest( portletRequest); return getFileShortcuts(request); } public static FileVersion getFileVersion( HttpServletRequest request, FileEntry fileEntry) throws PortalException { if (fileEntry == null) { return null; } FileVersion fileVersion = null; String version = ParamUtil.getString(request, "version"); if (Validator.isNotNull(version)) { fileVersion = fileEntry.getFileVersion(version); } else { fileVersion = fileEntry.getFileVersion(); } if (RawMetadataProcessorUtil.isSupported(fileVersion)) { RawMetadataProcessorUtil.generateMetadata(fileVersion); } return fileVersion; } public static FileVersion getFileVersion( PortletRequest portletRequest, FileEntry fileEntry) throws PortalException { HttpServletRequest request = PortalUtil.getHttpServletRequest( portletRequest); return getFileVersion(request, fileEntry); } public static Folder getFolder(HttpServletRequest request) throws PortalException { ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute( WebKeys.THEME_DISPLAY); long folderId = ParamUtil.getLong(request, "folderId"); boolean ignoreRootFolder = ParamUtil.getBoolean( request, "ignoreRootFolder"); if ((folderId <= 0) && !ignoreRootFolder) { PortletDisplay portletDisplay = themeDisplay.getPortletDisplay(); String portletId = portletDisplay.getId(); PortletPreferences portletPreferences = PortletPreferencesFactoryUtil.getPortletPreferences( request, portletId); folderId = GetterUtil.getLong( portletPreferences.getValue("rootFolderId", null)); } Folder folder = null; if (folderId > 0) { folder = DLAppServiceUtil.getFolder(folderId); if (folder.getModel() instanceof DLFolder) { DLFolder dlFolder = (DLFolder)folder.getModel(); if (dlFolder.isInTrash()) { throw new NoSuchFolderException( "{folderId=" + folderId + "}"); } } } else { DLPermission.check( themeDisplay.getPermissionChecker(), themeDisplay.getScopeGroupId(), ActionKeys.VIEW); } return folder; } public static Folder getFolder(PortletRequest portletRequest) throws PortalException { HttpServletRequest request = PortalUtil.getHttpServletRequest( portletRequest); return getFolder(request); } public static List<Folder> getFolders(HttpServletRequest request) throws PortalException { long[] folderIds = ParamUtil.getLongValues(request, "rowIdsFolder"); List<Folder> folders = new ArrayList<>(); for (long folderId : folderIds) { try { Folder folder = DLAppServiceUtil.getFolder(folderId); folders.add(folder); } catch (NoSuchFolderException nsfe) { if (_log.isDebugEnabled()) { _log.debug(nsfe, nsfe); } } } return folders; } public static List<Folder> getFolders(PortletRequest portletRequest) throws PortalException { HttpServletRequest request = PortalUtil.getHttpServletRequest( portletRequest); return getFolders(request); } public static Repository getRepository(HttpServletRequest request) throws PortalException { ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute( WebKeys.THEME_DISPLAY); long repositoryId = ParamUtil.getLong(request, "repositoryId"); Repository repository = null; if (repositoryId > 0) { repository = RepositoryServiceUtil.getRepository(repositoryId); } else { DLPermission.check( themeDisplay.getPermissionChecker(), themeDisplay.getScopeGroupId(), ActionKeys.VIEW); } return repository; } public static Repository getRepository(PortletRequest portletRequest) throws PortalException { HttpServletRequest request = PortalUtil.getHttpServletRequest( portletRequest); return getRepository(request); } private static final Log _log = LogFactoryUtil.getLog(ActionUtil.class); }