001
014
015 package com.liferay.portlet.wiki.model.impl;
016
017 import com.liferay.portal.kernel.dao.orm.QueryUtil;
018 import com.liferay.portal.kernel.exception.PortalException;
019 import com.liferay.portal.kernel.exception.SystemException;
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.Folder;
024 import com.liferay.portal.kernel.util.Validator;
025 import com.liferay.portal.kernel.workflow.WorkflowConstants;
026 import com.liferay.portal.model.Repository;
027 import com.liferay.portal.portletfilerepository.PortletFileRepositoryUtil;
028 import com.liferay.portal.service.ServiceContext;
029 import com.liferay.portal.util.PortletKeys;
030 import com.liferay.portlet.documentlibrary.model.DLFolderConstants;
031 import com.liferay.portlet.wiki.model.WikiNode;
032 import com.liferay.portlet.wiki.model.WikiPage;
033 import com.liferay.portlet.wiki.service.WikiNodeLocalServiceUtil;
034 import com.liferay.portlet.wiki.service.WikiPageLocalServiceUtil;
035 import com.liferay.portlet.wiki.service.WikiPageServiceUtil;
036
037 import java.util.ArrayList;
038 import java.util.Collections;
039 import java.util.List;
040
041
045 public class WikiPageImpl extends WikiPageBaseImpl {
046
047 public WikiPageImpl() {
048 }
049
050 @Override
051 public Folder addAttachmentsFolder()
052 throws PortalException, SystemException {
053
054 if (_attachmentsFolderId !=
055 DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
056
057 return PortletFileRepositoryUtil.getPortletFolder(
058 _attachmentsFolderId);
059 }
060
061 ServiceContext serviceContext = new ServiceContext();
062
063 serviceContext.setAddGroupPermissions(true);
064 serviceContext.setAddGuestPermissions(true);
065
066 Repository repository = PortletFileRepositoryUtil.addPortletRepository(
067 getGroupId(), PortletKeys.WIKI, serviceContext);
068
069 WikiNode node = getNode();
070
071 Folder nodeFolder = node.addAttachmentsFolder();
072
073 Folder folder = PortletFileRepositoryUtil.addPortletFolder(
074 getUserId(), repository.getRepositoryId(), nodeFolder.getFolderId(),
075 String.valueOf(getResourcePrimKey()), serviceContext);
076
077 _attachmentsFolderId = folder.getFolderId();
078
079 return folder;
080 }
081
082 @Override
083 public List<FileEntry> getAttachmentsFileEntries() throws SystemException {
084 return getAttachmentsFileEntries(QueryUtil.ALL_POS, QueryUtil.ALL_POS);
085 }
086
087 @Override
088 public List<FileEntry> getAttachmentsFileEntries(int start, int end)
089 throws SystemException {
090
091 List<FileEntry> fileEntries = new ArrayList<FileEntry>();
092
093 long attachmentsFolderId = getAttachmentsFolderId();
094
095 if (attachmentsFolderId != DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
096 fileEntries = PortletFileRepositoryUtil.getPortletFileEntries(
097 getGroupId(), attachmentsFolderId,
098 WorkflowConstants.STATUS_APPROVED, start, end, null);
099 }
100
101 return fileEntries;
102 }
103
104 @Override
105 public int getAttachmentsFileEntriesCount() throws SystemException {
106 int attachmentsFileEntriesCount = 0;
107
108 long attachmentsFolderId = getAttachmentsFolderId();
109
110 if (attachmentsFolderId != DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
111 attachmentsFileEntriesCount =
112 PortletFileRepositoryUtil.getPortletFileEntriesCount(
113 getGroupId(), attachmentsFolderId,
114 WorkflowConstants.STATUS_APPROVED);
115 }
116
117 return attachmentsFileEntriesCount;
118 }
119
120 @Override
121 public long getAttachmentsFolderId() throws SystemException {
122 if (_attachmentsFolderId !=
123 DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
124
125 return _attachmentsFolderId;
126 }
127
128 ServiceContext serviceContext = new ServiceContext();
129
130 serviceContext.setAddGroupPermissions(true);
131 serviceContext.setAddGuestPermissions(true);
132
133 Repository repository =
134 PortletFileRepositoryUtil.fetchPortletRepository(
135 getGroupId(), PortletKeys.WIKI);
136
137 long nodeAttachmentsFolderId = getNodeAttachmentsFolderId();
138
139 if ((repository == null) ||
140 (nodeAttachmentsFolderId ==
141 DLFolderConstants.DEFAULT_PARENT_FOLDER_ID)) {
142
143 return DLFolderConstants.DEFAULT_PARENT_FOLDER_ID;
144 }
145
146 try {
147 Folder folder = PortletFileRepositoryUtil.getPortletFolder(
148 getUserId(), repository.getRepositoryId(),
149 nodeAttachmentsFolderId, String.valueOf(getResourcePrimKey()),
150 serviceContext);
151
152 _attachmentsFolderId = folder.getFolderId();
153 }
154 catch (Exception e) {
155 }
156
157 return _attachmentsFolderId;
158 }
159
160 @Override
161 public List<WikiPage> getChildPages() {
162 try {
163 return WikiPageLocalServiceUtil.getChildren(
164 getNodeId(), true, getTitle());
165 }
166 catch (Exception e) {
167 _log.error(e, e);
168
169 return Collections.emptyList();
170 }
171 }
172
173 @Override
174 public List<FileEntry> getDeletedAttachmentsFileEntries()
175 throws SystemException {
176
177 return getDeletedAttachmentsFileEntries(
178 QueryUtil.ALL_POS, QueryUtil.ALL_POS);
179 }
180
181 @Override
182 public List<FileEntry> getDeletedAttachmentsFileEntries(int start, int end)
183 throws SystemException {
184
185 List<FileEntry> fileEntries = new ArrayList<FileEntry>();
186
187 long attachmentsFolderId = getAttachmentsFolderId();
188
189 if (attachmentsFolderId != 0) {
190 fileEntries = PortletFileRepositoryUtil.getPortletFileEntries(
191 getGroupId(), attachmentsFolderId,
192 WorkflowConstants.STATUS_IN_TRASH, start, end, null);
193 }
194
195 return fileEntries;
196 }
197
198 @Override
199 public int getDeletedAttachmentsFileEntriesCount() throws SystemException {
200 int deletedAttachmentsFileEntriesCount = 0;
201
202 long attachmentsFolderId = getAttachmentsFolderId();
203
204 if (attachmentsFolderId != DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
205 return PortletFileRepositoryUtil.getPortletFileEntriesCount(
206 getGroupId(), attachmentsFolderId,
207 WorkflowConstants.STATUS_IN_TRASH);
208 }
209
210 return deletedAttachmentsFileEntriesCount;
211 }
212
213 @Override
214 public WikiNode getNode() {
215 try {
216 return WikiNodeLocalServiceUtil.getNode(getNodeId());
217 }
218 catch (Exception e) {
219 _log.error(e, e);
220
221 return new WikiNodeImpl();
222 }
223 }
224
225 @Override
226 public long getNodeAttachmentsFolderId() throws SystemException {
227 WikiNode node = getNode();
228
229 return node.getAttachmentsFolderId();
230 }
231
232 @Override
233 public WikiPage getParentPage() {
234 if (Validator.isNull(getParentTitle())) {
235 return null;
236 }
237
238 try {
239 return WikiPageLocalServiceUtil.getPage(
240 getNodeId(), getParentTitle());
241 }
242 catch (Exception e) {
243 _log.error(e, e);
244
245 return null;
246 }
247 }
248
249 @Override
250 public List<WikiPage> getParentPages() {
251 List<WikiPage> parentPages = new ArrayList<WikiPage>();
252
253 WikiPage parentPage = getParentPage();
254
255 if (parentPage != null) {
256 parentPages.addAll(parentPage.getParentPages());
257 parentPages.add(parentPage);
258 }
259
260 return parentPages;
261 }
262
263 @Override
264 public WikiPage getRedirectPage() {
265 if (Validator.isNull(getRedirectTitle())) {
266 return null;
267 }
268
269 try {
270 return WikiPageLocalServiceUtil.getPage(
271 getNodeId(), getRedirectTitle());
272 }
273 catch (Exception e) {
274 _log.error(e, e);
275
276 return null;
277 }
278 }
279
280 @Override
281 public long getTrashEntryClassPK() {
282 return getResourcePrimKey();
283 }
284
285 @Override
286 public List<WikiPage> getViewableChildPages() {
287 try {
288 return WikiPageServiceUtil.getChildren(
289 getGroupId(), getNodeId(), true, getTitle());
290 }
291 catch (Exception e) {
292 _log.error(e, e);
293
294 return Collections.emptyList();
295 }
296 }
297
298 @Override
299 public WikiPage getViewableParentPage() {
300 if (Validator.isNull(getParentTitle())) {
301 return null;
302 }
303
304 try {
305 return WikiPageServiceUtil.getPage(
306 getGroupId(), getNodeId(), getParentTitle());
307 }
308 catch (Exception e) {
309 _log.error(e, e);
310
311 return null;
312 }
313 }
314
315 @Override
316 public List<WikiPage> getViewableParentPages() {
317 List<WikiPage> pages = new ArrayList<WikiPage>();
318
319 WikiPage page = getViewableParentPage();
320
321 if (page != null) {
322 pages.addAll(page.getViewableParentPages());
323 pages.add(page);
324 }
325
326 return pages;
327 }
328
329 @Override
330 public boolean isResourceMain() {
331 return isHead();
332 }
333
334 @Override
335 public void setAttachmentsFolderId(long attachmentsFolderId) {
336 _attachmentsFolderId = attachmentsFolderId;
337 }
338
339 private static Log _log = LogFactoryUtil.getLog(WikiPageImpl.class);
340
341 private long _attachmentsFolderId;
342
343 }