001    /**
002     * Copyright (c) 2000-present 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.social.service.impl;
016    
017    import com.liferay.portal.kernel.exception.PortalException;
018    import com.liferay.portal.kernel.json.JSONArray;
019    import com.liferay.portal.kernel.json.JSONFactoryUtil;
020    import com.liferay.portal.kernel.json.JSONObject;
021    import com.liferay.portal.kernel.util.LocaleUtil;
022    import com.liferay.portal.security.permission.ActionKeys;
023    import com.liferay.portlet.social.model.SocialActivityCounterDefinition;
024    import com.liferay.portlet.social.model.SocialActivityDefinition;
025    import com.liferay.portlet.social.model.SocialActivitySetting;
026    import com.liferay.portlet.social.service.base.SocialActivitySettingServiceBaseImpl;
027    import com.liferay.portlet.social.service.permission.SocialActivityPermissionUtil;
028    import com.liferay.portlet.social.util.comparator.SocialActivityDefinitionNameComparator;
029    
030    import java.util.Collections;
031    import java.util.List;
032    
033    /**
034     * @author Zsolt Berentey
035     */
036    public class SocialActivitySettingServiceImpl
037            extends SocialActivitySettingServiceBaseImpl {
038    
039            @Override
040            public SocialActivityDefinition getActivityDefinition(
041                            long groupId, String className, int activityType)
042                    throws PortalException {
043    
044                    SocialActivityPermissionUtil.check(
045                            getPermissionChecker(), groupId, ActionKeys.VIEW);
046    
047                    return socialActivitySettingLocalService.getActivityDefinition(
048                            groupId, className, activityType);
049            }
050    
051            @Override
052            public List<SocialActivityDefinition> getActivityDefinitions(
053                            long groupId, String className)
054                    throws PortalException {
055    
056                    SocialActivityPermissionUtil.check(
057                            getPermissionChecker(), groupId, ActionKeys.VIEW);
058    
059                    return socialActivitySettingLocalService.getActivityDefinitions(
060                            groupId, className);
061            }
062    
063            @Override
064            public List<SocialActivitySetting> getActivitySettings(long groupId)
065                    throws PortalException {
066    
067                    SocialActivityPermissionUtil.check(
068                            getPermissionChecker(), groupId, ActionKeys.VIEW);
069    
070                    return socialActivitySettingLocalService.getActivitySettings(groupId);
071            }
072    
073            @Override
074            public JSONArray getJSONActivityDefinitions(long groupId, String className)
075                    throws PortalException {
076    
077                    SocialActivityPermissionUtil.check(
078                            getPermissionChecker(), groupId, ActionKeys.VIEW);
079    
080                    JSONArray jsonArray = JSONFactoryUtil.createJSONArray();
081    
082                    List<SocialActivityDefinition> activityDefinitions =
083                            socialActivitySettingLocalService.getActivityDefinitions(
084                                    groupId, className);
085    
086                    Collections.sort(
087                            activityDefinitions,
088                            new SocialActivityDefinitionNameComparator(
089                                    LocaleUtil.getMostRelevantLocale()));
090    
091                    for (SocialActivityDefinition activityDefinition :
092                                    activityDefinitions) {
093    
094                            if (!activityDefinition.isCountersEnabled()) {
095                                    continue;
096                            }
097    
098                            JSONObject activityDefinitionJSONObject =
099                                    JSONFactoryUtil.createJSONObject(
100                                            JSONFactoryUtil.looseSerialize(activityDefinition));
101    
102                            JSONArray activityCounterDefinitionsJSONArray =
103                                    JSONFactoryUtil.createJSONArray();
104    
105                            for (SocialActivityCounterDefinition activityCounterDefinition :
106                                            activityDefinition.getActivityCounterDefinitions()) {
107    
108                                    JSONObject activityCounterDefinitionJSONObject =
109                                            JSONFactoryUtil.createJSONObject(
110                                                    JSONFactoryUtil.looseSerialize(
111                                                            activityCounterDefinition));
112    
113                                    activityCounterDefinitionsJSONArray.put(
114                                            activityCounterDefinitionJSONObject);
115                            }
116    
117                            activityDefinitionJSONObject.put(
118                                    "counters", activityCounterDefinitionsJSONArray);
119    
120                            jsonArray.put(activityDefinitionJSONObject);
121                    }
122    
123                    return jsonArray;
124            }
125    
126            @Override
127            public void updateActivitySetting(
128                            long groupId, String className, boolean enabled)
129                    throws PortalException {
130    
131                    SocialActivityPermissionUtil.check(
132                            getPermissionChecker(), groupId, ActionKeys.CONFIGURATION);
133    
134                    socialActivitySettingLocalService.updateActivitySetting(
135                            groupId, className, enabled);
136            }
137    
138            @Override
139            public void updateActivitySetting(
140                            long groupId, String className, int activityType,
141                            SocialActivityCounterDefinition activityCounterDefinition)
142                    throws PortalException {
143    
144                    SocialActivityPermissionUtil.check(
145                            getPermissionChecker(), groupId, ActionKeys.CONFIGURATION);
146    
147                    socialActivitySettingLocalService.updateActivitySetting(
148                            groupId, className, activityType, activityCounterDefinition);
149            }
150    
151            @Override
152            public void updateActivitySettings(
153                            long groupId, String className, int activityType,
154                            List<SocialActivityCounterDefinition> activityCounterDefinitions)
155                    throws PortalException {
156    
157                    SocialActivityPermissionUtil.check(
158                            getPermissionChecker(), groupId, ActionKeys.CONFIGURATION);
159    
160                    socialActivitySettingLocalService.updateActivitySettings(
161                            groupId, className, activityType, activityCounterDefinitions);
162            }
163    
164    }