1   /**
2    * Copyright (c) 2000-2008 Liferay, Inc. All rights reserved.
3    *
4    * Permission is hereby granted, free of charge, to any person obtaining a copy
5    * of this software and associated documentation files (the "Software"), to deal
6    * in the Software without restriction, including without limitation the rights
7    * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8    * copies of the Software, and to permit persons to whom the Software is
9    * furnished to do so, subject to the following conditions:
10   *
11   * The above copyright notice and this permission notice shall be included in
12   * all copies or substantial portions 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.messageboards.service.persistence;
24  
25  import com.liferay.portal.SystemException;
26  import com.liferay.portal.kernel.bean.InitializingBean;
27  import com.liferay.portal.kernel.dao.orm.DynamicQuery;
28  import com.liferay.portal.kernel.dao.orm.FinderCacheUtil;
29  import com.liferay.portal.kernel.dao.orm.Query;
30  import com.liferay.portal.kernel.dao.orm.QueryPos;
31  import com.liferay.portal.kernel.dao.orm.QueryUtil;
32  import com.liferay.portal.kernel.dao.orm.Session;
33  import com.liferay.portal.kernel.util.GetterUtil;
34  import com.liferay.portal.kernel.util.ListUtil;
35  import com.liferay.portal.kernel.util.OrderByComparator;
36  import com.liferay.portal.kernel.util.StringPool;
37  import com.liferay.portal.kernel.util.StringUtil;
38  import com.liferay.portal.model.ModelListener;
39  import com.liferay.portal.service.persistence.impl.BasePersistenceImpl;
40  
41  import com.liferay.portlet.messageboards.NoSuchMessageFlagException;
42  import com.liferay.portlet.messageboards.model.MBMessageFlag;
43  import com.liferay.portlet.messageboards.model.impl.MBMessageFlagImpl;
44  import com.liferay.portlet.messageboards.model.impl.MBMessageFlagModelImpl;
45  
46  import org.apache.commons.logging.Log;
47  import org.apache.commons.logging.LogFactory;
48  
49  import java.util.ArrayList;
50  import java.util.Collections;
51  import java.util.Iterator;
52  import java.util.List;
53  
54  /**
55   * <a href="MBMessageFlagPersistenceImpl.java.html"><b><i>View Source</i></b></a>
56   *
57   * @author Brian Wing Shun Chan
58   *
59   */
60  public class MBMessageFlagPersistenceImpl extends BasePersistenceImpl
61      implements MBMessageFlagPersistence, InitializingBean {
62      public MBMessageFlag create(long messageFlagId) {
63          MBMessageFlag mbMessageFlag = new MBMessageFlagImpl();
64  
65          mbMessageFlag.setNew(true);
66          mbMessageFlag.setPrimaryKey(messageFlagId);
67  
68          return mbMessageFlag;
69      }
70  
71      public MBMessageFlag remove(long messageFlagId)
72          throws NoSuchMessageFlagException, SystemException {
73          Session session = null;
74  
75          try {
76              session = openSession();
77  
78              MBMessageFlag mbMessageFlag = (MBMessageFlag)session.get(MBMessageFlagImpl.class,
79                      new Long(messageFlagId));
80  
81              if (mbMessageFlag == null) {
82                  if (_log.isWarnEnabled()) {
83                      _log.warn("No MBMessageFlag exists with the primary key " +
84                          messageFlagId);
85                  }
86  
87                  throw new NoSuchMessageFlagException(
88                      "No MBMessageFlag exists with the primary key " +
89                      messageFlagId);
90              }
91  
92              return remove(mbMessageFlag);
93          }
94          catch (NoSuchMessageFlagException nsee) {
95              throw nsee;
96          }
97          catch (Exception e) {
98              throw processException(e);
99          }
100         finally {
101             closeSession(session);
102         }
103     }
104 
105     public MBMessageFlag remove(MBMessageFlag mbMessageFlag)
106         throws SystemException {
107         if (_listeners.length > 0) {
108             for (ModelListener listener : _listeners) {
109                 listener.onBeforeRemove(mbMessageFlag);
110             }
111         }
112 
113         mbMessageFlag = removeImpl(mbMessageFlag);
114 
115         if (_listeners.length > 0) {
116             for (ModelListener listener : _listeners) {
117                 listener.onAfterRemove(mbMessageFlag);
118             }
119         }
120 
121         return mbMessageFlag;
122     }
123 
124     protected MBMessageFlag removeImpl(MBMessageFlag mbMessageFlag)
125         throws SystemException {
126         Session session = null;
127 
128         try {
129             session = openSession();
130 
131             session.delete(mbMessageFlag);
132 
133             session.flush();
134 
135             return mbMessageFlag;
136         }
137         catch (Exception e) {
138             throw processException(e);
139         }
140         finally {
141             closeSession(session);
142 
143             FinderCacheUtil.clearCache(MBMessageFlag.class.getName());
144         }
145     }
146 
147     /**
148      * @deprecated Use <code>update(MBMessageFlag mbMessageFlag, boolean merge)</code>.
149      */
150     public MBMessageFlag update(MBMessageFlag mbMessageFlag)
151         throws SystemException {
152         if (_log.isWarnEnabled()) {
153             _log.warn(
154                 "Using the deprecated update(MBMessageFlag mbMessageFlag) method. Use update(MBMessageFlag mbMessageFlag, boolean merge) instead.");
155         }
156 
157         return update(mbMessageFlag, false);
158     }
159 
160     /**
161      * Add, update, or merge, the entity. This method also calls the model
162      * listeners to trigger the proper events associated with adding, deleting,
163      * or updating an entity.
164      *
165      * @param        mbMessageFlag the entity to add, update, or merge
166      * @param        merge boolean value for whether to merge the entity. The
167      *                default value is false. Setting merge to true is more
168      *                expensive and should only be true when mbMessageFlag is
169      *                transient. See LEP-5473 for a detailed discussion of this
170      *                method.
171      * @return        true if the portlet can be displayed via Ajax
172      */
173     public MBMessageFlag update(MBMessageFlag mbMessageFlag, boolean merge)
174         throws SystemException {
175         boolean isNew = mbMessageFlag.isNew();
176 
177         if (_listeners.length > 0) {
178             for (ModelListener listener : _listeners) {
179                 if (isNew) {
180                     listener.onBeforeCreate(mbMessageFlag);
181                 }
182                 else {
183                     listener.onBeforeUpdate(mbMessageFlag);
184                 }
185             }
186         }
187 
188         mbMessageFlag = updateImpl(mbMessageFlag, merge);
189 
190         if (_listeners.length > 0) {
191             for (ModelListener listener : _listeners) {
192                 if (isNew) {
193                     listener.onAfterCreate(mbMessageFlag);
194                 }
195                 else {
196                     listener.onAfterUpdate(mbMessageFlag);
197                 }
198             }
199         }
200 
201         return mbMessageFlag;
202     }
203 
204     public MBMessageFlag updateImpl(
205         com.liferay.portlet.messageboards.model.MBMessageFlag mbMessageFlag,
206         boolean merge) throws SystemException {
207         Session session = null;
208 
209         try {
210             session = openSession();
211 
212             if (merge) {
213                 session.merge(mbMessageFlag);
214             }
215             else {
216                 if (mbMessageFlag.isNew()) {
217                     session.save(mbMessageFlag);
218                 }
219             }
220 
221             session.flush();
222 
223             mbMessageFlag.setNew(false);
224 
225             return mbMessageFlag;
226         }
227         catch (Exception e) {
228             throw processException(e);
229         }
230         finally {
231             closeSession(session);
232 
233             FinderCacheUtil.clearCache(MBMessageFlag.class.getName());
234         }
235     }
236 
237     public MBMessageFlag findByPrimaryKey(long messageFlagId)
238         throws NoSuchMessageFlagException, SystemException {
239         MBMessageFlag mbMessageFlag = fetchByPrimaryKey(messageFlagId);
240 
241         if (mbMessageFlag == null) {
242             if (_log.isWarnEnabled()) {
243                 _log.warn("No MBMessageFlag exists with the primary key " +
244                     messageFlagId);
245             }
246 
247             throw new NoSuchMessageFlagException(
248                 "No MBMessageFlag exists with the primary key " +
249                 messageFlagId);
250         }
251 
252         return mbMessageFlag;
253     }
254 
255     public MBMessageFlag fetchByPrimaryKey(long messageFlagId)
256         throws SystemException {
257         Session session = null;
258 
259         try {
260             session = openSession();
261 
262             return (MBMessageFlag)session.get(MBMessageFlagImpl.class,
263                 new Long(messageFlagId));
264         }
265         catch (Exception e) {
266             throw processException(e);
267         }
268         finally {
269             closeSession(session);
270         }
271     }
272 
273     public List<MBMessageFlag> findByUserId(long userId)
274         throws SystemException {
275         boolean finderClassNameCacheEnabled = MBMessageFlagModelImpl.CACHE_ENABLED;
276         String finderClassName = MBMessageFlag.class.getName();
277         String finderMethodName = "findByUserId";
278         String[] finderParams = new String[] { Long.class.getName() };
279         Object[] finderArgs = new Object[] { new Long(userId) };
280 
281         Object result = null;
282 
283         if (finderClassNameCacheEnabled) {
284             result = FinderCacheUtil.getResult(finderClassName,
285                     finderMethodName, finderParams, finderArgs, this);
286         }
287 
288         if (result == null) {
289             Session session = null;
290 
291             try {
292                 session = openSession();
293 
294                 StringBuilder query = new StringBuilder();
295 
296                 query.append(
297                     "FROM com.liferay.portlet.messageboards.model.MBMessageFlag WHERE ");
298 
299                 query.append("userId = ?");
300 
301                 query.append(" ");
302 
303                 Query q = session.createQuery(query.toString());
304 
305                 QueryPos qPos = QueryPos.getInstance(q);
306 
307                 qPos.add(userId);
308 
309                 List<MBMessageFlag> list = q.list();
310 
311                 FinderCacheUtil.putResult(finderClassNameCacheEnabled,
312                     finderClassName, finderMethodName, finderParams,
313                     finderArgs, list);
314 
315                 return list;
316             }
317             catch (Exception e) {
318                 throw processException(e);
319             }
320             finally {
321                 closeSession(session);
322             }
323         }
324         else {
325             return (List<MBMessageFlag>)result;
326         }
327     }
328 
329     public List<MBMessageFlag> findByUserId(long userId, int start, int end)
330         throws SystemException {
331         return findByUserId(userId, start, end, null);
332     }
333 
334     public List<MBMessageFlag> findByUserId(long userId, int start, int end,
335         OrderByComparator obc) throws SystemException {
336         boolean finderClassNameCacheEnabled = MBMessageFlagModelImpl.CACHE_ENABLED;
337         String finderClassName = MBMessageFlag.class.getName();
338         String finderMethodName = "findByUserId";
339         String[] finderParams = new String[] {
340                 Long.class.getName(),
341                 
342                 "java.lang.Integer", "java.lang.Integer",
343                 "com.liferay.portal.kernel.util.OrderByComparator"
344             };
345         Object[] finderArgs = new Object[] {
346                 new Long(userId),
347                 
348                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
349             };
350 
351         Object result = null;
352 
353         if (finderClassNameCacheEnabled) {
354             result = FinderCacheUtil.getResult(finderClassName,
355                     finderMethodName, finderParams, finderArgs, this);
356         }
357 
358         if (result == null) {
359             Session session = null;
360 
361             try {
362                 session = openSession();
363 
364                 StringBuilder query = new StringBuilder();
365 
366                 query.append(
367                     "FROM com.liferay.portlet.messageboards.model.MBMessageFlag WHERE ");
368 
369                 query.append("userId = ?");
370 
371                 query.append(" ");
372 
373                 if (obc != null) {
374                     query.append("ORDER BY ");
375                     query.append(obc.getOrderBy());
376                 }
377 
378                 Query q = session.createQuery(query.toString());
379 
380                 QueryPos qPos = QueryPos.getInstance(q);
381 
382                 qPos.add(userId);
383 
384                 List<MBMessageFlag> list = (List<MBMessageFlag>)QueryUtil.list(q,
385                         getDialect(), start, end);
386 
387                 FinderCacheUtil.putResult(finderClassNameCacheEnabled,
388                     finderClassName, finderMethodName, finderParams,
389                     finderArgs, list);
390 
391                 return list;
392             }
393             catch (Exception e) {
394                 throw processException(e);
395             }
396             finally {
397                 closeSession(session);
398             }
399         }
400         else {
401             return (List<MBMessageFlag>)result;
402         }
403     }
404 
405     public MBMessageFlag findByUserId_First(long userId, OrderByComparator obc)
406         throws NoSuchMessageFlagException, SystemException {
407         List<MBMessageFlag> list = findByUserId(userId, 0, 1, obc);
408 
409         if (list.size() == 0) {
410             StringBuilder msg = new StringBuilder();
411 
412             msg.append("No MBMessageFlag exists with the key {");
413 
414             msg.append("userId=" + userId);
415 
416             msg.append(StringPool.CLOSE_CURLY_BRACE);
417 
418             throw new NoSuchMessageFlagException(msg.toString());
419         }
420         else {
421             return list.get(0);
422         }
423     }
424 
425     public MBMessageFlag findByUserId_Last(long userId, OrderByComparator obc)
426         throws NoSuchMessageFlagException, SystemException {
427         int count = countByUserId(userId);
428 
429         List<MBMessageFlag> list = findByUserId(userId, count - 1, count, obc);
430 
431         if (list.size() == 0) {
432             StringBuilder msg = new StringBuilder();
433 
434             msg.append("No MBMessageFlag exists with the key {");
435 
436             msg.append("userId=" + userId);
437 
438             msg.append(StringPool.CLOSE_CURLY_BRACE);
439 
440             throw new NoSuchMessageFlagException(msg.toString());
441         }
442         else {
443             return list.get(0);
444         }
445     }
446 
447     public MBMessageFlag[] findByUserId_PrevAndNext(long messageFlagId,
448         long userId, OrderByComparator obc)
449         throws NoSuchMessageFlagException, SystemException {
450         MBMessageFlag mbMessageFlag = findByPrimaryKey(messageFlagId);
451 
452         int count = countByUserId(userId);
453 
454         Session session = null;
455 
456         try {
457             session = openSession();
458 
459             StringBuilder query = new StringBuilder();
460 
461             query.append(
462                 "FROM com.liferay.portlet.messageboards.model.MBMessageFlag WHERE ");
463 
464             query.append("userId = ?");
465 
466             query.append(" ");
467 
468             if (obc != null) {
469                 query.append("ORDER BY ");
470                 query.append(obc.getOrderBy());
471             }
472 
473             Query q = session.createQuery(query.toString());
474 
475             QueryPos qPos = QueryPos.getInstance(q);
476 
477             qPos.add(userId);
478 
479             Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
480                     mbMessageFlag);
481 
482             MBMessageFlag[] array = new MBMessageFlagImpl[3];
483 
484             array[0] = (MBMessageFlag)objArray[0];
485             array[1] = (MBMessageFlag)objArray[1];
486             array[2] = (MBMessageFlag)objArray[2];
487 
488             return array;
489         }
490         catch (Exception e) {
491             throw processException(e);
492         }
493         finally {
494             closeSession(session);
495         }
496     }
497 
498     public List<MBMessageFlag> findByMessageId(long messageId)
499         throws SystemException {
500         boolean finderClassNameCacheEnabled = MBMessageFlagModelImpl.CACHE_ENABLED;
501         String finderClassName = MBMessageFlag.class.getName();
502         String finderMethodName = "findByMessageId";
503         String[] finderParams = new String[] { Long.class.getName() };
504         Object[] finderArgs = new Object[] { new Long(messageId) };
505 
506         Object result = null;
507 
508         if (finderClassNameCacheEnabled) {
509             result = FinderCacheUtil.getResult(finderClassName,
510                     finderMethodName, finderParams, finderArgs, this);
511         }
512 
513         if (result == null) {
514             Session session = null;
515 
516             try {
517                 session = openSession();
518 
519                 StringBuilder query = new StringBuilder();
520 
521                 query.append(
522                     "FROM com.liferay.portlet.messageboards.model.MBMessageFlag WHERE ");
523 
524                 query.append("messageId = ?");
525 
526                 query.append(" ");
527 
528                 Query q = session.createQuery(query.toString());
529 
530                 QueryPos qPos = QueryPos.getInstance(q);
531 
532                 qPos.add(messageId);
533 
534                 List<MBMessageFlag> list = q.list();
535 
536                 FinderCacheUtil.putResult(finderClassNameCacheEnabled,
537                     finderClassName, finderMethodName, finderParams,
538                     finderArgs, list);
539 
540                 return list;
541             }
542             catch (Exception e) {
543                 throw processException(e);
544             }
545             finally {
546                 closeSession(session);
547             }
548         }
549         else {
550             return (List<MBMessageFlag>)result;
551         }
552     }
553 
554     public List<MBMessageFlag> findByMessageId(long messageId, int start,
555         int end) throws SystemException {
556         return findByMessageId(messageId, start, end, null);
557     }
558 
559     public List<MBMessageFlag> findByMessageId(long messageId, int start,
560         int end, OrderByComparator obc) throws SystemException {
561         boolean finderClassNameCacheEnabled = MBMessageFlagModelImpl.CACHE_ENABLED;
562         String finderClassName = MBMessageFlag.class.getName();
563         String finderMethodName = "findByMessageId";
564         String[] finderParams = new String[] {
565                 Long.class.getName(),
566                 
567                 "java.lang.Integer", "java.lang.Integer",
568                 "com.liferay.portal.kernel.util.OrderByComparator"
569             };
570         Object[] finderArgs = new Object[] {
571                 new Long(messageId),
572                 
573                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
574             };
575 
576         Object result = null;
577 
578         if (finderClassNameCacheEnabled) {
579             result = FinderCacheUtil.getResult(finderClassName,
580                     finderMethodName, finderParams, finderArgs, this);
581         }
582 
583         if (result == null) {
584             Session session = null;
585 
586             try {
587                 session = openSession();
588 
589                 StringBuilder query = new StringBuilder();
590 
591                 query.append(
592                     "FROM com.liferay.portlet.messageboards.model.MBMessageFlag WHERE ");
593 
594                 query.append("messageId = ?");
595 
596                 query.append(" ");
597 
598                 if (obc != null) {
599                     query.append("ORDER BY ");
600                     query.append(obc.getOrderBy());
601                 }
602 
603                 Query q = session.createQuery(query.toString());
604 
605                 QueryPos qPos = QueryPos.getInstance(q);
606 
607                 qPos.add(messageId);
608 
609                 List<MBMessageFlag> list = (List<MBMessageFlag>)QueryUtil.list(q,
610                         getDialect(), start, end);
611 
612                 FinderCacheUtil.putResult(finderClassNameCacheEnabled,
613                     finderClassName, finderMethodName, finderParams,
614                     finderArgs, list);
615 
616                 return list;
617             }
618             catch (Exception e) {
619                 throw processException(e);
620             }
621             finally {
622                 closeSession(session);
623             }
624         }
625         else {
626             return (List<MBMessageFlag>)result;
627         }
628     }
629 
630     public MBMessageFlag findByMessageId_First(long messageId,
631         OrderByComparator obc)
632         throws NoSuchMessageFlagException, SystemException {
633         List<MBMessageFlag> list = findByMessageId(messageId, 0, 1, obc);
634 
635         if (list.size() == 0) {
636             StringBuilder msg = new StringBuilder();
637 
638             msg.append("No MBMessageFlag exists with the key {");
639 
640             msg.append("messageId=" + messageId);
641 
642             msg.append(StringPool.CLOSE_CURLY_BRACE);
643 
644             throw new NoSuchMessageFlagException(msg.toString());
645         }
646         else {
647             return list.get(0);
648         }
649     }
650 
651     public MBMessageFlag findByMessageId_Last(long messageId,
652         OrderByComparator obc)
653         throws NoSuchMessageFlagException, SystemException {
654         int count = countByMessageId(messageId);
655 
656         List<MBMessageFlag> list = findByMessageId(messageId, count - 1, count,
657                 obc);
658 
659         if (list.size() == 0) {
660             StringBuilder msg = new StringBuilder();
661 
662             msg.append("No MBMessageFlag exists with the key {");
663 
664             msg.append("messageId=" + messageId);
665 
666             msg.append(StringPool.CLOSE_CURLY_BRACE);
667 
668             throw new NoSuchMessageFlagException(msg.toString());
669         }
670         else {
671             return list.get(0);
672         }
673     }
674 
675     public MBMessageFlag[] findByMessageId_PrevAndNext(long messageFlagId,
676         long messageId, OrderByComparator obc)
677         throws NoSuchMessageFlagException, SystemException {
678         MBMessageFlag mbMessageFlag = findByPrimaryKey(messageFlagId);
679 
680         int count = countByMessageId(messageId);
681 
682         Session session = null;
683 
684         try {
685             session = openSession();
686 
687             StringBuilder query = new StringBuilder();
688 
689             query.append(
690                 "FROM com.liferay.portlet.messageboards.model.MBMessageFlag WHERE ");
691 
692             query.append("messageId = ?");
693 
694             query.append(" ");
695 
696             if (obc != null) {
697                 query.append("ORDER BY ");
698                 query.append(obc.getOrderBy());
699             }
700 
701             Query q = session.createQuery(query.toString());
702 
703             QueryPos qPos = QueryPos.getInstance(q);
704 
705             qPos.add(messageId);
706 
707             Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
708                     mbMessageFlag);
709 
710             MBMessageFlag[] array = new MBMessageFlagImpl[3];
711 
712             array[0] = (MBMessageFlag)objArray[0];
713             array[1] = (MBMessageFlag)objArray[1];
714             array[2] = (MBMessageFlag)objArray[2];
715 
716             return array;
717         }
718         catch (Exception e) {
719             throw processException(e);
720         }
721         finally {
722             closeSession(session);
723         }
724     }
725 
726     public MBMessageFlag findByU_M(long userId, long messageId)
727         throws NoSuchMessageFlagException, SystemException {
728         MBMessageFlag mbMessageFlag = fetchByU_M(userId, messageId);
729 
730         if (mbMessageFlag == null) {
731             StringBuilder msg = new StringBuilder();
732 
733             msg.append("No MBMessageFlag exists with the key {");
734 
735             msg.append("userId=" + userId);
736 
737             msg.append(", ");
738             msg.append("messageId=" + messageId);
739 
740             msg.append(StringPool.CLOSE_CURLY_BRACE);
741 
742             if (_log.isWarnEnabled()) {
743                 _log.warn(msg.toString());
744             }
745 
746             throw new NoSuchMessageFlagException(msg.toString());
747         }
748 
749         return mbMessageFlag;
750     }
751 
752     public MBMessageFlag fetchByU_M(long userId, long messageId)
753         throws SystemException {
754         boolean finderClassNameCacheEnabled = MBMessageFlagModelImpl.CACHE_ENABLED;
755         String finderClassName = MBMessageFlag.class.getName();
756         String finderMethodName = "fetchByU_M";
757         String[] finderParams = new String[] {
758                 Long.class.getName(), Long.class.getName()
759             };
760         Object[] finderArgs = new Object[] { new Long(userId), new Long(messageId) };
761 
762         Object result = null;
763 
764         if (finderClassNameCacheEnabled) {
765             result = FinderCacheUtil.getResult(finderClassName,
766                     finderMethodName, finderParams, finderArgs, this);
767         }
768 
769         if (result == null) {
770             Session session = null;
771 
772             try {
773                 session = openSession();
774 
775                 StringBuilder query = new StringBuilder();
776 
777                 query.append(
778                     "FROM com.liferay.portlet.messageboards.model.MBMessageFlag WHERE ");
779 
780                 query.append("userId = ?");
781 
782                 query.append(" AND ");
783 
784                 query.append("messageId = ?");
785 
786                 query.append(" ");
787 
788                 Query q = session.createQuery(query.toString());
789 
790                 QueryPos qPos = QueryPos.getInstance(q);
791 
792                 qPos.add(userId);
793 
794                 qPos.add(messageId);
795 
796                 List<MBMessageFlag> list = q.list();
797 
798                 FinderCacheUtil.putResult(finderClassNameCacheEnabled,
799                     finderClassName, finderMethodName, finderParams,
800                     finderArgs, list);
801 
802                 if (list.size() == 0) {
803                     return null;
804                 }
805                 else {
806                     return list.get(0);
807                 }
808             }
809             catch (Exception e) {
810                 throw processException(e);
811             }
812             finally {
813                 closeSession(session);
814             }
815         }
816         else {
817             List<MBMessageFlag> list = (List<MBMessageFlag>)result;
818 
819             if (list.size() == 0) {
820                 return null;
821             }
822             else {
823                 return list.get(0);
824             }
825         }
826     }
827 
828     public List<Object> findWithDynamicQuery(DynamicQuery dynamicQuery)
829         throws SystemException {
830         Session session = null;
831 
832         try {
833             session = openSession();
834 
835             dynamicQuery.compile(session);
836 
837             return dynamicQuery.list();
838         }
839         catch (Exception e) {
840             throw processException(e);
841         }
842         finally {
843             closeSession(session);
844         }
845     }
846 
847     public List<Object> findWithDynamicQuery(DynamicQuery dynamicQuery,
848         int start, int end) throws SystemException {
849         Session session = null;
850 
851         try {
852             session = openSession();
853 
854             dynamicQuery.setLimit(start, end);
855 
856             dynamicQuery.compile(session);
857 
858             return dynamicQuery.list();
859         }
860         catch (Exception e) {
861             throw processException(e);
862         }
863         finally {
864             closeSession(session);
865         }
866     }
867 
868     public List<MBMessageFlag> findAll() throws SystemException {
869         return findAll(QueryUtil.ALL_POS, QueryUtil.ALL_POS, null);
870     }
871 
872     public List<MBMessageFlag> findAll(int start, int end)
873         throws SystemException {
874         return findAll(start, end, null);
875     }
876 
877     public List<MBMessageFlag> findAll(int start, int end, OrderByComparator obc)
878         throws SystemException {
879         boolean finderClassNameCacheEnabled = MBMessageFlagModelImpl.CACHE_ENABLED;
880         String finderClassName = MBMessageFlag.class.getName();
881         String finderMethodName = "findAll";
882         String[] finderParams = new String[] {
883                 "java.lang.Integer", "java.lang.Integer",
884                 "com.liferay.portal.kernel.util.OrderByComparator"
885             };
886         Object[] finderArgs = new Object[] {
887                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
888             };
889 
890         Object result = null;
891 
892         if (finderClassNameCacheEnabled) {
893             result = FinderCacheUtil.getResult(finderClassName,
894                     finderMethodName, finderParams, finderArgs, this);
895         }
896 
897         if (result == null) {
898             Session session = null;
899 
900             try {
901                 session = openSession();
902 
903                 StringBuilder query = new StringBuilder();
904 
905                 query.append(
906                     "FROM com.liferay.portlet.messageboards.model.MBMessageFlag ");
907 
908                 if (obc != null) {
909                     query.append("ORDER BY ");
910                     query.append(obc.getOrderBy());
911                 }
912 
913                 Query q = session.createQuery(query.toString());
914 
915                 List<MBMessageFlag> list = (List<MBMessageFlag>)QueryUtil.list(q,
916                         getDialect(), start, end);
917 
918                 if (obc == null) {
919                     Collections.sort(list);
920                 }
921 
922                 FinderCacheUtil.putResult(finderClassNameCacheEnabled,
923                     finderClassName, finderMethodName, finderParams,
924                     finderArgs, list);
925 
926                 return list;
927             }
928             catch (Exception e) {
929                 throw processException(e);
930             }
931             finally {
932                 closeSession(session);
933             }
934         }
935         else {
936             return (List<MBMessageFlag>)result;
937         }
938     }
939 
940     public void removeByUserId(long userId) throws SystemException {
941         for (MBMessageFlag mbMessageFlag : findByUserId(userId)) {
942             remove(mbMessageFlag);
943         }
944     }
945 
946     public void removeByMessageId(long messageId) throws SystemException {
947         for (MBMessageFlag mbMessageFlag : findByMessageId(messageId)) {
948             remove(mbMessageFlag);
949         }
950     }
951 
952     public void removeByU_M(long userId, long messageId)
953         throws NoSuchMessageFlagException, SystemException {
954         MBMessageFlag mbMessageFlag = findByU_M(userId, messageId);
955 
956         remove(mbMessageFlag);
957     }
958 
959     public void removeAll() throws SystemException {
960         for (MBMessageFlag mbMessageFlag : findAll()) {
961             remove(mbMessageFlag);
962         }
963     }
964 
965     public int countByUserId(long userId) throws SystemException {
966         boolean finderClassNameCacheEnabled = MBMessageFlagModelImpl.CACHE_ENABLED;
967         String finderClassName = MBMessageFlag.class.getName();
968         String finderMethodName = "countByUserId";
969         String[] finderParams = new String[] { Long.class.getName() };
970         Object[] finderArgs = new Object[] { new Long(userId) };
971 
972         Object result = null;
973 
974         if (finderClassNameCacheEnabled) {
975             result = FinderCacheUtil.getResult(finderClassName,
976                     finderMethodName, finderParams, finderArgs, this);
977         }
978 
979         if (result == null) {
980             Session session = null;
981 
982             try {
983                 session = openSession();
984 
985                 StringBuilder query = new StringBuilder();
986 
987                 query.append("SELECT COUNT(*) ");
988                 query.append(
989                     "FROM com.liferay.portlet.messageboards.model.MBMessageFlag WHERE ");
990 
991                 query.append("userId = ?");
992 
993                 query.append(" ");
994 
995                 Query q = session.createQuery(query.toString());
996 
997                 QueryPos qPos = QueryPos.getInstance(q);
998 
999                 qPos.add(userId);
1000
1001                Long count = null;
1002
1003                Iterator<Long> itr = q.list().iterator();
1004
1005                if (itr.hasNext()) {
1006                    count = itr.next();
1007                }
1008
1009                if (count == null) {
1010                    count = new Long(0);
1011                }
1012
1013                FinderCacheUtil.putResult(finderClassNameCacheEnabled,
1014                    finderClassName, finderMethodName, finderParams,
1015                    finderArgs, count);
1016
1017                return count.intValue();
1018            }
1019            catch (Exception e) {
1020                throw processException(e);
1021            }
1022            finally {
1023                closeSession(session);
1024            }
1025        }
1026        else {
1027            return ((Long)result).intValue();
1028        }
1029    }
1030
1031    public int countByMessageId(long messageId) throws SystemException {
1032        boolean finderClassNameCacheEnabled = MBMessageFlagModelImpl.CACHE_ENABLED;
1033        String finderClassName = MBMessageFlag.class.getName();
1034        String finderMethodName = "countByMessageId";
1035        String[] finderParams = new String[] { Long.class.getName() };
1036        Object[] finderArgs = new Object[] { new Long(messageId) };
1037
1038        Object result = null;
1039
1040        if (finderClassNameCacheEnabled) {
1041            result = FinderCacheUtil.getResult(finderClassName,
1042                    finderMethodName, finderParams, finderArgs, this);
1043        }
1044
1045        if (result == null) {
1046            Session session = null;
1047
1048            try {
1049                session = openSession();
1050
1051                StringBuilder query = new StringBuilder();
1052
1053                query.append("SELECT COUNT(*) ");
1054                query.append(
1055                    "FROM com.liferay.portlet.messageboards.model.MBMessageFlag WHERE ");
1056
1057                query.append("messageId = ?");
1058
1059                query.append(" ");
1060
1061                Query q = session.createQuery(query.toString());
1062
1063                QueryPos qPos = QueryPos.getInstance(q);
1064
1065                qPos.add(messageId);
1066
1067                Long count = null;
1068
1069                Iterator<Long> itr = q.list().iterator();
1070
1071                if (itr.hasNext()) {
1072                    count = itr.next();
1073                }
1074
1075                if (count == null) {
1076                    count = new Long(0);
1077                }
1078
1079                FinderCacheUtil.putResult(finderClassNameCacheEnabled,
1080                    finderClassName, finderMethodName, finderParams,
1081                    finderArgs, count);
1082
1083                return count.intValue();
1084            }
1085            catch (Exception e) {
1086                throw processException(e);
1087            }
1088            finally {
1089                closeSession(session);
1090            }
1091        }
1092        else {
1093            return ((Long)result).intValue();
1094        }
1095    }
1096
1097    public int countByU_M(long userId, long messageId)
1098        throws SystemException {
1099        boolean finderClassNameCacheEnabled = MBMessageFlagModelImpl.CACHE_ENABLED;
1100        String finderClassName = MBMessageFlag.class.getName();
1101        String finderMethodName = "countByU_M";
1102        String[] finderParams = new String[] {
1103                Long.class.getName(), Long.class.getName()
1104            };
1105        Object[] finderArgs = new Object[] { new Long(userId), new Long(messageId) };
1106
1107        Object result = null;
1108
1109        if (finderClassNameCacheEnabled) {
1110            result = FinderCacheUtil.getResult(finderClassName,
1111                    finderMethodName, finderParams, finderArgs, this);
1112        }
1113
1114        if (result == null) {
1115            Session session = null;
1116
1117            try {
1118                session = openSession();
1119
1120                StringBuilder query = new StringBuilder();
1121
1122                query.append("SELECT COUNT(*) ");
1123                query.append(
1124                    "FROM com.liferay.portlet.messageboards.model.MBMessageFlag WHERE ");
1125
1126                query.append("userId = ?");
1127
1128                query.append(" AND ");
1129
1130                query.append("messageId = ?");
1131
1132                query.append(" ");
1133
1134                Query q = session.createQuery(query.toString());
1135
1136                QueryPos qPos = QueryPos.getInstance(q);
1137
1138                qPos.add(userId);
1139
1140                qPos.add(messageId);
1141
1142                Long count = null;
1143
1144                Iterator<Long> itr = q.list().iterator();
1145
1146                if (itr.hasNext()) {
1147                    count = itr.next();
1148                }
1149
1150                if (count == null) {
1151                    count = new Long(0);
1152                }
1153
1154                FinderCacheUtil.putResult(finderClassNameCacheEnabled,
1155                    finderClassName, finderMethodName, finderParams,
1156                    finderArgs, count);
1157
1158                return count.intValue();
1159            }
1160            catch (Exception e) {
1161                throw processException(e);
1162            }
1163            finally {
1164                closeSession(session);
1165            }
1166        }
1167        else {
1168            return ((Long)result).intValue();
1169        }
1170    }
1171
1172    public int countAll() throws SystemException {
1173        boolean finderClassNameCacheEnabled = MBMessageFlagModelImpl.CACHE_ENABLED;
1174        String finderClassName = MBMessageFlag.class.getName();
1175        String finderMethodName = "countAll";
1176        String[] finderParams = new String[] {  };
1177        Object[] finderArgs = new Object[] {  };
1178
1179        Object result = null;
1180
1181        if (finderClassNameCacheEnabled) {
1182            result = FinderCacheUtil.getResult(finderClassName,
1183                    finderMethodName, finderParams, finderArgs, this);
1184        }
1185
1186        if (result == null) {
1187            Session session = null;
1188
1189            try {
1190                session = openSession();
1191
1192                Query q = session.createQuery(
1193                        "SELECT COUNT(*) FROM com.liferay.portlet.messageboards.model.MBMessageFlag");
1194
1195                Long count = null;
1196
1197                Iterator<Long> itr = q.list().iterator();
1198
1199                if (itr.hasNext()) {
1200                    count = itr.next();
1201                }
1202
1203                if (count == null) {
1204                    count = new Long(0);
1205                }
1206
1207                FinderCacheUtil.putResult(finderClassNameCacheEnabled,
1208                    finderClassName, finderMethodName, finderParams,
1209                    finderArgs, count);
1210
1211                return count.intValue();
1212            }
1213            catch (Exception e) {
1214                throw processException(e);
1215            }
1216            finally {
1217                closeSession(session);
1218            }
1219        }
1220        else {
1221            return ((Long)result).intValue();
1222        }
1223    }
1224
1225    public void registerListener(ModelListener listener) {
1226        List<ModelListener> listeners = ListUtil.fromArray(_listeners);
1227
1228        listeners.add(listener);
1229
1230        _listeners = listeners.toArray(new ModelListener[listeners.size()]);
1231    }
1232
1233    public void unregisterListener(ModelListener listener) {
1234        List<ModelListener> listeners = ListUtil.fromArray(_listeners);
1235
1236        listeners.remove(listener);
1237
1238        _listeners = listeners.toArray(new ModelListener[listeners.size()]);
1239    }
1240
1241    public void afterPropertiesSet() {
1242        String[] listenerClassNames = StringUtil.split(GetterUtil.getString(
1243                    com.liferay.portal.util.PropsUtil.get(
1244                        "value.object.listener.com.liferay.portlet.messageboards.model.MBMessageFlag")));
1245
1246        if (listenerClassNames.length > 0) {
1247            try {
1248                List<ModelListener> listeners = new ArrayList<ModelListener>();
1249
1250                for (String listenerClassName : listenerClassNames) {
1251                    listeners.add((ModelListener)Class.forName(
1252                            listenerClassName).newInstance());
1253                }
1254
1255                _listeners = listeners.toArray(new ModelListener[listeners.size()]);
1256            }
1257            catch (Exception e) {
1258                _log.error(e);
1259            }
1260        }
1261    }
1262
1263    private static Log _log = LogFactory.getLog(MBMessageFlagPersistenceImpl.class);
1264    private ModelListener[] _listeners = new ModelListener[0];
1265}