001
014
015 package com.liferay.portal.repository.cmis.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.util.FileUtil;
025 import com.liferay.portal.kernel.util.GetterUtil;
026 import com.liferay.portal.kernel.util.MimeTypesUtil;
027 import com.liferay.portal.kernel.util.StringPool;
028 import com.liferay.portal.kernel.util.Validator;
029 import com.liferay.portal.model.User;
030 import com.liferay.portal.repository.cmis.CMISRepository;
031 import com.liferay.portal.security.auth.PrincipalThreadLocal;
032 import com.liferay.portal.service.CMISRepositoryLocalServiceUtil;
033 import com.liferay.portal.service.UserLocalServiceUtil;
034 import com.liferay.portlet.documentlibrary.NoSuchFileEntryException;
035 import com.liferay.portlet.documentlibrary.service.DLAppHelperLocalServiceUtil;
036 import com.liferay.portlet.documentlibrary.util.DLUtil;
037 import com.liferay.portlet.expando.model.ExpandoBridge;
038
039 import java.io.InputStream;
040 import java.io.Serializable;
041
042 import java.util.Calendar;
043 import java.util.Date;
044 import java.util.HashMap;
045 import java.util.List;
046 import java.util.Map;
047
048 import org.apache.chemistry.opencmis.client.api.Document;
049 import org.apache.chemistry.opencmis.commons.data.ContentStream;
050 import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
051
052
055 public class CMISFileVersion extends CMISModel implements FileVersion {
056
057 public CMISFileVersion(
058 CMISRepository cmisRepository, String uuid, long fileVersionId,
059 Document document) {
060
061 _cmisRepository = cmisRepository;
062 _uuid = uuid;
063 _fileVersionId = fileVersionId;
064 _document = document;
065 }
066
067 @Override
068 public Object clone() {
069 CMISFileVersion cmisFileVersion = new CMISFileVersion(
070 _cmisRepository, _uuid, _fileVersionId, _document);
071
072 cmisFileVersion.setCompanyId(getCompanyId());
073 cmisFileVersion.setFileVersionId(getFileVersionId());
074 cmisFileVersion.setGroupId(getGroupId());
075
076 try {
077 cmisFileVersion.setParentFolder(getParentFolder());
078 }
079 catch (Exception e) {
080 }
081
082 cmisFileVersion.setPrimaryKey(getPrimaryKey());
083
084 return cmisFileVersion;
085 }
086
087 @Override
088 public Map<String, Serializable> getAttributes() {
089 return new HashMap<String, Serializable>();
090 }
091
092 @Override
093 public String getChangeLog() {
094 return _document.getCheckinComment();
095 }
096
097 @Override
098 public long getCompanyId() {
099 return _cmisRepository.getCompanyId();
100 }
101
102 @Override
103 public InputStream getContentStream(boolean incrementCounter) {
104 ContentStream contentStream = _document.getContentStream();
105
106 try {
107 DLAppHelperLocalServiceUtil.getFileAsStream(
108 PrincipalThreadLocal.getUserId(), getFileEntry(),
109 incrementCounter);
110 }
111 catch (Exception e) {
112 _log.error(e);
113 }
114
115 return contentStream.getStream();
116 }
117
118 @Override
119 public Date getCreateDate() {
120 Calendar creationDate = _document.getCreationDate();
121
122 return creationDate.getTime();
123 }
124
125 @Override
126 public ExpandoBridge getExpandoBridge() {
127 return null;
128 }
129
130 @Override
131 public String getExtension() {
132 return FileUtil.getExtension(getTitle());
133 }
134
135 @Override
136 public String getExtraSettings() {
137 return null;
138 }
139
140 @Override
141 public FileEntry getFileEntry() throws PortalException, SystemException {
142 Document document = null;
143
144 try {
145 List<Document> allVersions = _document.getAllVersions();
146
147 if (allVersions.isEmpty()) {
148 document = _document;
149 }
150 else {
151 document = allVersions.get(0);
152 }
153 }
154 catch (CmisObjectNotFoundException confe) {
155 throw new NoSuchFileEntryException(confe);
156 }
157
158 return CMISRepositoryLocalServiceUtil.toFileEntry(
159 getRepositoryId(), document);
160 }
161
162 @Override
163 public long getFileEntryId() {
164 try {
165 return getFileEntry().getFileEntryId();
166 }
167 catch (NoSuchFileEntryException nsfee) {
168 }
169 catch (Exception e) {
170 _log.error(e, e);
171 }
172
173 return 0;
174 }
175
176 @Override
177 public long getFileVersionId() {
178 return _fileVersionId;
179 }
180
181 @Override
182 public long getGroupId() {
183 return _cmisRepository.getGroupId();
184 }
185
186 @Override
187 public String getIcon() {
188 return DLUtil.getFileIcon(getExtension());
189 }
190
191 @Override
192 public String getMimeType() {
193 String mimeType = _document.getContentStreamMimeType();
194
195 if (Validator.isNotNull(mimeType)) {
196 return mimeType;
197 }
198
199 return MimeTypesUtil.getContentType(getTitle());
200 }
201
202 @Override
203 public Object getModel() {
204 return _document;
205 }
206
207 @Override
208 public Class<?> getModelClass() {
209 return CMISFileVersion.class;
210 }
211
212 @Override
213 public String getModelClassName() {
214 return CMISFileVersion.class.getName();
215 }
216
217 @Override
218 public Date getModifiedDate() {
219 Calendar modificationDate = _document.getLastModificationDate();
220
221 return modificationDate.getTime();
222 }
223
224 @Override
225 public long getPrimaryKey() {
226 return _fileVersionId;
227 }
228
229 @Override
230 public Serializable getPrimaryKeyObj() {
231 return getPrimaryKey();
232 }
233
234 @Override
235 public long getRepositoryId() {
236 return _cmisRepository.getRepositoryId();
237 }
238
239 @Override
240 public long getSize() {
241 return _document.getContentStreamLength();
242 }
243
244 @Override
245 public StagedModelType getStagedModelType() {
246 return new StagedModelType(FileVersion.class);
247 }
248
249 @Override
250 public int getStatus() {
251 return 0;
252 }
253
254 @Override
255 public long getStatusByUserId() {
256 return 0;
257 }
258
259 @Override
260 public String getStatusByUserName() {
261 return null;
262 }
263
264 @Override
265 public String getStatusByUserUuid() {
266 return null;
267 }
268
269 @Override
270 public Date getStatusDate() {
271 return getModifiedDate();
272 }
273
274 @Override
275 public String getTitle() {
276 return _document.getName();
277 }
278
279 @Override
280 public long getUserId() {
281 try {
282 return UserLocalServiceUtil.getDefaultUserId(getCompanyId());
283 }
284 catch (Exception e) {
285 return 0;
286 }
287 }
288
289 @Override
290 public String getUserName() {
291 return _document.getCreatedBy();
292 }
293
294 @Override
295 public String getUserUuid() {
296 try {
297 User user = UserLocalServiceUtil.getDefaultUser(getCompanyId());
298
299 return user.getUserUuid();
300 }
301 catch (Exception e) {
302 return StringPool.BLANK;
303 }
304 }
305
306 @Override
307 public String getUuid() {
308 return _uuid;
309 }
310
311 @Override
312 public String getVersion() {
313 return GetterUtil.getString(_document.getVersionLabel());
314 }
315
316 @Override
317 public boolean isApproved() {
318 return false;
319 }
320
321 @Override
322 public boolean isDefaultRepository() {
323 return false;
324 }
325
326 @Override
327 public boolean isDraft() {
328 return false;
329 }
330
331 @Override
332 public boolean isEscapedModel() {
333 return false;
334 }
335
336 @Override
337 public boolean isExpired() {
338 return false;
339 }
340
341 @Override
342 public boolean isPending() {
343 return false;
344 }
345
346 @Override
347 public void setCompanyId(long companyId) {
348 _cmisRepository.setCompanyId(companyId);
349 }
350
351 @Override
352 public void setCreateDate(Date date) {
353 }
354
355 public void setFileVersionId(long fileVersionId) {
356 _fileVersionId = fileVersionId;
357 }
358
359 @Override
360 public void setGroupId(long groupId) {
361 _cmisRepository.setGroupId(groupId);
362 }
363
364 @Override
365 public void setModifiedDate(Date date) {
366 }
367
368 public void setPrimaryKey(long primaryKey) {
369 setFileVersionId(primaryKey);
370 }
371
372 @Override
373 public void setPrimaryKeyObj(Serializable primaryKeyObj) {
374 setPrimaryKey(((Long)primaryKeyObj).longValue());
375 }
376
377 @Override
378 public void setUserId(long userId) {
379 }
380
381 @Override
382 public void setUserName(String userName) {
383 }
384
385 @Override
386 public void setUserUuid(String userUuid) {
387 }
388
389 @Override
390 public void setUuid(String uuid) {
391 }
392
393 @Override
394 public FileVersion toEscapedModel() {
395 return this;
396 }
397
398 @Override
399 public FileVersion toUnescapedModel() {
400 return this;
401 }
402
403 @Override
404 protected CMISRepository getCmisRepository() {
405 return _cmisRepository;
406 }
407
408 private static Log _log = LogFactoryUtil.getLog(CMISFileVersion.class);
409
410 private CMISRepository _cmisRepository;
411 private Document _document;
412 private long _fileVersionId;
413 private String _uuid;
414
415 }