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