1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * The contents of this file are subject to the terms of the Liferay Enterprise
5    * Subscription License ("License"). You may not use this file except in
6    * compliance with the License. You can obtain a copy of the License by
7    * contacting Liferay, Inc. See the License for the specific language governing
8    * permissions and limitations under the License, including but not limited to
9    * distribution rights of the Software.
10   *
11   *
12   * 
13   */
14  
15  package com.liferay.portlet.announcements.service.persistence;
16  
17  import com.liferay.portal.NoSuchModelException;
18  import com.liferay.portal.SystemException;
19  import com.liferay.portal.kernel.annotation.BeanReference;
20  import com.liferay.portal.kernel.cache.CacheRegistry;
21  import com.liferay.portal.kernel.dao.orm.DynamicQuery;
22  import com.liferay.portal.kernel.dao.orm.EntityCacheUtil;
23  import com.liferay.portal.kernel.dao.orm.FinderCacheUtil;
24  import com.liferay.portal.kernel.dao.orm.FinderPath;
25  import com.liferay.portal.kernel.dao.orm.Query;
26  import com.liferay.portal.kernel.dao.orm.QueryPos;
27  import com.liferay.portal.kernel.dao.orm.QueryUtil;
28  import com.liferay.portal.kernel.dao.orm.Session;
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     /**
247      * @deprecated Use {@link BasePersistence#update(com.liferay.portal.model.BaseModel, boolean)}.
248      */
249     public AnnouncementsFlag update(AnnouncementsFlag announcementsFlag)
250         throws SystemException {
251         if (_log.isWarnEnabled()) {
252             _log.warn(
253                 "Using the deprecated update(AnnouncementsFlag announcementsFlag) method. Use update(AnnouncementsFlag announcementsFlag, boolean merge) instead.");
254         }
255 
256         return update(announcementsFlag, false);
257     }
258 
259     public AnnouncementsFlag updateImpl(
260         com.liferay.portlet.announcements.model.AnnouncementsFlag announcementsFlag,
261         boolean merge) throws SystemException {
262         announcementsFlag = toUnwrappedModel(announcementsFlag);
263 
264         boolean isNew = announcementsFlag.isNew();
265 
266         AnnouncementsFlagModelImpl announcementsFlagModelImpl = (AnnouncementsFlagModelImpl)announcementsFlag;
267 
268         Session session = null;
269 
270         try {
271             session = openSession();
272 
273             BatchSessionUtil.update(session, announcementsFlag, merge);
274 
275             announcementsFlag.setNew(false);
276         }
277         catch (Exception e) {
278             throw processException(e);
279         }
280         finally {
281             closeSession(session);
282         }
283 
284         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
285 
286         EntityCacheUtil.putResult(AnnouncementsFlagModelImpl.ENTITY_CACHE_ENABLED,
287             AnnouncementsFlagImpl.class, announcementsFlag.getPrimaryKey(),
288             announcementsFlag);
289 
290         if (!isNew &&
291                 ((announcementsFlag.getUserId() != announcementsFlagModelImpl.getOriginalUserId()) ||
292                 (announcementsFlag.getEntryId() != announcementsFlagModelImpl.getOriginalEntryId()) ||
293                 (announcementsFlag.getValue() != announcementsFlagModelImpl.getOriginalValue()))) {
294             FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_U_E_V,
295                 new Object[] {
296                     new Long(announcementsFlagModelImpl.getOriginalUserId()),
297                     new Long(announcementsFlagModelImpl.getOriginalEntryId()),
298                     new Integer(announcementsFlagModelImpl.getOriginalValue())
299                 });
300         }
301 
302         if (isNew ||
303                 ((announcementsFlag.getUserId() != announcementsFlagModelImpl.getOriginalUserId()) ||
304                 (announcementsFlag.getEntryId() != announcementsFlagModelImpl.getOriginalEntryId()) ||
305                 (announcementsFlag.getValue() != announcementsFlagModelImpl.getOriginalValue()))) {
306             FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_U_E_V,
307                 new Object[] {
308                     new Long(announcementsFlag.getUserId()),
309                     new Long(announcementsFlag.getEntryId()),
310                     new Integer(announcementsFlag.getValue())
311                 }, announcementsFlag);
312         }
313 
314         return announcementsFlag;
315     }
316 
317     protected AnnouncementsFlag toUnwrappedModel(
318         AnnouncementsFlag announcementsFlag) {
319         if (announcementsFlag instanceof AnnouncementsFlagImpl) {
320             return announcementsFlag;
321         }
322 
323         AnnouncementsFlagImpl announcementsFlagImpl = new AnnouncementsFlagImpl();
324 
325         announcementsFlagImpl.setNew(announcementsFlag.isNew());
326         announcementsFlagImpl.setPrimaryKey(announcementsFlag.getPrimaryKey());
327 
328         announcementsFlagImpl.setFlagId(announcementsFlag.getFlagId());
329         announcementsFlagImpl.setUserId(announcementsFlag.getUserId());
330         announcementsFlagImpl.setCreateDate(announcementsFlag.getCreateDate());
331         announcementsFlagImpl.setEntryId(announcementsFlag.getEntryId());
332         announcementsFlagImpl.setValue(announcementsFlag.getValue());
333 
334         return announcementsFlagImpl;
335     }
336 
337     public AnnouncementsFlag findByPrimaryKey(Serializable primaryKey)
338         throws NoSuchModelException, SystemException {
339         return findByPrimaryKey(((Long)primaryKey).longValue());
340     }
341 
342     public AnnouncementsFlag findByPrimaryKey(long flagId)
343         throws NoSuchFlagException, SystemException {
344         AnnouncementsFlag announcementsFlag = fetchByPrimaryKey(flagId);
345 
346         if (announcementsFlag == null) {
347             if (_log.isWarnEnabled()) {
348                 _log.warn(_NO_SUCH_ENTITY_WITH_PRIMARY_KEY + flagId);
349             }
350 
351             throw new NoSuchFlagException(_NO_SUCH_ENTITY_WITH_PRIMARY_KEY +
352                 flagId);
353         }
354 
355         return announcementsFlag;
356     }
357 
358     public AnnouncementsFlag fetchByPrimaryKey(Serializable primaryKey)
359         throws SystemException {
360         return fetchByPrimaryKey(((Long)primaryKey).longValue());
361     }
362 
363     public AnnouncementsFlag fetchByPrimaryKey(long flagId)
364         throws SystemException {
365         AnnouncementsFlag announcementsFlag = (AnnouncementsFlag)EntityCacheUtil.getResult(AnnouncementsFlagModelImpl.ENTITY_CACHE_ENABLED,
366                 AnnouncementsFlagImpl.class, flagId, this);
367 
368         if (announcementsFlag == null) {
369             Session session = null;
370 
371             try {
372                 session = openSession();
373 
374                 announcementsFlag = (AnnouncementsFlag)session.get(AnnouncementsFlagImpl.class,
375                         new Long(flagId));
376             }
377             catch (Exception e) {
378                 throw processException(e);
379             }
380             finally {
381                 if (announcementsFlag != null) {
382                     cacheResult(announcementsFlag);
383                 }
384 
385                 closeSession(session);
386             }
387         }
388 
389         return announcementsFlag;
390     }
391 
392     public List<AnnouncementsFlag> findByEntryId(long entryId)
393         throws SystemException {
394         Object[] finderArgs = new Object[] { new Long(entryId) };
395 
396         List<AnnouncementsFlag> list = (List<AnnouncementsFlag>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_ENTRYID,
397                 finderArgs, this);
398 
399         if (list == null) {
400             Session session = null;
401 
402             try {
403                 session = openSession();
404 
405                 StringBundler query = new StringBundler(3);
406 
407                 query.append(_SQL_SELECT_ANNOUNCEMENTSFLAG_WHERE);
408 
409                 query.append(_FINDER_COLUMN_ENTRYID_ENTRYID_2);
410 
411                 query.append(AnnouncementsFlagModelImpl.ORDER_BY_JPQL);
412 
413                 String sql = query.toString();
414 
415                 Query q = session.createQuery(sql);
416 
417                 QueryPos qPos = QueryPos.getInstance(q);
418 
419                 qPos.add(entryId);
420 
421                 list = q.list();
422             }
423             catch (Exception e) {
424                 throw processException(e);
425             }
426             finally {
427                 if (list == null) {
428                     list = new ArrayList<AnnouncementsFlag>();
429                 }
430 
431                 cacheResult(list);
432 
433                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_ENTRYID,
434                     finderArgs, list);
435 
436                 closeSession(session);
437             }
438         }
439 
440         return list;
441     }
442 
443     public List<AnnouncementsFlag> findByEntryId(long entryId, int start,
444         int end) throws SystemException {
445         return findByEntryId(entryId, start, end, null);
446     }
447 
448     public List<AnnouncementsFlag> findByEntryId(long entryId, int start,
449         int end, OrderByComparator obc) throws SystemException {
450         Object[] finderArgs = new Object[] {
451                 new Long(entryId),
452                 
453                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
454             };
455 
456         List<AnnouncementsFlag> list = (List<AnnouncementsFlag>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_ENTRYID,
457                 finderArgs, this);
458 
459         if (list == null) {
460             Session session = null;
461 
462             try {
463                 session = openSession();
464 
465                 StringBundler query = null;
466 
467                 if (obc != null) {
468                     query = new StringBundler(3 +
469                             (obc.getOrderByFields().length * 3));
470                 }
471                 else {
472                     query = new StringBundler(3);
473                 }
474 
475                 query.append(_SQL_SELECT_ANNOUNCEMENTSFLAG_WHERE);
476 
477                 query.append(_FINDER_COLUMN_ENTRYID_ENTRYID_2);
478 
479                 if (obc != null) {
480                     appendOrderByComparator(query, _ORDER_BY_ENTITY_ALIAS, obc);
481                 }
482 
483                 else {
484                     query.append(AnnouncementsFlagModelImpl.ORDER_BY_JPQL);
485                 }
486 
487                 String sql = query.toString();
488 
489                 Query q = session.createQuery(sql);
490 
491                 QueryPos qPos = QueryPos.getInstance(q);
492 
493                 qPos.add(entryId);
494 
495                 list = (List<AnnouncementsFlag>)QueryUtil.list(q, getDialect(),
496                         start, end);
497             }
498             catch (Exception e) {
499                 throw processException(e);
500             }
501             finally {
502                 if (list == null) {
503                     list = new ArrayList<AnnouncementsFlag>();
504                 }
505 
506                 cacheResult(list);
507 
508                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_ENTRYID,
509                     finderArgs, list);
510 
511                 closeSession(session);
512             }
513         }
514 
515         return list;
516     }
517 
518     public AnnouncementsFlag findByEntryId_First(long entryId,
519         OrderByComparator obc) throws NoSuchFlagException, SystemException {
520         List<AnnouncementsFlag> list = findByEntryId(entryId, 0, 1, obc);
521 
522         if (list.isEmpty()) {
523             StringBundler msg = new StringBundler(4);
524 
525             msg.append(_NO_SUCH_ENTITY_WITH_KEY);
526 
527             msg.append("entryId=");
528             msg.append(entryId);
529 
530             msg.append(StringPool.CLOSE_CURLY_BRACE);
531 
532             throw new NoSuchFlagException(msg.toString());
533         }
534         else {
535             return list.get(0);
536         }
537     }
538 
539     public AnnouncementsFlag findByEntryId_Last(long entryId,
540         OrderByComparator obc) throws NoSuchFlagException, SystemException {
541         int count = countByEntryId(entryId);
542 
543         List<AnnouncementsFlag> list = findByEntryId(entryId, count - 1, count,
544                 obc);
545 
546         if (list.isEmpty()) {
547             StringBundler msg = new StringBundler(4);
548 
549             msg.append(_NO_SUCH_ENTITY_WITH_KEY);
550 
551             msg.append("entryId=");
552             msg.append(entryId);
553 
554             msg.append(StringPool.CLOSE_CURLY_BRACE);
555 
556             throw new NoSuchFlagException(msg.toString());
557         }
558         else {
559             return list.get(0);
560         }
561     }
562 
563     public AnnouncementsFlag[] findByEntryId_PrevAndNext(long flagId,
564         long entryId, OrderByComparator obc)
565         throws NoSuchFlagException, SystemException {
566         AnnouncementsFlag announcementsFlag = findByPrimaryKey(flagId);
567 
568         int count = countByEntryId(entryId);
569 
570         Session session = null;
571 
572         try {
573             session = openSession();
574 
575             StringBundler query = null;
576 
577             if (obc != null) {
578                 query = new StringBundler(3 +
579                         (obc.getOrderByFields().length * 3));
580             }
581             else {
582                 query = new StringBundler(3);
583             }
584 
585             query.append(_SQL_SELECT_ANNOUNCEMENTSFLAG_WHERE);
586 
587             query.append(_FINDER_COLUMN_ENTRYID_ENTRYID_2);
588 
589             if (obc != null) {
590                 appendOrderByComparator(query, _ORDER_BY_ENTITY_ALIAS, obc);
591             }
592 
593             else {
594                 query.append(AnnouncementsFlagModelImpl.ORDER_BY_JPQL);
595             }
596 
597             String sql = query.toString();
598 
599             Query q = session.createQuery(sql);
600 
601             QueryPos qPos = QueryPos.getInstance(q);
602 
603             qPos.add(entryId);
604 
605             Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
606                     announcementsFlag);
607 
608             AnnouncementsFlag[] array = new AnnouncementsFlagImpl[3];
609 
610             array[0] = (AnnouncementsFlag)objArray[0];
611             array[1] = (AnnouncementsFlag)objArray[1];
612             array[2] = (AnnouncementsFlag)objArray[2];
613 
614             return array;
615         }
616         catch (Exception e) {
617             throw processException(e);
618         }
619         finally {
620             closeSession(session);
621         }
622     }
623 
624     public AnnouncementsFlag findByU_E_V(long userId, long entryId, int value)
625         throws NoSuchFlagException, SystemException {
626         AnnouncementsFlag announcementsFlag = fetchByU_E_V(userId, entryId,
627                 value);
628 
629         if (announcementsFlag == null) {
630             StringBundler msg = new StringBundler(8);
631 
632             msg.append(_NO_SUCH_ENTITY_WITH_KEY);
633 
634             msg.append("userId=");
635             msg.append(userId);
636 
637             msg.append(", entryId=");
638             msg.append(entryId);
639 
640             msg.append(", value=");
641             msg.append(value);
642 
643             msg.append(StringPool.CLOSE_CURLY_BRACE);
644 
645             if (_log.isWarnEnabled()) {
646                 _log.warn(msg.toString());
647             }
648 
649             throw new NoSuchFlagException(msg.toString());
650         }
651 
652         return announcementsFlag;
653     }
654 
655     public AnnouncementsFlag fetchByU_E_V(long userId, long entryId, int value)
656         throws SystemException {
657         return fetchByU_E_V(userId, entryId, value, true);
658     }
659 
660     public AnnouncementsFlag fetchByU_E_V(long userId, long entryId, int value,
661         boolean retrieveFromCache) throws SystemException {
662         Object[] finderArgs = new Object[] {
663                 new Long(userId), new Long(entryId), new Integer(value)
664             };
665 
666         Object result = null;
667 
668         if (retrieveFromCache) {
669             result = FinderCacheUtil.getResult(FINDER_PATH_FETCH_BY_U_E_V,
670                     finderArgs, this);
671         }
672 
673         if (result == null) {
674             Session session = null;
675 
676             try {
677                 session = openSession();
678 
679                 StringBundler query = new StringBundler(5);
680 
681                 query.append(_SQL_SELECT_ANNOUNCEMENTSFLAG_WHERE);
682 
683                 query.append(_FINDER_COLUMN_U_E_V_USERID_2);
684 
685                 query.append(_FINDER_COLUMN_U_E_V_ENTRYID_2);
686 
687                 query.append(_FINDER_COLUMN_U_E_V_VALUE_2);
688 
689                 query.append(AnnouncementsFlagModelImpl.ORDER_BY_JPQL);
690 
691                 String sql = query.toString();
692 
693                 Query q = session.createQuery(sql);
694 
695                 QueryPos qPos = QueryPos.getInstance(q);
696 
697                 qPos.add(userId);
698 
699                 qPos.add(entryId);
700 
701                 qPos.add(value);
702 
703                 List<AnnouncementsFlag> list = q.list();
704 
705                 result = list;
706 
707                 AnnouncementsFlag announcementsFlag = null;
708 
709                 if (list.isEmpty()) {
710                     FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_U_E_V,
711                         finderArgs, list);
712                 }
713                 else {
714                     announcementsFlag = list.get(0);
715 
716                     cacheResult(announcementsFlag);
717 
718                     if ((announcementsFlag.getUserId() != userId) ||
719                             (announcementsFlag.getEntryId() != entryId) ||
720                             (announcementsFlag.getValue() != value)) {
721                         FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_U_E_V,
722                             finderArgs, announcementsFlag);
723                     }
724                 }
725 
726                 return announcementsFlag;
727             }
728             catch (Exception e) {
729                 throw processException(e);
730             }
731             finally {
732                 if (result == null) {
733                     FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_U_E_V,
734                         finderArgs, new ArrayList<AnnouncementsFlag>());
735                 }
736 
737                 closeSession(session);
738             }
739         }
740         else {
741             if (result instanceof List<?>) {
742                 return null;
743             }
744             else {
745                 return (AnnouncementsFlag)result;
746             }
747         }
748     }
749 
750     public List<Object> findWithDynamicQuery(DynamicQuery dynamicQuery)
751         throws SystemException {
752         Session session = null;
753 
754         try {
755             session = openSession();
756 
757             dynamicQuery.compile(session);
758 
759             return dynamicQuery.list();
760         }
761         catch (Exception e) {
762             throw processException(e);
763         }
764         finally {
765             closeSession(session);
766         }
767     }
768 
769     public List<Object> findWithDynamicQuery(DynamicQuery dynamicQuery,
770         int start, int end) throws SystemException {
771         Session session = null;
772 
773         try {
774             session = openSession();
775 
776             dynamicQuery.setLimit(start, end);
777 
778             dynamicQuery.compile(session);
779 
780             return dynamicQuery.list();
781         }
782         catch (Exception e) {
783             throw processException(e);
784         }
785         finally {
786             closeSession(session);
787         }
788     }
789 
790     public List<AnnouncementsFlag> findAll() throws SystemException {
791         return findAll(QueryUtil.ALL_POS, QueryUtil.ALL_POS, null);
792     }
793 
794     public List<AnnouncementsFlag> findAll(int start, int end)
795         throws SystemException {
796         return findAll(start, end, null);
797     }
798 
799     public List<AnnouncementsFlag> findAll(int start, int end,
800         OrderByComparator obc) throws SystemException {
801         Object[] finderArgs = new Object[] {
802                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
803             };
804 
805         List<AnnouncementsFlag> list = (List<AnnouncementsFlag>)FinderCacheUtil.getResult(FINDER_PATH_FIND_ALL,
806                 finderArgs, this);
807 
808         if (list == null) {
809             Session session = null;
810 
811             try {
812                 session = openSession();
813 
814                 StringBundler query = null;
815                 String sql = null;
816 
817                 if (obc != null) {
818                     query = new StringBundler(2 +
819                             (obc.getOrderByFields().length * 3));
820 
821                     query.append(_SQL_SELECT_ANNOUNCEMENTSFLAG);
822 
823                     appendOrderByComparator(query, _ORDER_BY_ENTITY_ALIAS, obc);
824 
825                     sql = query.toString();
826                 }
827 
828                 else {
829                     sql = _SQL_SELECT_ANNOUNCEMENTSFLAG.concat(AnnouncementsFlagModelImpl.ORDER_BY_JPQL);
830                 }
831 
832                 Query q = session.createQuery(sql);
833 
834                 if (obc == null) {
835                     list = (List<AnnouncementsFlag>)QueryUtil.list(q,
836                             getDialect(), start, end, false);
837 
838                     Collections.sort(list);
839                 }
840                 else {
841                     list = (List<AnnouncementsFlag>)QueryUtil.list(q,
842                             getDialect(), start, end);
843                 }
844             }
845             catch (Exception e) {
846                 throw processException(e);
847             }
848             finally {
849                 if (list == null) {
850                     list = new ArrayList<AnnouncementsFlag>();
851                 }
852 
853                 cacheResult(list);
854 
855                 FinderCacheUtil.putResult(FINDER_PATH_FIND_ALL, finderArgs, list);
856 
857                 closeSession(session);
858             }
859         }
860 
861         return list;
862     }
863 
864     public void removeByEntryId(long entryId) throws SystemException {
865         for (AnnouncementsFlag announcementsFlag : findByEntryId(entryId)) {
866             remove(announcementsFlag);
867         }
868     }
869 
870     public void removeByU_E_V(long userId, long entryId, int value)
871         throws NoSuchFlagException, SystemException {
872         AnnouncementsFlag announcementsFlag = findByU_E_V(userId, entryId, value);
873 
874         remove(announcementsFlag);
875     }
876 
877     public void removeAll() throws SystemException {
878         for (AnnouncementsFlag announcementsFlag : findAll()) {
879             remove(announcementsFlag);
880         }
881     }
882 
883     public int countByEntryId(long entryId) throws SystemException {
884         Object[] finderArgs = new Object[] { new Long(entryId) };
885 
886         Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_ENTRYID,
887                 finderArgs, this);
888 
889         if (count == null) {
890             Session session = null;
891 
892             try {
893                 session = openSession();
894 
895                 StringBundler query = new StringBundler(2);
896 
897                 query.append(_SQL_COUNT_ANNOUNCEMENTSFLAG_WHERE);
898 
899                 query.append(_FINDER_COLUMN_ENTRYID_ENTRYID_2);
900 
901                 String sql = query.toString();
902 
903                 Query q = session.createQuery(sql);
904 
905                 QueryPos qPos = QueryPos.getInstance(q);
906 
907                 qPos.add(entryId);
908 
909                 count = (Long)q.uniqueResult();
910             }
911             catch (Exception e) {
912                 throw processException(e);
913             }
914             finally {
915                 if (count == null) {
916                     count = Long.valueOf(0);
917                 }
918 
919                 FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_ENTRYID,
920                     finderArgs, count);
921 
922                 closeSession(session);
923             }
924         }
925 
926         return count.intValue();
927     }
928 
929     public int countByU_E_V(long userId, long entryId, int value)
930         throws SystemException {
931         Object[] finderArgs = new Object[] {
932                 new Long(userId), new Long(entryId), new Integer(value)
933             };
934 
935         Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_U_E_V,
936                 finderArgs, this);
937 
938         if (count == null) {
939             Session session = null;
940 
941             try {
942                 session = openSession();
943 
944                 StringBundler query = new StringBundler(4);
945 
946                 query.append(_SQL_COUNT_ANNOUNCEMENTSFLAG_WHERE);
947 
948                 query.append(_FINDER_COLUMN_U_E_V_USERID_2);
949 
950                 query.append(_FINDER_COLUMN_U_E_V_ENTRYID_2);
951 
952                 query.append(_FINDER_COLUMN_U_E_V_VALUE_2);
953 
954                 String sql = query.toString();
955 
956                 Query q = session.createQuery(sql);
957 
958                 QueryPos qPos = QueryPos.getInstance(q);
959 
960                 qPos.add(userId);
961 
962                 qPos.add(entryId);
963 
964                 qPos.add(value);
965 
966                 count = (Long)q.uniqueResult();
967             }
968             catch (Exception e) {
969                 throw processException(e);
970             }
971             finally {
972                 if (count == null) {
973                     count = Long.valueOf(0);
974                 }
975 
976                 FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_U_E_V,
977                     finderArgs, count);
978 
979                 closeSession(session);
980             }
981         }
982 
983         return count.intValue();
984     }
985 
986     public int countAll() throws SystemException {
987         Object[] finderArgs = new Object[0];
988 
989         Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_ALL,
990                 finderArgs, this);
991 
992         if (count == null) {
993             Session session = null;
994 
995             try {
996                 session = openSession();
997 
998                 Query q = session.createQuery(_SQL_COUNT_ANNOUNCEMENTSFLAG);
999 
1000                count = (Long)q.uniqueResult();
1001            }
1002            catch (Exception e) {
1003                throw processException(e);
1004            }
1005            finally {
1006                if (count == null) {
1007                    count = Long.valueOf(0);
1008                }
1009
1010                FinderCacheUtil.putResult(FINDER_PATH_COUNT_ALL, finderArgs,
1011                    count);
1012
1013                closeSession(session);
1014            }
1015        }
1016
1017        return count.intValue();
1018    }
1019
1020    public void afterPropertiesSet() {
1021        String[] listenerClassNames = StringUtil.split(GetterUtil.getString(
1022                    com.liferay.portal.util.PropsUtil.get(
1023                        "value.object.listener.com.liferay.portlet.announcements.model.AnnouncementsFlag")));
1024
1025        if (listenerClassNames.length > 0) {
1026            try {
1027                List<ModelListener<AnnouncementsFlag>> listenersList = new ArrayList<ModelListener<AnnouncementsFlag>>();
1028
1029                for (String listenerClassName : listenerClassNames) {
1030                    listenersList.add((ModelListener<AnnouncementsFlag>)Class.forName(
1031                            listenerClassName).newInstance());
1032                }
1033
1034                listeners = listenersList.toArray(new ModelListener[listenersList.size()]);
1035            }
1036            catch (Exception e) {
1037                _log.error(e);
1038            }
1039        }
1040    }
1041
1042    @BeanReference(name = "com.liferay.portlet.announcements.service.persistence.AnnouncementsDeliveryPersistence")
1043    protected com.liferay.portlet.announcements.service.persistence.AnnouncementsDeliveryPersistence announcementsDeliveryPersistence;
1044    @BeanReference(name = "com.liferay.portlet.announcements.service.persistence.AnnouncementsEntryPersistence")
1045    protected com.liferay.portlet.announcements.service.persistence.AnnouncementsEntryPersistence announcementsEntryPersistence;
1046    @BeanReference(name = "com.liferay.portlet.announcements.service.persistence.AnnouncementsFlagPersistence")
1047    protected com.liferay.portlet.announcements.service.persistence.AnnouncementsFlagPersistence announcementsFlagPersistence;
1048    @BeanReference(name = "com.liferay.portal.service.persistence.ResourcePersistence")
1049    protected com.liferay.portal.service.persistence.ResourcePersistence resourcePersistence;
1050    @BeanReference(name = "com.liferay.portal.service.persistence.UserPersistence")
1051    protected com.liferay.portal.service.persistence.UserPersistence userPersistence;
1052    private static final String _SQL_SELECT_ANNOUNCEMENTSFLAG = "SELECT announcementsFlag FROM AnnouncementsFlag announcementsFlag";
1053    private static final String _SQL_SELECT_ANNOUNCEMENTSFLAG_WHERE = "SELECT announcementsFlag FROM AnnouncementsFlag announcementsFlag WHERE ";
1054    private static final String _SQL_COUNT_ANNOUNCEMENTSFLAG = "SELECT COUNT(announcementsFlag) FROM AnnouncementsFlag announcementsFlag";
1055    private static final String _SQL_COUNT_ANNOUNCEMENTSFLAG_WHERE = "SELECT COUNT(announcementsFlag) FROM AnnouncementsFlag announcementsFlag WHERE ";
1056    private static final String _FINDER_COLUMN_ENTRYID_ENTRYID_2 = "announcementsFlag.entryId = ?";
1057    private static final String _FINDER_COLUMN_U_E_V_USERID_2 = "announcementsFlag.userId = ? AND ";
1058    private static final String _FINDER_COLUMN_U_E_V_ENTRYID_2 = "announcementsFlag.entryId = ? AND ";
1059    private static final String _FINDER_COLUMN_U_E_V_VALUE_2 = "announcementsFlag.value = ?";
1060    private static final String _ORDER_BY_ENTITY_ALIAS = "announcementsFlag.";
1061    private static final String _NO_SUCH_ENTITY_WITH_PRIMARY_KEY = "No AnnouncementsFlag exists with the primary key ";
1062    private static final String _NO_SUCH_ENTITY_WITH_KEY = "No AnnouncementsFlag exists with the key {";
1063    private static Log _log = LogFactoryUtil.getLog(AnnouncementsFlagPersistenceImpl.class);
1064}