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                    Date now = new Date();
050    
051                    long actionId = counterLocalService.increment();
052    
053                    MDRAction action = mdrActionLocalService.createMDRAction(actionId);
054    
055                    action.setUuid(serviceContext.getUuid());
056                    action.setGroupId(ruleGroupInstance.getGroupId());
057                    action.setCompanyId(serviceContext.getCompanyId());
058                    action.setCreateDate(serviceContext.getCreateDate(now));
059                    action.setModifiedDate(serviceContext.getModifiedDate(now));
060                    action.setUserId(serviceContext.getUserId());
061                    action.setUserName(user.getFullName());
062                    action.setClassNameId(ruleGroupInstance.getClassNameId());
063                    action.setClassPK(ruleGroupInstance.getClassPK());
064                    action.setRuleGroupInstanceId(ruleGroupInstanceId);
065                    action.setNameMap(nameMap);
066                    action.setDescriptionMap(descriptionMap);
067                    action.setType(type);
068                    action.setTypeSettings(typeSettings);
069    
070                    action = updateMDRAction(action);
071    
072                    ruleGroupInstance.setModifiedDate(now);
073    
074                    mdrRuleGroupInstancePersistence.update(ruleGroupInstance);
075    
076                    return action;
077            }
078    
079            @Override
080            public MDRAction addAction(
081                            long ruleGroupInstanceId, Map<Locale, String> nameMap,
082                            Map<Locale, String> descriptionMap, String type,
083                            UnicodeProperties typeSettingsProperties,
084                            ServiceContext serviceContext)
085                    throws PortalException {
086    
087                    return addAction(
088                            ruleGroupInstanceId, nameMap, descriptionMap, type,
089                            typeSettingsProperties.toString(), serviceContext);
090            }
091    
092            @Override
093            public void deleteAction(long actionId) {
094                    MDRAction action = mdrActionPersistence.fetchByPrimaryKey(actionId);
095    
096                    if (action != null) {
097                            mdrActionLocalService.deleteAction(action);
098                    }
099            }
100    
101            @Override
102            @SystemEvent(type = SystemEventConstants.TYPE_DELETE)
103            public void deleteAction(MDRAction action) {
104                    mdrActionPersistence.remove(action);
105    
106                    MDRRuleGroupInstance ruleGroupInstance =
107                            mdrRuleGroupInstancePersistence.fetchByPrimaryKey(
108                                    action.getRuleGroupInstanceId());
109    
110                    if (ruleGroupInstance != null) {
111                            ruleGroupInstance.setModifiedDate(new Date());
112    
113                            mdrRuleGroupInstancePersistence.update(ruleGroupInstance);
114                    }
115            }
116    
117            @Override
118            public void deleteActions(long ruleGroupInstanceId) {
119                    List<MDRAction> actions =
120                            mdrActionPersistence.findByRuleGroupInstanceId(ruleGroupInstanceId);
121    
122                    for (MDRAction action : actions) {
123                            mdrActionLocalService.deleteAction(action);
124                    }
125            }
126    
127            @Override
128            public MDRAction fetchAction(long actionId) {
129                    return mdrActionPersistence.fetchByPrimaryKey(actionId);
130            }
131    
132            @Override
133            public MDRAction getAction(long actionId) throws PortalException {
134                    return mdrActionPersistence.findByPrimaryKey(actionId);
135            }
136    
137            @Override
138            public List<MDRAction> getActions(long ruleGroupInstanceId) {
139                    return mdrActionPersistence.findByRuleGroupInstanceId(
140                            ruleGroupInstanceId);
141            }
142    
143            @Override
144            public List<MDRAction> getActions(
145                    long ruleGroupInstanceId, int start, int end) {
146    
147                    return mdrActionPersistence.findByRuleGroupInstanceId(
148                            ruleGroupInstanceId, start, end);
149            }
150    
151            @Override
152            public int getActionsCount(long ruleGroupInstanceId) {
153                    return mdrActionPersistence.countByRuleGroupInstanceId(
154                            ruleGroupInstanceId);
155            }
156    
157            @Override
158            public MDRAction updateAction(
159                            long actionId, Map<Locale, String> nameMap,
160                            Map<Locale, String> descriptionMap, String type,
161                            String typeSettings, ServiceContext serviceContext)
162                    throws PortalException {
163    
164                    MDRAction action = mdrActionPersistence.findByPrimaryKey(actionId);
165    
166                    action.setModifiedDate(serviceContext.getModifiedDate(null));
167                    action.setNameMap(nameMap);
168                    action.setDescriptionMap(descriptionMap);
169                    action.setType(type);
170                    action.setTypeSettings(typeSettings);
171    
172                    mdrActionPersistence.update(action);
173    
174                    MDRRuleGroupInstance ruleGroupInstance =
175                            mdrRuleGroupInstancePersistence.findByPrimaryKey(
176                                    action.getRuleGroupInstanceId());
177    
178                    ruleGroupInstance.setModifiedDate(serviceContext.getModifiedDate(null));
179    
180                    mdrRuleGroupInstancePersistence.update(ruleGroupInstance);
181    
182                    return action;
183            }
184    
185            @Override
186            public MDRAction updateAction(
187                            long actionId, Map<Locale, String> nameMap,
188                            Map<Locale, String> descriptionMap, String type,
189                            UnicodeProperties typeSettingsProperties,
190                            ServiceContext serviceContext)
191                    throws PortalException {
192    
193                    return updateAction(
194                            actionId, nameMap, descriptionMap, type,
195                            typeSettingsProperties.toString(), serviceContext);
196            }
197    
198    }