001
014
015 package com.liferay.portlet.journal.service.impl;
016
017 import com.liferay.portal.kernel.dao.orm.QueryDefinition;
018 import com.liferay.portal.kernel.exception.PortalException;
019 import com.liferay.portal.kernel.util.OrderByComparator;
020 import com.liferay.portal.kernel.workflow.WorkflowConstants;
021 import com.liferay.portal.security.permission.ActionKeys;
022 import com.liferay.portal.service.ServiceContext;
023 import com.liferay.portal.util.PropsValues;
024 import com.liferay.portlet.journal.model.JournalArticle;
025 import com.liferay.portlet.journal.model.JournalFolder;
026 import com.liferay.portlet.journal.service.base.JournalFolderServiceBaseImpl;
027 import com.liferay.portlet.journal.service.permission.JournalFolderPermission;
028
029 import java.util.ArrayList;
030 import java.util.List;
031
032
035 public class JournalFolderServiceImpl extends JournalFolderServiceBaseImpl {
036
037 @Override
038 public JournalFolder addFolder(
039 long groupId, long parentFolderId, String name, String description,
040 ServiceContext serviceContext)
041 throws PortalException {
042
043 JournalFolderPermission.check(
044 getPermissionChecker(), serviceContext.getScopeGroupId(),
045 parentFolderId, ActionKeys.ADD_FOLDER);
046
047 return journalFolderLocalService.addFolder(
048 getUserId(), groupId, parentFolderId, name, description,
049 serviceContext);
050 }
051
052 @Override
053 public void deleteFolder(long folderId) throws PortalException {
054 JournalFolder folder = journalFolderLocalService.getFolder(folderId);
055
056 JournalFolderPermission.check(
057 getPermissionChecker(), folder, ActionKeys.DELETE);
058
059 journalFolderLocalService.deleteFolder(folderId);
060 }
061
062 @Override
063 public void deleteFolder(long folderId, boolean includeTrashedEntries)
064 throws PortalException {
065
066 JournalFolder folder = journalFolderLocalService.getFolder(folderId);
067
068 JournalFolderPermission.check(
069 getPermissionChecker(), folder, ActionKeys.DELETE);
070
071 journalFolderLocalService.deleteFolder(folderId, includeTrashedEntries);
072 }
073
074 @Override
075 public JournalFolder fetchFolder(long folderId) throws PortalException {
076 JournalFolder folder = journalFolderLocalService.fetchFolder(folderId);
077
078 if (folder != null) {
079 JournalFolderPermission.check(
080 getPermissionChecker(), folder, ActionKeys.VIEW);
081 }
082
083 return folder;
084 }
085
086 @Override
087 public JournalFolder getFolder(long folderId) throws PortalException {
088 JournalFolder folder = journalFolderLocalService.getFolder(folderId);
089
090 JournalFolderPermission.check(
091 getPermissionChecker(), folder, ActionKeys.VIEW);
092
093 return folder;
094 }
095
096 @Override
097 public List<Long> getFolderIds(long groupId, long folderId)
098 throws PortalException {
099
100 JournalFolderPermission.check(
101 getPermissionChecker(), groupId, folderId, ActionKeys.VIEW);
102
103 List<Long> folderIds = getSubfolderIds(groupId, folderId, true);
104
105 folderIds.add(0, folderId);
106
107 return folderIds;
108 }
109
110 @Override
111 public List<JournalFolder> getFolders(long groupId) {
112 return journalFolderPersistence.filterFindByGroupId(groupId);
113 }
114
115 @Override
116 public List<JournalFolder> getFolders(long groupId, long parentFolderId) {
117 return getFolders(
118 groupId, parentFolderId, WorkflowConstants.STATUS_APPROVED);
119 }
120
121 @Override
122 public List<JournalFolder> getFolders(
123 long groupId, long parentFolderId, int status) {
124
125 return journalFolderPersistence.filterFindByG_P_S(
126 groupId, parentFolderId, status);
127 }
128
129 @Override
130 public List<JournalFolder> getFolders(
131 long groupId, long parentFolderId, int start, int end) {
132
133 return getFolders(
134 groupId, parentFolderId, WorkflowConstants.STATUS_APPROVED, start,
135 end);
136 }
137
138 @Override
139 public List<JournalFolder> getFolders(
140 long groupId, long parentFolderId, int status, int start, int end) {
141
142 return journalFolderPersistence.filterFindByG_P_S(
143 groupId, parentFolderId, status, start, end);
144 }
145
146 @Override
147 public List<Object> getFoldersAndArticles(
148 long groupId, long folderId, int status, int start, int end,
149 OrderByComparator<?> obc) {
150
151 QueryDefinition<?> queryDefinition = new QueryDefinition<Object>(
152 status, start, end, (OrderByComparator<Object>)obc);
153
154 return journalFolderFinder.filterFindF_A_ByG_F(
155 groupId, folderId, queryDefinition);
156 }
157
158 @Override
159 public List<Object> getFoldersAndArticles(
160 long groupId, long folderId, int start, int end,
161 OrderByComparator<?> obc) {
162
163 return getFoldersAndArticles(
164 groupId, folderId, WorkflowConstants.STATUS_ANY, start, end, obc);
165 }
166
167 @Override
168 public int getFoldersAndArticlesCount(
169 long groupId, List<Long> folderIds, int status) {
170
171 QueryDefinition<JournalArticle> queryDefinition =
172 new QueryDefinition<JournalArticle>(status);
173
174 if (folderIds.size() <= PropsValues.SQL_DATA_MAX_PARAMETERS) {
175 return journalArticleFinder.filterCountByG_F(
176 groupId, folderIds, queryDefinition);
177 }
178 else {
179 int start = 0;
180 int end = PropsValues.SQL_DATA_MAX_PARAMETERS;
181
182 int articlesCount = journalArticleFinder.filterCountByG_F(
183 groupId, folderIds.subList(start, end), queryDefinition);
184
185 folderIds.subList(start, end).clear();
186
187 articlesCount += getFoldersAndArticlesCount(
188 groupId, folderIds, status);
189
190 return articlesCount;
191 }
192 }
193
194 @Override
195 public int getFoldersAndArticlesCount(long groupId, long folderId) {
196 return getFoldersAndArticlesCount(
197 groupId, folderId, WorkflowConstants.STATUS_ANY);
198 }
199
200 @Override
201 public int getFoldersAndArticlesCount(
202 long groupId, long folderId, int status) {
203
204 return journalFolderFinder.filterCountF_A_ByG_F(
205 groupId, folderId, new QueryDefinition<Object>(status));
206 }
207
208 @Override
209 public int getFoldersCount(long groupId, long parentFolderId) {
210 return getFoldersCount(
211 groupId, parentFolderId, WorkflowConstants.STATUS_APPROVED);
212 }
213
214 @Override
215 public int getFoldersCount(long groupId, long parentFolderId, int status) {
216 if (status == WorkflowConstants.STATUS_ANY) {
217 return journalFolderPersistence.filterCountByG_P_NotS(
218 groupId, parentFolderId, WorkflowConstants.STATUS_IN_TRASH);
219 }
220 else {
221 return journalFolderPersistence.filterCountByG_P_S(
222 groupId, parentFolderId, status);
223 }
224 }
225
226
230 @Deprecated
231 @Override
232 public void getSubfolderIds(
233 List<Long> folderIds, long groupId, long folderId) {
234
235 getSubfolderIds(folderIds, groupId, folderId, true);
236 }
237
238 @Override
239 public void getSubfolderIds(
240 List<Long> folderIds, long groupId, long folderId, boolean recurse) {
241
242 List<JournalFolder> folders =
243 journalFolderPersistence.filterFindByG_P_NotS(
244 groupId, folderId, WorkflowConstants.STATUS_IN_TRASH);
245
246 for (JournalFolder folder : folders) {
247 folderIds.add(folder.getFolderId());
248
249 if (recurse) {
250 getSubfolderIds(
251 folderIds, folder.getGroupId(), folder.getFolderId(),
252 recurse);
253 }
254 }
255 }
256
257 @Override
258 public List<Long> getSubfolderIds(
259 long groupId, long folderId, boolean recurse) {
260
261 List<Long> folderIds = new ArrayList<Long>();
262
263 getSubfolderIds(folderIds, groupId, folderId, recurse);
264
265 return folderIds;
266 }
267
268 @Override
269 public JournalFolder moveFolder(
270 long folderId, long parentFolderId, ServiceContext serviceContext)
271 throws PortalException {
272
273 JournalFolder folder = journalFolderLocalService.getFolder(folderId);
274
275 JournalFolderPermission.check(
276 getPermissionChecker(), folder, ActionKeys.UPDATE);
277
278 return journalFolderLocalService.moveFolder(
279 folderId, parentFolderId, serviceContext);
280 }
281
282 @Override
283 public JournalFolder moveFolderFromTrash(
284 long folderId, long parentFolderId, ServiceContext serviceContext)
285 throws PortalException {
286
287 JournalFolder folder = journalFolderLocalService.getFolder(folderId);
288
289 JournalFolderPermission.check(
290 getPermissionChecker(), folder, ActionKeys.UPDATE);
291
292 return journalFolderLocalService.moveFolderFromTrash(
293 getUserId(), folderId, parentFolderId, serviceContext);
294 }
295
296 @Override
297 public JournalFolder moveFolderToTrash(long folderId)
298 throws PortalException {
299
300 JournalFolder folder = journalFolderLocalService.getFolder(folderId);
301
302 JournalFolderPermission.check(
303 getPermissionChecker(), folder, ActionKeys.DELETE);
304
305 return journalFolderLocalService.moveFolderToTrash(
306 getUserId(), folderId);
307 }
308
309 @Override
310 public void restoreFolderFromTrash(long folderId) throws PortalException {
311 JournalFolder folder = journalFolderLocalService.getFolder(folderId);
312
313 JournalFolderPermission.check(
314 getPermissionChecker(), folder, ActionKeys.UPDATE);
315
316 journalFolderLocalService.restoreFolderFromTrash(getUserId(), folderId);
317 }
318
319 @Override
320 public void subscribe(long groupId, long folderId) throws PortalException {
321 JournalFolderPermission.check(
322 getPermissionChecker(), groupId, folderId, ActionKeys.SUBSCRIBE);
323
324 journalFolderLocalService.subscribe(getUserId(), groupId, folderId);
325 }
326
327 @Override
328 public void unsubscribe(long groupId, long folderId)
329 throws PortalException {
330
331 JournalFolderPermission.check(
332 getPermissionChecker(), groupId, folderId, ActionKeys.SUBSCRIBE);
333
334 journalFolderLocalService.unsubscribe(getUserId(), groupId, folderId);
335 }
336
337 @Override
338 public JournalFolder updateFolder(
339 long folderId, long parentFolderId, String name, String description,
340 boolean mergeWithParentFolder, ServiceContext serviceContext)
341 throws PortalException {
342
343 JournalFolder folder = journalFolderLocalService.getFolder(folderId);
344
345 JournalFolderPermission.check(
346 getPermissionChecker(), folder, ActionKeys.UPDATE);
347
348 return journalFolderLocalService.updateFolder(
349 getUserId(), folderId, parentFolderId, name, description,
350 mergeWithParentFolder, serviceContext);
351 }
352
353 @Override
354 public JournalFolder updateFolder(
355 long folderId, long parentFolderId, String name, String description,
356 long[] ddmStructureIds, int restrictionType,
357 boolean mergeWithParentFolder, ServiceContext serviceContext)
358 throws PortalException {
359
360 JournalFolderPermission.check(
361 getPermissionChecker(), serviceContext.getScopeGroupId(), folderId,
362 ActionKeys.UPDATE);
363
364 return journalFolderLocalService.updateFolder(
365 getUserId(), folderId, parentFolderId, name, description,
366 ddmStructureIds, restrictionType, mergeWithParentFolder,
367 serviceContext);
368 }
369
370 }