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