001    /**
002     * Copyright (c) 2000-2013 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.portal.repository.liferayrepository.model;
016    
017    import com.liferay.portal.kernel.exception.PortalException;
018    import com.liferay.portal.kernel.exception.SystemException;
019    import com.liferay.portal.kernel.lar.StagedModelType;
020    import com.liferay.portal.kernel.log.Log;
021    import com.liferay.portal.kernel.log.LogFactoryUtil;
022    import com.liferay.portal.kernel.repository.model.FileEntry;
023    import com.liferay.portal.kernel.repository.model.FileVersion;
024    import com.liferay.portal.kernel.repository.model.Folder;
025    import com.liferay.portal.kernel.util.ContentTypes;
026    import com.liferay.portal.kernel.util.StringPool;
027    import com.liferay.portal.kernel.util.Validator;
028    import com.liferay.portal.model.Lock;
029    import com.liferay.portal.security.permission.PermissionChecker;
030    import com.liferay.portlet.documentlibrary.model.DLFileEntry;
031    import com.liferay.portlet.documentlibrary.model.DLFileEntryConstants;
032    import com.liferay.portlet.documentlibrary.model.DLFileVersion;
033    import com.liferay.portlet.documentlibrary.service.DLFileVersionLocalServiceUtil;
034    import com.liferay.portlet.documentlibrary.service.permission.DLFileEntryPermission;
035    import com.liferay.portlet.expando.model.ExpandoBridge;
036    
037    import java.io.InputStream;
038    import java.io.Serializable;
039    
040    import java.util.Date;
041    import java.util.List;
042    import java.util.Map;
043    
044    /**
045     * @author Alexander Chow
046     */
047    public class LiferayFileEntry extends LiferayModel implements FileEntry {
048    
049            public LiferayFileEntry(DLFileEntry dlFileEntry) {
050                    _dlFileEntry = dlFileEntry;
051            }
052    
053            public LiferayFileEntry(DLFileEntry fileEntry, boolean escapedModel) {
054                    _dlFileEntry = fileEntry;
055                    _escapedModel = escapedModel;
056            }
057    
058            @Override
059            public Object clone() {
060                    LiferayFileEntry liferayFileEntry = new LiferayFileEntry(
061                            _dlFileEntry, _escapedModel);
062    
063                    FileVersion cachedFileVersion = getCachedFileVersion();
064    
065                    if (cachedFileVersion != null) {
066                            liferayFileEntry.setCachedFileVersion(cachedFileVersion);
067                    }
068    
069                    liferayFileEntry.setCompanyId(getCompanyId());
070                    liferayFileEntry.setCreateDate(getCreateDate());
071                    liferayFileEntry.setGroupId(getGroupId());
072                    liferayFileEntry.setModifiedDate(getModifiedDate());
073                    liferayFileEntry.setPrimaryKey(getPrimaryKey());
074                    liferayFileEntry.setUserId(getUserId());
075                    liferayFileEntry.setUserName(getUserName());
076    
077                    try {
078                            liferayFileEntry.setUserUuid(getUserUuid());
079                    }
080                    catch (SystemException se) {
081                    }
082    
083                    liferayFileEntry.setUuid(getUuid());
084    
085                    return liferayFileEntry;
086            }
087    
088            @Override
089            public boolean containsPermission(
090                            PermissionChecker permissionChecker, String actionId)
091                    throws PortalException, SystemException {
092    
093                    return DLFileEntryPermission.contains(
094                            permissionChecker, _dlFileEntry, actionId);
095            }
096    
097            @Override
098            public boolean equals(Object obj) {
099                    if (this == obj) {
100                            return true;
101                    }
102    
103                    if (!(obj instanceof LiferayFileEntry)) {
104                            return false;
105                    }
106    
107                    LiferayFileEntry liferayFileEntry = (LiferayFileEntry)obj;
108    
109                    if (Validator.equals(_dlFileEntry, liferayFileEntry._dlFileEntry)) {
110                            return true;
111                    }
112    
113                    return false;
114            }
115    
116            @Override
117            public Map<String, Serializable> getAttributes() {
118                    ExpandoBridge expandoBridge = getExpandoBridge();
119    
120                    return expandoBridge.getAttributes();
121            }
122    
123            public FileVersion getCachedFileVersion() {
124                    if (_dlFileVersion == null) {
125                            return null;
126                    }
127    
128                    return new LiferayFileVersion(_dlFileVersion);
129            }
130    
131            @Override
132            public long getCompanyId() {
133                    return _dlFileEntry.getCompanyId();
134            }
135    
136            @Override
137            public InputStream getContentStream()
138                    throws PortalException, SystemException {
139    
140                    return _dlFileEntry.getContentStream();
141            }
142    
143            @Override
144            public InputStream getContentStream(String version)
145                    throws PortalException, SystemException {
146    
147                    return _dlFileEntry.getContentStream(version);
148            }
149    
150            @Override
151            public Date getCreateDate() {
152                    return _dlFileEntry.getCreateDate();
153            }
154    
155            @Override
156            public String getDescription() {
157                    return _dlFileEntry.getDescription();
158            }
159    
160            public DLFileEntry getDLFileEntry() {
161                    return _dlFileEntry;
162            }
163    
164            @Override
165            public ExpandoBridge getExpandoBridge() {
166                    return _dlFileEntry.getExpandoBridge();
167            }
168    
169            @Override
170            public String getExtension() {
171                    return _dlFileEntry.getExtension();
172            }
173    
174            @Override
175            public long getFileEntryId() {
176                    return _dlFileEntry.getFileEntryId();
177            }
178    
179            @Override
180            public FileVersion getFileVersion()
181                    throws PortalException, SystemException {
182    
183                    DLFileVersion dlFileVersion = _dlFileVersion;
184    
185                    if (dlFileVersion == null) {
186                            dlFileVersion = _dlFileEntry.getFileVersion();
187                    }
188    
189                    return new LiferayFileVersion(dlFileVersion);
190            }
191    
192            @Override
193            public FileVersion getFileVersion(String version)
194                    throws PortalException, SystemException {
195    
196                    return new LiferayFileVersion(_dlFileEntry.getFileVersion(version));
197            }
198    
199            @Override
200            public List<FileVersion> getFileVersions(int status)
201                    throws SystemException {
202    
203                    return toFileVersions(_dlFileEntry.getFileVersions(status));
204            }
205    
206            @Override
207            public Folder getFolder() {
208                    Folder folder = null;
209    
210                    try {
211                            folder = new LiferayFolder(_dlFileEntry.getFolder());
212                    }
213                    catch (Exception e) {
214                            return null;
215                    }
216    
217                    return folder;
218            }
219    
220            @Override
221            public long getFolderId() {
222                    return _dlFileEntry.getFolderId();
223            }
224    
225            @Override
226            public long getGroupId() {
227                    return _dlFileEntry.getGroupId();
228            }
229    
230            @Override
231            public String getIcon() {
232                    return _dlFileEntry.getIcon();
233            }
234    
235            @Override
236            public FileVersion getLatestFileVersion()
237                    throws PortalException, SystemException {
238    
239                    return new LiferayFileVersion(_dlFileEntry.getLatestFileVersion(false));
240            }
241    
242            @Override
243            public Lock getLock() {
244                    return _dlFileEntry.getLock();
245            }
246    
247            @Override
248            public String getMimeType() {
249                    return _dlFileEntry.getMimeType();
250            }
251    
252            @Override
253            public String getMimeType(String version) {
254                    try {
255                            DLFileVersion dlFileVersion =
256                                    DLFileVersionLocalServiceUtil.getFileVersion(
257                                            _dlFileEntry.getFileEntryId(), version);
258    
259                            return dlFileVersion.getMimeType();
260                    }
261                    catch (Exception e) {
262                    }
263    
264                    return ContentTypes.APPLICATION_OCTET_STREAM;
265            }
266    
267            @Override
268            public Object getModel() {
269                    return _dlFileEntry;
270            }
271    
272            @Override
273            public Class<?> getModelClass() {
274                    return LiferayFileEntry.class;
275            }
276    
277            @Override
278            public String getModelClassName() {
279                    return LiferayFileEntry.class.getName();
280            }
281    
282            @Override
283            public Date getModifiedDate() {
284                    return _dlFileEntry.getModifiedDate();
285            }
286    
287            @Override
288            public long getPrimaryKey() {
289                    return _dlFileEntry.getPrimaryKey();
290            }
291    
292            @Override
293            public Serializable getPrimaryKeyObj() {
294                    return getPrimaryKey();
295            }
296    
297            @Override
298            public int getReadCount() {
299                    return _dlFileEntry.getReadCount();
300            }
301    
302            @Override
303            public long getRepositoryId() {
304                    return _dlFileEntry.getRepositoryId();
305            }
306    
307            @Override
308            public long getSize() {
309                    return _dlFileEntry.getSize();
310            }
311    
312            @Override
313            public StagedModelType getStagedModelType() {
314                    return new StagedModelType(DLFileEntryConstants.getClassName());
315            }
316    
317            @Override
318            public String getTitle() {
319                    return _dlFileEntry.getTitle();
320            }
321    
322            @Override
323            public long getUserId() {
324                    return _dlFileEntry.getUserId();
325            }
326    
327            @Override
328            public String getUserName() {
329                    return _dlFileEntry.getUserName();
330            }
331    
332            @Override
333            public String getUserUuid() throws SystemException {
334                    return _dlFileEntry.getUserUuid();
335            }
336    
337            @Override
338            public String getUuid() {
339                    return _dlFileEntry.getUuid();
340            }
341    
342            @Override
343            public String getVersion() {
344                    return _dlFileEntry.getVersion();
345            }
346    
347            /**
348             * @deprecated As of 6.2.0, replaced by {@link DLFileVersion#getUserId()}
349             */
350            @Override
351            public long getVersionUserId() {
352                    long versionUserId = 0;
353    
354                    try {
355                            DLFileVersion dlFileVersion = _dlFileEntry.getFileVersion();
356    
357                            versionUserId = dlFileVersion.getUserId();
358                    }
359                    catch (Exception e) {
360                            _log.error(e, e);
361                    }
362    
363                    return versionUserId;
364            }
365    
366            /**
367             * @deprecated As of 6.2.0, replaced by {@link DLFileVersion#getUserName()}
368             */
369            @Override
370            public String getVersionUserName() {
371                    String versionUserName = StringPool.BLANK;
372    
373                    try {
374                            DLFileVersion dlFileVersion = _dlFileEntry.getFileVersion();
375    
376                            versionUserName = dlFileVersion.getUserName();
377                    }
378                    catch (Exception e) {
379                            _log.error(e, e);
380                    }
381    
382                    return versionUserName;
383            }
384    
385            /**
386             * @deprecated As of 6.2.0, replaced by {@link DLFileVersion#getUserUuid()}
387             */
388            @Override
389            public String getVersionUserUuid() {
390                    String versionUserUuid = StringPool.BLANK;
391    
392                    try {
393                            DLFileVersion dlFileVersion = _dlFileEntry.getFileVersion();
394    
395                            versionUserUuid = dlFileVersion.getUserUuid();
396                    }
397                    catch (Exception e) {
398                            _log.error(e, e);
399                    }
400    
401                    return versionUserUuid;
402            }
403    
404            @Override
405            public int hashCode() {
406                    return _dlFileEntry.hashCode();
407            }
408    
409            @Override
410            public boolean hasLock() {
411                    return _dlFileEntry.hasLock();
412            }
413    
414            @Override
415            public boolean isCheckedOut() {
416                    return _dlFileEntry.isCheckedOut();
417            }
418    
419            @Override
420            public boolean isDefaultRepository() {
421                    if (_dlFileEntry.getGroupId() == _dlFileEntry.getRepositoryId()) {
422                            return true;
423                    }
424                    else {
425                            return false;
426                    }
427            }
428    
429            @Override
430            public boolean isEscapedModel() {
431                    return _escapedModel;
432            }
433    
434            @Override
435            public boolean isInTrash() {
436                    return _dlFileEntry.isInTrash();
437            }
438    
439            @Override
440            public boolean isInTrashContainer() {
441                    try {
442                            return _dlFileEntry.isInTrashContainer();
443                    }
444                    catch (Exception e) {
445                            return false;
446                    }
447            }
448    
449            @Override
450            public boolean isManualCheckInRequired() {
451                    return _dlFileEntry.isManualCheckInRequired();
452            }
453    
454            @Override
455            public boolean isSupportsLocking() {
456                    return true;
457            }
458    
459            @Override
460            public boolean isSupportsMetadata() {
461                    return true;
462            }
463    
464            @Override
465            public boolean isSupportsSocial() {
466                    return true;
467            }
468    
469            public void setCachedFileVersion(FileVersion fileVersion) {
470                    _dlFileVersion = (DLFileVersion)fileVersion.getModel();
471            }
472    
473            @Override
474            public void setCompanyId(long companyId) {
475                    _dlFileEntry.setCompanyId(companyId);
476            }
477    
478            @Override
479            public void setCreateDate(Date date) {
480                    _dlFileEntry.setCreateDate(date);
481            }
482    
483            @Override
484            public void setGroupId(long groupId) {
485                    _dlFileEntry.setGroupId(groupId);
486            }
487    
488            @Override
489            public void setModifiedDate(Date date) {
490                    _dlFileEntry.setModifiedDate(date);
491            }
492    
493            public void setPrimaryKey(long primaryKey) {
494                    _dlFileEntry.setPrimaryKey(primaryKey);
495            }
496    
497            @Override
498            public void setPrimaryKeyObj(Serializable primaryKeyObj) {
499                    setPrimaryKey(((Long)primaryKeyObj).longValue());
500            }
501    
502            @Override
503            public void setUserId(long userId) {
504                    _dlFileEntry.setUserId(userId);
505            }
506    
507            @Override
508            public void setUserName(String userName) {
509                    _dlFileEntry.setUserName(userName);
510            }
511    
512            @Override
513            public void setUserUuid(String userUuid) {
514                    _dlFileEntry.setUserUuid(userUuid);
515            }
516    
517            @Override
518            public void setUuid(String uuid) {
519                    _dlFileEntry.setUuid(uuid);
520            }
521    
522            @Override
523            public FileEntry toEscapedModel() {
524                    if (isEscapedModel()) {
525                            return this;
526                    }
527                    else {
528                            return new LiferayFileEntry(_dlFileEntry.toEscapedModel(), true);
529                    }
530            }
531    
532            @Override
533            public String toString() {
534                    return _dlFileEntry.toString();
535            }
536    
537            @Override
538            public FileEntry toUnescapedModel() {
539                    if (isEscapedModel()) {
540                            return new LiferayFileEntry(_dlFileEntry.toUnescapedModel(), true);
541                    }
542                    else {
543                            return this;
544                    }
545            }
546    
547            private static Log _log = LogFactoryUtil.getLog(LiferayFileEntry.class);
548    
549            private DLFileEntry _dlFileEntry;
550            private DLFileVersion _dlFileVersion;
551            private boolean _escapedModel;
552    
553    }