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.mobiledevicerules.service.impl;
016    
017    import com.liferay.portal.kernel.exception.PortalException;
018    import com.liferay.portal.kernel.systemevent.SystemEvent;
019    import com.liferay.portal.kernel.util.UnicodeProperties;
020    import com.liferay.portal.model.SystemEventConstants;
021    import com.liferay.portal.model.User;
022    import com.liferay.portal.service.ServiceContext;
023    import com.liferay.portlet.mobiledevicerules.model.MDRAction;
024    import com.liferay.portlet.mobiledevicerules.model.MDRRuleGroupInstance;
025    import com.liferay.portlet.mobiledevicerules.service.base.MDRActionLocalServiceBaseImpl;
026    
027    import java.util.Date;
028    import java.util.List;
029    import java.util.Locale;
030    import java.util.Map;
031    
032    /**
033     * @author Edward C. Han
034     */
035    public class MDRActionLocalServiceImpl extends MDRActionLocalServiceBaseImpl {
036    
037            @Override
038            public MDRAction addAction(
039                            long ruleGroupInstanceId, Map<Locale, String> nameMap,
040                            Map<Locale, String> descriptionMap, String type,
041                            String typeSettings, ServiceContext serviceContext)
042                    throws PortalException {
043    
044                    User user = userPersistence.findByPrimaryKey(
045                            serviceContext.getUserId());
046                    MDRRuleGroupInstance ruleGroupInstance =
047                            mdrRuleGroupInstancePersistence.findByPrimaryKey(
048                                    ruleGroupInstanceId);
049    
050                    long actionId = counterLocalService.increment();
051    
052                    MDRAction action = mdrActionLocalService.createMDRAction(actionId);
053    
054                    action.setUuid(serviceContext.getUuid());
055                    action.setGroupId(ruleGroupInstance.getGroupId());
056                    action.setCompanyId(serviceContext.getCompanyId());
057                    action.setUserId(serviceContext.getUserId());
058                    action.setUserName(user.getFullName());
059                    action.setClassNameId(ruleGroupInstance.getClassNameId());
060                    action.setClassPK(ruleGroupInstance.getClassPK());
061                    action.setRuleGroupInstanceId(ruleGroupInstanceId);
062                    action.setNameMap(nameMap);
063                    action.setDescriptionMap(descriptionMap);
064                    action.setType(type);
065                    action.setTypeSettings(typeSettings);
066    
067                    action = updateMDRAction(action);
068    
069                    ruleGroupInstance.setModifiedDate(new Date());
070    
071                    mdrRuleGroupInstancePersistence.update(ruleGroupInstance);
072    
073                    return action;
074            }
075    
076            @Override
077            public MDRAction addAction(
078                            long ruleGroupInstanceId, Map<Locale, String> nameMap,
079                            Map<Locale, String> descriptionMap, String type,
080                            UnicodeProperties typeSettingsProperties,
081                            ServiceContext serviceContext)
082                    throws PortalException {
083    
084                    return addAction(
085                            ruleGroupInstanceId, nameMap, descriptionMap, type,
086                            typeSettingsProperties.toString(), serviceContext);
087            }
088    
089            @Override
090            public void deleteAction(long actionId) {
091                    MDRAction action = mdrActionPersistence.fetchByPrimaryKey(actionId);
092    
093                    if (action != null) {
094                            mdrActionLocalService.deleteAction(action);
095                    }
096            }
097    
098            @Override
099            @SystemEvent(type = SystemEventConstants.TYPE_DELETE)
100            public void deleteAction(MDRAction action) {
101                    mdrActionPersistence.remove(action);
102    
103                    MDRRuleGroupInstance ruleGroupInstance =
104                            mdrRuleGroupInstancePersistence.fetchByPrimaryKey(
105                                    action.getRuleGroupInstanceId());
106    
107                    if (ruleGroupInstance != null) {
108                            ruleGroupInstance.setModifiedDate(new Date());
109    
110                            mdrRuleGroupInstancePersistence.update(ruleGroupInstance);
111                    }
112            }
113    
114            @Override
115            public void deleteActions(long ruleGroupInstanceId) {
116                    List<MDRAction> actions =
117                            mdrActionPersistence.findByRuleGroupInstanceId(ruleGroupInstanceId);
118    
119                    for (MDRAction action : actions) {
120                            mdrActionLocalService.deleteAction(action);
121                    }
122            }
123    
124            @Override
125            public MDRAction fetchAction(long actionId) {
126                    return mdrActionPersistence.fetchByPrimaryKey(actionId);
127            }
128    
129            @Override
130            public MDRAction getAction(long actionId) throws PortalException {
131                    return mdrActionPersistence.findByPrimaryKey(actionId);
132            }
133    
134            @Override
135            public List<MDRAction> getActions(long ruleGroupInstanceId) {
136                    return mdrActionPersistence.findByRuleGroupInstanceId(
137                            ruleGroupInstanceId);
138            }
139    
140            @Override
141            public List<MDRAction> getActions(
142                    long ruleGroupInstanceId, int start, int end) {
143    
144                    return mdrActionPersistence.findByRuleGroupInstanceId(
145                            ruleGroupInstanceId, start, end);
146            }
147    
148            @Override
149            public int getActionsCount(long ruleGroupInstanceId) {
150                    return mdrActionPersistence.countByRuleGroupInstanceId(
151                            ruleGroupInstanceId);
152            }
153    
154            @Override
155            public MDRAction updateAction(
156                            long actionId, Map<Locale, String> nameMap,
157                            Map<Locale, String> descriptionMap, String type,
158                            String typeSettings, ServiceContext serviceContext)
159                    throws PortalException {
160    
161                    MDRAction action = mdrActionPersistence.findByPrimaryKey(actionId);
162    
163                    action.setNameMap(nameMap);
164                    action.setDescriptionMap(descriptionMap);
165                    action.setType(type);
166                    action.setTypeSettings(typeSettings);
167    
168                    mdrActionPersistence.update(action);
169    
170                    MDRRuleGroupInstance ruleGroupInstance =
171                            mdrRuleGroupInstancePersistence.findByPrimaryKey(
172                                    action.getRuleGroupInstanceId());
173    
174                    ruleGroupInstance.setModifiedDate(serviceContext.getModifiedDate(null));
175    
176                    mdrRuleGroupInstancePersistence.update(ruleGroupInstance);
177    
178                    return action;
179            }
180    
181            @Override
182            public MDRAction updateAction(
183                            long actionId, Map<Locale, String> nameMap,
184                            Map<Locale, String> descriptionMap, String type,
185                            UnicodeProperties typeSettingsProperties,
186                            ServiceContext serviceContext)
187                    throws PortalException {
188    
189                    return updateAction(
190                            actionId, nameMap, descriptionMap, type,
191                            typeSettingsProperties.toString(), serviceContext);
192            }
193    
194    }