1   /**
2    * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3    *
4    * Permission is hereby granted, free of charge, to any person obtaining a copy
5    * of this software and associated documentation files (the "Software"), to deal
6    * in the Software without restriction, including without limitation the rights
7    * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8    * copies of the Software, and to permit persons to whom the Software is
9    * furnished to do so, subject to the following conditions:
10   *
11   * The above copyright notice and this permission notice shall be included in
12   * all copies or substantial portions of the Software.
13   *
14   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20   * SOFTWARE.
21   */
22  
23  package com.liferay.portlet.journal.service.impl;
24  
25  import com.liferay.portal.PortalException;
26  import com.liferay.portal.SystemException;
27  import com.liferay.portal.model.User;
28  import com.liferay.portal.security.permission.ActionKeys;
29  import com.liferay.portal.theme.ThemeDisplay;
30  import com.liferay.portlet.journal.model.JournalArticle;
31  import com.liferay.portlet.journal.service.base.JournalArticleServiceBaseImpl;
32  import com.liferay.portlet.journal.service.permission.JournalArticlePermission;
33  import com.liferay.portlet.journal.service.permission.JournalPermission;
34  
35  import java.io.File;
36  
37  import java.util.Map;
38  
39  import javax.portlet.PortletPreferences;
40  
41  /**
42   * <a href="JournalArticleServiceImpl.java.html"><b><i>View Source</i></b></a>
43   *
44   * @author Brian Wing Shun Chan
45   *
46   */
47  public class JournalArticleServiceImpl extends JournalArticleServiceBaseImpl {
48  
49      public JournalArticle addArticle(
50              long groupId, String articleId, boolean autoArticleId, String title,
51              String description, String content, String type, String structureId,
52              String templateId, int displayDateMonth, int displayDateDay,
53              int displayDateYear, int displayDateHour, int displayDateMinute,
54              int expirationDateMonth, int expirationDateDay,
55              int expirationDateYear, int expirationDateHour,
56              int expirationDateMinute, boolean neverExpire, int reviewDateMonth,
57              int reviewDateDay, int reviewDateYear, int reviewDateHour,
58              int reviewDateMinute, boolean neverReview, boolean indexable,
59              String articleURL, String[] tagsCategories, String[] tagsEntries,
60              boolean addCommunityPermissions, boolean addGuestPermissions)
61          throws PortalException, SystemException {
62  
63          JournalPermission.check(
64              getPermissionChecker(), groupId, ActionKeys.ADD_ARTICLE);
65  
66          return journalArticleLocalService.addArticle(
67              getUserId(), groupId, articleId, autoArticleId, title, description,
68              content, type, structureId, templateId, displayDateMonth,
69              displayDateDay, displayDateYear, displayDateHour, displayDateMinute,
70              expirationDateMonth, expirationDateDay, expirationDateYear,
71              expirationDateHour, expirationDateMinute, neverExpire,
72              reviewDateMonth, reviewDateDay, reviewDateYear, reviewDateHour,
73              reviewDateMinute, neverReview, indexable, false, null, null, null,
74              articleURL, null, tagsCategories, tagsEntries,
75              addCommunityPermissions, addGuestPermissions);
76      }
77  
78      public JournalArticle addArticle(
79              long groupId, String articleId, boolean autoArticleId, String title,
80              String description, String content, String type, String structureId,
81              String templateId, int displayDateMonth, int displayDateDay,
82              int displayDateYear, int displayDateHour, int displayDateMinute,
83              int expirationDateMonth, int expirationDateDay,
84              int expirationDateYear, int expirationDateHour,
85              int expirationDateMinute, boolean neverExpire, int reviewDateMonth,
86              int reviewDateDay, int reviewDateYear, int reviewDateHour,
87              int reviewDateMinute, boolean neverReview, boolean indexable,
88              boolean smallImage, String smallImageURL, File smallFile,
89              Map<String, byte[]> images, String articleURL,
90              PortletPreferences preferences, String[] tagsCategories,
91              String[] tagsEntries, boolean addCommunityPermissions,
92              boolean addGuestPermissions)
93          throws PortalException, SystemException {
94  
95          JournalPermission.check(
96              getPermissionChecker(), groupId, ActionKeys.ADD_ARTICLE);
97  
98          return journalArticleLocalService.addArticle(
99              getUserId(), groupId, articleId, autoArticleId, title, description,
100             content, type, structureId, templateId, displayDateMonth,
101             displayDateDay, displayDateYear, displayDateHour, displayDateMinute,
102             expirationDateMonth, expirationDateDay, expirationDateYear,
103             expirationDateHour, expirationDateMinute, neverExpire,
104             reviewDateMonth, reviewDateDay, reviewDateYear, reviewDateHour,
105             reviewDateMinute, neverReview, indexable, smallImage, smallImageURL,
106             smallFile, images, articleURL, preferences, tagsCategories,
107             tagsEntries, addCommunityPermissions, addGuestPermissions);
108     }
109 
110     public JournalArticle addArticle(
111             long groupId, String articleId, boolean autoArticleId, String title,
112             String description, String content, String type, String structureId,
113             String templateId, int displayDateMonth, int displayDateDay,
114             int displayDateYear, int displayDateHour, int displayDateMinute,
115             int expirationDateMonth, int expirationDateDay,
116             int expirationDateYear, int expirationDateHour,
117             int expirationDateMinute, boolean neverExpire, int reviewDateMonth,
118             int reviewDateDay, int reviewDateYear, int reviewDateHour,
119             int reviewDateMinute, boolean neverReview, boolean indexable,
120             String articleURL, String[] tagsCategories, String[] tagsEntries,
121             String[] communityPermissions, String[] guestPermissions)
122         throws PortalException, SystemException {
123 
124         JournalPermission.check(
125             getPermissionChecker(), groupId, ActionKeys.ADD_ARTICLE);
126 
127         return journalArticleLocalService.addArticle(
128             getUserId(), groupId, articleId, autoArticleId, title, description,
129             content, type, structureId, templateId, displayDateMonth,
130             displayDateDay, displayDateYear, displayDateHour, displayDateMinute,
131             expirationDateMonth, expirationDateDay, expirationDateYear,
132             expirationDateHour, expirationDateMinute, neverExpire,
133             reviewDateMonth, reviewDateDay, reviewDateYear, reviewDateHour,
134             reviewDateMinute, neverReview, indexable, false, null, null, null,
135             articleURL, null, tagsCategories, tagsEntries, communityPermissions,
136             guestPermissions);
137     }
138 
139     public JournalArticle addArticle(
140             long groupId, String articleId, boolean autoArticleId, String title,
141             String description, String content, String type, String structureId,
142             String templateId, int displayDateMonth, int displayDateDay,
143             int displayDateYear, int displayDateHour, int displayDateMinute,
144             int expirationDateMonth, int expirationDateDay,
145             int expirationDateYear, int expirationDateHour,
146             int expirationDateMinute, boolean neverExpire, int reviewDateMonth,
147             int reviewDateDay, int reviewDateYear, int reviewDateHour,
148             int reviewDateMinute, boolean neverReview, boolean indexable,
149             boolean smallImage, String smallImageURL, File smallFile,
150             Map<String, byte[]> images, String articleURL,
151             PortletPreferences preferences, String[] tagsCategories,
152             String[] tagsEntries, String[] communityPermissions,
153             String[] guestPermissions)
154         throws PortalException, SystemException {
155 
156         JournalPermission.check(
157             getPermissionChecker(), groupId, ActionKeys.ADD_ARTICLE);
158 
159         return journalArticleLocalService.addArticle(
160             getUserId(), groupId, articleId, autoArticleId, title, description,
161             content, type, structureId, templateId, displayDateMonth,
162             displayDateDay, displayDateYear, displayDateHour, displayDateMinute,
163             expirationDateMonth, expirationDateDay, expirationDateYear,
164             expirationDateHour, expirationDateMinute, neverExpire,
165             reviewDateMonth, reviewDateDay, reviewDateYear, reviewDateHour,
166             reviewDateMinute, neverReview, indexable, smallImage, smallImageURL,
167             smallFile, images, articleURL, preferences, tagsCategories,
168             tagsEntries, communityPermissions, guestPermissions);
169     }
170 
171     public JournalArticle approveArticle(
172             long groupId, String articleId, double version, String articleURL,
173             PortletPreferences preferences)
174         throws PortalException, SystemException {
175 
176         User user = getUser();
177 
178         JournalPermission.check(
179             getPermissionChecker(), groupId, ActionKeys.APPROVE_ARTICLE);
180 
181         return journalArticleLocalService.approveArticle(
182             user.getUserId(), groupId, articleId, version, articleURL,
183             preferences);
184     }
185 
186     public JournalArticle copyArticle(
187             long groupId, String oldArticleId, String newArticleId,
188             boolean autoArticleId, double version)
189         throws PortalException, SystemException {
190 
191         JournalPermission.check(
192             getPermissionChecker(), groupId, ActionKeys.ADD_ARTICLE);
193 
194         return journalArticleLocalService.copyArticle(
195             getUserId(), groupId, oldArticleId, newArticleId, autoArticleId,
196             version);
197     }
198 
199     public JournalArticle getArticle(long groupId, String articleId)
200         throws PortalException, SystemException {
201 
202         JournalArticlePermission.check(
203             getPermissionChecker(), groupId, articleId, ActionKeys.VIEW);
204 
205         return journalArticleLocalService.getArticle(groupId, articleId);
206     }
207 
208     public JournalArticle getArticle(
209             long groupId, String articleId, double version)
210         throws PortalException, SystemException {
211 
212         JournalArticlePermission.check(
213             getPermissionChecker(), groupId, articleId, ActionKeys.VIEW);
214 
215         return journalArticleLocalService.getArticle(
216             groupId, articleId, version);
217     }
218 
219     public String getArticleContent(
220             long groupId, String articleId, String languageId,
221             ThemeDisplay themeDisplay)
222         throws PortalException, SystemException {
223 
224         JournalArticlePermission.check(
225             getPermissionChecker(), groupId, articleId, ActionKeys.VIEW);
226 
227         return journalArticleLocalService.getArticleContent(
228             groupId, articleId, null, languageId, themeDisplay);
229     }
230 
231     public String getArticleContent(
232             long groupId, String articleId, double version, String languageId,
233             ThemeDisplay themeDisplay)
234         throws PortalException, SystemException {
235 
236         JournalArticlePermission.check(
237             getPermissionChecker(), groupId, articleId, ActionKeys.VIEW);
238 
239         return journalArticleLocalService.getArticleContent(
240             groupId, articleId, version, null, languageId, themeDisplay);
241     }
242 
243     public void deleteArticle(
244             long groupId, String articleId, double version, String articleURL,
245             PortletPreferences preferences)
246         throws PortalException, SystemException {
247 
248         JournalArticlePermission.check(
249             getPermissionChecker(), groupId, articleId, ActionKeys.DELETE);
250 
251         journalArticleLocalService.deleteArticle(
252             groupId, articleId, version, articleURL, preferences);
253     }
254 
255     public void expireArticle(
256             long groupId, String articleId, double version, String articleURL,
257             PortletPreferences preferences)
258         throws PortalException, SystemException {
259 
260         JournalArticlePermission.check(
261             getPermissionChecker(), groupId, articleId, ActionKeys.EXPIRE);
262 
263         journalArticleLocalService.expireArticle(
264             groupId, articleId, version, articleURL, preferences);
265     }
266 
267     public void removeArticleLocale(long companyId, String languageId)
268         throws PortalException, SystemException {
269 
270         for (JournalArticle article :
271                 journalArticlePersistence.findByCompanyId(companyId)) {
272 
273             removeArticleLocale(
274                 article.getGroupId(), article.getArticleId(),
275                 article.getVersion(), languageId);
276         }
277     }
278 
279     public JournalArticle removeArticleLocale(
280             long groupId, String articleId, double version, String languageId)
281         throws PortalException, SystemException {
282 
283         JournalArticlePermission.check(
284             getPermissionChecker(), groupId, articleId, ActionKeys.UPDATE);
285 
286         return journalArticleLocalService.removeArticleLocale(
287             groupId, articleId, version, languageId);
288     }
289 
290     public JournalArticle updateArticle(
291             long groupId, String articleId, double version,
292             boolean incrementVersion, String title, String description,
293             String content, String type, String structureId, String templateId,
294             int displayDateMonth, int displayDateDay, int displayDateYear,
295             int displayDateHour, int displayDateMinute, int expirationDateMonth,
296             int expirationDateDay, int expirationDateYear,
297             int expirationDateHour, int expirationDateMinute,
298             boolean neverExpire, int reviewDateMonth, int reviewDateDay,
299             int reviewDateYear, int reviewDateHour, int reviewDateMinute,
300             boolean neverReview, boolean indexable, boolean smallImage,
301             String smallImageURL, File smallFile, Map<String, byte[]> images,
302             String articleURL, PortletPreferences preferences,
303             String[] tagsCategories, String[] tagsEntries)
304         throws PortalException, SystemException {
305 
306         JournalArticlePermission.check(
307             getPermissionChecker(), groupId, articleId, ActionKeys.UPDATE);
308 
309         return journalArticleLocalService.updateArticle(
310             getUserId(), groupId, articleId, version, incrementVersion, title,
311             description, content, type, structureId, templateId,
312             displayDateMonth, displayDateDay, displayDateYear, displayDateHour,
313             displayDateMinute, expirationDateMonth, expirationDateDay,
314             expirationDateYear, expirationDateHour, expirationDateMinute,
315             neverExpire, reviewDateMonth, reviewDateDay, reviewDateYear,
316             reviewDateHour, reviewDateMinute, neverReview, indexable,
317             smallImage, smallImageURL, smallFile, images, articleURL,
318             preferences, tagsCategories, tagsEntries);
319     }
320 
321     public JournalArticle updateContent(
322             long groupId, String articleId, double version, String content)
323         throws PortalException, SystemException {
324 
325         JournalArticlePermission.check(
326             getPermissionChecker(), groupId, articleId, ActionKeys.UPDATE);
327 
328         return journalArticleLocalService.updateContent(
329             groupId, articleId, version, content);
330     }
331 
332 }