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, false);
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 deleteRuleGroupInstance(long ruleGroupInstanceId)
094 throws SystemException {
095
096 MDRRuleGroupInstance ruleGroupInstance =
097 mdrRuleGroupInstancePersistence.fetchByPrimaryKey(
098 ruleGroupInstanceId);
099
100 deleteRuleGroupInstance(ruleGroupInstance);
101 }
102
103 public void deleteRuleGroupInstance(MDRRuleGroupInstance ruleGroupInstance)
104 throws SystemException {
105
106
107
108 mdrRuleGroupInstancePersistence.remove(ruleGroupInstance);
109
110
111
112 mdrActionLocalService.deleteActions(
113 ruleGroupInstance.getRuleGroupInstanceId());
114 }
115
116 public void deleteRuleGroupInstances(long ruleGroupId)
117 throws SystemException {
118
119 List<MDRRuleGroupInstance> ruleGroupInstances =
120 mdrRuleGroupInstancePersistence.findByRuleGroupId(ruleGroupId);
121
122 for (MDRRuleGroupInstance ruleGroupInstance : ruleGroupInstances) {
123 deleteRuleGroupInstance(ruleGroupInstance);
124 }
125 }
126
127 public MDRRuleGroupInstance fetchRuleGroupInstance(long ruleGroupInstanceId)
128 throws SystemException {
129
130 return mdrRuleGroupInstancePersistence.fetchByPrimaryKey(
131 ruleGroupInstanceId);
132 }
133
134 public MDRRuleGroupInstance fetchRuleGroupInstance(
135 String className, long classPK, long ruleGroupId)
136 throws SystemException {
137
138 long classNameId = PortalUtil.getClassNameId(className);
139
140 return mdrRuleGroupInstancePersistence.fetchByC_C_R(
141 classNameId, classPK, ruleGroupId);
142 }
143
144 public MDRRuleGroupInstance getRuleGroupInstance(long ruleGroupInstanceId)
145 throws PortalException, SystemException {
146
147 return mdrRuleGroupInstancePersistence.findByPrimaryKey(
148 ruleGroupInstanceId);
149 }
150
151 public MDRRuleGroupInstance getRuleGroupInstance(
152 String className, long classPK, long ruleGroupId)
153 throws PortalException, SystemException {
154
155 long classNameId = PortalUtil.getClassNameId(className);
156
157 return mdrRuleGroupInstancePersistence.findByC_C_R(
158 classNameId, classPK, ruleGroupId);
159 }
160
161 public List<MDRRuleGroupInstance> getRuleGroupInstances(long ruleGroupId)
162 throws SystemException {
163
164 return mdrRuleGroupInstancePersistence.findByRuleGroupId(ruleGroupId);
165 }
166
167 public List<MDRRuleGroupInstance> getRuleGroupInstances(
168 long ruleGroupId, int start, int end)
169 throws SystemException {
170
171 return mdrRuleGroupInstancePersistence.findByRuleGroupId(
172 ruleGroupId, start, end);
173 }
174
175 public List<MDRRuleGroupInstance> getRuleGroupInstances(
176 String className, long classPK)
177 throws SystemException {
178
179 long classNameId = PortalUtil.getClassNameId(className);
180
181 return mdrRuleGroupInstancePersistence.findByC_C(classNameId, classPK);
182 }
183
184 public List<MDRRuleGroupInstance> getRuleGroupInstances(
185 String className, long classPK, int start, int end,
186 OrderByComparator orderByComparator)
187 throws SystemException {
188
189 long classNameId = PortalUtil.getClassNameId(className);
190
191 return mdrRuleGroupInstancePersistence.findByC_C(
192 classNameId, classPK, start, end, orderByComparator);
193 }
194
195 public int getRuleGroupInstancesCount(long ruleGroupId)
196 throws SystemException {
197
198 return mdrRuleGroupInstancePersistence.countByRuleGroupId(ruleGroupId);
199 }
200
201 public int getRuleGroupInstancesCount(String className, long classPK)
202 throws SystemException {
203
204 long classNameId = PortalUtil.getClassNameId(className);
205
206 return mdrRuleGroupInstancePersistence.countByC_C(classNameId, classPK);
207 }
208
209 public MDRRuleGroupInstance updateRuleGroupInstance(
210 long ruleGroupInstanceId, int priority)
211 throws PortalException, SystemException {
212
213 MDRRuleGroupInstance ruleGroupInstance =
214 mdrRuleGroupInstancePersistence.findByPrimaryKey(
215 ruleGroupInstanceId);
216
217 ruleGroupInstance.setPriority(priority);
218
219 mdrRuleGroupInstancePersistence.update(ruleGroupInstance, false);
220
221 return ruleGroupInstance;
222 }
223
224 protected void validate(long classNameId, long classPK, long ruleGroupId)
225 throws PortalException, SystemException {
226
227 MDRRuleGroupInstance ruleGroupInstance =
228 mdrRuleGroupInstancePersistence.fetchByC_C_R(
229 classNameId, classPK, ruleGroupId);
230
231 if (ruleGroupInstance != null) {
232 throw new DuplicateRuleGroupInstanceException();
233 }
234
235 mdrRuleGroupLocalService.getMDRRuleGroup(ruleGroupId);
236 }
237
238 }