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