PageRenderTime 49ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/modules/apps/collaboration/document-library/document-library-repository-cmis-impl/src/main/java/com/liferay/document/library/repository/cmis/internal/model/CMISFileVersion.java

http://github.com/liferay/liferay-portal
Java | 438 lines | 336 code | 86 blank | 16 comment | 4 complexity | 22b781d281dc2d871da4338297e55e98 MD5 | raw file
Possible License(s): LGPL-2.0
  1. /**
  2. * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
  3. *
  4. * This library is free software; you can redistribute it and/or modify it under
  5. * the terms of the GNU Lesser General Public License as published by the Free
  6. * Software Foundation; either version 2.1 of the License, or (at your option)
  7. * any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful, but WITHOUT
  10. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  11. * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
  12. * details.
  13. */
  14. package com.liferay.document.library.repository.cmis.internal.model;
  15. import com.liferay.document.library.kernel.exception.NoSuchFileEntryException;
  16. import com.liferay.document.library.kernel.service.DLAppHelperLocalServiceUtil;
  17. import com.liferay.document.library.kernel.util.DLUtil;
  18. import com.liferay.document.library.repository.cmis.internal.CMISRepository;
  19. import com.liferay.expando.kernel.model.ExpandoBridge;
  20. import com.liferay.exportimport.kernel.lar.StagedModelType;
  21. import com.liferay.portal.kernel.exception.PortalException;
  22. import com.liferay.portal.kernel.log.Log;
  23. import com.liferay.portal.kernel.log.LogFactoryUtil;
  24. import com.liferay.portal.kernel.model.User;
  25. import com.liferay.portal.kernel.repository.model.FileEntry;
  26. import com.liferay.portal.kernel.repository.model.FileVersion;
  27. import com.liferay.portal.kernel.repository.model.RepositoryModelOperation;
  28. import com.liferay.portal.kernel.security.auth.PrincipalThreadLocal;
  29. import com.liferay.portal.kernel.service.UserLocalServiceUtil;
  30. import com.liferay.portal.kernel.util.FileUtil;
  31. import com.liferay.portal.kernel.util.GetterUtil;
  32. import com.liferay.portal.kernel.util.MimeTypesUtil;
  33. import com.liferay.portal.kernel.util.StringPool;
  34. import com.liferay.portal.kernel.util.Validator;
  35. import java.io.InputStream;
  36. import java.io.Serializable;
  37. import java.util.Calendar;
  38. import java.util.Date;
  39. import java.util.HashMap;
  40. import java.util.List;
  41. import java.util.Map;
  42. import org.apache.chemistry.opencmis.client.api.Document;
  43. import org.apache.chemistry.opencmis.commons.data.ContentStream;
  44. import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
  45. /**
  46. * @author Alexander Chow
  47. */
  48. public class CMISFileVersion extends CMISModel implements FileVersion {
  49. public CMISFileVersion(
  50. CMISRepository cmisRepository, String uuid, long fileVersionId,
  51. Document document) {
  52. _cmisRepository = cmisRepository;
  53. _uuid = uuid;
  54. _fileVersionId = fileVersionId;
  55. _document = document;
  56. }
  57. @Override
  58. public Object clone() {
  59. CMISFileVersion cmisFileVersion = new CMISFileVersion(
  60. _cmisRepository, _uuid, _fileVersionId, _document);
  61. cmisFileVersion.setCompanyId(getCompanyId());
  62. cmisFileVersion.setFileVersionId(getFileVersionId());
  63. cmisFileVersion.setGroupId(getGroupId());
  64. try {
  65. cmisFileVersion.setParentFolder(getParentFolder());
  66. }
  67. catch (Exception e) {
  68. }
  69. cmisFileVersion.setPrimaryKey(getPrimaryKey());
  70. return cmisFileVersion;
  71. }
  72. @Override
  73. public void execute(RepositoryModelOperation repositoryModelOperation)
  74. throws PortalException {
  75. repositoryModelOperation.execute(this);
  76. }
  77. @Override
  78. public Map<String, Serializable> getAttributes() {
  79. return new HashMap<>();
  80. }
  81. @Override
  82. public String getChangeLog() {
  83. return _document.getCheckinComment();
  84. }
  85. @Override
  86. public long getCompanyId() {
  87. return _cmisRepository.getCompanyId();
  88. }
  89. @Override
  90. public InputStream getContentStream(boolean incrementCounter) {
  91. ContentStream contentStream = _document.getContentStream();
  92. try {
  93. DLAppHelperLocalServiceUtil.getFileAsStream(
  94. PrincipalThreadLocal.getUserId(), getFileEntry(),
  95. incrementCounter);
  96. }
  97. catch (Exception e) {
  98. _log.error(e);
  99. }
  100. return contentStream.getStream();
  101. }
  102. @Override
  103. public Date getCreateDate() {
  104. Calendar creationDate = _document.getCreationDate();
  105. return creationDate.getTime();
  106. }
  107. @Override
  108. public ExpandoBridge getExpandoBridge() {
  109. return null;
  110. }
  111. @Override
  112. public String getExtension() {
  113. return FileUtil.getExtension(getTitle());
  114. }
  115. @Override
  116. public String getExtraSettings() {
  117. return null;
  118. }
  119. @Override
  120. public FileEntry getFileEntry() throws PortalException {
  121. Document document = null;
  122. try {
  123. List<Document> allVersions = _document.getAllVersions();
  124. if (allVersions.isEmpty()) {
  125. document = _document;
  126. }
  127. else {
  128. document = allVersions.get(0);
  129. }
  130. }
  131. catch (CmisObjectNotFoundException confe) {
  132. throw new NoSuchFileEntryException(confe);
  133. }
  134. return _cmisRepository.toFileEntry(document);
  135. }
  136. @Override
  137. public long getFileEntryId() {
  138. try {
  139. return getFileEntry().getFileEntryId();
  140. }
  141. catch (NoSuchFileEntryException nsfee) {
  142. if (_log.isDebugEnabled()) {
  143. _log.debug(nsfee, nsfee);
  144. }
  145. }
  146. catch (Exception e) {
  147. _log.error(e, e);
  148. }
  149. return 0;
  150. }
  151. @Override
  152. public String getFileName() {
  153. return DLUtil.getSanitizedFileName(getTitle(), getExtension());
  154. }
  155. @Override
  156. public long getFileVersionId() {
  157. return _fileVersionId;
  158. }
  159. @Override
  160. public long getGroupId() {
  161. return _cmisRepository.getGroupId();
  162. }
  163. @Override
  164. public String getIcon() {
  165. return DLUtil.getFileIcon(getExtension());
  166. }
  167. @Override
  168. public Date getLastPublishDate() {
  169. return null;
  170. }
  171. @Override
  172. public String getMimeType() {
  173. String mimeType = _document.getContentStreamMimeType();
  174. if (Validator.isNotNull(mimeType)) {
  175. return mimeType;
  176. }
  177. return MimeTypesUtil.getContentType(getTitle());
  178. }
  179. @Override
  180. public Object getModel() {
  181. return _document;
  182. }
  183. @Override
  184. public Class<?> getModelClass() {
  185. return CMISFileVersion.class;
  186. }
  187. @Override
  188. public String getModelClassName() {
  189. return CMISFileVersion.class.getName();
  190. }
  191. @Override
  192. public Date getModifiedDate() {
  193. Calendar modificationDate = _document.getLastModificationDate();
  194. return modificationDate.getTime();
  195. }
  196. @Override
  197. public long getPrimaryKey() {
  198. return _fileVersionId;
  199. }
  200. @Override
  201. public Serializable getPrimaryKeyObj() {
  202. return getPrimaryKey();
  203. }
  204. @Override
  205. public long getRepositoryId() {
  206. return _cmisRepository.getRepositoryId();
  207. }
  208. @Override
  209. public long getSize() {
  210. return _document.getContentStreamLength();
  211. }
  212. @Override
  213. public StagedModelType getStagedModelType() {
  214. return new StagedModelType(FileVersion.class);
  215. }
  216. @Override
  217. public int getStatus() {
  218. return 0;
  219. }
  220. @Override
  221. public long getStatusByUserId() {
  222. return 0;
  223. }
  224. @Override
  225. public String getStatusByUserName() {
  226. return null;
  227. }
  228. @Override
  229. public String getStatusByUserUuid() {
  230. return null;
  231. }
  232. @Override
  233. public Date getStatusDate() {
  234. return getModifiedDate();
  235. }
  236. @Override
  237. public String getTitle() {
  238. return _document.getName();
  239. }
  240. @Override
  241. public long getUserId() {
  242. try {
  243. return UserLocalServiceUtil.getDefaultUserId(getCompanyId());
  244. }
  245. catch (Exception e) {
  246. return 0;
  247. }
  248. }
  249. @Override
  250. public String getUserName() {
  251. return _document.getCreatedBy();
  252. }
  253. @Override
  254. public String getUserUuid() {
  255. try {
  256. User user = UserLocalServiceUtil.getDefaultUser(getCompanyId());
  257. return user.getUserUuid();
  258. }
  259. catch (Exception e) {
  260. return StringPool.BLANK;
  261. }
  262. }
  263. @Override
  264. public String getUuid() {
  265. return _uuid;
  266. }
  267. @Override
  268. public String getVersion() {
  269. return GetterUtil.getString(_document.getVersionLabel());
  270. }
  271. @Override
  272. public boolean isApproved() {
  273. return false;
  274. }
  275. @Override
  276. public boolean isDefaultRepository() {
  277. return false;
  278. }
  279. @Override
  280. public boolean isDraft() {
  281. return false;
  282. }
  283. @Override
  284. public boolean isEscapedModel() {
  285. return false;
  286. }
  287. @Override
  288. public boolean isExpired() {
  289. return false;
  290. }
  291. @Override
  292. public boolean isPending() {
  293. return false;
  294. }
  295. @Override
  296. public void setCompanyId(long companyId) {
  297. _cmisRepository.setCompanyId(companyId);
  298. }
  299. @Override
  300. public void setCreateDate(Date createDate) {
  301. }
  302. public void setFileVersionId(long fileVersionId) {
  303. _fileVersionId = fileVersionId;
  304. }
  305. @Override
  306. public void setGroupId(long groupId) {
  307. _cmisRepository.setGroupId(groupId);
  308. }
  309. @Override
  310. public void setLastPublishDate(Date lastPublishDate) {
  311. }
  312. @Override
  313. public void setModifiedDate(Date modifiedDate) {
  314. }
  315. public void setPrimaryKey(long primaryKey) {
  316. setFileVersionId(primaryKey);
  317. }
  318. @Override
  319. public void setPrimaryKeyObj(Serializable primaryKeyObj) {
  320. setPrimaryKey(((Long)primaryKeyObj).longValue());
  321. }
  322. @Override
  323. public void setUserId(long userId) {
  324. }
  325. @Override
  326. public void setUserName(String userName) {
  327. }
  328. @Override
  329. public void setUserUuid(String userUuid) {
  330. }
  331. @Override
  332. public void setUuid(String uuid) {
  333. }
  334. @Override
  335. public FileVersion toEscapedModel() {
  336. return this;
  337. }
  338. @Override
  339. public FileVersion toUnescapedModel() {
  340. return this;
  341. }
  342. @Override
  343. protected CMISRepository getCmisRepository() {
  344. return _cmisRepository;
  345. }
  346. private static final Log _log = LogFactoryUtil.getLog(
  347. CMISFileVersion.class);
  348. private final CMISRepository _cmisRepository;
  349. private final Document _document;
  350. private long _fileVersionId;
  351. private final String _uuid;
  352. }