1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * This library is free software; you can redistribute it and/or modify it under
5    * the terms of the GNU Lesser General Public License as published by the Free
6    * Software Foundation; either version 2.1 of the License, or (at your option)
7    * any later version.
8    *
9    * This library is distributed in the hope that it will be useful, but WITHOUT
10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11   * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12   * details.
13   */
14  
15  package com.liferay.portlet.announcements.service.persistence;
16  
17  import com.liferay.portal.NoSuchModelException;
18  import com.liferay.portal.kernel.annotation.BeanReference;
19  import com.liferay.portal.kernel.cache.CacheRegistry;
20  import com.liferay.portal.kernel.dao.orm.DynamicQuery;
21  import com.liferay.portal.kernel.dao.orm.EntityCacheUtil;
22  import com.liferay.portal.kernel.dao.orm.FinderCacheUtil;
23  import com.liferay.portal.kernel.dao.orm.FinderPath;
24  import com.liferay.portal.kernel.dao.orm.Query;
25  import com.liferay.portal.kernel.dao.orm.QueryPos;
26  import com.liferay.portal.kernel.dao.orm.QueryUtil;
27  import com.liferay.portal.kernel.dao.orm.Session;
28  import com.liferay.portal.kernel.exception.SystemException;
29  import com.liferay.portal.kernel.log.Log;
30  import com.liferay.portal.kernel.log.LogFactoryUtil;
31  import com.liferay.portal.kernel.util.GetterUtil;
32  import com.liferay.portal.kernel.util.OrderByComparator;
33  import com.liferay.portal.kernel.util.StringBundler;
34  import com.liferay.portal.kernel.util.StringPool;
35  import com.liferay.portal.kernel.util.StringUtil;
36  import com.liferay.portal.model.ModelListener;
37  import com.liferay.portal.service.persistence.BatchSessionUtil;
38  import com.liferay.portal.service.persistence.impl.BasePersistenceImpl;
39  
40  import com.liferay.portlet.announcements.NoSuchFlagException;
41  import com.liferay.portlet.announcements.model.AnnouncementsFlag;
42  import com.liferay.portlet.announcements.model.impl.AnnouncementsFlagImpl;
43  import com.liferay.portlet.announcements.model.impl.AnnouncementsFlagModelImpl;
44  
45  import java.io.Serializable;
46  
47  import java.util.ArrayList;
48  import java.util.Collections;
49  import java.util.List;
50  
51  /**
52   * <a href="AnnouncementsFlagPersistenceImpl.java.html"><b><i>View Source</i></b></a>
53   *
54   * <p>
55   * ServiceBuilder generated this class. Modifications in this class will be
56   * overwritten the next time is generated.
57   * </p>
58   *
59   * @author    Brian Wing Shun Chan
60   * @see       AnnouncementsFlagPersistence
61   * @see       AnnouncementsFlagUtil
62   * @generated
63   */
64  public class AnnouncementsFlagPersistenceImpl extends BasePersistenceImpl<AnnouncementsFlag>
65      implements AnnouncementsFlagPersistence {
66      public static final String FINDER_CLASS_NAME_ENTITY = AnnouncementsFlagImpl.class.getName();
67      public static final String FINDER_CLASS_NAME_LIST = FINDER_CLASS_NAME_ENTITY +
68          ".List";
69      public static final FinderPath FINDER_PATH_FIND_BY_ENTRYID = new FinderPath(AnnouncementsFlagModelImpl.ENTITY_CACHE_ENABLED,
70              AnnouncementsFlagModelImpl.FINDER_CACHE_ENABLED,
71              FINDER_CLASS_NAME_LIST, "findByEntryId",
72              new String[] { Long.class.getName() });
73      public static final FinderPath FINDER_PATH_FIND_BY_OBC_ENTRYID = new FinderPath(AnnouncementsFlagModelImpl.ENTITY_CACHE_ENABLED,
74              AnnouncementsFlagModelImpl.FINDER_CACHE_ENABLED,
75              FINDER_CLASS_NAME_LIST, "findByEntryId",
76              new String[] {
77                  Long.class.getName(),
78                  
79              "java.lang.Integer", "java.lang.Integer",
80                  "com.liferay.portal.kernel.util.OrderByComparator"
81              });
82      public static final FinderPath FINDER_PATH_COUNT_BY_ENTRYID = new FinderPath(AnnouncementsFlagModelImpl.ENTITY_CACHE_ENABLED,
83              AnnouncementsFlagModelImpl.FINDER_CACHE_ENABLED,
84              FINDER_CLASS_NAME_LIST, "countByEntryId",
85              new String[] { Long.class.getName() });
86      public static final FinderPath FINDER_PATH_FETCH_BY_U_E_V = new FinderPath(AnnouncementsFlagModelImpl.ENTITY_CACHE_ENABLED,
87              AnnouncementsFlagModelImpl.FINDER_CACHE_ENABLED,
88              FINDER_CLASS_NAME_ENTITY, "fetchByU_E_V",
89              new String[] {
90                  Long.class.getName(), Long.class.getName(),
91                  Integer.class.getName()
92              });
93      public static final FinderPath FINDER_PATH_COUNT_BY_U_E_V = new FinderPath(AnnouncementsFlagModelImpl.ENTITY_CACHE_ENABLED,
94              AnnouncementsFlagModelImpl.FINDER_CACHE_ENABLED,
95              FINDER_CLASS_NAME_LIST, "countByU_E_V",
96              new String[] {
97                  Long.class.getName(), Long.class.getName(),
98                  Integer.class.getName()
99              });
100     public static final FinderPath FINDER_PATH_FIND_ALL = new FinderPath(AnnouncementsFlagModelImpl.ENTITY_CACHE_ENABLED,
101             AnnouncementsFlagModelImpl.FINDER_CACHE_ENABLED,
102             FINDER_CLASS_NAME_LIST, "findAll", new String[0]);
103     public static final FinderPath FINDER_PATH_COUNT_ALL = new FinderPath(AnnouncementsFlagModelImpl.ENTITY_CACHE_ENABLED,
104             AnnouncementsFlagModelImpl.FINDER_CACHE_ENABLED,
105             FINDER_CLASS_NAME_LIST, "countAll", new String[0]);
106 
107     public void cacheResult(AnnouncementsFlag announcementsFlag) {
108         EntityCacheUtil.putResult(AnnouncementsFlagModelImpl.ENTITY_CACHE_ENABLED,
109             AnnouncementsFlagImpl.class, announcementsFlag.getPrimaryKey(),
110             announcementsFlag);
111 
112         FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_U_E_V,
113             new Object[] {
114                 new Long(announcementsFlag.getUserId()),
115                 new Long(announcementsFlag.getEntryId()),
116                 new Integer(announcementsFlag.getValue())
117             }, announcementsFlag);
118     }
119 
120     public void cacheResult(List<AnnouncementsFlag> announcementsFlags) {
121         for (AnnouncementsFlag announcementsFlag : announcementsFlags) {
122             if (EntityCacheUtil.getResult(
123                         AnnouncementsFlagModelImpl.ENTITY_CACHE_ENABLED,
124                         AnnouncementsFlagImpl.class,
125                         announcementsFlag.getPrimaryKey(), this) == null) {
126                 cacheResult(announcementsFlag);
127             }
128         }
129     }
130 
131     public void clearCache() {
132         CacheRegistry.clear(AnnouncementsFlagImpl.class.getName());
133         EntityCacheUtil.clearCache(AnnouncementsFlagImpl.class.getName());
134         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_ENTITY);
135         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
136     }
137 
138     public AnnouncementsFlag create(long flagId) {
139         AnnouncementsFlag announcementsFlag = new AnnouncementsFlagImpl();
140 
141         announcementsFlag.setNew(true);
142         announcementsFlag.setPrimaryKey(flagId);
143 
144         return announcementsFlag;
145     }
146 
147     public AnnouncementsFlag remove(Serializable primaryKey)
148         throws NoSuchModelException, SystemException {
149         return remove(((Long)primaryKey).longValue());
150     }
151 
152     public AnnouncementsFlag remove(long flagId)
153         throws NoSuchFlagException, SystemException {
154         Session session = null;
155 
156         try {
157             session = openSession();
158 
159             AnnouncementsFlag announcementsFlag = (AnnouncementsFlag)session.get(AnnouncementsFlagImpl.class,
160                     new Long(flagId));
161 
162             if (announcementsFlag == null) {
163                 if (_log.isWarnEnabled()) {
164                     _log.warn(_NO_SUCH_ENTITY_WITH_PRIMARY_KEY + flagId);
165                 }
166 
167                 throw new NoSuchFlagException(_NO_SUCH_ENTITY_WITH_PRIMARY_KEY +
168                     flagId);
169             }
170 
171             return remove(announcementsFlag);
172         }
173         catch (NoSuchFlagException nsee) {
174             throw nsee;
175         }
176         catch (Exception e) {
177             throw processException(e);
178         }
179         finally {
180             closeSession(session);
181         }
182     }
183 
184     public AnnouncementsFlag remove(AnnouncementsFlag announcementsFlag)
185         throws SystemException {
186         for (ModelListener<AnnouncementsFlag> listener : listeners) {
187             listener.onBeforeRemove(announcementsFlag);
188         }
189 
190         announcementsFlag = removeImpl(announcementsFlag);
191 
192         for (ModelListener<AnnouncementsFlag> listener : listeners) {
193             listener.onAfterRemove(announcementsFlag);
194         }
195 
196         return announcementsFlag;
197     }
198 
199     protected AnnouncementsFlag removeImpl(AnnouncementsFlag announcementsFlag)
200         throws SystemException {
201         announcementsFlag = toUnwrappedModel(announcementsFlag);
202 
203         Session session = null;
204 
205         try {
206             session = openSession();
207 
208             if (announcementsFlag.isCachedModel() ||
209                     BatchSessionUtil.isEnabled()) {
210                 Object staleObject = session.get(AnnouncementsFlagImpl.class,
211                         announcementsFlag.getPrimaryKeyObj());
212 
213                 if (staleObject != null) {
214                     session.evict(staleObject);
215                 }
216             }
217 
218             session.delete(announcementsFlag);
219 
220             session.flush();
221         }
222         catch (Exception e) {
223             throw processException(e);
224         }
225         finally {
226             closeSession(session);
227         }
228 
229         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
230 
231         AnnouncementsFlagModelImpl announcementsFlagModelImpl = (AnnouncementsFlagModelImpl)announcementsFlag;
232 
233         FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_U_E_V,
234             new Object[] {
235                 new Long(announcementsFlagModelImpl.getOriginalUserId()),
236                 new Long(announcementsFlagModelImpl.getOriginalEntryId()),
237                 new Integer(announcementsFlagModelImpl.getOriginalValue())
238             });
239 
240         EntityCacheUtil.removeResult(AnnouncementsFlagModelImpl.ENTITY_CACHE_ENABLED,
241             AnnouncementsFlagImpl.class, announcementsFlag.getPrimaryKey());
242 
243         return announcementsFlag;
244     }
245 
246     public AnnouncementsFlag updateImpl(
247         com.liferay.portlet.announcements.model.AnnouncementsFlag announcementsFlag,
248         boolean merge) throws SystemException {
249         announcementsFlag = toUnwrappedModel(announcementsFlag);
250 
251         boolean isNew = announcementsFlag.isNew();
252 
253         AnnouncementsFlagModelImpl announcementsFlagModelImpl = (AnnouncementsFlagModelImpl)announcementsFlag;
254 
255         Session session = null;
256 
257         try {
258             session = openSession();
259 
260             BatchSessionUtil.update(session, announcementsFlag, merge);
261 
262             announcementsFlag.setNew(false);
263         }
264         catch (Exception e) {
265             throw processException(e);
266         }
267         finally {
268             closeSession(session);
269         }
270 
271         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
272 
273         EntityCacheUtil.putResult(AnnouncementsFlagModelImpl.ENTITY_CACHE_ENABLED,
274             AnnouncementsFlagImpl.class, announcementsFlag.getPrimaryKey(),
275             announcementsFlag);
276 
277         if (!isNew &&
278                 ((announcementsFlag.getUserId() != announcementsFlagModelImpl.getOriginalUserId()) ||
279                 (announcementsFlag.getEntryId() != announcementsFlagModelImpl.getOriginalEntryId()) ||
280                 (announcementsFlag.getValue() != announcementsFlagModelImpl.getOriginalValue()))) {
281             FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_U_E_V,
282                 new Object[] {
283                     new Long(announcementsFlagModelImpl.getOriginalUserId()),
284                     new Long(announcementsFlagModelImpl.getOriginalEntryId()),
285                     new Integer(announcementsFlagModelImpl.getOriginalValue())
286                 });
287         }
288 
289         if (isNew ||
290                 ((announcementsFlag.getUserId() != announcementsFlagModelImpl.getOriginalUserId()) ||
291                 (announcementsFlag.getEntryId() != announcementsFlagModelImpl.getOriginalEntryId()) ||
292                 (announcementsFlag.getValue() != announcementsFlagModelImpl.getOriginalValue()))) {
293             FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_U_E_V,
294                 new Object[] {
295                     new Long(announcementsFlag.getUserId()),
296                     new Long(announcementsFlag.getEntryId()),
297                     new Integer(announcementsFlag.getValue())
298                 }, announcementsFlag);
299         }
300 
301         return announcementsFlag;
302     }
303 
304     protected AnnouncementsFlag toUnwrappedModel(
305         AnnouncementsFlag announcementsFlag) {
306         if (announcementsFlag instanceof AnnouncementsFlagImpl) {
307             return announcementsFlag;
308         }
309 
310         AnnouncementsFlagImpl announcementsFlagImpl = new AnnouncementsFlagImpl();
311 
312         announcementsFlagImpl.setNew(announcementsFlag.isNew());
313         announcementsFlagImpl.setPrimaryKey(announcementsFlag.getPrimaryKey());
314 
315         announcementsFlagImpl.setFlagId(announcementsFlag.getFlagId());
316         announcementsFlagImpl.setUserId(announcementsFlag.getUserId());
317         announcementsFlagImpl.setCreateDate(announcementsFlag.getCreateDate());
318         announcementsFlagImpl.setEntryId(announcementsFlag.getEntryId());
319         announcementsFlagImpl.setValue(announcementsFlag.getValue());
320 
321         return announcementsFlagImpl;
322     }
323 
324     public AnnouncementsFlag findByPrimaryKey(Serializable primaryKey)
325         throws NoSuchModelException, SystemException {
326         return findByPrimaryKey(((Long)primaryKey).longValue());
327     }
328 
329     public AnnouncementsFlag findByPrimaryKey(long flagId)
330         throws NoSuchFlagException, SystemException {
331         AnnouncementsFlag announcementsFlag = fetchByPrimaryKey(flagId);
332 
333         if (announcementsFlag == null) {
334             if (_log.isWarnEnabled()) {
335                 _log.warn(_NO_SUCH_ENTITY_WITH_PRIMARY_KEY + flagId);
336             }
337 
338             throw new NoSuchFlagException(_NO_SUCH_ENTITY_WITH_PRIMARY_KEY +
339                 flagId);
340         }
341 
342         return announcementsFlag;
343     }
344 
345     public AnnouncementsFlag fetchByPrimaryKey(Serializable primaryKey)
346         throws SystemException {
347         return fetchByPrimaryKey(((Long)primaryKey).longValue());
348     }
349 
350     public AnnouncementsFlag fetchByPrimaryKey(long flagId)
351         throws SystemException {
352         AnnouncementsFlag announcementsFlag = (AnnouncementsFlag)EntityCacheUtil.getResult(AnnouncementsFlagModelImpl.ENTITY_CACHE_ENABLED,
353                 AnnouncementsFlagImpl.class, flagId, this);
354 
355         if (announcementsFlag == null) {
356             Session session = null;
357 
358             try {
359                 session = openSession();
360 
361                 announcementsFlag = (AnnouncementsFlag)session.get(AnnouncementsFlagImpl.class,
362                         new Long(flagId));
363             }
364             catch (Exception e) {
365                 throw processException(e);
366             }
367             finally {
368                 if (announcementsFlag != null) {
369                     cacheResult(announcementsFlag);
370                 }
371 
372                 closeSession(session);
373             }
374         }
375 
376         return announcementsFlag;
377     }
378 
379     public List<AnnouncementsFlag> findByEntryId(long entryId)
380         throws SystemException {
381         Object[] finderArgs = new Object[] { new Long(entryId) };
382 
383         List<AnnouncementsFlag> list = (List<AnnouncementsFlag>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_ENTRYID,
384                 finderArgs, this);
385 
386         if (list == null) {
387             Session session = null;
388 
389             try {
390                 session = openSession();
391 
392                 StringBundler query = new StringBundler(3);
393 
394                 query.append(_SQL_SELECT_ANNOUNCEMENTSFLAG_WHERE);
395 
396                 query.append(_FINDER_COLUMN_ENTRYID_ENTRYID_2);
397 
398                 query.append(AnnouncementsFlagModelImpl.ORDER_BY_JPQL);
399 
400                 String sql = query.toString();
401 
402                 Query q = session.createQuery(sql);
403 
404                 QueryPos qPos = QueryPos.getInstance(q);
405 
406                 qPos.add(entryId);
407 
408                 list = q.list();
409             }
410             catch (Exception e) {
411                 throw processException(e);
412             }
413             finally {
414                 if (list == null) {
415                     list = new ArrayList<AnnouncementsFlag>();
416                 }
417 
418                 cacheResult(list);
419 
420                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_ENTRYID,
421                     finderArgs, list);
422 
423                 closeSession(session);
424             }
425         }
426 
427         return list;
428     }
429 
430     public List<AnnouncementsFlag> findByEntryId(long entryId, int start,
431         int end) throws SystemException {
432         return findByEntryId(entryId, start, end, null);
433     }
434 
435     public List<AnnouncementsFlag> findByEntryId(long entryId, int start,
436         int end, OrderByComparator obc) throws SystemException {
437         Object[] finderArgs = new Object[] {
438                 new Long(entryId),
439                 
440                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
441             };
442 
443         List<AnnouncementsFlag> list = (List<AnnouncementsFlag>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_ENTRYID,
444                 finderArgs, this);
445 
446         if (list == null) {
447             Session session = null;
448 
449             try {
450                 session = openSession();
451 
452                 StringBundler query = null;
453 
454                 if (obc != null) {
455                     query = new StringBundler(3 +
456                             (obc.getOrderByFields().length * 3));
457                 }
458                 else {
459                     query = new StringBundler(3);
460                 }
461 
462                 query.append(_SQL_SELECT_ANNOUNCEMENTSFLAG_WHERE);
463 
464                 query.append(_FINDER_COLUMN_ENTRYID_ENTRYID_2);
465 
466                 if (obc != null) {
467                     appendOrderByComparator(query, _ORDER_BY_ENTITY_ALIAS, obc);
468                 }
469 
470                 else {
471                     query.append(AnnouncementsFlagModelImpl.ORDER_BY_JPQL);
472                 }
473 
474                 String sql = query.toString();
475 
476                 Query q = session.createQuery(sql);
477 
478                 QueryPos qPos = QueryPos.getInstance(q);
479 
480                 qPos.add(entryId);
481 
482                 list = (List<AnnouncementsFlag>)QueryUtil.list(q, getDialect(),
483                         start, end);
484             }
485             catch (Exception e) {
486                 throw processException(e);
487             }
488             finally {
489                 if (list == null) {
490                     list = new ArrayList<AnnouncementsFlag>();
491                 }
492 
493                 cacheResult(list);
494 
495                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_ENTRYID,
496                     finderArgs, list);
497 
498                 closeSession(session);
499             }
500         }
501 
502         return list;
503     }
504 
505     public AnnouncementsFlag findByEntryId_First(long entryId,
506         OrderByComparator obc) throws NoSuchFlagException, SystemException {
507         List<AnnouncementsFlag> list = findByEntryId(entryId, 0, 1, obc);
508 
509         if (list.isEmpty()) {
510             StringBundler msg = new StringBundler(4);
511 
512             msg.append(_NO_SUCH_ENTITY_WITH_KEY);
513 
514             msg.append("entryId=");
515             msg.append(entryId);
516 
517             msg.append(StringPool.CLOSE_CURLY_BRACE);
518 
519             throw new NoSuchFlagException(msg.toString());
520         }
521         else {
522             return list.get(0);
523         }
524     }
525 
526     public AnnouncementsFlag findByEntryId_Last(long entryId,
527         OrderByComparator obc) throws NoSuchFlagException, SystemException {
528         int count = countByEntryId(entryId);
529 
530         List<AnnouncementsFlag> list = findByEntryId(entryId, count - 1, count,
531                 obc);
532 
533         if (list.isEmpty()) {
534             StringBundler msg = new StringBundler(4);
535 
536             msg.append(_NO_SUCH_ENTITY_WITH_KEY);
537 
538             msg.append("entryId=");
539             msg.append(entryId);
540 
541             msg.append(StringPool.CLOSE_CURLY_BRACE);
542 
543             throw new NoSuchFlagException(msg.toString());
544         }
545         else {
546             return list.get(0);
547         }
548     }
549 
550     public AnnouncementsFlag[] findByEntryId_PrevAndNext(long flagId,
551         long entryId, OrderByComparator obc)
552         throws NoSuchFlagException, SystemException {
553         AnnouncementsFlag announcementsFlag = findByPrimaryKey(flagId);
554 
555         int count = countByEntryId(entryId);
556 
557         Session session = null;
558 
559         try {
560             session = openSession();
561 
562             StringBundler query = null;
563 
564             if (obc != null) {
565                 query = new StringBundler(3 +
566                         (obc.getOrderByFields().length * 3));
567             }
568             else {
569                 query = new StringBundler(3);
570             }
571 
572             query.append(_SQL_SELECT_ANNOUNCEMENTSFLAG_WHERE);
573 
574             query.append(_FINDER_COLUMN_ENTRYID_ENTRYID_2);
575 
576             if (obc != null) {
577                 appendOrderByComparator(query, _ORDER_BY_ENTITY_ALIAS, obc);
578             }
579 
580             else {
581                 query.append(AnnouncementsFlagModelImpl.ORDER_BY_JPQL);
582             }
583 
584             String sql = query.toString();
585 
586             Query q = session.createQuery(sql);
587 
588             QueryPos qPos = QueryPos.getInstance(q);
589 
590             qPos.add(entryId);
591 
592             Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
593                     announcementsFlag);
594 
595             AnnouncementsFlag[] array = new AnnouncementsFlagImpl[3];
596 
597             array[0] = (AnnouncementsFlag)objArray[0];
598             array[1] = (AnnouncementsFlag)objArray[1];
599             array[2] = (AnnouncementsFlag)objArray[2];
600 
601             return array;
602         }
603         catch (Exception e) {
604             throw processException(e);
605         }
606         finally {
607             closeSession(session);
608         }
609     }
610 
611     public AnnouncementsFlag findByU_E_V(long userId, long entryId, int value)
612         throws NoSuchFlagException, SystemException {
613         AnnouncementsFlag announcementsFlag = fetchByU_E_V(userId, entryId,
614                 value);
615 
616         if (announcementsFlag == null) {
617             StringBundler msg = new StringBundler(8);
618 
619             msg.append(_NO_SUCH_ENTITY_WITH_KEY);
620 
621             msg.append("userId=");
622             msg.append(userId);
623 
624             msg.append(", entryId=");
625             msg.append(entryId);
626 
627             msg.append(", value=");
628             msg.append(value);
629 
630             msg.append(StringPool.CLOSE_CURLY_BRACE);
631 
632             if (_log.isWarnEnabled()) {
633                 _log.warn(msg.toString());
634             }
635 
636             throw new NoSuchFlagException(msg.toString());
637         }
638 
639         return announcementsFlag;
640     }
641 
642     public AnnouncementsFlag fetchByU_E_V(long userId, long entryId, int value)
643         throws SystemException {
644         return fetchByU_E_V(userId, entryId, value, true);
645     }
646 
647     public AnnouncementsFlag fetchByU_E_V(long userId, long entryId, int value,
648         boolean retrieveFromCache) throws SystemException {
649         Object[] finderArgs = new Object[] {
650                 new Long(userId), new Long(entryId), new Integer(value)
651             };
652 
653         Object result = null;
654 
655         if (retrieveFromCache) {
656             result = FinderCacheUtil.getResult(FINDER_PATH_FETCH_BY_U_E_V,
657                     finderArgs, this);
658         }
659 
660         if (result == null) {
661             Session session = null;
662 
663             try {
664                 session = openSession();
665 
666                 StringBundler query = new StringBundler(5);
667 
668                 query.append(_SQL_SELECT_ANNOUNCEMENTSFLAG_WHERE);
669 
670                 query.append(_FINDER_COLUMN_U_E_V_USERID_2);
671 
672                 query.append(_FINDER_COLUMN_U_E_V_ENTRYID_2);
673 
674                 query.append(_FINDER_COLUMN_U_E_V_VALUE_2);
675 
676                 query.append(AnnouncementsFlagModelImpl.ORDER_BY_JPQL);
677 
678                 String sql = query.toString();
679 
680                 Query q = session.createQuery(sql);
681 
682                 QueryPos qPos = QueryPos.getInstance(q);
683 
684                 qPos.add(userId);
685 
686                 qPos.add(entryId);
687 
688                 qPos.add(value);
689 
690                 List<AnnouncementsFlag> list = q.list();
691 
692                 result = list;
693 
694                 AnnouncementsFlag announcementsFlag = null;
695 
696                 if (list.isEmpty()) {
697                     FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_U_E_V,
698                         finderArgs, list);
699                 }
700                 else {
701                     announcementsFlag = list.get(0);
702 
703                     cacheResult(announcementsFlag);
704 
705                     if ((announcementsFlag.getUserId() != userId) ||
706                             (announcementsFlag.getEntryId() != entryId) ||
707                             (announcementsFlag.getValue() != value)) {
708                         FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_U_E_V,
709                             finderArgs, announcementsFlag);
710                     }
711                 }
712 
713                 return announcementsFlag;
714             }
715             catch (Exception e) {
716                 throw processException(e);
717             }
718             finally {
719                 if (result == null) {
720                     FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_U_E_V,
721                         finderArgs, new ArrayList<AnnouncementsFlag>());
722                 }
723 
724                 closeSession(session);
725             }
726         }
727         else {
728             if (result instanceof List<?>) {
729                 return null;
730             }
731             else {
732                 return (AnnouncementsFlag)result;
733             }
734         }
735     }
736 
737     public List<Object> findWithDynamicQuery(DynamicQuery dynamicQuery)
738         throws SystemException {
739         Session session = null;
740 
741         try {
742             session = openSession();
743 
744             dynamicQuery.compile(session);
745 
746             return dynamicQuery.list();
747         }
748         catch (Exception e) {
749             throw processException(e);
750         }
751         finally {
752             closeSession(session);
753         }
754     }
755 
756     public List<Object> findWithDynamicQuery(DynamicQuery dynamicQuery,
757         int start, int end) throws SystemException {
758         Session session = null;
759 
760         try {
761             session = openSession();
762 
763             dynamicQuery.setLimit(start, end);
764 
765             dynamicQuery.compile(session);
766 
767             return dynamicQuery.list();
768         }
769         catch (Exception e) {
770             throw processException(e);
771         }
772         finally {
773             closeSession(session);
774         }
775     }
776 
777     public List<AnnouncementsFlag> findAll() throws SystemException {
778         return findAll(QueryUtil.ALL_POS, QueryUtil.ALL_POS, null);
779     }
780 
781     public List<AnnouncementsFlag> findAll(int start, int end)
782         throws SystemException {
783         return findAll(start, end, null);
784     }
785 
786     public List<AnnouncementsFlag> findAll(int start, int end,
787         OrderByComparator obc) throws SystemException {
788         Object[] finderArgs = new Object[] {
789                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
790             };
791 
792         List<AnnouncementsFlag> list = (List<AnnouncementsFlag>)FinderCacheUtil.getResult(FINDER_PATH_FIND_ALL,
793                 finderArgs, this);
794 
795         if (list == null) {
796             Session session = null;
797 
798             try {
799                 session = openSession();
800 
801                 StringBundler query = null;
802                 String sql = null;
803 
804                 if (obc != null) {
805                     query = new StringBundler(2 +
806                             (obc.getOrderByFields().length * 3));
807 
808                     query.append(_SQL_SELECT_ANNOUNCEMENTSFLAG);
809 
810                     appendOrderByComparator(query, _ORDER_BY_ENTITY_ALIAS, obc);
811 
812                     sql = query.toString();
813                 }
814 
815                 else {
816                     sql = _SQL_SELECT_ANNOUNCEMENTSFLAG.concat(AnnouncementsFlagModelImpl.ORDER_BY_JPQL);
817                 }
818 
819                 Query q = session.createQuery(sql);
820 
821                 if (obc == null) {
822                     list = (List<AnnouncementsFlag>)QueryUtil.list(q,
823                             getDialect(), start, end, false);
824 
825                     Collections.sort(list);
826                 }
827                 else {
828                     list = (List<AnnouncementsFlag>)QueryUtil.list(q,
829                             getDialect(), start, end);
830                 }
831             }
832             catch (Exception e) {
833                 throw processException(e);
834             }
835             finally {
836                 if (list == null) {
837                     list = new ArrayList<AnnouncementsFlag>();
838                 }
839 
840                 cacheResult(list);
841 
842                 FinderCacheUtil.putResult(FINDER_PATH_FIND_ALL, finderArgs, list);
843 
844                 closeSession(session);
845             }
846         }
847 
848         return list;
849     }
850 
851     public void removeByEntryId(long entryId) throws SystemException {
852         for (AnnouncementsFlag announcementsFlag : findByEntryId(entryId)) {
853             remove(announcementsFlag);
854         }
855     }
856 
857     public void removeByU_E_V(long userId, long entryId, int value)
858         throws NoSuchFlagException, SystemException {
859         AnnouncementsFlag announcementsFlag = findByU_E_V(userId, entryId, value);
860 
861         remove(announcementsFlag);
862     }
863 
864     public void removeAll() throws SystemException {
865         for (AnnouncementsFlag announcementsFlag : findAll()) {
866             remove(announcementsFlag);
867         }
868     }
869 
870     public int countByEntryId(long entryId) throws SystemException {
871         Object[] finderArgs = new Object[] { new Long(entryId) };
872 
873         Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_ENTRYID,
874                 finderArgs, this);
875 
876         if (count == null) {
877             Session session = null;
878 
879             try {
880                 session = openSession();
881 
882                 StringBundler query = new StringBundler(2);
883 
884                 query.append(_SQL_COUNT_ANNOUNCEMENTSFLAG_WHERE);
885 
886                 query.append(_FINDER_COLUMN_ENTRYID_ENTRYID_2);
887 
888                 String sql = query.toString();
889 
890                 Query q = session.createQuery(sql);
891 
892                 QueryPos qPos = QueryPos.getInstance(q);
893 
894                 qPos.add(entryId);
895 
896                 count = (Long)q.uniqueResult();
897             }
898             catch (Exception e) {
899                 throw processException(e);
900             }
901             finally {
902                 if (count == null) {
903                     count = Long.valueOf(0);
904                 }
905 
906                 FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_ENTRYID,
907                     finderArgs, count);
908 
909                 closeSession(session);
910             }
911         }
912 
913         return count.intValue();
914     }
915 
916     public int countByU_E_V(long userId, long entryId, int value)
917         throws SystemException {
918         Object[] finderArgs = new Object[] {
919                 new Long(userId), new Long(entryId), new Integer(value)
920             };
921 
922         Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_U_E_V,
923                 finderArgs, this);
924 
925         if (count == null) {
926             Session session = null;
927 
928             try {
929                 session = openSession();
930 
931                 StringBundler query = new StringBundler(4);
932 
933                 query.append(_SQL_COUNT_ANNOUNCEMENTSFLAG_WHERE);
934 
935                 query.append(_FINDER_COLUMN_U_E_V_USERID_2);
936 
937                 query.append(_FINDER_COLUMN_U_E_V_ENTRYID_2);
938 
939                 query.append(_FINDER_COLUMN_U_E_V_VALUE_2);
940 
941                 String sql = query.toString();
942 
943                 Query q = session.createQuery(sql);
944 
945                 QueryPos qPos = QueryPos.getInstance(q);
946 
947                 qPos.add(userId);
948 
949                 qPos.add(entryId);
950 
951                 qPos.add(value);
952 
953                 count = (Long)q.uniqueResult();
954             }
955             catch (Exception e) {
956                 throw processException(e);
957             }
958             finally {
959                 if (count == null) {
960                     count = Long.valueOf(0);
961                 }
962 
963                 FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_U_E_V,
964                     finderArgs, count);
965 
966                 closeSession(session);
967             }
968         }
969 
970         return count.intValue();
971     }
972 
973     public int countAll() throws SystemException {
974         Object[] finderArgs = new Object[0];
975 
976         Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_ALL,
977                 finderArgs, this);
978 
979         if (count == null) {
980             Session session = null;
981 
982             try {
983                 session = openSession();
984 
985                 Query q = session.createQuery(_SQL_COUNT_ANNOUNCEMENTSFLAG);
986 
987                 count = (Long)q.uniqueResult();
988             }
989             catch (Exception e) {
990                 throw processException(e);
991             }
992             finally {
993                 if (count == null) {
994                     count = Long.valueOf(0);
995                 }
996 
997                 FinderCacheUtil.putResult(FINDER_PATH_COUNT_ALL, finderArgs,
998                     count);
999 
1000                closeSession(session);
1001            }
1002        }
1003
1004        return count.intValue();
1005    }
1006
1007    public void afterPropertiesSet() {
1008        String[] listenerClassNames = StringUtil.split(GetterUtil.getString(
1009                    com.liferay.portal.util.PropsUtil.get(
1010                        "value.object.listener.com.liferay.portlet.announcements.model.AnnouncementsFlag")));
1011
1012        if (listenerClassNames.length > 0) {
1013            try {
1014                List<ModelListener<AnnouncementsFlag>> listenersList = new ArrayList<ModelListener<AnnouncementsFlag>>();
1015
1016                for (String listenerClassName : listenerClassNames) {
1017                    listenersList.add((ModelListener<AnnouncementsFlag>)Class.forName(
1018                            listenerClassName).newInstance());
1019                }
1020
1021                listeners = listenersList.toArray(new ModelListener[listenersList.size()]);
1022            }
1023            catch (Exception e) {
1024                _log.error(e);
1025            }
1026        }
1027    }
1028
1029    @BeanReference(name = "com.liferay.portlet.announcements.service.persistence.AnnouncementsDeliveryPersistence")
1030    protected com.liferay.portlet.announcements.service.persistence.AnnouncementsDeliveryPersistence announcementsDeliveryPersistence;
1031    @BeanReference(name = "com.liferay.portlet.announcements.service.persistence.AnnouncementsEntryPersistence")
1032    protected com.liferay.portlet.announcements.service.persistence.AnnouncementsEntryPersistence announcementsEntryPersistence;
1033    @BeanReference(name = "com.liferay.portlet.announcements.service.persistence.AnnouncementsFlagPersistence")
1034    protected com.liferay.portlet.announcements.service.persistence.AnnouncementsFlagPersistence announcementsFlagPersistence;
1035    @BeanReference(name = "com.liferay.portal.service.persistence.ResourcePersistence")
1036    protected com.liferay.portal.service.persistence.ResourcePersistence resourcePersistence;
1037    @BeanReference(name = "com.liferay.portal.service.persistence.UserPersistence")
1038    protected com.liferay.portal.service.persistence.UserPersistence userPersistence;
1039    private static final String _SQL_SELECT_ANNOUNCEMENTSFLAG = "SELECT announcementsFlag FROM AnnouncementsFlag announcementsFlag";
1040    private static final String _SQL_SELECT_ANNOUNCEMENTSFLAG_WHERE = "SELECT announcementsFlag FROM AnnouncementsFlag announcementsFlag WHERE ";
1041    private static final String _SQL_COUNT_ANNOUNCEMENTSFLAG = "SELECT COUNT(announcementsFlag) FROM AnnouncementsFlag announcementsFlag";
1042    private static final String _SQL_COUNT_ANNOUNCEMENTSFLAG_WHERE = "SELECT COUNT(announcementsFlag) FROM AnnouncementsFlag announcementsFlag WHERE ";
1043    private static final String _FINDER_COLUMN_ENTRYID_ENTRYID_2 = "announcementsFlag.entryId = ?";
1044    private static final String _FINDER_COLUMN_U_E_V_USERID_2 = "announcementsFlag.userId = ? AND ";
1045    private static final String _FINDER_COLUMN_U_E_V_ENTRYID_2 = "announcementsFlag.entryId = ? AND ";
1046    private static final String _FINDER_COLUMN_U_E_V_VALUE_2 = "announcementsFlag.value = ?";
1047    private static final String _ORDER_BY_ENTITY_ALIAS = "announcementsFlag.";
1048    private static final String _NO_SUCH_ENTITY_WITH_PRIMARY_KEY = "No AnnouncementsFlag exists with the primary key ";
1049    private static final String _NO_SUCH_ENTITY_WITH_KEY = "No AnnouncementsFlag exists with the key {";
1050    private static Log _log = LogFactoryUtil.getLog(AnnouncementsFlagPersistenceImpl.class);
1051}