/**
* 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.portal.repository.liferayrepository.model;
import com.liferay.document.library.kernel.model.DLFileEntry;
import com.liferay.document.library.kernel.model.DLFileEntryConstants;
import com.liferay.document.library.kernel.model.DLFileVersion;
import com.liferay.document.library.kernel.service.DLAppHelperLocalServiceUtil;
import com.liferay.document.library.kernel.service.DLFileVersionLocalServiceUtil;
import com.liferay.expando.kernel.model.ExpandoBridge;
import com.liferay.exportimport.kernel.lar.StagedModelType;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.lock.Lock;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.repository.Repository;
import com.liferay.portal.kernel.repository.RepositoryProviderUtil;
import com.liferay.portal.kernel.repository.capabilities.Capability;
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.repository.model.RepositoryModelOperation;
import com.liferay.portal.kernel.security.auth.PrincipalThreadLocal;
import com.liferay.portal.kernel.security.permission.PermissionChecker;
import com.liferay.portal.kernel.util.ContentTypes;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portlet.documentlibrary.service.permission.DLFileEntryPermission;
import com.liferay.portlet.documentlibrary.util.RepositoryModelUtil;
import java.io.InputStream;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* @author Alexander Chow
*/
public class LiferayFileEntry extends LiferayModel implements FileEntry {
public LiferayFileEntry(DLFileEntry dlFileEntry) {
this(dlFileEntry, dlFileEntry.isEscapedModel());
}
public LiferayFileEntry(DLFileEntry fileEntry, boolean escapedModel) {
_dlFileEntry = fileEntry;
_escapedModel = escapedModel;
}
@Override
public Object clone() {
return new LiferayFileEntry(_dlFileEntry);
}
@Override
public boolean containsPermission(
PermissionChecker permissionChecker, String actionId)
throws PortalException {
return DLFileEntryPermission.contains(
permissionChecker, _dlFileEntry, actionId);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!(obj instanceof LiferayFileEntry)) {
return false;
}
LiferayFileEntry liferayFileEntry = (LiferayFileEntry)obj;
if (Objects.equals(_dlFileEntry, liferayFileEntry._dlFileEntry)) {
return true;
}
return false;
}
@Override
public void execute(RepositoryModelOperation repositoryModelOperation)
throws PortalException {
repositoryModelOperation.execute(this);
}
@Override
public Map<String, Serializable> getAttributes() {
ExpandoBridge expandoBridge = getExpandoBridge();
return expandoBridge.getAttributes();
}
public FileVersion getCachedFileVersion() {
if (_dlFileVersion == null) {
return null;
}
return new LiferayFileVersion(_dlFileVersion);
}
@Override
public long getCompanyId() {
return _dlFileEntry.getCompanyId();
}
@Override
public InputStream getContentStream() throws PortalException {
InputStream inputStream = _dlFileEntry.getContentStream();
try {
DLAppHelperLocalServiceUtil.getFileAsStream(
PrincipalThreadLocal.getUserId(), this, true);
}
catch (Exception e) {
_log.error(e);
}
return inputStream;
}
@Override
public InputStream getContentStream(String version) throws PortalException {
InputStream inputStream = _dlFileEntry.getContentStream(version);
try {
DLAppHelperLocalServiceUtil.getFileAsStream(
PrincipalThreadLocal.getUserId(), this, true);
}
catch (Exception e) {
_log.error(e);
}
return inputStream;
}
@Override
public Date getCreateDate() {
return _dlFileEntry.getCreateDate();
}
@Override
public String getDescription() {
return _dlFileEntry.getDescription();
}
public DLFileEntry getDLFileEntry() {
return _dlFileEntry;
}
@Override
public ExpandoBridge getExpandoBridge() {
return _dlFileEntry.getExpandoBridge();
}
@Override
public String getExtension() {
return _dlFileEntry.getExtension();
}
@Override
public long getFileEntryId() {
return _dlFileEntry.getFileEntryId();
}
@Override
public String getFileName() {
return _dlFileEntry.getFileName();
}
@Override
public List<FileShortcut> getFileShortcuts() {
return RepositoryModelUtil.toFileShortcuts(
_dlFileEntry.getFileShortcuts());
}
@Override
public FileVersion getFileVersion() throws PortalException {
DLFileVersion dlFileVersion = _dlFileVersion;
if (dlFileVersion == null) {
dlFileVersion = _dlFileEntry.getFileVersion();
}
return new LiferayFileVersion(dlFileVersion);
}
@Override
public FileVersion getFileVersion(String version) throws PortalException {
return new LiferayFileVersion(_dlFileEntry.getFileVersion(version));
}
@Override
public List<FileVersion> getFileVersions(int status) {
return RepositoryModelUtil.toFileVersions(
_dlFileEntry.getFileVersions(status));
}
@Override
public int getFileVersionsCount(int status) {
return _dlFileEntry.getFileVersionsCount(status);
}
@Override
public Folder getFolder() {
Folder folder = null;
try {
folder = new LiferayFolder(_dlFileEntry.getFolder());
}
catch (Exception e) {
return null;
}
return folder;
}
@Override
public long getFolderId() {
return _dlFileEntry.getFolderId();
}
@Override
public long getGroupId() {
return _dlFileEntry.getGroupId();
}
@Override
public String getIcon() {
return _dlFileEntry.getIcon();
}
@Override
public String getIconCssClass() {
return _dlFileEntry.getIconCssClass();
}
@Override
public Date getLastPublishDate() {
return _dlFileEntry.getLastPublishDate();
}
@Override
public FileVersion getLatestFileVersion() throws PortalException {
return getLatestFileVersion(false);
}
@Override
public FileVersion getLatestFileVersion(boolean trusted)
throws PortalException {
return new LiferayFileVersion(
_dlFileEntry.getLatestFileVersion(trusted));
}
@Override
public Lock getLock() {
return _dlFileEntry.getLock();
}
@Override
public String getMimeType() {
return _dlFileEntry.getMimeType();
}
@Override
public String getMimeType(String version) {
try {
DLFileVersion dlFileVersion =
DLFileVersionLocalServiceUtil.getFileVersion(
_dlFileEntry.getFileEntryId(), version);
return dlFileVersion.getMimeType();
}
catch (Exception e) {
}
return ContentTypes.APPLICATION_OCTET_STREAM;
}
@Override
public Object getModel() {
return _dlFileEntry;
}
@Override
public Class<?> getModelClass() {
return LiferayFileEntry.class;
}
@Override
public String getModelClassName() {
return LiferayFileEntry.class.getName();
}
@Override
public Date getModifiedDate() {
return _dlFileEntry.getModifiedDate();
}
@Override
public long getPrimaryKey() {
return _dlFileEntry.getPrimaryKey();
}
@Override
public Serializable getPrimaryKeyObj() {
return getPrimaryKey();
}
@Override
public int getReadCount() {
return _dlFileEntry.getReadCount();
}
@Override
public <T extends Capability> T getRepositoryCapability(
Class<T> capabilityClass) {
Repository repository = getRepository();
return repository.getCapability(capabilityClass);
}
@Override
public long getRepositoryId() {
return _dlFileEntry.getRepositoryId();
}
@Override
public long getSize() {
return _dlFileEntry.getSize();
}
@Override
public StagedModelType getStagedModelType() {
return new StagedModelType(DLFileEntryConstants.getClassName());
}
@Override
public String getTitle() {
return _dlFileEntry.getTitle();
}
@Override
public long getUserId() {
return _dlFileEntry.getUserId();
}
@Override
public String getUserName() {
return _dlFileEntry.getUserName();
}
@Override
public String getUserUuid() {
return _dlFileEntry.getUserUuid();
}
@Override
public String getUuid() {
return _dlFileEntry.getUuid();
}
@Override
public String getVersion() {
return _dlFileEntry.getVersion();
}
/**
* @deprecated As of 6.2.0, replaced by {@link DLFileVersion#getUserId()}
*/
@Deprecated
@Override
public long getVersionUserId() {
long versionUserId = 0;
try {
DLFileVersion dlFileVersion = _dlFileEntry.getFileVersion();
versionUserId = dlFileVersion.getUserId();
}
catch (Exception e) {
_log.error(e, e);
}
return versionUserId;
}
/**
* @deprecated As of 6.2.0, replaced by {@link DLFileVersion#getUserName()}
*/
@Deprecated
@Override
public String getVersionUserName() {
String versionUserName = StringPool.BLANK;
try {
DLFileVersion dlFileVersion = _dlFileEntry.getFileVersion();
versionUserName = dlFileVersion.getUserName();
}
catch (Exception e) {
_log.error(e, e);
}
return versionUserName;
}
/**
* @deprecated As of 6.2.0, replaced by {@link DLFileVersion#getUserUuid()}
*/
@Deprecated
@Override
public String getVersionUserUuid() {
String versionUserUuid = StringPool.BLANK;
try {
DLFileVersion dlFileVersion = _dlFileEntry.getFileVersion();
versionUserUuid = dlFileVersion.getUserUuid();
}
catch (Exception e) {
_log.error(e, e);
}
return versionUserUuid;
}
@Override
public int hashCode() {
return _dlFileEntry.hashCode();
}
@Override
public boolean hasLock() {
return _dlFileEntry.hasLock();
}
@Override
public boolean isCheckedOut() {
return _dlFileEntry.isCheckedOut();
}
@Override
public boolean isDefaultRepository() {
if (_dlFileEntry.getGroupId() == _dlFileEntry.getRepositoryId()) {
return true;
}
else {
return false;
}
}
@Override
public boolean isEscapedModel() {
return _escapedModel;
}
@Override
public boolean isInTrash() {
return _dlFileEntry.isInTrash();
}
@Override
public boolean isInTrashContainer() {
try {
return _dlFileEntry.isInTrashContainer();
}
catch (Exception e) {
return false;
}
}
@Override
public boolean isManualCheckInRequired() {
return _dlFileEntry.isManualCheckInRequired();
}
@Override
public <T extends Capability> boolean isRepositoryCapabilityProvided(
Class<T> capabilityClass) {
Repository repository = getRepository();
return repository.isCapabilityProvided(capabilityClass);
}
@Override
public boolean isSupportsLocking() {
return true;
}
@Override
public boolean isSupportsMetadata() {
return true;
}
@Override
public boolean isSupportsSocial() {
return true;
}
public void setCachedFileVersion(FileVersion fileVersion) {
_dlFileVersion = (DLFileVersion)fileVersion.getModel();
}
@Override
public void setCompanyId(long companyId) {
_dlFileEntry.setCompanyId(companyId);
}
@Override
public void setCreateDate(Date createDate) {
_dlFileEntry.setCreateDate(createDate);
}
@Override
public void setGroupId(long groupId) {
_dlFileEntry.setGroupId(groupId);
}
@Override
public void setLastPublishDate(Date lastPublishDate) {
_dlFileEntry.setLastPublishDate(lastPublishDate);
}
@Override
public void setModifiedDate(Date modifiedDate) {
_dlFileEntry.setModifiedDate(modifiedDate);
}
public void setPrimaryKey(long primaryKey) {
_dlFileEntry.setPrimaryKey(primaryKey);
}
@Override
public void setPrimaryKeyObj(Serializable primaryKeyObj) {
setPrimaryKey(((Long)primaryKeyObj).longValue());
}
@Override
public void setUserId(long userId) {
_dlFileEntry.setUserId(userId);
}
@Override
public void setUserName(String userName) {
_dlFileEntry.setUserName(userName);
}
@Override
public void setUserUuid(String userUuid) {
_dlFileEntry.setUserUuid(userUuid);
}
@Override
public void setUuid(String uuid) {
_dlFileEntry.setUuid(uuid);
}
@Override
public FileEntry toEscapedModel() {
if (isEscapedModel()) {
return this;
}
else {
return new LiferayFileEntry(_dlFileEntry.toEscapedModel(), true);
}
}
@Override
public String toString() {
return _dlFileEntry.toString();
}
@Override
public FileEntry toUnescapedModel() {
if (isEscapedModel()) {
return new LiferayFileEntry(_dlFileEntry.toUnescapedModel(), true);
}
else {
return this;
}
}
protected Repository getRepository() {
try {
return RepositoryProviderUtil.getRepository(getRepositoryId());
}
catch (PortalException pe) {
throw new SystemException(
"Unable to get repository for file entry " + getFileEntryId(),
pe);
}
}
private static final Log _log = LogFactoryUtil.getLog(
LiferayFileEntry.class);
private final DLFileEntry _dlFileEntry;
private DLFileVersion _dlFileVersion;
private final boolean _escapedModel;
}