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