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.BatchSessionUtil;
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 {
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             if (BatchSessionUtil.isEnabled()) {
132                 Object staleObject = session.get(MBMessageFlagImpl.class,
133                         mbMessageFlag.getPrimaryKeyObj());
134 
135                 if (staleObject != null) {
136                     session.evict(staleObject);
137                 }
138             }
139 
140             session.delete(mbMessageFlag);
141 
142             session.flush();
143 
144             return mbMessageFlag;
145         }
146         catch (Exception e) {
147             throw processException(e);
148         }
149         finally {
150             closeSession(session);
151 
152             FinderCacheUtil.clearCache(MBMessageFlag.class.getName());
153         }
154     }
155 
156     /**
157      * @deprecated Use <code>update(MBMessageFlag mbMessageFlag, boolean merge)</code>.
158      */
159     public MBMessageFlag update(MBMessageFlag mbMessageFlag)
160         throws SystemException {
161         if (_log.isWarnEnabled()) {
162             _log.warn(
163                 "Using the deprecated update(MBMessageFlag mbMessageFlag) method. Use update(MBMessageFlag mbMessageFlag, boolean merge) instead.");
164         }
165 
166         return update(mbMessageFlag, false);
167     }
168 
169     /**
170      * Add, update, or merge, the entity. This method also calls the model
171      * listeners to trigger the proper events associated with adding, deleting,
172      * or updating an entity.
173      *
174      * @param        mbMessageFlag the entity to add, update, or merge
175      * @param        merge boolean value for whether to merge the entity. The
176      *                default value is false. Setting merge to true is more
177      *                expensive and should only be true when mbMessageFlag is
178      *                transient. See LEP-5473 for a detailed discussion of this
179      *                method.
180      * @return        true if the portlet can be displayed via Ajax
181      */
182     public MBMessageFlag update(MBMessageFlag mbMessageFlag, boolean merge)
183         throws SystemException {
184         boolean isNew = mbMessageFlag.isNew();
185 
186         if (_listeners.length > 0) {
187             for (ModelListener listener : _listeners) {
188                 if (isNew) {
189                     listener.onBeforeCreate(mbMessageFlag);
190                 }
191                 else {
192                     listener.onBeforeUpdate(mbMessageFlag);
193                 }
194             }
195         }
196 
197         mbMessageFlag = updateImpl(mbMessageFlag, merge);
198 
199         if (_listeners.length > 0) {
200             for (ModelListener listener : _listeners) {
201                 if (isNew) {
202                     listener.onAfterCreate(mbMessageFlag);
203                 }
204                 else {
205                     listener.onAfterUpdate(mbMessageFlag);
206                 }
207             }
208         }
209 
210         return mbMessageFlag;
211     }
212 
213     public MBMessageFlag updateImpl(
214         com.liferay.portlet.messageboards.model.MBMessageFlag mbMessageFlag,
215         boolean merge) throws SystemException {
216         Session session = null;
217 
218         try {
219             session = openSession();
220 
221             BatchSessionUtil.update(session, mbMessageFlag, merge);
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 = null;
916 
917                 if (obc == null) {
918                     list = (List<MBMessageFlag>)QueryUtil.list(q, getDialect(),
919                             start, end, false);
920 
921                     Collections.sort(list);
922                 }
923                 else {
924                     list = (List<MBMessageFlag>)QueryUtil.list(q, getDialect(),
925                             start, end);
926                 }
927 
928                 FinderCacheUtil.putResult(finderClassNameCacheEnabled,
929                     finderClassName, finderMethodName, finderParams,
930                     finderArgs, list);
931 
932                 return list;
933             }
934             catch (Exception e) {
935                 throw processException(e);
936             }
937             finally {
938                 closeSession(session);
939             }
940         }
941         else {
942             return (List<MBMessageFlag>)result;
943         }
944     }
945 
946     public void removeByUserId(long userId) throws SystemException {
947         for (MBMessageFlag mbMessageFlag : findByUserId(userId)) {
948             remove(mbMessageFlag);
949         }
950     }
951 
952     public void removeByMessageId(long messageId) throws SystemException {
953         for (MBMessageFlag mbMessageFlag : findByMessageId(messageId)) {
954             remove(mbMessageFlag);
955         }
956     }
957 
958     public void removeByU_M(long userId, long messageId)
959         throws NoSuchMessageFlagException, SystemException {
960         MBMessageFlag mbMessageFlag = findByU_M(userId, messageId);
961 
962         remove(mbMessageFlag);
963     }
964 
965     public void removeAll() throws SystemException {
966         for (MBMessageFlag mbMessageFlag : findAll()) {
967             remove(mbMessageFlag);
968         }
969     }
970 
971     public int countByUserId(long userId) throws SystemException {
972         boolean finderClassNameCacheEnabled = MBMessageFlagModelImpl.CACHE_ENABLED;
973         String finderClassName = MBMessageFlag.class.getName();
974         String finderMethodName = "countByUserId";
975         String[] finderParams = new String[] { Long.class.getName() };
976         Object[] finderArgs = new Object[] { new Long(userId) };
977 
978         Object result = null;
979 
980         if (finderClassNameCacheEnabled) {
981             result = FinderCacheUtil.getResult(finderClassName,
982                     finderMethodName, finderParams, finderArgs, this);
983         }
984 
985         if (result == null) {
986             Session session = null;
987 
988             try {
989                 session = openSession();
990 
991                 StringBuilder query = new StringBuilder();
992 
993                 query.append("SELECT COUNT(*) ");
994                 query.append(
995                     "FROM com.liferay.portlet.messageboards.model.MBMessageFlag WHERE ");
996 
997                 query.append("userId = ?");
998 
999                 query.append(" ");
1000
1001                Query q = session.createQuery(query.toString());
1002
1003                QueryPos qPos = QueryPos.getInstance(q);
1004
1005                qPos.add(userId);
1006
1007                Long count = null;
1008
1009                Iterator<Long> itr = q.list().iterator();
1010
1011                if (itr.hasNext()) {
1012                    count = itr.next();
1013                }
1014
1015                if (count == null) {
1016                    count = new Long(0);
1017                }
1018
1019                FinderCacheUtil.putResult(finderClassNameCacheEnabled,
1020                    finderClassName, finderMethodName, finderParams,
1021                    finderArgs, count);
1022
1023                return count.intValue();
1024            }
1025            catch (Exception e) {
1026                throw processException(e);
1027            }
1028            finally {
1029                closeSession(session);
1030            }
1031        }
1032        else {
1033            return ((Long)result).intValue();
1034        }
1035    }
1036
1037    public int countByMessageId(long messageId) throws SystemException {
1038        boolean finderClassNameCacheEnabled = MBMessageFlagModelImpl.CACHE_ENABLED;
1039        String finderClassName = MBMessageFlag.class.getName();
1040        String finderMethodName = "countByMessageId";
1041        String[] finderParams = new String[] { Long.class.getName() };
1042        Object[] finderArgs = new Object[] { new Long(messageId) };
1043
1044        Object result = null;
1045
1046        if (finderClassNameCacheEnabled) {
1047            result = FinderCacheUtil.getResult(finderClassName,
1048                    finderMethodName, finderParams, finderArgs, this);
1049        }
1050
1051        if (result == null) {
1052            Session session = null;
1053
1054            try {
1055                session = openSession();
1056
1057                StringBuilder query = new StringBuilder();
1058
1059                query.append("SELECT COUNT(*) ");
1060                query.append(
1061                    "FROM com.liferay.portlet.messageboards.model.MBMessageFlag WHERE ");
1062
1063                query.append("messageId = ?");
1064
1065                query.append(" ");
1066
1067                Query q = session.createQuery(query.toString());
1068
1069                QueryPos qPos = QueryPos.getInstance(q);
1070
1071                qPos.add(messageId);
1072
1073                Long count = null;
1074
1075                Iterator<Long> itr = q.list().iterator();
1076
1077                if (itr.hasNext()) {
1078                    count = itr.next();
1079                }
1080
1081                if (count == null) {
1082                    count = new Long(0);
1083                }
1084
1085                FinderCacheUtil.putResult(finderClassNameCacheEnabled,
1086                    finderClassName, finderMethodName, finderParams,
1087                    finderArgs, count);
1088
1089                return count.intValue();
1090            }
1091            catch (Exception e) {
1092                throw processException(e);
1093            }
1094            finally {
1095                closeSession(session);
1096            }
1097        }
1098        else {
1099            return ((Long)result).intValue();
1100        }
1101    }
1102
1103    public int countByU_M(long userId, long messageId)
1104        throws SystemException {
1105        boolean finderClassNameCacheEnabled = MBMessageFlagModelImpl.CACHE_ENABLED;
1106        String finderClassName = MBMessageFlag.class.getName();
1107        String finderMethodName = "countByU_M";
1108        String[] finderParams = new String[] {
1109                Long.class.getName(), Long.class.getName()
1110            };
1111        Object[] finderArgs = new Object[] { new Long(userId), new Long(messageId) };
1112
1113        Object result = null;
1114
1115        if (finderClassNameCacheEnabled) {
1116            result = FinderCacheUtil.getResult(finderClassName,
1117                    finderMethodName, finderParams, finderArgs, this);
1118        }
1119
1120        if (result == null) {
1121            Session session = null;
1122
1123            try {
1124                session = openSession();
1125
1126                StringBuilder query = new StringBuilder();
1127
1128                query.append("SELECT COUNT(*) ");
1129                query.append(
1130                    "FROM com.liferay.portlet.messageboards.model.MBMessageFlag WHERE ");
1131
1132                query.append("userId = ?");
1133
1134                query.append(" AND ");
1135
1136                query.append("messageId = ?");
1137
1138                query.append(" ");
1139
1140                Query q = session.createQuery(query.toString());
1141
1142                QueryPos qPos = QueryPos.getInstance(q);
1143
1144                qPos.add(userId);
1145
1146                qPos.add(messageId);
1147
1148                Long count = null;
1149
1150                Iterator<Long> itr = q.list().iterator();
1151
1152                if (itr.hasNext()) {
1153                    count = itr.next();
1154                }
1155
1156                if (count == null) {
1157                    count = new Long(0);
1158                }
1159
1160                FinderCacheUtil.putResult(finderClassNameCacheEnabled,
1161                    finderClassName, finderMethodName, finderParams,
1162                    finderArgs, count);
1163
1164                return count.intValue();
1165            }
1166            catch (Exception e) {
1167                throw processException(e);
1168            }
1169            finally {
1170                closeSession(session);
1171            }
1172        }
1173        else {
1174            return ((Long)result).intValue();
1175        }
1176    }
1177
1178    public int countAll() throws SystemException {
1179        boolean finderClassNameCacheEnabled = MBMessageFlagModelImpl.CACHE_ENABLED;
1180        String finderClassName = MBMessageFlag.class.getName();
1181        String finderMethodName = "countAll";
1182        String[] finderParams = new String[] {  };
1183        Object[] finderArgs = new Object[] {  };
1184
1185        Object result = null;
1186
1187        if (finderClassNameCacheEnabled) {
1188            result = FinderCacheUtil.getResult(finderClassName,
1189                    finderMethodName, finderParams, finderArgs, this);
1190        }
1191
1192        if (result == null) {
1193            Session session = null;
1194
1195            try {
1196                session = openSession();
1197
1198                Query q = session.createQuery(
1199                        "SELECT COUNT(*) FROM com.liferay.portlet.messageboards.model.MBMessageFlag");
1200
1201                Long count = null;
1202
1203                Iterator<Long> itr = q.list().iterator();
1204
1205                if (itr.hasNext()) {
1206                    count = itr.next();
1207                }
1208
1209                if (count == null) {
1210                    count = new Long(0);
1211                }
1212
1213                FinderCacheUtil.putResult(finderClassNameCacheEnabled,
1214                    finderClassName, finderMethodName, finderParams,
1215                    finderArgs, count);
1216
1217                return count.intValue();
1218            }
1219            catch (Exception e) {
1220                throw processException(e);
1221            }
1222            finally {
1223                closeSession(session);
1224            }
1225        }
1226        else {
1227            return ((Long)result).intValue();
1228        }
1229    }
1230
1231    public void registerListener(ModelListener listener) {
1232        List<ModelListener> listeners = ListUtil.fromArray(_listeners);
1233
1234        listeners.add(listener);
1235
1236        _listeners = listeners.toArray(new ModelListener[listeners.size()]);
1237    }
1238
1239    public void unregisterListener(ModelListener listener) {
1240        List<ModelListener> listeners = ListUtil.fromArray(_listeners);
1241
1242        listeners.remove(listener);
1243
1244        _listeners = listeners.toArray(new ModelListener[listeners.size()]);
1245    }
1246
1247    public void afterPropertiesSet() {
1248        String[] listenerClassNames = StringUtil.split(GetterUtil.getString(
1249                    com.liferay.portal.util.PropsUtil.get(
1250                        "value.object.listener.com.liferay.portlet.messageboards.model.MBMessageFlag")));
1251
1252        if (listenerClassNames.length > 0) {
1253            try {
1254                List<ModelListener> listeners = new ArrayList<ModelListener>();
1255
1256                for (String listenerClassName : listenerClassNames) {
1257                    listeners.add((ModelListener)Class.forName(
1258                            listenerClassName).newInstance());
1259                }
1260
1261                _listeners = listeners.toArray(new ModelListener[listeners.size()]);
1262            }
1263            catch (Exception e) {
1264                _log.error(e);
1265            }
1266        }
1267    }
1268
1269    private static Log _log = LogFactory.getLog(MBMessageFlagPersistenceImpl.class);
1270    private ModelListener[] _listeners = new ModelListener[0];
1271}