001    /**
002     * Copyright (c) 2000-2012 Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portlet.dynamicdatamapping.service.impl;
016    
017    import com.liferay.portal.kernel.exception.PortalException;
018    import com.liferay.portal.kernel.exception.SystemException;
019    import com.liferay.portal.kernel.util.OrderByComparator;
020    import com.liferay.portal.kernel.util.ParamUtil;
021    import com.liferay.portal.kernel.util.Validator;
022    import com.liferay.portal.security.permission.ActionKeys;
023    import com.liferay.portal.service.ServiceContext;
024    import com.liferay.portlet.dynamicdatamapping.model.DDMTemplate;
025    import com.liferay.portlet.dynamicdatamapping.service.base.DDMTemplateServiceBaseImpl;
026    import com.liferay.portlet.dynamicdatamapping.service.permission.DDMPermission;
027    import com.liferay.portlet.dynamicdatamapping.service.permission.DDMTemplatePermission;
028    
029    import java.util.List;
030    import java.util.Locale;
031    import java.util.Map;
032    
033    /**
034     * @author Brian Wing Shun Chan
035     * @author Eduardo Lundgren
036     * @author Marcellus Tavares
037     */
038    public class DDMTemplateServiceImpl extends DDMTemplateServiceBaseImpl {
039    
040            public DDMTemplate addTemplate(
041                            long groupId, long classNameId, long classPK, String templateKey,
042                            Map<Locale, String> nameMap, Map<Locale, String> descriptionMap,
043                            String type, String mode, String language, String script,
044                            boolean cacheable, ServiceContext serviceContext)
045                    throws PortalException, SystemException {
046    
047                    String ddmResource = ParamUtil.getString(serviceContext, "ddmResource");
048    
049                    String ddmResourceActionId = ParamUtil.getString(
050                            serviceContext, "ddmResourceActionId");
051    
052                    if (Validator.isNull(ddmResourceActionId)) {
053                            if (ddmResource.equals(_DDL_CLASS_NAME)) {
054                                    ddmResourceActionId = ActionKeys.ADD_TEMPLATE;
055                            }
056                            else {
057                                    ddmResourceActionId = ActionKeys.ADD_PORTLET_DISPLAY_TEMPLATE;
058                            }
059                    }
060    
061                    DDMPermission.check(
062                            getPermissionChecker(), serviceContext.getScopeGroupId(),
063                            ddmResource, ddmResourceActionId);
064    
065                    return ddmTemplateLocalService.addTemplate(
066                            getUserId(), groupId, classNameId, classPK, templateKey, nameMap,
067                            descriptionMap, type, mode, language, script, cacheable,
068                            serviceContext);
069            }
070    
071            public List<DDMTemplate> copyTemplates(
072                            long classNameId, long classPK, long newClassPK, String type,
073                            ServiceContext serviceContext)
074                    throws PortalException, SystemException {
075    
076                    String ddmResource = ParamUtil.getString(serviceContext, "ddmResource");
077    
078                    DDMPermission.check(
079                            getPermissionChecker(), serviceContext.getScopeGroupId(),
080                            ddmResource, ActionKeys.ADD_TEMPLATE);
081    
082                    return ddmTemplateLocalService.copyTemplates(
083                            getUserId(), classNameId, classPK, newClassPK, type,
084                            serviceContext);
085            }
086    
087            public void deleteTemplate(long templateId)
088                    throws PortalException, SystemException {
089    
090                    DDMTemplatePermission.check(
091                            getPermissionChecker(), templateId, ActionKeys.DELETE);
092    
093                    ddmTemplateLocalService.deleteTemplate(templateId);
094            }
095    
096            public DDMTemplate fetchTemplate(long groupId, String templateKey)
097                    throws SystemException {
098    
099                    return ddmTemplateLocalService.fetchTemplate(groupId, templateKey);
100            }
101    
102            public DDMTemplate getTemplate(long templateId)
103                    throws PortalException, SystemException {
104    
105                    DDMTemplatePermission.check(
106                            getPermissionChecker(), templateId, ActionKeys.VIEW);
107    
108                    return ddmTemplatePersistence.findByPrimaryKey(templateId);
109            }
110    
111            public DDMTemplate getTemplate(long groupId, String templateKey)
112                    throws PortalException, SystemException {
113    
114                    return ddmTemplateLocalService.getTemplate(groupId, templateKey);
115            }
116    
117            public List<DDMTemplate> getTemplates(long groupId, long classNameId)
118                    throws SystemException {
119    
120                    return ddmTemplatePersistence.findByG_C(groupId, classNameId);
121            }
122    
123            public List<DDMTemplate> getTemplates(
124                            long groupId, long classNameId, long classPK)
125                    throws SystemException {
126    
127                    return ddmTemplatePersistence.findByG_C_C(
128                            groupId, classNameId, classPK);
129            }
130    
131            public List<DDMTemplate> getTemplates(
132                            long classNameId, long classPK, String type, String mode)
133                    throws SystemException {
134    
135                    return ddmTemplatePersistence.findByC_C_T_M(
136                            classNameId, classPK, type, mode);
137            }
138    
139            public List<DDMTemplate> search(
140                            long companyId, long groupId, long classNameId, long classPK,
141                            String keywords, String type, String mode, int start, int end,
142                            OrderByComparator orderByComparator)
143                    throws SystemException {
144    
145                    return ddmTemplateFinder.filterFindByKeywords(
146                            companyId, groupId, classNameId, classPK, keywords, type, mode,
147                            start, end, orderByComparator);
148            }
149    
150            public List<DDMTemplate> search(
151                            long companyId, long groupId, long classNameId, long classPK,
152                            String name, String description, String type, String mode,
153                            String language, boolean andOperator, int start, int end,
154                            OrderByComparator orderByComparator)
155                    throws SystemException {
156    
157                    return ddmTemplateFinder.filterFindByC_G_C_C_N_D_T_M_L(
158                            companyId, groupId, classNameId, classPK, name, description, type,
159                            mode, language, andOperator, start, end, orderByComparator);
160            }
161    
162            public List<DDMTemplate> search(
163                            long companyId, long[] groupIds, long[] classNameIds, long classPK,
164                            String keywords, String type, String mode, int start, int end,
165                            OrderByComparator orderByComparator)
166                    throws SystemException {
167    
168                    return ddmTemplateFinder.filterFindByKeywords(
169                            companyId, groupIds, classNameIds, classPK, keywords, type, mode,
170                            start, end, orderByComparator);
171            }
172    
173            public List<DDMTemplate> search(
174                            long companyId, long[] groupIds, long[] classNameIds, long classPK,
175                            String name, String description, String type, String mode,
176                            String language, boolean andOperator, int start, int end,
177                            OrderByComparator orderByComparator)
178                    throws SystemException {
179    
180                    return ddmTemplateFinder.filterFindByC_G_C_C_N_D_T_M_L(
181                            companyId, groupIds, classNameIds, classPK, name, description, type,
182                            mode, language, andOperator, start, end, orderByComparator);
183            }
184    
185            public int searchCount(
186                            long companyId, long groupId, long classNameId, long classPK,
187                            String keywords, String type, String mode)
188                    throws SystemException {
189    
190                    return ddmTemplateFinder.filterCountByKeywords(
191                            companyId, groupId, classNameId, classPK, keywords, type, mode);
192            }
193    
194            public int searchCount(
195                            long companyId, long groupId, long classNameId, long classPK,
196                            String name, String description, String type, String mode,
197                            String language, boolean andOperator)
198                    throws SystemException {
199    
200                    return ddmTemplateFinder.filterCountByC_G_C_C_N_D_T_M_L(
201                            companyId, groupId, classNameId, classPK, name, description, type,
202                            mode, language, andOperator);
203            }
204    
205            public int searchCount(
206                            long companyId, long[] groupIds, long[] classNameIds, long classPK,
207                            String keywords, String type, String mode)
208                    throws SystemException {
209    
210                    return ddmTemplateFinder.filterCountByKeywords(
211                            companyId, groupIds, classNameIds, classPK, keywords, type, mode);
212            }
213    
214            public int searchCount(
215                            long companyId, long[] groupIds, long[] classNameIds, long classPK,
216                            String name, String description, String type, String mode,
217                            String language, boolean andOperator)
218                    throws SystemException {
219    
220                    return ddmTemplateFinder.filterCountByC_G_C_C_N_D_T_M_L(
221                            companyId, groupIds, classNameIds, classPK, name, description, type,
222                            mode, language, andOperator);
223            }
224    
225            public DDMTemplate updateTemplate(
226                            long templateId, Map<Locale, String> nameMap,
227                            Map<Locale, String> descriptionMap, String type, String mode,
228                            String language, String script, boolean cacheable,
229                            ServiceContext serviceContext)
230                    throws PortalException, SystemException {
231    
232                    DDMTemplatePermission.check(
233                            getPermissionChecker(), templateId, ActionKeys.UPDATE);
234    
235                    return ddmTemplateLocalService.updateTemplate(
236                            templateId, nameMap, descriptionMap, type, mode, language, script,
237                            cacheable, serviceContext);
238            }
239    
240            private static final String _DDL_CLASS_NAME =
241                    "com.liferay.portlet.dynamicdatalists";
242    
243    }