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