001
014
015 package com.liferay.portlet.mobiledevicerules.service.impl;
016
017 import com.liferay.portal.kernel.dao.orm.QueryUtil;
018 import com.liferay.portal.kernel.exception.PortalException;
019 import com.liferay.portal.kernel.exception.SystemException;
020 import com.liferay.portal.kernel.systemevent.SystemEvent;
021 import com.liferay.portal.kernel.util.OrderByComparator;
022 import com.liferay.portal.model.SystemEventConstants;
023 import com.liferay.portal.model.User;
024 import com.liferay.portal.service.ServiceContext;
025 import com.liferay.portal.util.PortalUtil;
026 import com.liferay.portlet.mobiledevicerules.DuplicateRuleGroupInstanceException;
027 import com.liferay.portlet.mobiledevicerules.model.MDRRuleGroupInstance;
028 import com.liferay.portlet.mobiledevicerules.service.base.MDRRuleGroupInstanceLocalServiceBaseImpl;
029 import com.liferay.portlet.mobiledevicerules.util.RuleGroupInstancePriorityComparator;
030
031 import java.util.Date;
032 import java.util.List;
033
034
037 public class MDRRuleGroupInstanceLocalServiceImpl
038 extends MDRRuleGroupInstanceLocalServiceBaseImpl {
039
040 @Override
041 public MDRRuleGroupInstance addRuleGroupInstance(
042 long groupId, String className, long classPK, long ruleGroupId,
043 int priority, ServiceContext serviceContext)
044 throws PortalException, SystemException {
045
046 User user = userPersistence.findByPrimaryKey(
047 serviceContext.getUserId());
048 long classNameId = PortalUtil.getClassNameId(className);
049 Date now = new Date();
050
051 validate(classNameId, classPK, ruleGroupId);
052
053 long ruleGroupInstanceId = counterLocalService.increment();
054
055 MDRRuleGroupInstance ruleGroupInstance =
056 mdrRuleGroupInstanceLocalService.createMDRRuleGroupInstance(
057 ruleGroupInstanceId);
058
059 ruleGroupInstance.setUuid(serviceContext.getUuid());
060 ruleGroupInstance.setGroupId(groupId);
061 ruleGroupInstance.setCompanyId(serviceContext.getCompanyId());
062 ruleGroupInstance.setCreateDate(serviceContext.getCreateDate(now));
063 ruleGroupInstance.setModifiedDate(serviceContext.getModifiedDate(now));
064 ruleGroupInstance.setUserId(serviceContext.getUserId());
065 ruleGroupInstance.setUserName(user.getFullName());
066 ruleGroupInstance.setClassNameId(classNameId);
067 ruleGroupInstance.setClassPK(classPK);
068 ruleGroupInstance.setRuleGroupId(ruleGroupId);
069 ruleGroupInstance.setPriority(priority);
070
071 return updateMDRRuleGroupInstance(ruleGroupInstance);
072 }
073
074 @Override
075 public MDRRuleGroupInstance addRuleGroupInstance(
076 long groupId, String className, long classPK, long ruleGroupId,
077 ServiceContext serviceContext)
078 throws PortalException, SystemException {
079
080 List<MDRRuleGroupInstance> ruleGroupInstances = getRuleGroupInstances(
081 className, classPK, QueryUtil.ALL_POS, QueryUtil.ALL_POS,
082 new RuleGroupInstancePriorityComparator());
083
084 int priority = 0;
085
086 if (!ruleGroupInstances.isEmpty()) {
087 MDRRuleGroupInstance highestPriorityRuleGroupInstance =
088 ruleGroupInstances.get(ruleGroupInstances.size() - 1);
089
090 priority = highestPriorityRuleGroupInstance.getPriority() + 1;
091 }
092
093 return addRuleGroupInstance(
094 groupId, className, classPK, ruleGroupId, priority, serviceContext);
095 }
096
097 @Override
098 public void deleteGroupRuleGroupInstances(long groupId)
099 throws SystemException {
100
101 List<MDRRuleGroupInstance> ruleGroupInstances =
102 mdrRuleGroupInstancePersistence.findByGroupId(groupId);
103
104 for (MDRRuleGroupInstance ruleGroupInstance : ruleGroupInstances) {
105 mdrRuleGroupInstanceLocalService.deleteRuleGroupInstance(
106 ruleGroupInstance);
107 }
108 }
109
110 @Override
111 public void deleteRuleGroupInstance(long ruleGroupInstanceId)
112 throws SystemException {
113
114 MDRRuleGroupInstance ruleGroupInstance =
115 mdrRuleGroupInstancePersistence.fetchByPrimaryKey(
116 ruleGroupInstanceId);
117
118 mdrRuleGroupInstanceLocalService.deleteRuleGroupInstance(
119 ruleGroupInstance);
120 }
121
122 @Override
123 @SystemEvent(
124 action = SystemEventConstants.ACTION_SKIP,
125 type = SystemEventConstants.TYPE_DELETE)
126 public void deleteRuleGroupInstance(MDRRuleGroupInstance ruleGroupInstance)
127 throws SystemException {
128
129
130
131 mdrRuleGroupInstancePersistence.remove(ruleGroupInstance);
132
133
134
135 mdrActionLocalService.deleteActions(
136 ruleGroupInstance.getRuleGroupInstanceId());
137 }
138
139 @Override
140 public void deleteRuleGroupInstances(long ruleGroupId)
141 throws SystemException {
142
143 List<MDRRuleGroupInstance> ruleGroupInstances =
144 mdrRuleGroupInstancePersistence.findByRuleGroupId(ruleGroupId);
145
146 for (MDRRuleGroupInstance ruleGroupInstance : ruleGroupInstances) {
147 mdrRuleGroupInstanceLocalService.deleteRuleGroupInstance(
148 ruleGroupInstance);
149 }
150 }
151
152 @Override
153 public MDRRuleGroupInstance fetchRuleGroupInstance(long ruleGroupInstanceId)
154 throws SystemException {
155
156 return mdrRuleGroupInstancePersistence.fetchByPrimaryKey(
157 ruleGroupInstanceId);
158 }
159
160 @Override
161 public MDRRuleGroupInstance fetchRuleGroupInstance(
162 String className, long classPK, long ruleGroupId)
163 throws SystemException {
164
165 long classNameId = PortalUtil.getClassNameId(className);
166
167 return mdrRuleGroupInstancePersistence.fetchByC_C_R(
168 classNameId, classPK, ruleGroupId);
169 }
170
171 @Override
172 public MDRRuleGroupInstance getRuleGroupInstance(long ruleGroupInstanceId)
173 throws PortalException, SystemException {
174
175 return mdrRuleGroupInstancePersistence.findByPrimaryKey(
176 ruleGroupInstanceId);
177 }
178
179 @Override
180 public MDRRuleGroupInstance getRuleGroupInstance(
181 String className, long classPK, long ruleGroupId)
182 throws PortalException, SystemException {
183
184 long classNameId = PortalUtil.getClassNameId(className);
185
186 return mdrRuleGroupInstancePersistence.findByC_C_R(
187 classNameId, classPK, ruleGroupId);
188 }
189
190 @Override
191 public List<MDRRuleGroupInstance> getRuleGroupInstances(long ruleGroupId)
192 throws SystemException {
193
194 return mdrRuleGroupInstancePersistence.findByRuleGroupId(ruleGroupId);
195 }
196
197 @Override
198 public List<MDRRuleGroupInstance> getRuleGroupInstances(
199 long ruleGroupId, int start, int end)
200 throws SystemException {
201
202 return mdrRuleGroupInstancePersistence.findByRuleGroupId(
203 ruleGroupId, start, end);
204 }
205
206 @Override
207 public List<MDRRuleGroupInstance> getRuleGroupInstances(
208 String className, long classPK)
209 throws SystemException {
210
211 long classNameId = PortalUtil.getClassNameId(className);
212
213 return mdrRuleGroupInstancePersistence.findByC_C(classNameId, classPK);
214 }
215
216 @Override
217 public List<MDRRuleGroupInstance> getRuleGroupInstances(
218 String className, long classPK, int start, int end,
219 OrderByComparator orderByComparator)
220 throws SystemException {
221
222 long classNameId = PortalUtil.getClassNameId(className);
223
224 return mdrRuleGroupInstancePersistence.findByC_C(
225 classNameId, classPK, start, end, orderByComparator);
226 }
227
228 @Override
229 public int getRuleGroupInstancesCount(long ruleGroupId)
230 throws SystemException {
231
232 return mdrRuleGroupInstancePersistence.countByRuleGroupId(ruleGroupId);
233 }
234
235 @Override
236 public int getRuleGroupInstancesCount(String className, long classPK)
237 throws SystemException {
238
239 long classNameId = PortalUtil.getClassNameId(className);
240
241 return mdrRuleGroupInstancePersistence.countByC_C(classNameId, classPK);
242 }
243
244 @Override
245 public MDRRuleGroupInstance updateRuleGroupInstance(
246 long ruleGroupInstanceId, int priority)
247 throws PortalException, SystemException {
248
249 MDRRuleGroupInstance ruleGroupInstance =
250 mdrRuleGroupInstancePersistence.findByPrimaryKey(
251 ruleGroupInstanceId);
252
253 ruleGroupInstance.setPriority(priority);
254
255 mdrRuleGroupInstancePersistence.update(ruleGroupInstance);
256
257 return ruleGroupInstance;
258 }
259
260 protected void validate(long classNameId, long classPK, long ruleGroupId)
261 throws PortalException, SystemException {
262
263 MDRRuleGroupInstance ruleGroupInstance =
264 mdrRuleGroupInstancePersistence.fetchByC_C_R(
265 classNameId, classPK, ruleGroupId);
266
267 if (ruleGroupInstance != null) {
268 throw new DuplicateRuleGroupInstanceException();
269 }
270
271 mdrRuleGroupLocalService.getMDRRuleGroup(ruleGroupId);
272 }
273
274 }