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