/** * 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.display.context.logic; import com.liferay.document.library.kernel.model.DLFileEntry; import com.liferay.document.library.kernel.model.DLFileEntryType; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.repository.model.FileEntry; import com.liferay.portal.kernel.security.permission.ActionKeys; import com.liferay.portal.kernel.security.permission.PermissionChecker; import com.liferay.portlet.documentlibrary.service.permission.DLFileEntryPermission; /** * @author Iván Zaera */ public class FileEntryDisplayContextHelper { public FileEntryDisplayContextHelper( PermissionChecker permissionChecker, FileEntry fileEntry) { _permissionChecker = permissionChecker; _fileEntry = fileEntry; if (_fileEntry == null) { _setValuesForNullFileEntry(); } } public DLFileEntryType getDLFileEntryType() throws PortalException { if (isDLFileEntry()) { DLFileEntry dlFileEntry = (DLFileEntry)_fileEntry.getModel(); return dlFileEntry.getDLFileEntryType(); } return null; } public FileEntry getFileEntry() { return _fileEntry; } public boolean hasDeletePermission() throws PortalException { if (_hasDeletePermission == null) { _hasDeletePermission = DLFileEntryPermission.contains( _permissionChecker, _fileEntry, ActionKeys.DELETE); } return _hasDeletePermission; } public boolean hasLock() { if (_hasLock == null) { _hasLock = _fileEntry.hasLock(); } return _hasLock; } public boolean hasOverrideCheckoutPermission() throws PortalException { if (_hasOverrideCheckoutPermission == null) { _hasOverrideCheckoutPermission = DLFileEntryPermission.contains( _permissionChecker, _fileEntry, ActionKeys.OVERRIDE_CHECKOUT); } return _hasOverrideCheckoutPermission; } public boolean hasPermissionsPermission() throws PortalException { if (_hasPermissionsPermission == null) { _hasPermissionsPermission = DLFileEntryPermission.contains( _permissionChecker, _fileEntry, ActionKeys.PERMISSIONS); } return _hasPermissionsPermission; } public boolean hasUpdatePermission() throws PortalException { if (_hasUpdatePermission == null) { _hasUpdatePermission = DLFileEntryPermission.contains( _permissionChecker, _fileEntry, ActionKeys.UPDATE); } return _hasUpdatePermission; } public boolean hasViewPermission() throws PortalException { if (_hasViewPermission == null) { _hasViewPermission = DLFileEntryPermission.contains( _permissionChecker, _fileEntry, ActionKeys.VIEW); } return _hasViewPermission; } public boolean isCancelCheckoutDocumentActionAvailable() throws PortalException { if (isCheckinActionAvailable() || (isCheckedOut() && hasOverrideCheckoutPermission())) { return true; } return false; } public boolean isCheckedOut() { if (_checkedOut == null) { _checkedOut = _fileEntry.isCheckedOut(); } return _checkedOut; } public boolean isCheckedOutByMe() { if (isCheckedOut() && isLockedByMe()) { return true; } return false; } public boolean isCheckedOutByOther() { if (isCheckedOut() && !isLockedByMe()) { return true; } return false; } public boolean isCheckinActionAvailable() throws PortalException { if (hasUpdatePermission() && isLockedByMe() && isSupportsLocking()) { return true; } return false; } public boolean isCheckoutDocumentActionAvailable() throws PortalException { if (hasUpdatePermission() && !isCheckedOut() && isSupportsLocking()) { return true; } return false; } public boolean isDLFileEntry() { if (_dlFileEntry == null) { if (_fileEntry.getModel() instanceof DLFileEntry) { _dlFileEntry = true; } else { _dlFileEntry = false; } } return _dlFileEntry; } public boolean isDownloadActionAvailable() throws PortalException { return hasViewPermission(); } public boolean isEditActionAvailable() throws PortalException { return isUpdatable(); } public boolean isFileEntryDeletable() throws PortalException { if (hasDeletePermission() && !isCheckedOutByOther()) { return true; } return false; } public boolean isLockedByMe() { if (hasLock()) { return true; } return false; } public boolean isMoveActionAvailable() throws PortalException { return isUpdatable(); } public boolean isPermissionsButtonVisible() throws PortalException { return hasPermissionsPermission(); } public boolean isSupportsLocking() { if (_supportsLocking == null) { _supportsLocking = _fileEntry.isSupportsLocking(); } return _supportsLocking; } public boolean isUpdatable() throws PortalException { if (hasUpdatePermission() && !isCheckedOutByOther()) { return true; } return false; } private void _setValuesForNullFileEntry() { _checkedOut = false; _dlFileEntry = true; _hasDeletePermission = false; _hasLock = false; _hasOverrideCheckoutPermission = false; _hasPermissionsPermission = true; _hasUpdatePermission = true; _hasViewPermission = false; _supportsLocking = false; } private Boolean _checkedOut; private Boolean _dlFileEntry; private final FileEntry _fileEntry; private Boolean _hasDeletePermission; private Boolean _hasLock; private Boolean _hasOverrideCheckoutPermission; private Boolean _hasPermissionsPermission; private Boolean _hasUpdatePermission; private Boolean _hasViewPermission; private final PermissionChecker _permissionChecker; private Boolean _supportsLocking; }