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