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