001    /**
002     * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portlet.documentlibrary.webdav;
016    
017    import com.liferay.portal.kernel.lock.Lock;
018    import com.liferay.portal.kernel.repository.model.FileEntry;
019    import com.liferay.portal.kernel.repository.model.FileVersion;
020    import com.liferay.portal.kernel.util.StringPool;
021    import com.liferay.portal.kernel.webdav.BaseResourceImpl;
022    import com.liferay.portal.kernel.webdav.WebDAVException;
023    import com.liferay.portal.kernel.webdav.WebDAVRequest;
024    import com.liferay.portlet.documentlibrary.model.DLFileEntry;
025    
026    import java.io.InputStream;
027    
028    /**
029     * @author Brian Wing Shun Chan
030     */
031    public class DLFileEntryResourceImpl extends BaseResourceImpl {
032    
033            public DLFileEntryResourceImpl(
034                    WebDAVRequest webDAVRequest, FileEntry fileEntry, boolean appendPath) {
035    
036                    super(
037                            webDAVRequest.getRootPath() + webDAVRequest.getPath(),
038                            _getName(fileEntry, appendPath), _getName(fileEntry, true),
039                            fileEntry.getCreateDate(), fileEntry.getModifiedDate(),
040                            fileEntry.getSize());
041    
042                    setModel(fileEntry);
043                    setClassName(DLFileEntry.class.getName());
044                    setPrimaryKey(fileEntry.getPrimaryKey());
045            }
046    
047            @Override
048            public InputStream getContentAsStream() throws WebDAVException {
049                    FileEntry fileEntry = getModel();
050    
051                    try {
052                            FileVersion fileVersion = fileEntry.getLatestFileVersion();
053    
054                            return fileVersion.getContentStream(true);
055                    }
056                    catch (Exception e) {
057                            throw new WebDAVException(e);
058                    }
059            }
060    
061            @Override
062            public String getContentType() {
063                    FileEntry fileEntry = getModel();
064    
065                    try {
066                            FileVersion fileVersion = fileEntry.getLatestFileVersion();
067    
068                            return fileVersion.getMimeType();
069                    }
070                    catch (Exception e) {
071                            return fileEntry.getMimeType();
072                    }
073            }
074    
075            @Override
076            public Lock getLock() {
077                    FileEntry fileEntry = getModel();
078    
079                    try {
080                            return fileEntry.getLock();
081                    }
082                    catch (Exception e) {
083                    }
084    
085                    return null;
086            }
087    
088            @Override
089            public FileEntry getModel() {
090                    return (FileEntry)super.getModel();
091            }
092    
093            @Override
094            public long getSize() {
095                    FileEntry fileEntry = getModel();
096    
097                    try {
098                            FileVersion fileVersion = fileEntry.getLatestFileVersion();
099    
100                            return fileVersion.getSize();
101                    }
102                    catch (Exception e) {
103                            return fileEntry.getSize();
104                    }
105            }
106    
107            @Override
108            public boolean isCollection() {
109                    return false;
110            }
111    
112            @Override
113            public boolean isLocked() {
114                    FileEntry fileEntry = getModel();
115    
116                    try {
117                            return fileEntry.hasLock();
118                    }
119                    catch (Exception e) {
120                    }
121    
122                    return false;
123            }
124    
125            private static String _getName(FileEntry fileEntry, boolean appendPath) {
126                    if (appendPath) {
127                            String name = fileEntry.getTitle();
128    
129                            name = DLWebDAVUtil.escapeRawTitle(name);
130    
131                            return name;
132                    }
133    
134                    return StringPool.BLANK;
135            }
136    
137    }