1
22
23 package com.liferay.portlet.announcements.service.persistence;
24
25 import com.liferay.portal.PortalException;
26 import com.liferay.portal.SystemException;
27 import com.liferay.portal.kernel.dao.orm.QueryPos;
28 import com.liferay.portal.kernel.dao.orm.QueryUtil;
29 import com.liferay.portal.kernel.dao.orm.SQLQuery;
30 import com.liferay.portal.kernel.dao.orm.Session;
31 import com.liferay.portal.kernel.dao.orm.Type;
32 import com.liferay.portal.kernel.util.CalendarUtil;
33 import com.liferay.portal.kernel.util.StringPool;
34 import com.liferay.portal.kernel.util.StringUtil;
35 import com.liferay.portal.service.persistence.impl.BasePersistenceImpl;
36 import com.liferay.portal.util.PortalUtil;
37 import com.liferay.portlet.announcements.model.AnnouncementsEntry;
38 import com.liferay.portlet.announcements.model.impl.AnnouncementsEntryImpl;
39 import com.liferay.portlet.announcements.model.impl.AnnouncementsFlagImpl;
40 import com.liferay.util.dao.orm.CustomSQLUtil;
41
42 import java.sql.Timestamp;
43
44 import java.util.Date;
45 import java.util.Iterator;
46 import java.util.LinkedHashMap;
47 import java.util.List;
48 import java.util.Map;
49
50
58 public class AnnouncementsEntryFinderImpl
59 extends BasePersistenceImpl implements AnnouncementsEntryFinder {
60
61 public static String COUNT_BY_HIDDEN =
62 AnnouncementsEntryFinder.class.getName() + ".countByHidden";
63
64 public static String COUNT_BY_NOT_HIDDEN =
65 AnnouncementsEntryFinder.class.getName() + ".countByNotHidden";
66
67 public static String FIND_BY_DISPLAY_DATE =
68 AnnouncementsEntryFinder.class.getName() + ".findByDisplayDate";
69
70 public static String FIND_BY_HIDDEN =
71 AnnouncementsEntryFinder.class.getName() + ".findByHidden";
72
73 public static String FIND_BY_NOT_HIDDEN =
74 AnnouncementsEntryFinder.class.getName() + ".findByNotHidden";
75
76 public int countByScope(
77 long userId, long classNameId, long[] classPKs,
78 int displayDateMonth, int displayDateDay, int displayDateYear,
79 int displayDateHour, int displayDateMinute, int expirationDateMonth,
80 int expirationDateDay, int expirationDateYear,
81 int expirationDateHour, int expirationDateMinute, boolean alert,
82 int flagValue)
83 throws SystemException {
84
85 Session session = null;
86
87 try {
88 session = openSession();
89
90 String sql = CustomSQLUtil.get(COUNT_BY_HIDDEN);
91
92 if (flagValue == AnnouncementsFlagImpl.NOT_HIDDEN) {
93 sql = CustomSQLUtil.get(COUNT_BY_NOT_HIDDEN);
94 }
95
96 sql = StringUtil.replace(
97 sql, "[$CLASS_PKS$]", getClassPKs(classNameId, classPKs));
98 sql = CustomSQLUtil.replaceAndOperator(sql, true);
99
100 SQLQuery q = session.createSQLQuery(sql);
101
102 q.addScalar(COUNT_COLUMN_NAME, Type.LONG);
103
104 QueryPos qPos = QueryPos.getInstance(q);
105
106 setClassPKs(qPos, classNameId, classPKs);
107
108 setDates(
109 qPos, displayDateMonth, displayDateDay, displayDateYear,
110 displayDateHour, displayDateMinute, expirationDateMonth,
111 expirationDateDay, expirationDateYear, expirationDateHour,
112 expirationDateMinute);
113
114 qPos.add(alert);
115 qPos.add(userId);
116 qPos.add(AnnouncementsFlagImpl.HIDDEN);
117
118 Iterator<Long> itr = q.list().iterator();
119
120 if (itr.hasNext()) {
121 Long count = itr.next();
122
123 if (count != null) {
124 return count.intValue();
125 }
126 }
127
128 return 0;
129 }
130 catch (Exception e) {
131 throw new SystemException(e);
132 }
133 finally {
134 closeSession(session);
135 }
136 }
137
138 public int countByScopes(
139 long userId, LinkedHashMap<Long, long[]> scopes,
140 int displayDateMonth, int displayDateDay, int displayDateYear,
141 int displayDateHour, int displayDateMinute, int expirationDateMonth,
142 int expirationDateDay, int expirationDateYear,
143 int expirationDateHour, int expirationDateMinute, boolean alert,
144 int flagValue)
145 throws SystemException {
146
147 Session session = null;
148
149 try {
150 session = openSession();
151
152 String sql = CustomSQLUtil.get(COUNT_BY_HIDDEN);
153
154 if (flagValue == AnnouncementsFlagImpl.NOT_HIDDEN) {
155 sql = CustomSQLUtil.get(COUNT_BY_NOT_HIDDEN);
156 }
157
158 sql = StringUtil.replace(sql, "[$CLASS_PKS$]", getClassPKs(scopes));
159 sql = CustomSQLUtil.replaceAndOperator(sql, true);
160
161 SQLQuery q = session.createSQLQuery(sql);
162
163 q.addScalar(COUNT_COLUMN_NAME, Type.LONG);
164
165 QueryPos qPos = QueryPos.getInstance(q);
166
167 setClassPKs(qPos, scopes);
168
169 setDates(
170 qPos, displayDateMonth, displayDateDay, displayDateYear,
171 displayDateHour, displayDateMinute, expirationDateMonth,
172 expirationDateDay, expirationDateYear, expirationDateHour,
173 expirationDateMinute);
174
175 qPos.add(alert);
176 qPos.add(userId);
177 qPos.add(AnnouncementsFlagImpl.HIDDEN);
178
179 Iterator<Long> itr = q.list().iterator();
180
181 if (itr.hasNext()) {
182 Long count = itr.next();
183
184 if (count != null) {
185 return count.intValue();
186 }
187 }
188
189 return 0;
190 }
191 catch (Exception e) {
192 throw new SystemException(e);
193 }
194 finally {
195 closeSession(session);
196 }
197 }
198
199 public List<AnnouncementsEntry> findByDisplayDate(
200 Date displayDateLT, Date displayDateGT)
201 throws SystemException {
202
203 Timestamp displayDateLT_TS = CalendarUtil.getTimestamp(displayDateLT);
204 Timestamp displayDateGT_TS = CalendarUtil.getTimestamp(displayDateGT);
205
206 Session session = null;
207
208 try {
209 session = openSession();
210
211 String sql = CustomSQLUtil.get(FIND_BY_DISPLAY_DATE);
212
213 SQLQuery q = session.createSQLQuery(sql);
214
215 q.addEntity("AnnouncementsEntry", AnnouncementsEntryImpl.class);
216
217 QueryPos qPos = QueryPos.getInstance(q);
218
219 qPos.add(displayDateGT_TS);
220 qPos.add(displayDateLT_TS);
221
222 return q.list();
223 }
224 catch (Exception e) {
225 throw new SystemException(e);
226 }
227 finally {
228 closeSession(session);
229 }
230 }
231
232 public List<AnnouncementsEntry> findByScope(
233 long userId, long classNameId, long[] classPKs,
234 int displayDateMonth, int displayDateDay, int displayDateYear,
235 int displayDateHour, int displayDateMinute, int expirationDateMonth,
236 int expirationDateDay, int expirationDateYear,
237 int expirationDateHour, int expirationDateMinute, boolean alert,
238 int flagValue, int start, int end)
239 throws SystemException {
240
241 Session session = null;
242
243 try {
244 session = openSession();
245
246 String sql = CustomSQLUtil.get(FIND_BY_HIDDEN);
247
248 if (flagValue == AnnouncementsFlagImpl.NOT_HIDDEN) {
249 sql = CustomSQLUtil.get(FIND_BY_NOT_HIDDEN);
250 }
251
252 sql = StringUtil.replace(
253 sql, "[$CLASS_PKS$]", getClassPKs(classNameId, classPKs));
254 sql = CustomSQLUtil.replaceAndOperator(sql, true);
255
256 SQLQuery q = session.createSQLQuery(sql);
257
258 q.addEntity("AnnouncementsEntry", AnnouncementsEntryImpl.class);
259
260 QueryPos qPos = QueryPos.getInstance(q);
261
262 setClassPKs(qPos, classNameId, classPKs);
263
264 setDates(
265 qPos, displayDateMonth, displayDateDay, displayDateYear,
266 displayDateHour, displayDateMinute, expirationDateMonth,
267 expirationDateDay, expirationDateYear, expirationDateHour,
268 expirationDateMinute);
269
270 qPos.add(alert);
271 qPos.add(userId);
272 qPos.add(AnnouncementsFlagImpl.HIDDEN);
273
274 return (List<AnnouncementsEntry>)QueryUtil.list(
275 q, getDialect(), start, end);
276 }
277 catch (Exception e) {
278 throw new SystemException(e);
279 }
280 finally {
281 closeSession(session);
282 }
283 }
284
285 public List<AnnouncementsEntry> findByScopes(
286 long userId, LinkedHashMap<Long, long[]> scopes,
287 int displayDateMonth, int displayDateDay, int displayDateYear,
288 int displayDateHour, int displayDateMinute, int expirationDateMonth,
289 int expirationDateDay, int expirationDateYear,
290 int expirationDateHour, int expirationDateMinute, boolean alert,
291 int flagValue, int start, int end)
292 throws SystemException {
293
294 Session session = null;
295
296 try {
297 session = openSession();
298
299 String sql = CustomSQLUtil.get(FIND_BY_HIDDEN);
300
301 if (flagValue == AnnouncementsFlagImpl.NOT_HIDDEN) {
302 sql = CustomSQLUtil.get(FIND_BY_NOT_HIDDEN);
303 }
304
305 sql = StringUtil.replace(sql, "[$CLASS_PKS$]", getClassPKs(scopes));
306 sql = CustomSQLUtil.replaceAndOperator(sql, true);
307
308 SQLQuery q = session.createSQLQuery(sql);
309
310 q.addEntity("AnnouncementsEntry", AnnouncementsEntryImpl.class);
311
312 QueryPos qPos = QueryPos.getInstance(q);
313
314 setClassPKs(qPos, scopes);
315
316 setDates(
317 qPos, displayDateMonth, displayDateDay, displayDateYear,
318 displayDateHour, displayDateMinute, expirationDateMonth,
319 expirationDateDay, expirationDateYear, expirationDateHour,
320 expirationDateMinute);
321
322 qPos.add(alert);
323 qPos.add(userId);
324 qPos.add(AnnouncementsFlagImpl.HIDDEN);
325
326 return (List<AnnouncementsEntry>)QueryUtil.list(
327 q, getDialect(), start, end);
328 }
329 catch (Exception e) {
330 throw new SystemException(e);
331 }
332 finally {
333 closeSession(session);
334 }
335 }
336
337 protected String getClassPKs(long classNameId, long[] classPKs) {
338 StringBuilder sb = new StringBuilder();
339
340 sb.append("(AnnouncementsEntry.classNameId = ?) AND (");
341
342 for (int i = 0; i < classPKs.length; i++) {
343 sb.append("(AnnouncementsEntry.classPK = ?)");
344
345 if ((i + 1) < classPKs.length) {
346 sb.append(" OR ");
347 }
348 else {
349 sb.append(")");
350 }
351 }
352
353 return sb.toString();
354 }
355
356 protected String getClassPKs(LinkedHashMap<Long, long[]> scopes) {
357 if (scopes == null) {
358 return StringPool.BLANK;
359 }
360
361 StringBuilder sb = new StringBuilder();
362
363 Iterator<Map.Entry<Long, long[]>> itr = scopes.entrySet().iterator();
364
365 while (itr.hasNext()) {
366 Map.Entry<Long, long[]> entry = itr.next();
367
368 Long classNameId = entry.getKey();
369 long[] classPKs = entry.getValue();
370
371 sb.append("(");
372 sb.append(getClassPKs(classNameId.longValue(), classPKs));
373 sb.append(")");
374
375 if (itr.hasNext()) {
376 sb.append(" OR ");
377 }
378 }
379
380 return sb.toString();
381 }
382
383 protected void setClassPKs(
384 QueryPos qPos, long classNameId, long[] classPKs) {
385
386 qPos.add(classNameId);
387
388 for (int i = 0; i < classPKs.length; i++) {
389 qPos.add(classPKs[i]);
390 }
391 }
392
393 protected void setClassPKs(
394 QueryPos qPos, LinkedHashMap<Long, long[]> scopes) {
395
396 if (scopes == null) {
397 return;
398 }
399
400 Iterator<Map.Entry<Long, long[]>> itr = scopes.entrySet().iterator();
401
402 while (itr.hasNext()) {
403 Map.Entry<Long, long[]> entry = itr.next();
404
405 Long classNameId = entry.getKey();
406 long[] classPKs = entry.getValue();
407
408 setClassPKs(qPos, classNameId.longValue(), classPKs);
409 }
410 }
411
412 protected void setDates(
413 QueryPos qPos, int displayDateMonth, int displayDateDay,
414 int displayDateYear, int displayDateHour, int displayDateMinute,
415 int expirationDateMonth, int expirationDateDay, int expirationDateYear,
416 int expirationDateHour, int expirationDateMinute) {
417
418 Date displayDate = null;
419
420 try {
421 displayDate = PortalUtil.getDate(
422 displayDateMonth, displayDateDay, displayDateYear,
423 displayDateHour, displayDateMinute, new PortalException());
424 }
425 catch (PortalException pe) {
426 displayDate = new Date();
427 }
428
429 Timestamp displayDateTS = CalendarUtil.getTimestamp(displayDate);
430
431 Date expirationDate = null;
432
433 try {
434 expirationDate = PortalUtil.getDate(
435 expirationDateMonth, expirationDateDay, expirationDateYear,
436 expirationDateHour, expirationDateMinute,
437 new PortalException());
438 }
439 catch (PortalException pe) {
440 expirationDate = new Date();
441 }
442
443 Timestamp expirationDateTS = CalendarUtil.getTimestamp(expirationDate);
444
445 qPos.add(displayDateTS);
446 qPos.add(displayDateTS);
447 qPos.add(expirationDateTS);
448 qPos.add(expirationDateTS);
449 }
450
451 }