1   /**
2    * Copyright (c) 2000-2010 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   *
12   *
13   */
14  
15  package com.liferay.portlet.journal.service.impl;
16  
17  import com.liferay.portal.PortalException;
18  import com.liferay.portal.SystemException;
19  import com.liferay.portal.model.User;
20  import com.liferay.portal.security.permission.ActionKeys;
21  import com.liferay.portal.service.ServiceContext;
22  import com.liferay.portal.theme.ThemeDisplay;
23  import com.liferay.portlet.journal.model.JournalArticle;
24  import com.liferay.portlet.journal.service.base.JournalArticleServiceBaseImpl;
25  import com.liferay.portlet.journal.service.permission.JournalArticlePermission;
26  import com.liferay.portlet.journal.service.permission.JournalPermission;
27  
28  import java.io.File;
29  
30  import java.util.Map;
31  
32  /**
33   * <a href="JournalArticleServiceImpl.java.html"><b><i>View Source</i></b></a>
34   *
35   * @author Brian Wing Shun Chan
36   * @author Raymond Augé
37   */
38  public class JournalArticleServiceImpl extends JournalArticleServiceBaseImpl {
39  
40      public JournalArticle addArticle(
41              long groupId, String articleId, boolean autoArticleId, String title,
42              String description, String content, String type, String structureId,
43              String templateId, int displayDateMonth, int displayDateDay,
44              int displayDateYear, int displayDateHour, int displayDateMinute,
45              int expirationDateMonth, int expirationDateDay,
46              int expirationDateYear, int expirationDateHour,
47              int expirationDateMinute, boolean neverExpire, int reviewDateMonth,
48              int reviewDateDay, int reviewDateYear, int reviewDateHour,
49              int reviewDateMinute, boolean neverReview, boolean indexable,
50              String articleURL, ServiceContext serviceContext)
51          throws PortalException, SystemException {
52  
53          JournalPermission.check(
54              getPermissionChecker(), groupId, ActionKeys.ADD_ARTICLE);
55  
56          return journalArticleLocalService.addArticle(
57              getUserId(), groupId, articleId, autoArticleId, title, description,
58              content, type, structureId, templateId, displayDateMonth,
59              displayDateDay, displayDateYear, displayDateHour, displayDateMinute,
60              expirationDateMonth, expirationDateDay, expirationDateYear,
61              expirationDateHour, expirationDateMinute, neverExpire,
62              reviewDateMonth, reviewDateDay, reviewDateYear, reviewDateHour,
63              reviewDateMinute, neverReview, indexable, false, null, null, null,
64              articleURL, serviceContext);
65      }
66  
67      public JournalArticle addArticle(
68              long groupId, String articleId, boolean autoArticleId, String title,
69              String description, String content, String type, String structureId,
70              String templateId, int displayDateMonth, int displayDateDay,
71              int displayDateYear, int displayDateHour, int displayDateMinute,
72              int expirationDateMonth, int expirationDateDay,
73              int expirationDateYear, int expirationDateHour,
74              int expirationDateMinute, boolean neverExpire, int reviewDateMonth,
75              int reviewDateDay, int reviewDateYear, int reviewDateHour,
76              int reviewDateMinute, boolean neverReview, boolean indexable,
77              boolean smallImage, String smallImageURL, File smallFile,
78              Map<String, byte[]> images, String articleURL,
79              ServiceContext serviceContext)
80          throws PortalException, SystemException {
81  
82          JournalPermission.check(
83              getPermissionChecker(), groupId, ActionKeys.ADD_ARTICLE);
84  
85          return journalArticleLocalService.addArticle(
86              getUserId(), groupId, articleId, autoArticleId, title, description,
87              content, type, structureId, templateId, displayDateMonth,
88              displayDateDay, displayDateYear, displayDateHour, displayDateMinute,
89              expirationDateMonth, expirationDateDay, expirationDateYear,
90              expirationDateHour, expirationDateMinute, neverExpire,
91              reviewDateMonth, reviewDateDay, reviewDateYear, reviewDateHour,
92              reviewDateMinute, neverReview, indexable, smallImage, smallImageURL,
93              smallFile, images, articleURL, serviceContext);
94      }
95  
96      public JournalArticle approveArticle(
97              long groupId, String articleId, double version, String articleURL,
98              ServiceContext serviceContext)
99          throws PortalException, SystemException {
100 
101         User user = getUser();
102 
103         JournalPermission.check(
104             getPermissionChecker(), groupId, ActionKeys.APPROVE_ARTICLE);
105 
106         return journalArticleLocalService.approveArticle(
107             user.getUserId(), groupId, articleId, version, articleURL,
108             serviceContext);
109     }
110 
111     public JournalArticle copyArticle(
112             long groupId, String oldArticleId, String newArticleId,
113             boolean autoArticleId, double version)
114         throws PortalException, SystemException {
115 
116         JournalPermission.check(
117             getPermissionChecker(), groupId, ActionKeys.ADD_ARTICLE);
118 
119         return journalArticleLocalService.copyArticle(
120             getUserId(), groupId, oldArticleId, newArticleId, autoArticleId,
121             version);
122     }
123 
124     public JournalArticle getArticle(long groupId, String articleId)
125         throws PortalException, SystemException {
126 
127         JournalArticlePermission.check(
128             getPermissionChecker(), groupId, articleId, ActionKeys.VIEW);
129 
130         return journalArticleLocalService.getArticle(groupId, articleId);
131     }
132 
133     public JournalArticle getArticle(
134             long groupId, String articleId, double version)
135         throws PortalException, SystemException {
136 
137         JournalArticlePermission.check(
138             getPermissionChecker(), groupId, articleId, version,
139             ActionKeys.VIEW);
140 
141         return journalArticleLocalService.getArticle(
142             groupId, articleId, version);
143     }
144 
145     public JournalArticle getArticleByUrlTitle(long groupId, String urlTitle)
146         throws PortalException, SystemException {
147 
148         JournalArticle article =
149             journalArticleLocalService.getArticleByUrlTitle(groupId, urlTitle);
150 
151         JournalArticlePermission.check(
152             getPermissionChecker(), article, ActionKeys.VIEW);
153 
154         return article;
155     }
156 
157     public String getArticleContent(
158             long groupId, String articleId, String languageId,
159             ThemeDisplay themeDisplay)
160         throws PortalException, SystemException {
161 
162         JournalArticlePermission.check(
163             getPermissionChecker(), groupId, articleId, ActionKeys.VIEW);
164 
165         return journalArticleLocalService.getArticleContent(
166             groupId, articleId, null, languageId, themeDisplay);
167     }
168 
169     public String getArticleContent(
170             long groupId, String articleId, double version, String languageId,
171             ThemeDisplay themeDisplay)
172         throws PortalException, SystemException {
173 
174         JournalArticlePermission.check(
175             getPermissionChecker(), groupId, articleId, version,
176             ActionKeys.VIEW);
177 
178         return journalArticleLocalService.getArticleContent(
179             groupId, articleId, version, null, languageId, themeDisplay);
180     }
181 
182     public void deleteArticle(
183             long groupId, String articleId, double version, String articleURL,
184             ServiceContext serviceContext)
185         throws PortalException, SystemException {
186 
187         JournalArticlePermission.check(
188             getPermissionChecker(), groupId, articleId, version,
189             ActionKeys.DELETE);
190 
191         journalArticleLocalService.deleteArticle(
192             groupId, articleId, version, articleURL, serviceContext);
193     }
194 
195     public void expireArticle(
196             long groupId, String articleId, double version, String articleURL,
197             ServiceContext serviceContext)
198         throws PortalException, SystemException {
199 
200         JournalArticlePermission.check(
201             getPermissionChecker(), groupId, articleId, version,
202             ActionKeys.EXPIRE);
203 
204         journalArticleLocalService.expireArticle(
205             groupId, articleId, version, articleURL, serviceContext);
206     }
207 
208     public void removeArticleLocale(long companyId, String languageId)
209         throws PortalException, SystemException {
210 
211         for (JournalArticle article :
212                 journalArticlePersistence.findByCompanyId(companyId)) {
213 
214             removeArticleLocale(
215                 article.getGroupId(), article.getArticleId(),
216                 article.getVersion(), languageId);
217         }
218     }
219 
220     public JournalArticle removeArticleLocale(
221             long groupId, String articleId, double version, String languageId)
222         throws PortalException, SystemException {
223 
224         JournalArticlePermission.check(
225             getPermissionChecker(), groupId, articleId, version,
226             ActionKeys.UPDATE);
227 
228         return journalArticleLocalService.removeArticleLocale(
229             groupId, articleId, version, languageId);
230     }
231 
232     public JournalArticle updateArticle(
233             long groupId, String articleId, double version,
234             boolean incrementVersion, String content)
235         throws PortalException, SystemException {
236 
237         JournalArticlePermission.check(
238             getPermissionChecker(), groupId, articleId, version,
239             ActionKeys.UPDATE);
240 
241         return journalArticleLocalService.updateArticle(
242             getUserId(), groupId, articleId, version, incrementVersion,
243             content);
244     }
245 
246     public JournalArticle updateArticle(
247             long groupId, String articleId, double version,
248             boolean incrementVersion, String title, String description,
249             String content, String type, String structureId, String templateId,
250             int displayDateMonth, int displayDateDay, int displayDateYear,
251             int displayDateHour, int displayDateMinute, int expirationDateMonth,
252             int expirationDateDay, int expirationDateYear,
253             int expirationDateHour, int expirationDateMinute,
254             boolean neverExpire, int reviewDateMonth, int reviewDateDay,
255             int reviewDateYear, int reviewDateHour, int reviewDateMinute,
256             boolean neverReview, boolean indexable, boolean smallImage,
257             String smallImageURL, File smallFile, Map<String, byte[]> images,
258             String articleURL, ServiceContext serviceContext)
259         throws PortalException, SystemException {
260 
261         JournalArticlePermission.check(
262             getPermissionChecker(), groupId, articleId, version,
263             ActionKeys.UPDATE);
264 
265         return journalArticleLocalService.updateArticle(
266             getUserId(), groupId, articleId, version, incrementVersion, title,
267             description, content, type, structureId, templateId,
268             displayDateMonth, displayDateDay, displayDateYear, displayDateHour,
269             displayDateMinute, expirationDateMonth, expirationDateDay,
270             expirationDateYear, expirationDateHour, expirationDateMinute,
271             neverExpire, reviewDateMonth, reviewDateDay, reviewDateYear,
272             reviewDateHour, reviewDateMinute, neverReview, indexable,
273             smallImage, smallImageURL, smallFile, images, articleURL,
274             serviceContext);
275     }
276 
277     public JournalArticle updateContent(
278             long groupId, String articleId, double version, String content)
279         throws PortalException, SystemException {
280 
281         JournalArticlePermission.check(
282             getPermissionChecker(), groupId, articleId, version,
283             ActionKeys.UPDATE);
284 
285         return journalArticleLocalService.updateContent(
286             groupId, articleId, version, content);
287     }
288 
289 }