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