Java tutorial
/** * Copyright (c) 2000-2012 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.portlet.documentlibrary.model.impl; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.exception.SystemException; import com.liferay.portal.kernel.log.Log; import com.liferay.portal.kernel.log.LogFactoryUtil; import com.liferay.portal.kernel.util.FileUtil; import com.liferay.portal.kernel.util.GetterUtil; import com.liferay.portal.kernel.util.StringBundler; import com.liferay.portal.kernel.util.StringPool; import com.liferay.portal.kernel.util.UnicodeProperties; import com.liferay.portal.model.Lock; import com.liferay.portal.service.LockLocalServiceUtil; import com.liferay.portlet.documentlibrary.model.DLFileEntry; import com.liferay.portlet.documentlibrary.model.DLFileEntryMetadata; import com.liferay.portlet.documentlibrary.model.DLFileEntryType; import com.liferay.portlet.documentlibrary.model.DLFileVersion; import com.liferay.portlet.documentlibrary.model.DLFolder; import com.liferay.portlet.documentlibrary.model.DLFolderConstants; import com.liferay.portlet.documentlibrary.service.DLFileEntryMetadataLocalServiceUtil; import com.liferay.portlet.documentlibrary.service.DLFileEntryServiceUtil; import com.liferay.portlet.documentlibrary.service.DLFileEntryTypeLocalServiceUtil; import com.liferay.portlet.documentlibrary.service.DLFileVersionLocalServiceUtil; import com.liferay.portlet.documentlibrary.service.DLFileVersionServiceUtil; import com.liferay.portlet.documentlibrary.service.DLFolderLocalServiceUtil; import com.liferay.portlet.documentlibrary.util.DLUtil; import com.liferay.portlet.dynamicdatamapping.model.DDMStructure; import com.liferay.portlet.dynamicdatamapping.storage.Fields; import com.liferay.portlet.dynamicdatamapping.storage.StorageEngineUtil; import com.liferay.portlet.expando.model.ExpandoBridge; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; /** * @author Brian Wing Shun Chan * @author Alexander Chow */ public class DLFileEntryImpl extends DLFileEntryBaseImpl { public DLFileEntryImpl() { } public InputStream getContentStream() throws PortalException, SystemException { return getContentStream(getVersion()); } public InputStream getContentStream(String version) throws PortalException, SystemException { return DLFileEntryServiceUtil.getFileAsStream(getFileEntryId(), version); } public long getDataRepositoryId() { return DLFolderConstants.getDataRepositoryId(getGroupId(), getFolderId()); } @Override public ExpandoBridge getExpandoBridge() { try { DLFileVersion dlFileVersion = getFileVersion(); return dlFileVersion.getExpandoBridge(); } catch (Exception e) { _log.error(e, e); } return null; } @Override public String getExtraSettings() { if (_extraSettingsProperties == null) { return super.getExtraSettings(); } else { return _extraSettingsProperties.toString(); } } public UnicodeProperties getExtraSettingsProperties() { if (_extraSettingsProperties == null) { _extraSettingsProperties = new UnicodeProperties(true); try { _extraSettingsProperties.load(super.getExtraSettings()); } catch (IOException ioe) { _log.error(ioe, ioe); } } return _extraSettingsProperties; } public Map<String, Fields> getFieldsMap(long fileVersionId) throws PortalException, SystemException { Map<String, Fields> fieldsMap = new HashMap<String, Fields>(); DLFileVersion dlFileVersion = DLFileVersionLocalServiceUtil.getFileVersion(fileVersionId); long fileEntryTypeId = dlFileVersion.getFileEntryTypeId(); if (fileEntryTypeId <= 0) { return fieldsMap; } DLFileEntryType dlFileEntryType = DLFileEntryTypeLocalServiceUtil.getFileEntryType(fileEntryTypeId); List<DDMStructure> ddmStructures = dlFileEntryType.getDDMStructures(); for (DDMStructure ddmStructure : ddmStructures) { DLFileEntryMetadata dlFileEntryMetadata = DLFileEntryMetadataLocalServiceUtil .getFileEntryMetadata(ddmStructure.getStructureId(), fileVersionId); Fields fields = StorageEngineUtil.getFields(dlFileEntryMetadata.getDDMStorageId()); fieldsMap.put(ddmStructure.getStructureKey(), fields); } return fieldsMap; } public DLFileVersion getFileVersion() throws PortalException, SystemException { if (_dlFileVersion == null) { _dlFileVersion = getFileVersion(getVersion()); } return _dlFileVersion; } public DLFileVersion getFileVersion(String version) throws PortalException, SystemException { return DLFileVersionLocalServiceUtil.getFileVersion(getFileEntryId(), version); } public List<DLFileVersion> getFileVersions(int status) throws SystemException { return DLFileVersionLocalServiceUtil.getFileVersions(getFileEntryId(), status); } public DLFolder getFolder() { DLFolder dlFolder = null; if (getFolderId() > 0) { try { dlFolder = DLFolderLocalServiceUtil.getFolder(getFolderId()); } catch (Exception e) { dlFolder = new DLFolderImpl(); _log.error(e, e); } } else { dlFolder = new DLFolderImpl(); } return dlFolder; } public String getIcon() { return DLUtil.getFileIcon(getExtension()); } public DLFileVersion getLatestFileVersion(boolean trusted) throws PortalException, SystemException { if (trusted) { return DLFileVersionLocalServiceUtil.getLatestFileVersion(getFileEntryId(), true); } else { return DLFileVersionServiceUtil.getLatestFileVersion(getFileEntryId()); } } public Lock getLock() { try { return LockLocalServiceUtil.getLock(DLFileEntry.class.getName(), getFileEntryId()); } catch (Exception e) { } return null; } public String getLuceneProperties() { UnicodeProperties extraSettingsProps = getExtraSettingsProperties(); Iterator<Map.Entry<String, String>> itr = extraSettingsProps.entrySet().iterator(); StringBundler sb = new StringBundler(extraSettingsProps.entrySet().size() + 4); sb.append(FileUtil.stripExtension(getTitle())); sb.append(StringPool.SPACE); sb.append(getDescription()); sb.append(StringPool.SPACE); while (itr.hasNext()) { Map.Entry<String, String> entry = itr.next(); String value = GetterUtil.getString(entry.getValue()); sb.append(value); } return sb.toString(); } public boolean hasLock() { try { return DLFileEntryServiceUtil.hasFileEntryLock(getFileEntryId()); } catch (Exception e) { } return false; } public boolean isCheckedOut() { try { return DLFileEntryServiceUtil.isFileEntryCheckedOut(getFileEntryId()); } catch (Exception e) { } return false; } @Override public void setExtraSettings(String extraSettings) { _extraSettingsProperties = null; super.setExtraSettings(extraSettings); } public void setExtraSettingsProperties(UnicodeProperties extraSettingsProperties) { _extraSettingsProperties = extraSettingsProperties; super.setExtraSettings(_extraSettingsProperties.toString()); } public void setFileVersion(DLFileVersion dlFileVersion) { _dlFileVersion = dlFileVersion; } private static Log _log = LogFactoryUtil.getLog(DLFileEntryImpl.class); private UnicodeProperties _extraSettingsProperties; private DLFileVersion _dlFileVersion; }