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