1   /**
2    * Copyright (c) 2000-2008 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.portal.service.impl;
24  
25  import com.liferay.portal.PortalException;
26  import com.liferay.portal.SystemException;
27  import com.liferay.portal.kernel.util.LocaleUtil;
28  import com.liferay.portal.model.Layout;
29  import com.liferay.portal.model.LayoutReference;
30  import com.liferay.portal.model.Plugin;
31  import com.liferay.portal.security.permission.ActionKeys;
32  import com.liferay.portal.service.base.LayoutServiceBaseImpl;
33  import com.liferay.portal.service.permission.GroupPermissionUtil;
34  import com.liferay.portal.service.permission.LayoutPermissionUtil;
35  
36  import java.io.File;
37  import java.io.InputStream;
38  
39  import java.util.HashMap;
40  import java.util.Locale;
41  import java.util.Map;
42  
43  /**
44   * <a href="LayoutServiceImpl.java.html"><b><i>View Source</i></b></a>
45   *
46   * @author Brian Wing Shun Chan
47   *
48   */
49  public class LayoutServiceImpl extends LayoutServiceBaseImpl {
50  
51      public Layout addLayout(
52              long groupId, boolean privateLayout, long parentLayoutId,
53              String name, String title, String description, String type,
54              boolean hidden, String friendlyURL)
55          throws PortalException, SystemException {
56  
57          Map<Locale, String> localeNamesMap = new HashMap<Locale, String>();
58  
59          Locale defaultLocale = LocaleUtil.getDefault();
60  
61          localeNamesMap.put(defaultLocale, name);
62  
63          return addLayout(
64              groupId, privateLayout, parentLayoutId, localeNamesMap,
65              new HashMap<Locale, String>(), description, type, hidden,
66              friendlyURL);
67      }
68  
69      public Layout addLayout(
70              long groupId, boolean privateLayout, long parentLayoutId,
71              Map<Locale, String> localeNamesMap,
72              Map<Locale, String> localeTitlesMap, String description,
73              String type, boolean hidden, String friendlyURL)
74          throws PortalException, SystemException {
75  
76          GroupPermissionUtil.check(
77              getPermissionChecker(), groupId, ActionKeys.MANAGE_LAYOUTS);
78  
79          return layoutLocalService.addLayout(
80              getUserId(), groupId, privateLayout, parentLayoutId, localeNamesMap,
81              localeTitlesMap, description, type, hidden, friendlyURL);
82      }
83  
84      public void deleteLayout(long plid)
85          throws PortalException, SystemException {
86  
87          LayoutPermissionUtil.check(
88              getPermissionChecker(), plid, ActionKeys.DELETE);
89  
90          layoutLocalService.deleteLayout(plid);
91      }
92  
93      public void deleteLayout(long groupId, boolean privateLayout, long layoutId)
94          throws PortalException, SystemException {
95  
96          LayoutPermissionUtil.check(
97              getPermissionChecker(), groupId, privateLayout, layoutId,
98              ActionKeys.DELETE);
99  
100         layoutLocalService.deleteLayout(groupId, privateLayout, layoutId);
101     }
102 
103     public String getLayoutName(
104             long groupId, boolean privateLayout, long layoutId,
105             String languageId)
106         throws PortalException, SystemException {
107 
108         Layout layout = layoutLocalService.getLayout(
109             groupId, privateLayout, layoutId);
110 
111         return layout.getName(languageId);
112     }
113 
114     public LayoutReference[] getLayoutReferences(
115             long companyId, String portletId, String prefsKey,
116             String prefsValue)
117         throws SystemException {
118 
119         return layoutLocalService.getLayouts(
120             companyId, portletId, prefsKey, prefsValue);
121     }
122 
123     public byte[] exportLayouts(
124             long groupId, boolean privateLayout,
125             Map<String, String[]> parameterMap)
126         throws PortalException, SystemException {
127 
128         GroupPermissionUtil.check(
129             getPermissionChecker(), groupId, ActionKeys.MANAGE_LAYOUTS);
130 
131         return layoutLocalService.exportLayouts(
132             groupId, privateLayout, parameterMap);
133     }
134 
135     public byte[] exportLayouts(
136             long groupId, boolean privateLayout, long[] layoutIds,
137             Map<String, String[]> parameterMap)
138         throws PortalException, SystemException {
139 
140         GroupPermissionUtil.check(
141             getPermissionChecker(), groupId, ActionKeys.MANAGE_LAYOUTS);
142 
143         return layoutLocalService.exportLayouts(
144             groupId, privateLayout, layoutIds, parameterMap);
145     }
146 
147     public byte[] exportPortletInfo(
148             long plid, String portletId, Map<String, String[]> parameterMap)
149         throws PortalException, SystemException {
150 
151         Layout layout = layoutLocalService.getLayout(plid);
152 
153         GroupPermissionUtil.check(
154             getPermissionChecker(), layout.getGroupId(),
155             ActionKeys.MANAGE_LAYOUTS);
156 
157         return layoutLocalService.exportPortletInfo(
158             plid, portletId, parameterMap);
159     }
160 
161     public void importLayouts(
162             long groupId, boolean privateLayout,
163             Map<String, String[]> parameterMap, File file)
164         throws PortalException, SystemException {
165 
166         GroupPermissionUtil.check(
167             getPermissionChecker(), groupId, ActionKeys.MANAGE_LAYOUTS);
168 
169         layoutLocalService.importLayouts(
170             getUserId(), groupId, privateLayout, parameterMap, file);
171     }
172 
173     public void importLayouts(
174             long groupId, boolean privateLayout,
175             Map<String, String[]> parameterMap, InputStream is)
176         throws PortalException, SystemException {
177 
178         GroupPermissionUtil.check(
179             getPermissionChecker(), groupId, ActionKeys.MANAGE_LAYOUTS);
180 
181         layoutLocalService.importLayouts(
182             getUserId(), groupId, privateLayout, parameterMap, is);
183     }
184 
185     public void importPortletInfo(
186             long plid, String portletId, Map<String, String[]> parameterMap,
187             File file)
188         throws PortalException, SystemException {
189 
190         Layout layout = layoutLocalService.getLayout(plid);
191 
192         GroupPermissionUtil.check(
193             getPermissionChecker(), layout.getGroupId(),
194             ActionKeys.MANAGE_LAYOUTS);
195 
196         layoutLocalService.importPortletInfo(
197             getUserId(), plid, portletId, parameterMap, file);
198     }
199 
200     public void importPortletInfo(
201             long plid, String portletId, Map<String, String[]> parameterMap,
202             InputStream is)
203         throws PortalException, SystemException {
204 
205         Layout layout = layoutLocalService.getLayout(plid);
206 
207         GroupPermissionUtil.check(
208             getPermissionChecker(), layout.getGroupId(),
209             ActionKeys.MANAGE_LAYOUTS);
210 
211         layoutLocalService.importPortletInfo(
212             getUserId(), plid, portletId, parameterMap, is);
213     }
214 
215     public void setLayouts(
216             long groupId, boolean privateLayout, long parentLayoutId,
217             long[] layoutIds)
218         throws PortalException, SystemException {
219 
220         GroupPermissionUtil.check(
221             getPermissionChecker(), groupId, ActionKeys.MANAGE_LAYOUTS);
222 
223         layoutLocalService.setLayouts(
224             groupId, privateLayout, parentLayoutId, layoutIds);
225     }
226 
227     public Layout updateLayout(
228             long groupId, boolean privateLayout, long layoutId,
229             long parentLayoutId, Map<Locale, String> localeNamesMap,
230             Map<Locale, String> localeTitlesMap, String description,
231             String type, boolean hidden, String friendlyURL)
232         throws PortalException, SystemException {
233 
234         LayoutPermissionUtil.check(
235             getPermissionChecker(), groupId, privateLayout, layoutId,
236             ActionKeys.UPDATE);
237 
238         return layoutLocalService.updateLayout(
239             groupId, privateLayout, layoutId, parentLayoutId, localeNamesMap,
240             localeTitlesMap, description, type, hidden, friendlyURL);
241     }
242 
243     public Layout updateLayout(
244             long groupId, boolean privateLayout, long layoutId,
245             long parentLayoutId, Map<Locale, String> localeNamesMap,
246             Map<Locale, String> localeTitlesMap, String description,
247             String type, boolean hidden, String friendlyURL, Boolean iconImage,
248             byte[] iconBytes)
249         throws PortalException, SystemException {
250 
251         LayoutPermissionUtil.check(
252             getPermissionChecker(), groupId, privateLayout, layoutId,
253             ActionKeys.UPDATE);
254 
255         return layoutLocalService.updateLayout(
256             groupId, privateLayout, layoutId, parentLayoutId, localeNamesMap,
257             localeTitlesMap, description, type, hidden, friendlyURL, iconImage,
258             iconBytes);
259     }
260 
261     public Layout updateLayout(
262             long groupId, boolean privateLayout, long layoutId,
263             String typeSettings)
264         throws PortalException, SystemException {
265 
266         LayoutPermissionUtil.check(
267             getPermissionChecker(), groupId, privateLayout, layoutId,
268             ActionKeys.UPDATE);
269 
270         return layoutLocalService.updateLayout(
271             groupId, privateLayout, layoutId, typeSettings);
272     }
273 
274     public Layout updateLookAndFeel(
275             long groupId, boolean privateLayout, long layoutId, String themeId,
276             String colorSchemeId, String css, boolean wapTheme)
277         throws PortalException, SystemException {
278 
279         LayoutPermissionUtil.check(
280             getPermissionChecker(), groupId, privateLayout, layoutId,
281             ActionKeys.UPDATE);
282 
283         pluginSettingLocalService.checkPermission(
284             getUserId(), themeId, Plugin.TYPE_THEME);
285 
286         return layoutLocalService.updateLookAndFeel(
287             groupId, privateLayout, layoutId, themeId, colorSchemeId, css,
288             wapTheme);
289     }
290 
291     public Layout updateName(long plid, String name, String languageId)
292         throws PortalException, SystemException {
293 
294         LayoutPermissionUtil.check(
295             getPermissionChecker(), plid, ActionKeys.UPDATE);
296 
297         return layoutLocalService.updateName(plid, name, languageId);
298     }
299 
300     public Layout updateName(
301             long groupId, boolean privateLayout, long layoutId, String name,
302             String languageId)
303         throws PortalException, SystemException {
304 
305         LayoutPermissionUtil.check(
306             getPermissionChecker(), groupId, privateLayout, layoutId,
307             ActionKeys.UPDATE);
308 
309         return layoutLocalService.updateName(
310             groupId, privateLayout, layoutId, name, languageId);
311     }
312 
313     public Layout updateParentLayoutId(long plid, long parentPlid)
314         throws PortalException, SystemException {
315 
316         LayoutPermissionUtil.check(
317             getPermissionChecker(), plid, ActionKeys.UPDATE);
318 
319         return layoutLocalService.updateParentLayoutId(plid, parentPlid);
320     }
321 
322     public Layout updateParentLayoutId(
323             long groupId, boolean privateLayout, long layoutId,
324             long parentLayoutId)
325         throws PortalException, SystemException {
326 
327         LayoutPermissionUtil.check(
328             getPermissionChecker(), groupId, privateLayout, layoutId,
329             ActionKeys.UPDATE);
330 
331         return layoutLocalService.updateParentLayoutId(
332             groupId, privateLayout, layoutId, parentLayoutId);
333     }
334 
335     public Layout updatePriority(long plid, int priority)
336         throws PortalException, SystemException {
337 
338         LayoutPermissionUtil.check(
339             getPermissionChecker(), plid, ActionKeys.UPDATE);
340 
341         return layoutLocalService.updatePriority(plid, priority);
342     }
343 
344     public Layout updatePriority(
345             long groupId, boolean privateLayout, long layoutId, int priority)
346         throws PortalException, SystemException {
347 
348         LayoutPermissionUtil.check(
349             getPermissionChecker(), groupId, privateLayout, layoutId,
350             ActionKeys.UPDATE);
351 
352         return layoutLocalService.updatePriority(
353             groupId, privateLayout, layoutId, priority);
354     }
355 
356 }