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