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