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