1   /**
2    * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3    *
4    * The contents of this file are subject to the terms of the Liferay Enterprise
5    * Subscription License ("License"). You may not use this file except in
6    * compliance with the License. You can obtain a copy of the License by
7    * contacting Liferay, Inc. See the License for the specific language governing
8    * permissions and limitations under the License, including but not limited to
9    * distribution rights of the Software.
10   *
11   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
17   * SOFTWARE.
18   */
19  
20  package com.liferay.portlet.messageboards.service.persistence;
21  
22  import com.liferay.portal.SystemException;
23  import com.liferay.portal.kernel.annotation.BeanReference;
24  import com.liferay.portal.kernel.cache.CacheRegistry;
25  import com.liferay.portal.kernel.dao.orm.DynamicQuery;
26  import com.liferay.portal.kernel.dao.orm.EntityCacheUtil;
27  import com.liferay.portal.kernel.dao.orm.FinderCacheUtil;
28  import com.liferay.portal.kernel.dao.orm.FinderPath;
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.log.Log;
34  import com.liferay.portal.kernel.log.LogFactoryUtil;
35  import com.liferay.portal.kernel.util.GetterUtil;
36  import com.liferay.portal.kernel.util.OrderByComparator;
37  import com.liferay.portal.kernel.util.StringPool;
38  import com.liferay.portal.kernel.util.StringUtil;
39  import com.liferay.portal.model.ModelListener;
40  import com.liferay.portal.service.persistence.BatchSessionUtil;
41  import com.liferay.portal.service.persistence.impl.BasePersistenceImpl;
42  
43  import com.liferay.portlet.messageboards.NoSuchMessageFlagException;
44  import com.liferay.portlet.messageboards.model.MBMessageFlag;
45  import com.liferay.portlet.messageboards.model.impl.MBMessageFlagImpl;
46  import com.liferay.portlet.messageboards.model.impl.MBMessageFlagModelImpl;
47  
48  import java.util.ArrayList;
49  import java.util.Collections;
50  import java.util.List;
51  
52  /**
53   * <a href="MBMessageFlagPersistenceImpl.java.html"><b><i>View Source</i></b></a>
54   *
55   * @author Brian Wing Shun Chan
56   *
57   */
58  public class MBMessageFlagPersistenceImpl extends BasePersistenceImpl
59      implements MBMessageFlagPersistence {
60      public static final String FINDER_CLASS_NAME_ENTITY = MBMessageFlagImpl.class.getName();
61      public static final String FINDER_CLASS_NAME_LIST = FINDER_CLASS_NAME_ENTITY +
62          ".List";
63      public static final FinderPath FINDER_PATH_FIND_BY_USERID = new FinderPath(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
64              MBMessageFlagModelImpl.FINDER_CACHE_ENABLED,
65              FINDER_CLASS_NAME_LIST, "findByUserId",
66              new String[] { Long.class.getName() });
67      public static final FinderPath FINDER_PATH_FIND_BY_OBC_USERID = new FinderPath(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
68              MBMessageFlagModelImpl.FINDER_CACHE_ENABLED,
69              FINDER_CLASS_NAME_LIST, "findByUserId",
70              new String[] {
71                  Long.class.getName(),
72                  
73              "java.lang.Integer", "java.lang.Integer",
74                  "com.liferay.portal.kernel.util.OrderByComparator"
75              });
76      public static final FinderPath FINDER_PATH_COUNT_BY_USERID = new FinderPath(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
77              MBMessageFlagModelImpl.FINDER_CACHE_ENABLED,
78              FINDER_CLASS_NAME_LIST, "countByUserId",
79              new String[] { Long.class.getName() });
80      public static final FinderPath FINDER_PATH_FIND_BY_THREADID = new FinderPath(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
81              MBMessageFlagModelImpl.FINDER_CACHE_ENABLED,
82              FINDER_CLASS_NAME_LIST, "findByThreadId",
83              new String[] { Long.class.getName() });
84      public static final FinderPath FINDER_PATH_FIND_BY_OBC_THREADID = new FinderPath(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
85              MBMessageFlagModelImpl.FINDER_CACHE_ENABLED,
86              FINDER_CLASS_NAME_LIST, "findByThreadId",
87              new String[] {
88                  Long.class.getName(),
89                  
90              "java.lang.Integer", "java.lang.Integer",
91                  "com.liferay.portal.kernel.util.OrderByComparator"
92              });
93      public static final FinderPath FINDER_PATH_COUNT_BY_THREADID = new FinderPath(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
94              MBMessageFlagModelImpl.FINDER_CACHE_ENABLED,
95              FINDER_CLASS_NAME_LIST, "countByThreadId",
96              new String[] { Long.class.getName() });
97      public static final FinderPath FINDER_PATH_FIND_BY_MESSAGEID = new FinderPath(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
98              MBMessageFlagModelImpl.FINDER_CACHE_ENABLED,
99              FINDER_CLASS_NAME_LIST, "findByMessageId",
100             new String[] { Long.class.getName() });
101     public static final FinderPath FINDER_PATH_FIND_BY_OBC_MESSAGEID = new FinderPath(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
102             MBMessageFlagModelImpl.FINDER_CACHE_ENABLED,
103             FINDER_CLASS_NAME_LIST, "findByMessageId",
104             new String[] {
105                 Long.class.getName(),
106                 
107             "java.lang.Integer", "java.lang.Integer",
108                 "com.liferay.portal.kernel.util.OrderByComparator"
109             });
110     public static final FinderPath FINDER_PATH_COUNT_BY_MESSAGEID = new FinderPath(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
111             MBMessageFlagModelImpl.FINDER_CACHE_ENABLED,
112             FINDER_CLASS_NAME_LIST, "countByMessageId",
113             new String[] { Long.class.getName() });
114     public static final FinderPath FINDER_PATH_FIND_BY_T_F = new FinderPath(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
115             MBMessageFlagModelImpl.FINDER_CACHE_ENABLED,
116             FINDER_CLASS_NAME_LIST, "findByT_F",
117             new String[] { Long.class.getName(), Integer.class.getName() });
118     public static final FinderPath FINDER_PATH_FIND_BY_OBC_T_F = new FinderPath(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
119             MBMessageFlagModelImpl.FINDER_CACHE_ENABLED,
120             FINDER_CLASS_NAME_LIST, "findByT_F",
121             new String[] {
122                 Long.class.getName(), Integer.class.getName(),
123                 
124             "java.lang.Integer", "java.lang.Integer",
125                 "com.liferay.portal.kernel.util.OrderByComparator"
126             });
127     public static final FinderPath FINDER_PATH_COUNT_BY_T_F = new FinderPath(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
128             MBMessageFlagModelImpl.FINDER_CACHE_ENABLED,
129             FINDER_CLASS_NAME_LIST, "countByT_F",
130             new String[] { Long.class.getName(), Integer.class.getName() });
131     public static final FinderPath FINDER_PATH_FIND_BY_M_F = new FinderPath(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
132             MBMessageFlagModelImpl.FINDER_CACHE_ENABLED,
133             FINDER_CLASS_NAME_LIST, "findByM_F",
134             new String[] { Long.class.getName(), Integer.class.getName() });
135     public static final FinderPath FINDER_PATH_FIND_BY_OBC_M_F = new FinderPath(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
136             MBMessageFlagModelImpl.FINDER_CACHE_ENABLED,
137             FINDER_CLASS_NAME_LIST, "findByM_F",
138             new String[] {
139                 Long.class.getName(), Integer.class.getName(),
140                 
141             "java.lang.Integer", "java.lang.Integer",
142                 "com.liferay.portal.kernel.util.OrderByComparator"
143             });
144     public static final FinderPath FINDER_PATH_COUNT_BY_M_F = new FinderPath(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
145             MBMessageFlagModelImpl.FINDER_CACHE_ENABLED,
146             FINDER_CLASS_NAME_LIST, "countByM_F",
147             new String[] { Long.class.getName(), Integer.class.getName() });
148     public static final FinderPath FINDER_PATH_FIND_BY_U_T_F = new FinderPath(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
149             MBMessageFlagModelImpl.FINDER_CACHE_ENABLED,
150             FINDER_CLASS_NAME_LIST, "findByU_T_F",
151             new String[] {
152                 Long.class.getName(), Long.class.getName(),
153                 Integer.class.getName()
154             });
155     public static final FinderPath FINDER_PATH_FIND_BY_OBC_U_T_F = new FinderPath(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
156             MBMessageFlagModelImpl.FINDER_CACHE_ENABLED,
157             FINDER_CLASS_NAME_LIST, "findByU_T_F",
158             new String[] {
159                 Long.class.getName(), Long.class.getName(),
160                 Integer.class.getName(),
161                 
162             "java.lang.Integer", "java.lang.Integer",
163                 "com.liferay.portal.kernel.util.OrderByComparator"
164             });
165     public static final FinderPath FINDER_PATH_COUNT_BY_U_T_F = new FinderPath(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
166             MBMessageFlagModelImpl.FINDER_CACHE_ENABLED,
167             FINDER_CLASS_NAME_LIST, "countByU_T_F",
168             new String[] {
169                 Long.class.getName(), Long.class.getName(),
170                 Integer.class.getName()
171             });
172     public static final FinderPath FINDER_PATH_FETCH_BY_U_M_F = new FinderPath(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
173             MBMessageFlagModelImpl.FINDER_CACHE_ENABLED,
174             FINDER_CLASS_NAME_ENTITY, "fetchByU_M_F",
175             new String[] {
176                 Long.class.getName(), Long.class.getName(),
177                 Integer.class.getName()
178             });
179     public static final FinderPath FINDER_PATH_COUNT_BY_U_M_F = new FinderPath(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
180             MBMessageFlagModelImpl.FINDER_CACHE_ENABLED,
181             FINDER_CLASS_NAME_LIST, "countByU_M_F",
182             new String[] {
183                 Long.class.getName(), Long.class.getName(),
184                 Integer.class.getName()
185             });
186     public static final FinderPath FINDER_PATH_FIND_ALL = new FinderPath(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
187             MBMessageFlagModelImpl.FINDER_CACHE_ENABLED,
188             FINDER_CLASS_NAME_LIST, "findAll", new String[0]);
189     public static final FinderPath FINDER_PATH_COUNT_ALL = new FinderPath(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
190             MBMessageFlagModelImpl.FINDER_CACHE_ENABLED,
191             FINDER_CLASS_NAME_LIST, "countAll", new String[0]);
192 
193     public void cacheResult(MBMessageFlag mbMessageFlag) {
194         EntityCacheUtil.putResult(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
195             MBMessageFlagImpl.class, mbMessageFlag.getPrimaryKey(),
196             mbMessageFlag);
197 
198         FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_U_M_F,
199             new Object[] {
200                 new Long(mbMessageFlag.getUserId()),
201                 new Long(mbMessageFlag.getMessageId()),
202                 new Integer(mbMessageFlag.getFlag())
203             }, mbMessageFlag);
204     }
205 
206     public void cacheResult(List<MBMessageFlag> mbMessageFlags) {
207         for (MBMessageFlag mbMessageFlag : mbMessageFlags) {
208             if (EntityCacheUtil.getResult(
209                         MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
210                         MBMessageFlagImpl.class, mbMessageFlag.getPrimaryKey(),
211                         this) == null) {
212                 cacheResult(mbMessageFlag);
213             }
214         }
215     }
216 
217     public void clearCache() {
218         CacheRegistry.clear(MBMessageFlagImpl.class.getName());
219         EntityCacheUtil.clearCache(MBMessageFlagImpl.class.getName());
220         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_ENTITY);
221         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
222     }
223 
224     public MBMessageFlag create(long messageFlagId) {
225         MBMessageFlag mbMessageFlag = new MBMessageFlagImpl();
226 
227         mbMessageFlag.setNew(true);
228         mbMessageFlag.setPrimaryKey(messageFlagId);
229 
230         return mbMessageFlag;
231     }
232 
233     public MBMessageFlag remove(long messageFlagId)
234         throws NoSuchMessageFlagException, SystemException {
235         Session session = null;
236 
237         try {
238             session = openSession();
239 
240             MBMessageFlag mbMessageFlag = (MBMessageFlag)session.get(MBMessageFlagImpl.class,
241                     new Long(messageFlagId));
242 
243             if (mbMessageFlag == null) {
244                 if (_log.isWarnEnabled()) {
245                     _log.warn("No MBMessageFlag exists with the primary key " +
246                         messageFlagId);
247                 }
248 
249                 throw new NoSuchMessageFlagException(
250                     "No MBMessageFlag exists with the primary key " +
251                     messageFlagId);
252             }
253 
254             return remove(mbMessageFlag);
255         }
256         catch (NoSuchMessageFlagException nsee) {
257             throw nsee;
258         }
259         catch (Exception e) {
260             throw processException(e);
261         }
262         finally {
263             closeSession(session);
264         }
265     }
266 
267     public MBMessageFlag remove(MBMessageFlag mbMessageFlag)
268         throws SystemException {
269         for (ModelListener<MBMessageFlag> listener : listeners) {
270             listener.onBeforeRemove(mbMessageFlag);
271         }
272 
273         mbMessageFlag = removeImpl(mbMessageFlag);
274 
275         for (ModelListener<MBMessageFlag> listener : listeners) {
276             listener.onAfterRemove(mbMessageFlag);
277         }
278 
279         return mbMessageFlag;
280     }
281 
282     protected MBMessageFlag removeImpl(MBMessageFlag mbMessageFlag)
283         throws SystemException {
284         Session session = null;
285 
286         try {
287             session = openSession();
288 
289             if (mbMessageFlag.isCachedModel() || BatchSessionUtil.isEnabled()) {
290                 Object staleObject = session.get(MBMessageFlagImpl.class,
291                         mbMessageFlag.getPrimaryKeyObj());
292 
293                 if (staleObject != null) {
294                     session.evict(staleObject);
295                 }
296             }
297 
298             session.delete(mbMessageFlag);
299 
300             session.flush();
301         }
302         catch (Exception e) {
303             throw processException(e);
304         }
305         finally {
306             closeSession(session);
307         }
308 
309         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
310 
311         MBMessageFlagModelImpl mbMessageFlagModelImpl = (MBMessageFlagModelImpl)mbMessageFlag;
312 
313         FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_U_M_F,
314             new Object[] {
315                 new Long(mbMessageFlagModelImpl.getOriginalUserId()),
316                 new Long(mbMessageFlagModelImpl.getOriginalMessageId()),
317                 new Integer(mbMessageFlagModelImpl.getOriginalFlag())
318             });
319 
320         EntityCacheUtil.removeResult(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
321             MBMessageFlagImpl.class, mbMessageFlag.getPrimaryKey());
322 
323         return mbMessageFlag;
324     }
325 
326     /**
327      * @deprecated Use <code>update(MBMessageFlag mbMessageFlag, boolean merge)</code>.
328      */
329     public MBMessageFlag update(MBMessageFlag mbMessageFlag)
330         throws SystemException {
331         if (_log.isWarnEnabled()) {
332             _log.warn(
333                 "Using the deprecated update(MBMessageFlag mbMessageFlag) method. Use update(MBMessageFlag mbMessageFlag, boolean merge) instead.");
334         }
335 
336         return update(mbMessageFlag, false);
337     }
338 
339     /**
340      * Add, update, or merge, the entity. This method also calls the model
341      * listeners to trigger the proper events associated with adding, deleting,
342      * or updating an entity.
343      *
344      * @param        mbMessageFlag the entity to add, update, or merge
345      * @param        merge boolean value for whether to merge the entity. The
346      *                default value is false. Setting merge to true is more
347      *                expensive and should only be true when mbMessageFlag is
348      *                transient. See LEP-5473 for a detailed discussion of this
349      *                method.
350      * @return        true if the portlet can be displayed via Ajax
351      */
352     public MBMessageFlag update(MBMessageFlag mbMessageFlag, boolean merge)
353         throws SystemException {
354         boolean isNew = mbMessageFlag.isNew();
355 
356         for (ModelListener<MBMessageFlag> listener : listeners) {
357             if (isNew) {
358                 listener.onBeforeCreate(mbMessageFlag);
359             }
360             else {
361                 listener.onBeforeUpdate(mbMessageFlag);
362             }
363         }
364 
365         mbMessageFlag = updateImpl(mbMessageFlag, merge);
366 
367         for (ModelListener<MBMessageFlag> listener : listeners) {
368             if (isNew) {
369                 listener.onAfterCreate(mbMessageFlag);
370             }
371             else {
372                 listener.onAfterUpdate(mbMessageFlag);
373             }
374         }
375 
376         return mbMessageFlag;
377     }
378 
379     public MBMessageFlag updateImpl(
380         com.liferay.portlet.messageboards.model.MBMessageFlag mbMessageFlag,
381         boolean merge) throws SystemException {
382         boolean isNew = mbMessageFlag.isNew();
383 
384         MBMessageFlagModelImpl mbMessageFlagModelImpl = (MBMessageFlagModelImpl)mbMessageFlag;
385 
386         Session session = null;
387 
388         try {
389             session = openSession();
390 
391             BatchSessionUtil.update(session, mbMessageFlag, merge);
392 
393             mbMessageFlag.setNew(false);
394         }
395         catch (Exception e) {
396             throw processException(e);
397         }
398         finally {
399             closeSession(session);
400         }
401 
402         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
403 
404         EntityCacheUtil.putResult(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
405             MBMessageFlagImpl.class, mbMessageFlag.getPrimaryKey(),
406             mbMessageFlag);
407 
408         if (!isNew &&
409                 ((mbMessageFlag.getUserId() != mbMessageFlagModelImpl.getOriginalUserId()) ||
410                 (mbMessageFlag.getMessageId() != mbMessageFlagModelImpl.getOriginalMessageId()) ||
411                 (mbMessageFlag.getFlag() != mbMessageFlagModelImpl.getOriginalFlag()))) {
412             FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_U_M_F,
413                 new Object[] {
414                     new Long(mbMessageFlagModelImpl.getOriginalUserId()),
415                     new Long(mbMessageFlagModelImpl.getOriginalMessageId()),
416                     new Integer(mbMessageFlagModelImpl.getOriginalFlag())
417                 });
418         }
419 
420         if (isNew ||
421                 ((mbMessageFlag.getUserId() != mbMessageFlagModelImpl.getOriginalUserId()) ||
422                 (mbMessageFlag.getMessageId() != mbMessageFlagModelImpl.getOriginalMessageId()) ||
423                 (mbMessageFlag.getFlag() != mbMessageFlagModelImpl.getOriginalFlag()))) {
424             FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_U_M_F,
425                 new Object[] {
426                     new Long(mbMessageFlag.getUserId()),
427                     new Long(mbMessageFlag.getMessageId()),
428                     new Integer(mbMessageFlag.getFlag())
429                 }, mbMessageFlag);
430         }
431 
432         return mbMessageFlag;
433     }
434 
435     public MBMessageFlag findByPrimaryKey(long messageFlagId)
436         throws NoSuchMessageFlagException, SystemException {
437         MBMessageFlag mbMessageFlag = fetchByPrimaryKey(messageFlagId);
438 
439         if (mbMessageFlag == null) {
440             if (_log.isWarnEnabled()) {
441                 _log.warn("No MBMessageFlag exists with the primary key " +
442                     messageFlagId);
443             }
444 
445             throw new NoSuchMessageFlagException(
446                 "No MBMessageFlag exists with the primary key " +
447                 messageFlagId);
448         }
449 
450         return mbMessageFlag;
451     }
452 
453     public MBMessageFlag fetchByPrimaryKey(long messageFlagId)
454         throws SystemException {
455         MBMessageFlag mbMessageFlag = (MBMessageFlag)EntityCacheUtil.getResult(MBMessageFlagModelImpl.ENTITY_CACHE_ENABLED,
456                 MBMessageFlagImpl.class, messageFlagId, this);
457 
458         if (mbMessageFlag == null) {
459             Session session = null;
460 
461             try {
462                 session = openSession();
463 
464                 mbMessageFlag = (MBMessageFlag)session.get(MBMessageFlagImpl.class,
465                         new Long(messageFlagId));
466             }
467             catch (Exception e) {
468                 throw processException(e);
469             }
470             finally {
471                 if (mbMessageFlag != null) {
472                     cacheResult(mbMessageFlag);
473                 }
474 
475                 closeSession(session);
476             }
477         }
478 
479         return mbMessageFlag;
480     }
481 
482     public List<MBMessageFlag> findByUserId(long userId)
483         throws SystemException {
484         Object[] finderArgs = new Object[] { new Long(userId) };
485 
486         List<MBMessageFlag> list = (List<MBMessageFlag>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_USERID,
487                 finderArgs, this);
488 
489         if (list == null) {
490             Session session = null;
491 
492             try {
493                 session = openSession();
494 
495                 StringBuilder query = new StringBuilder();
496 
497                 query.append(
498                     "SELECT mbMessageFlag FROM MBMessageFlag mbMessageFlag WHERE ");
499 
500                 query.append("mbMessageFlag.userId = ?");
501 
502                 query.append(" ");
503 
504                 Query q = session.createQuery(query.toString());
505 
506                 QueryPos qPos = QueryPos.getInstance(q);
507 
508                 qPos.add(userId);
509 
510                 list = q.list();
511             }
512             catch (Exception e) {
513                 throw processException(e);
514             }
515             finally {
516                 if (list == null) {
517                     list = new ArrayList<MBMessageFlag>();
518                 }
519 
520                 cacheResult(list);
521 
522                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_USERID,
523                     finderArgs, list);
524 
525                 closeSession(session);
526             }
527         }
528 
529         return list;
530     }
531 
532     public List<MBMessageFlag> findByUserId(long userId, int start, int end)
533         throws SystemException {
534         return findByUserId(userId, start, end, null);
535     }
536 
537     public List<MBMessageFlag> findByUserId(long userId, int start, int end,
538         OrderByComparator obc) throws SystemException {
539         Object[] finderArgs = new Object[] {
540                 new Long(userId),
541                 
542                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
543             };
544 
545         List<MBMessageFlag> list = (List<MBMessageFlag>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_USERID,
546                 finderArgs, this);
547 
548         if (list == null) {
549             Session session = null;
550 
551             try {
552                 session = openSession();
553 
554                 StringBuilder query = new StringBuilder();
555 
556                 query.append(
557                     "SELECT mbMessageFlag FROM MBMessageFlag mbMessageFlag WHERE ");
558 
559                 query.append("mbMessageFlag.userId = ?");
560 
561                 query.append(" ");
562 
563                 if (obc != null) {
564                     query.append("ORDER BY ");
565 
566                     String[] orderByFields = obc.getOrderByFields();
567 
568                     for (int i = 0; i < orderByFields.length; i++) {
569                         query.append("mbMessageFlag.");
570                         query.append(orderByFields[i]);
571 
572                         if (obc.isAscending()) {
573                             query.append(" ASC");
574                         }
575                         else {
576                             query.append(" DESC");
577                         }
578 
579                         if ((i + 1) < orderByFields.length) {
580                             query.append(", ");
581                         }
582                     }
583                 }
584 
585                 Query q = session.createQuery(query.toString());
586 
587                 QueryPos qPos = QueryPos.getInstance(q);
588 
589                 qPos.add(userId);
590 
591                 list = (List<MBMessageFlag>)QueryUtil.list(q, getDialect(),
592                         start, end);
593             }
594             catch (Exception e) {
595                 throw processException(e);
596             }
597             finally {
598                 if (list == null) {
599                     list = new ArrayList<MBMessageFlag>();
600                 }
601 
602                 cacheResult(list);
603 
604                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_USERID,
605                     finderArgs, list);
606 
607                 closeSession(session);
608             }
609         }
610 
611         return list;
612     }
613 
614     public MBMessageFlag findByUserId_First(long userId, OrderByComparator obc)
615         throws NoSuchMessageFlagException, SystemException {
616         List<MBMessageFlag> list = findByUserId(userId, 0, 1, obc);
617 
618         if (list.isEmpty()) {
619             StringBuilder msg = new StringBuilder();
620 
621             msg.append("No MBMessageFlag exists with the key {");
622 
623             msg.append("userId=" + userId);
624 
625             msg.append(StringPool.CLOSE_CURLY_BRACE);
626 
627             throw new NoSuchMessageFlagException(msg.toString());
628         }
629         else {
630             return list.get(0);
631         }
632     }
633 
634     public MBMessageFlag findByUserId_Last(long userId, OrderByComparator obc)
635         throws NoSuchMessageFlagException, SystemException {
636         int count = countByUserId(userId);
637 
638         List<MBMessageFlag> list = findByUserId(userId, count - 1, count, obc);
639 
640         if (list.isEmpty()) {
641             StringBuilder msg = new StringBuilder();
642 
643             msg.append("No MBMessageFlag exists with the key {");
644 
645             msg.append("userId=" + userId);
646 
647             msg.append(StringPool.CLOSE_CURLY_BRACE);
648 
649             throw new NoSuchMessageFlagException(msg.toString());
650         }
651         else {
652             return list.get(0);
653         }
654     }
655 
656     public MBMessageFlag[] findByUserId_PrevAndNext(long messageFlagId,
657         long userId, OrderByComparator obc)
658         throws NoSuchMessageFlagException, SystemException {
659         MBMessageFlag mbMessageFlag = findByPrimaryKey(messageFlagId);
660 
661         int count = countByUserId(userId);
662 
663         Session session = null;
664 
665         try {
666             session = openSession();
667 
668             StringBuilder query = new StringBuilder();
669 
670             query.append(
671                 "SELECT mbMessageFlag FROM MBMessageFlag mbMessageFlag WHERE ");
672 
673             query.append("mbMessageFlag.userId = ?");
674 
675             query.append(" ");
676 
677             if (obc != null) {
678                 query.append("ORDER BY ");
679 
680                 String[] orderByFields = obc.getOrderByFields();
681 
682                 for (int i = 0; i < orderByFields.length; i++) {
683                     query.append("mbMessageFlag.");
684                     query.append(orderByFields[i]);
685 
686                     if (obc.isAscending()) {
687                         query.append(" ASC");
688                     }
689                     else {
690                         query.append(" DESC");
691                     }
692 
693                     if ((i + 1) < orderByFields.length) {
694                         query.append(", ");
695                     }
696                 }
697             }
698 
699             Query q = session.createQuery(query.toString());
700 
701             QueryPos qPos = QueryPos.getInstance(q);
702 
703             qPos.add(userId);
704 
705             Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
706                     mbMessageFlag);
707 
708             MBMessageFlag[] array = new MBMessageFlagImpl[3];
709 
710             array[0] = (MBMessageFlag)objArray[0];
711             array[1] = (MBMessageFlag)objArray[1];
712             array[2] = (MBMessageFlag)objArray[2];
713 
714             return array;
715         }
716         catch (Exception e) {
717             throw processException(e);
718         }
719         finally {
720             closeSession(session);
721         }
722     }
723 
724     public List<MBMessageFlag> findByThreadId(long threadId)
725         throws SystemException {
726         Object[] finderArgs = new Object[] { new Long(threadId) };
727 
728         List<MBMessageFlag> list = (List<MBMessageFlag>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_THREADID,
729                 finderArgs, this);
730 
731         if (list == null) {
732             Session session = null;
733 
734             try {
735                 session = openSession();
736 
737                 StringBuilder query = new StringBuilder();
738 
739                 query.append(
740                     "SELECT mbMessageFlag FROM MBMessageFlag mbMessageFlag WHERE ");
741 
742                 query.append("mbMessageFlag.threadId = ?");
743 
744                 query.append(" ");
745 
746                 Query q = session.createQuery(query.toString());
747 
748                 QueryPos qPos = QueryPos.getInstance(q);
749 
750                 qPos.add(threadId);
751 
752                 list = q.list();
753             }
754             catch (Exception e) {
755                 throw processException(e);
756             }
757             finally {
758                 if (list == null) {
759                     list = new ArrayList<MBMessageFlag>();
760                 }
761 
762                 cacheResult(list);
763 
764                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_THREADID,
765                     finderArgs, list);
766 
767                 closeSession(session);
768             }
769         }
770 
771         return list;
772     }
773 
774     public List<MBMessageFlag> findByThreadId(long threadId, int start, int end)
775         throws SystemException {
776         return findByThreadId(threadId, start, end, null);
777     }
778 
779     public List<MBMessageFlag> findByThreadId(long threadId, int start,
780         int end, OrderByComparator obc) throws SystemException {
781         Object[] finderArgs = new Object[] {
782                 new Long(threadId),
783                 
784                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
785             };
786 
787         List<MBMessageFlag> list = (List<MBMessageFlag>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_THREADID,
788                 finderArgs, this);
789 
790         if (list == null) {
791             Session session = null;
792 
793             try {
794                 session = openSession();
795 
796                 StringBuilder query = new StringBuilder();
797 
798                 query.append(
799                     "SELECT mbMessageFlag FROM MBMessageFlag mbMessageFlag WHERE ");
800 
801                 query.append("mbMessageFlag.threadId = ?");
802 
803                 query.append(" ");
804 
805                 if (obc != null) {
806                     query.append("ORDER BY ");
807 
808                     String[] orderByFields = obc.getOrderByFields();
809 
810                     for (int i = 0; i < orderByFields.length; i++) {
811                         query.append("mbMessageFlag.");
812                         query.append(orderByFields[i]);
813 
814                         if (obc.isAscending()) {
815                             query.append(" ASC");
816                         }
817                         else {
818                             query.append(" DESC");
819                         }
820 
821                         if ((i + 1) < orderByFields.length) {
822                             query.append(", ");
823                         }
824                     }
825                 }
826 
827                 Query q = session.createQuery(query.toString());
828 
829                 QueryPos qPos = QueryPos.getInstance(q);
830 
831                 qPos.add(threadId);
832 
833                 list = (List<MBMessageFlag>)QueryUtil.list(q, getDialect(),
834                         start, end);
835             }
836             catch (Exception e) {
837                 throw processException(e);
838             }
839             finally {
840                 if (list == null) {
841                     list = new ArrayList<MBMessageFlag>();
842                 }
843 
844                 cacheResult(list);
845 
846                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_THREADID,
847                     finderArgs, list);
848 
849                 closeSession(session);
850             }
851         }
852 
853         return list;
854     }
855 
856     public MBMessageFlag findByThreadId_First(long threadId,
857         OrderByComparator obc)
858         throws NoSuchMessageFlagException, SystemException {
859         List<MBMessageFlag> list = findByThreadId(threadId, 0, 1, obc);
860 
861         if (list.isEmpty()) {
862             StringBuilder msg = new StringBuilder();
863 
864             msg.append("No MBMessageFlag exists with the key {");
865 
866             msg.append("threadId=" + threadId);
867 
868             msg.append(StringPool.CLOSE_CURLY_BRACE);
869 
870             throw new NoSuchMessageFlagException(msg.toString());
871         }
872         else {
873             return list.get(0);
874         }
875     }
876 
877     public MBMessageFlag findByThreadId_Last(long threadId,
878         OrderByComparator obc)
879         throws NoSuchMessageFlagException, SystemException {
880         int count = countByThreadId(threadId);
881 
882         List<MBMessageFlag> list = findByThreadId(threadId, count - 1, count,
883                 obc);
884 
885         if (list.isEmpty()) {
886             StringBuilder msg = new StringBuilder();
887 
888             msg.append("No MBMessageFlag exists with the key {");
889 
890             msg.append("threadId=" + threadId);
891 
892             msg.append(StringPool.CLOSE_CURLY_BRACE);
893 
894             throw new NoSuchMessageFlagException(msg.toString());
895         }
896         else {
897             return list.get(0);
898         }
899     }
900 
901     public MBMessageFlag[] findByThreadId_PrevAndNext(long messageFlagId,
902         long threadId, OrderByComparator obc)
903         throws NoSuchMessageFlagException, SystemException {
904         MBMessageFlag mbMessageFlag = findByPrimaryKey(messageFlagId);
905 
906         int count = countByThreadId(threadId);
907 
908         Session session = null;
909 
910         try {
911             session = openSession();
912 
913             StringBuilder query = new StringBuilder();
914 
915             query.append(
916                 "SELECT mbMessageFlag FROM MBMessageFlag mbMessageFlag WHERE ");
917 
918             query.append("mbMessageFlag.threadId = ?");
919 
920             query.append(" ");
921 
922             if (obc != null) {
923                 query.append("ORDER BY ");
924 
925                 String[] orderByFields = obc.getOrderByFields();
926 
927                 for (int i = 0; i < orderByFields.length; i++) {
928                     query.append("mbMessageFlag.");
929                     query.append(orderByFields[i]);
930 
931                     if (obc.isAscending()) {
932                         query.append(" ASC");
933                     }
934                     else {
935                         query.append(" DESC");
936                     }
937 
938                     if ((i + 1) < orderByFields.length) {
939                         query.append(", ");
940                     }
941                 }
942             }
943 
944             Query q = session.createQuery(query.toString());
945 
946             QueryPos qPos = QueryPos.getInstance(q);
947 
948             qPos.add(threadId);
949 
950             Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
951                     mbMessageFlag);
952 
953             MBMessageFlag[] array = new MBMessageFlagImpl[3];
954 
955             array[0] = (MBMessageFlag)objArray[0];
956             array[1] = (MBMessageFlag)objArray[1];
957             array[2] = (MBMessageFlag)objArray[2];
958 
959             return array;
960         }
961         catch (Exception e) {
962             throw processException(e);
963         }
964         finally {
965             closeSession(session);
966         }
967     }
968 
969     public List<MBMessageFlag> findByMessageId(long messageId)
970         throws SystemException {
971         Object[] finderArgs = new Object[] { new Long(messageId) };
972 
973         List<MBMessageFlag> list = (List<MBMessageFlag>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_MESSAGEID,
974                 finderArgs, this);
975 
976         if (list == null) {
977             Session session = null;
978 
979             try {
980                 session = openSession();
981 
982                 StringBuilder query = new StringBuilder();
983 
984                 query.append(
985                     "SELECT mbMessageFlag FROM MBMessageFlag mbMessageFlag WHERE ");
986 
987                 query.append("mbMessageFlag.messageId = ?");
988 
989                 query.append(" ");
990 
991                 Query q = session.createQuery(query.toString());
992 
993                 QueryPos qPos = QueryPos.getInstance(q);
994 
995                 qPos.add(messageId);
996 
997                 list = q.list();
998             }
999             catch (Exception e) {
1000                throw processException(e);
1001            }
1002            finally {
1003                if (list == null) {
1004                    list = new ArrayList<MBMessageFlag>();
1005                }
1006
1007                cacheResult(list);
1008
1009                FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_MESSAGEID,
1010                    finderArgs, list);
1011
1012                closeSession(session);
1013            }
1014        }
1015
1016        return list;
1017    }
1018
1019    public List<MBMessageFlag> findByMessageId(long messageId, int start,
1020        int end) throws SystemException {
1021        return findByMessageId(messageId, start, end, null);
1022    }
1023
1024    public List<MBMessageFlag> findByMessageId(long messageId, int start,
1025        int end, OrderByComparator obc) throws SystemException {
1026        Object[] finderArgs = new Object[] {
1027                new Long(messageId),
1028                
1029                String.valueOf(start), String.valueOf(end), String.valueOf(obc)
1030            };
1031
1032        List<MBMessageFlag> list = (List<MBMessageFlag>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_MESSAGEID,
1033                finderArgs, this);
1034
1035        if (list == null) {
1036            Session session = null;
1037
1038            try {
1039                session = openSession();
1040
1041                StringBuilder query = new StringBuilder();
1042
1043                query.append(
1044                    "SELECT mbMessageFlag FROM MBMessageFlag mbMessageFlag WHERE ");
1045
1046                query.append("mbMessageFlag.messageId = ?");
1047
1048                query.append(" ");
1049
1050                if (obc != null) {
1051                    query.append("ORDER BY ");
1052
1053                    String[] orderByFields = obc.getOrderByFields();
1054
1055                    for (int i = 0; i < orderByFields.length; i++) {
1056                        query.append("mbMessageFlag.");
1057                        query.append(orderByFields[i]);
1058
1059                        if (obc.isAscending()) {
1060                            query.append(" ASC");
1061                        }
1062                        else {
1063                            query.append(" DESC");
1064                        }
1065
1066                        if ((i + 1) < orderByFields.length) {
1067                            query.append(", ");
1068                        }
1069                    }
1070                }
1071
1072                Query q = session.createQuery(query.toString());
1073
1074                QueryPos qPos = QueryPos.getInstance(q);
1075
1076                qPos.add(messageId);
1077
1078                list = (List<MBMessageFlag>)QueryUtil.list(q, getDialect(),
1079                        start, end);
1080            }
1081            catch (Exception e) {
1082                throw processException(e);
1083            }
1084            finally {
1085                if (list == null) {
1086                    list = new ArrayList<MBMessageFlag>();
1087                }
1088
1089                cacheResult(list);
1090
1091                FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_MESSAGEID,
1092                    finderArgs, list);
1093
1094                closeSession(session);
1095            }
1096        }
1097
1098        return list;
1099    }
1100
1101    public MBMessageFlag findByMessageId_First(long messageId,
1102        OrderByComparator obc)
1103        throws NoSuchMessageFlagException, SystemException {
1104        List<MBMessageFlag> list = findByMessageId(messageId, 0, 1, obc);
1105
1106        if (list.isEmpty()) {
1107            StringBuilder msg = new StringBuilder();
1108
1109            msg.append("No MBMessageFlag exists with the key {");
1110
1111            msg.append("messageId=" + messageId);
1112
1113            msg.append(StringPool.CLOSE_CURLY_BRACE);
1114
1115            throw new NoSuchMessageFlagException(msg.toString());
1116        }
1117        else {
1118            return list.get(0);
1119        }
1120    }
1121
1122    public MBMessageFlag findByMessageId_Last(long messageId,
1123        OrderByComparator obc)
1124        throws NoSuchMessageFlagException, SystemException {
1125        int count = countByMessageId(messageId);
1126
1127        List<MBMessageFlag> list = findByMessageId(messageId, count - 1, count,
1128                obc);
1129
1130        if (list.isEmpty()) {
1131            StringBuilder msg = new StringBuilder();
1132
1133            msg.append("No MBMessageFlag exists with the key {");
1134
1135            msg.append("messageId=" + messageId);
1136
1137            msg.append(StringPool.CLOSE_CURLY_BRACE);
1138
1139            throw new NoSuchMessageFlagException(msg.toString());
1140        }
1141        else {
1142            return list.get(0);
1143        }
1144    }
1145
1146    public MBMessageFlag[] findByMessageId_PrevAndNext(long messageFlagId,
1147        long messageId, OrderByComparator obc)
1148        throws NoSuchMessageFlagException, SystemException {
1149        MBMessageFlag mbMessageFlag = findByPrimaryKey(messageFlagId);
1150
1151        int count = countByMessageId(messageId);
1152
1153        Session session = null;
1154
1155        try {
1156            session = openSession();
1157
1158            StringBuilder query = new StringBuilder();
1159
1160            query.append(
1161                "SELECT mbMessageFlag FROM MBMessageFlag mbMessageFlag WHERE ");
1162
1163            query.append("mbMessageFlag.messageId = ?");
1164
1165            query.append(" ");
1166
1167            if (obc != null) {
1168                query.append("ORDER BY ");
1169
1170                String[] orderByFields = obc.getOrderByFields();
1171
1172                for (int i = 0; i < orderByFields.length; i++) {
1173                    query.append("mbMessageFlag.");
1174                    query.append(orderByFields[i]);
1175
1176                    if (obc.isAscending()) {
1177                        query.append(" ASC");
1178                    }
1179                    else {
1180                        query.append(" DESC");
1181                    }
1182
1183                    if ((i + 1) < orderByFields.length) {
1184                        query.append(", ");
1185                    }
1186                }
1187            }
1188
1189            Query q = session.createQuery(query.toString());
1190
1191            QueryPos qPos = QueryPos.getInstance(q);
1192
1193            qPos.add(messageId);
1194
1195            Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
1196                    mbMessageFlag);
1197
1198            MBMessageFlag[] array = new MBMessageFlagImpl[3];
1199
1200            array[0] = (MBMessageFlag)objArray[0];
1201            array[1] = (MBMessageFlag)objArray[1];
1202            array[2] = (MBMessageFlag)objArray[2];
1203
1204            return array;
1205        }
1206        catch (Exception e) {
1207            throw processException(e);
1208        }
1209        finally {
1210            closeSession(session);
1211        }
1212    }
1213
1214    public List<MBMessageFlag> findByT_F(long threadId, int flag)
1215        throws SystemException {
1216        Object[] finderArgs = new Object[] { new Long(threadId), new Integer(flag) };
1217
1218        List<MBMessageFlag> list = (List<MBMessageFlag>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_T_F,
1219                finderArgs, this);
1220
1221        if (list == null) {
1222            Session session = null;
1223
1224            try {
1225                session = openSession();
1226
1227                StringBuilder query = new StringBuilder();
1228
1229                query.append(
1230                    "SELECT mbMessageFlag FROM MBMessageFlag mbMessageFlag WHERE ");
1231
1232                query.append("mbMessageFlag.threadId = ?");
1233
1234                query.append(" AND ");
1235
1236                query.append("mbMessageFlag.flag = ?");
1237
1238                query.append(" ");
1239
1240                Query q = session.createQuery(query.toString());
1241
1242                QueryPos qPos = QueryPos.getInstance(q);
1243
1244                qPos.add(threadId);
1245
1246                qPos.add(flag);
1247
1248                list = q.list();
1249            }
1250            catch (Exception e) {
1251                throw processException(e);
1252            }
1253            finally {
1254                if (list == null) {
1255                    list = new ArrayList<MBMessageFlag>();
1256                }
1257
1258                cacheResult(list);
1259
1260                FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_T_F, finderArgs,
1261                    list);
1262
1263                closeSession(session);
1264            }
1265        }
1266
1267        return list;
1268    }
1269
1270    public List<MBMessageFlag> findByT_F(long threadId, int flag, int start,
1271        int end) throws SystemException {
1272        return findByT_F(threadId, flag, start, end, null);
1273    }
1274
1275    public List<MBMessageFlag> findByT_F(long threadId, int flag, int start,
1276        int end, OrderByComparator obc) throws SystemException {
1277        Object[] finderArgs = new Object[] {
1278                new Long(threadId), new Integer(flag),
1279                
1280                String.valueOf(start), String.valueOf(end), String.valueOf(obc)
1281            };
1282
1283        List<MBMessageFlag> list = (List<MBMessageFlag>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_T_F,
1284                finderArgs, this);
1285
1286        if (list == null) {
1287            Session session = null;
1288
1289            try {
1290                session = openSession();
1291
1292                StringBuilder query = new StringBuilder();
1293
1294                query.append(
1295                    "SELECT mbMessageFlag FROM MBMessageFlag mbMessageFlag WHERE ");
1296
1297                query.append("mbMessageFlag.threadId = ?");
1298
1299                query.append(" AND ");
1300
1301                query.append("mbMessageFlag.flag = ?");
1302
1303                query.append(" ");
1304
1305                if (obc != null) {
1306                    query.append("ORDER BY ");
1307
1308                    String[] orderByFields = obc.getOrderByFields();
1309
1310                    for (int i = 0; i < orderByFields.length; i++) {
1311                        query.append("mbMessageFlag.");
1312                        query.append(orderByFields[i]);
1313
1314                        if (obc.isAscending()) {
1315                            query.append(" ASC");
1316                        }
1317                        else {
1318                            query.append(" DESC");
1319                        }
1320
1321                        if ((i + 1) < orderByFields.length) {
1322                            query.append(", ");
1323                        }
1324                    }
1325                }
1326
1327                Query q = session.createQuery(query.toString());
1328
1329                QueryPos qPos = QueryPos.getInstance(q);
1330
1331                qPos.add(threadId);
1332
1333                qPos.add(flag);
1334
1335                list = (List<MBMessageFlag>)QueryUtil.list(q, getDialect(),
1336                        start, end);
1337            }
1338            catch (Exception e) {
1339                throw processException(e);
1340            }
1341            finally {
1342                if (list == null) {
1343                    list = new ArrayList<MBMessageFlag>();
1344                }
1345
1346                cacheResult(list);
1347
1348                FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_T_F,
1349                    finderArgs, list);
1350
1351                closeSession(session);
1352            }
1353        }
1354
1355        return list;
1356    }
1357
1358    public MBMessageFlag findByT_F_First(long threadId, int flag,
1359        OrderByComparator obc)
1360        throws NoSuchMessageFlagException, SystemException {
1361        List<MBMessageFlag> list = findByT_F(threadId, flag, 0, 1, obc);
1362
1363        if (list.isEmpty()) {
1364            StringBuilder msg = new StringBuilder();
1365
1366            msg.append("No MBMessageFlag exists with the key {");
1367
1368            msg.append("threadId=" + threadId);
1369
1370            msg.append(", ");
1371            msg.append("flag=" + flag);
1372
1373            msg.append(StringPool.CLOSE_CURLY_BRACE);
1374
1375            throw new NoSuchMessageFlagException(msg.toString());
1376        }
1377        else {
1378            return list.get(0);
1379        }
1380    }
1381
1382    public MBMessageFlag findByT_F_Last(long threadId, int flag,
1383        OrderByComparator obc)
1384        throws NoSuchMessageFlagException, SystemException {
1385        int count = countByT_F(threadId, flag);
1386
1387        List<MBMessageFlag> list = findByT_F(threadId, flag, count - 1, count,
1388                obc);
1389
1390        if (list.isEmpty()) {
1391            StringBuilder msg = new StringBuilder();
1392
1393            msg.append("No MBMessageFlag exists with the key {");
1394
1395            msg.append("threadId=" + threadId);
1396
1397            msg.append(", ");
1398            msg.append("flag=" + flag);
1399
1400            msg.append(StringPool.CLOSE_CURLY_BRACE);
1401
1402            throw new NoSuchMessageFlagException(msg.toString());
1403        }
1404        else {
1405            return list.get(0);
1406        }
1407    }
1408
1409    public MBMessageFlag[] findByT_F_PrevAndNext(long messageFlagId,
1410        long threadId, int flag, OrderByComparator obc)
1411        throws NoSuchMessageFlagException, SystemException {
1412        MBMessageFlag mbMessageFlag = findByPrimaryKey(messageFlagId);
1413
1414        int count = countByT_F(threadId, flag);
1415
1416        Session session = null;
1417
1418        try {
1419            session = openSession();
1420
1421            StringBuilder query = new StringBuilder();
1422
1423            query.append(
1424                "SELECT mbMessageFlag FROM MBMessageFlag mbMessageFlag WHERE ");
1425
1426            query.append("mbMessageFlag.threadId = ?");
1427
1428            query.append(" AND ");
1429
1430            query.append("mbMessageFlag.flag = ?");
1431
1432            query.append(" ");
1433
1434            if (obc != null) {
1435                query.append("ORDER BY ");
1436
1437                String[] orderByFields = obc.getOrderByFields();
1438
1439                for (int i = 0; i < orderByFields.length; i++) {
1440                    query.append("mbMessageFlag.");
1441                    query.append(orderByFields[i]);
1442
1443                    if (obc.isAscending()) {
1444                        query.append(" ASC");
1445                    }
1446                    else {
1447                        query.append(" DESC");
1448                    }
1449
1450                    if ((i + 1) < orderByFields.length) {
1451                        query.append(", ");
1452                    }
1453                }
1454            }
1455
1456            Query q = session.createQuery(query.toString());
1457
1458            QueryPos qPos = QueryPos.getInstance(q);
1459
1460            qPos.add(threadId);
1461
1462            qPos.add(flag);
1463
1464            Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
1465                    mbMessageFlag);
1466
1467            MBMessageFlag[] array = new MBMessageFlagImpl[3];
1468
1469            array[0] = (MBMessageFlag)objArray[0];
1470            array[1] = (MBMessageFlag)objArray[1];
1471            array[2] = (MBMessageFlag)objArray[2];
1472
1473            return array;
1474        }
1475        catch (Exception e) {
1476            throw processException(e);
1477        }
1478        finally {
1479            closeSession(session);
1480        }
1481    }
1482
1483    public List<MBMessageFlag> findByM_F(long messageId, int flag)
1484        throws SystemException {
1485        Object[] finderArgs = new Object[] {
1486                new Long(messageId), new Integer(flag)
1487            };
1488
1489        List<MBMessageFlag> list = (List<MBMessageFlag>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_M_F,
1490                finderArgs, this);
1491
1492        if (list == null) {
1493            Session session = null;
1494
1495            try {
1496                session = openSession();
1497
1498                StringBuilder query = new StringBuilder();
1499
1500                query.append(
1501                    "SELECT mbMessageFlag FROM MBMessageFlag mbMessageFlag WHERE ");
1502
1503                query.append("mbMessageFlag.messageId = ?");
1504
1505                query.append(" AND ");
1506
1507                query.append("mbMessageFlag.flag = ?");
1508
1509                query.append(" ");
1510
1511                Query q = session.createQuery(query.toString());
1512
1513                QueryPos qPos = QueryPos.getInstance(q);
1514
1515                qPos.add(messageId);
1516
1517                qPos.add(flag);
1518
1519                list = q.list();
1520            }
1521            catch (Exception e) {
1522                throw processException(e);
1523            }
1524            finally {
1525                if (list == null) {
1526                    list = new ArrayList<MBMessageFlag>();
1527                }
1528
1529                cacheResult(list);
1530
1531                FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_M_F, finderArgs,
1532                    list);
1533
1534                closeSession(session);
1535            }
1536        }
1537
1538        return list;
1539    }
1540
1541    public List<MBMessageFlag> findByM_F(long messageId, int flag, int start,
1542        int end) throws SystemException {
1543        return findByM_F(messageId, flag, start, end, null);
1544    }
1545
1546    public List<MBMessageFlag> findByM_F(long messageId, int flag, int start,
1547        int end, OrderByComparator obc) throws SystemException {
1548        Object[] finderArgs = new Object[] {
1549                new Long(messageId), new Integer(flag),
1550                
1551                String.valueOf(start), String.valueOf(end), String.valueOf(obc)
1552            };
1553
1554        List<MBMessageFlag> list = (List<MBMessageFlag>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_M_F,
1555                finderArgs, this);
1556
1557        if (list == null) {
1558            Session session = null;
1559
1560            try {
1561                session = openSession();
1562
1563                StringBuilder query = new StringBuilder();
1564
1565                query.append(
1566                    "SELECT mbMessageFlag FROM MBMessageFlag mbMessageFlag WHERE ");
1567
1568                query.append("mbMessageFlag.messageId = ?");
1569
1570                query.append(" AND ");
1571
1572                query.append("mbMessageFlag.flag = ?");
1573
1574                query.append(" ");
1575
1576                if (obc != null) {
1577                    query.append("ORDER BY ");
1578
1579                    String[] orderByFields = obc.getOrderByFields();
1580
1581                    for (int i = 0; i < orderByFields.length; i++) {
1582                        query.append("mbMessageFlag.");
1583                        query.append(orderByFields[i]);
1584
1585                        if (obc.isAscending()) {
1586                            query.append(" ASC");
1587                        }
1588                        else {
1589                            query.append(" DESC");
1590                        }
1591
1592                        if ((i + 1) < orderByFields.length) {
1593                            query.append(", ");
1594                        }
1595                    }
1596                }
1597
1598                Query q = session.createQuery(query.toString());
1599
1600                QueryPos qPos = QueryPos.getInstance(q);
1601
1602                qPos.add(messageId);
1603
1604                qPos.add(flag);
1605
1606                list = (List<MBMessageFlag>)QueryUtil.list(q, getDialect(),
1607                        start, end);
1608            }
1609            catch (Exception e) {
1610                throw processException(e);
1611            }
1612            finally {
1613                if (list == null) {
1614                    list = new ArrayList<MBMessageFlag>();
1615                }
1616
1617                cacheResult(list);
1618
1619                FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_M_F,
1620                    finderArgs, list);
1621
1622                closeSession(session);
1623            }
1624        }
1625
1626        return list;
1627    }
1628
1629    public MBMessageFlag findByM_F_First(long messageId, int flag,
1630        OrderByComparator obc)
1631        throws NoSuchMessageFlagException, SystemException {
1632        List<MBMessageFlag> list = findByM_F(messageId, flag, 0, 1, obc);
1633
1634        if (list.isEmpty()) {
1635            StringBuilder msg = new StringBuilder();
1636
1637            msg.append("No MBMessageFlag exists with the key {");
1638
1639            msg.append("messageId=" + messageId);
1640
1641            msg.append(", ");
1642            msg.append("flag=" + flag);
1643
1644            msg.append(StringPool.CLOSE_CURLY_BRACE);
1645
1646            throw new NoSuchMessageFlagException(msg.toString());
1647        }
1648        else {
1649            return list.get(0);
1650        }
1651    }
1652
1653    public MBMessageFlag findByM_F_Last(long messageId, int flag,
1654        OrderByComparator obc)
1655        throws NoSuchMessageFlagException, SystemException {
1656        int count = countByM_F(messageId, flag);
1657
1658        List<MBMessageFlag> list = findByM_F(messageId, flag, count - 1, count,
1659                obc);
1660
1661        if (list.isEmpty()) {
1662            StringBuilder msg = new StringBuilder();
1663
1664            msg.append("No MBMessageFlag exists with the key {");
1665
1666            msg.append("messageId=" + messageId);
1667
1668            msg.append(", ");
1669            msg.append("flag=" + flag);
1670
1671            msg.append(StringPool.CLOSE_CURLY_BRACE);
1672
1673            throw new NoSuchMessageFlagException(msg.toString());
1674        }
1675        else {
1676            return list.get(0);
1677        }
1678    }
1679
1680    public MBMessageFlag[] findByM_F_PrevAndNext(long messageFlagId,
1681        long messageId, int flag, OrderByComparator obc)
1682        throws NoSuchMessageFlagException, SystemException {
1683        MBMessageFlag mbMessageFlag = findByPrimaryKey(messageFlagId);
1684
1685        int count = countByM_F(messageId, flag);
1686
1687        Session session = null;
1688
1689        try {
1690            session = openSession();
1691
1692            StringBuilder query = new StringBuilder();
1693
1694            query.append(
1695                "SELECT mbMessageFlag FROM MBMessageFlag mbMessageFlag WHERE ");
1696
1697            query.append("mbMessageFlag.messageId = ?");
1698
1699            query.append(" AND ");
1700
1701            query.append("mbMessageFlag.flag = ?");
1702
1703            query.append(" ");
1704
1705            if (obc != null) {
1706                query.append("ORDER BY ");
1707
1708                String[] orderByFields = obc.getOrderByFields();
1709
1710                for (int i = 0; i < orderByFields.length; i++) {
1711                    query.append("mbMessageFlag.");
1712                    query.append(orderByFields[i]);
1713
1714                    if (obc.isAscending()) {
1715                        query.append(" ASC");
1716                    }
1717                    else {
1718                        query.append(" DESC");
1719                    }
1720
1721                    if ((i + 1) < orderByFields.length) {
1722                        query.append(", ");
1723                    }
1724                }
1725            }
1726
1727            Query q = session.createQuery(query.toString());
1728
1729            QueryPos qPos = QueryPos.getInstance(q);
1730
1731            qPos.add(messageId);
1732
1733            qPos.add(flag);
1734
1735            Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
1736                    mbMessageFlag);
1737
1738            MBMessageFlag[] array = new MBMessageFlagImpl[3];
1739
1740            array[0] = (MBMessageFlag)objArray[0];
1741            array[1] = (MBMessageFlag)objArray[1];
1742            array[2] = (MBMessageFlag)objArray[2];
1743
1744            return array;
1745        }
1746        catch (Exception e) {
1747            throw processException(e);
1748        }
1749        finally {
1750            closeSession(session);
1751        }
1752    }
1753
1754    public List<MBMessageFlag> findByU_T_F(long userId, long threadId, int flag)
1755        throws SystemException {
1756        Object[] finderArgs = new Object[] {
1757                new Long(userId), new Long(threadId), new Integer(flag)
1758            };
1759
1760        List<MBMessageFlag> list = (List<MBMessageFlag>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_U_T_F,
1761                finderArgs, this);
1762
1763        if (list == null) {
1764            Session session = null;
1765
1766            try {
1767                session = openSession();
1768
1769                StringBuilder query = new StringBuilder();
1770
1771                query.append(
1772                    "SELECT mbMessageFlag FROM MBMessageFlag mbMessageFlag WHERE ");
1773
1774                query.append("mbMessageFlag.userId = ?");
1775
1776                query.append(" AND ");
1777
1778                query.append("mbMessageFlag.threadId = ?");
1779
1780                query.append(" AND ");
1781
1782                query.append("mbMessageFlag.flag = ?");
1783
1784                query.append(" ");
1785
1786                Query q = session.createQuery(query.toString());
1787
1788                QueryPos qPos = QueryPos.getInstance(q);
1789
1790                qPos.add(userId);
1791
1792                qPos.add(threadId);
1793
1794                qPos.add(flag);
1795
1796                list = q.list();
1797            }
1798            catch (Exception e) {
1799                throw processException(e);
1800            }
1801            finally {
1802                if (list == null) {
1803                    list = new ArrayList<MBMessageFlag>();
1804                }
1805
1806                cacheResult(list);
1807
1808                FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_U_T_F,
1809                    finderArgs, list);
1810
1811                closeSession(session);
1812            }
1813        }
1814
1815        return list;
1816    }
1817
1818    public List<MBMessageFlag> findByU_T_F(long userId, long threadId,
1819        int flag, int start, int end) throws SystemException {
1820        return findByU_T_F(userId, threadId, flag, start, end, null);
1821    }
1822
1823    public List<MBMessageFlag> findByU_T_F(long userId, long threadId,
1824        int flag, int start, int end, OrderByComparator obc)
1825        throws SystemException {
1826        Object[] finderArgs = new Object[] {
1827                new Long(userId), new Long(threadId), new Integer(flag),
1828                
1829                String.valueOf(start), String.valueOf(end), String.valueOf(obc)
1830            };
1831
1832        List<MBMessageFlag> list = (List<MBMessageFlag>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_U_T_F,
1833                finderArgs, this);
1834
1835        if (list == null) {
1836            Session session = null;
1837
1838            try {
1839                session = openSession();
1840
1841                StringBuilder query = new StringBuilder();
1842
1843                query.append(
1844                    "SELECT mbMessageFlag FROM MBMessageFlag mbMessageFlag WHERE ");
1845
1846                query.append("mbMessageFlag.userId = ?");
1847
1848                query.append(" AND ");
1849
1850                query.append("mbMessageFlag.threadId = ?");
1851
1852                query.append(" AND ");
1853
1854                query.append("mbMessageFlag.flag = ?");
1855
1856                query.append(" ");
1857
1858                if (obc != null) {
1859                    query.append("ORDER BY ");
1860
1861                    String[] orderByFields = obc.getOrderByFields();
1862
1863                    for (int i = 0; i < orderByFields.length; i++) {
1864                        query.append("mbMessageFlag.");
1865                        query.append(orderByFields[i]);
1866
1867                        if (obc.isAscending()) {
1868                            query.append(" ASC");
1869                        }
1870                        else {
1871                            query.append(" DESC");
1872                        }
1873
1874                        if ((i + 1) < orderByFields.length) {
1875                            query.append(", ");
1876                        }
1877                    }
1878                }
1879
1880                Query q = session.createQuery(query.toString());
1881
1882                QueryPos qPos = QueryPos.getInstance(q);
1883
1884                qPos.add(userId);
1885
1886                qPos.add(threadId);
1887
1888                qPos.add(flag);
1889
1890                list = (List<MBMessageFlag>)QueryUtil.list(q, getDialect(),
1891                        start, end);
1892            }
1893            catch (Exception e) {
1894                throw processException(e);
1895            }
1896            finally {
1897                if (list == null) {
1898                    list = new ArrayList<MBMessageFlag>();
1899                }
1900
1901                cacheResult(list);
1902
1903                FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_U_T_F,
1904                    finderArgs, list);
1905
1906                closeSession(session);
1907            }
1908        }
1909
1910        return list;
1911    }
1912
1913    public MBMessageFlag findByU_T_F_First(long userId, long threadId,
1914        int flag, OrderByComparator obc)
1915        throws NoSuchMessageFlagException, SystemException {
1916        List<MBMessageFlag> list = findByU_T_F(userId, threadId, flag, 0, 1, obc);
1917
1918        if (list.isEmpty()) {
1919            StringBuilder msg = new StringBuilder();
1920
1921            msg.append("No MBMessageFlag exists with the key {");
1922
1923            msg.append("userId=" + userId);
1924
1925            msg.append(", ");
1926            msg.append("threadId=" + threadId);
1927
1928            msg.append(", ");
1929            msg.append("flag=" + flag);
1930
1931            msg.append(StringPool.CLOSE_CURLY_BRACE);
1932
1933            throw new NoSuchMessageFlagException(msg.toString());
1934        }
1935        else {
1936            return list.get(0);
1937        }
1938    }
1939
1940    public MBMessageFlag findByU_T_F_Last(long userId, long threadId, int flag,
1941        OrderByComparator obc)
1942        throws NoSuchMessageFlagException, SystemException {
1943        int count = countByU_T_F(userId, threadId, flag);
1944
1945        List<MBMessageFlag> list = findByU_T_F(userId, threadId, flag,
1946                count - 1, count, obc);
1947
1948        if (list.isEmpty()) {
1949            StringBuilder msg = new StringBuilder();
1950
1951            msg.append("No MBMessageFlag exists with the key {");
1952
1953            msg.append("userId=" + userId);
1954
1955            msg.append(", ");
1956            msg.append("threadId=" + threadId);
1957
1958            msg.append(", ");
1959            msg.append("flag=" + flag);
1960
1961            msg.append(StringPool.CLOSE_CURLY_BRACE);
1962
1963            throw new NoSuchMessageFlagException(msg.toString());
1964        }
1965        else {
1966            return list.get(0);
1967        }
1968    }
1969
1970    public MBMessageFlag[] findByU_T_F_PrevAndNext(long messageFlagId,
1971        long userId, long threadId, int flag, OrderByComparator obc)
1972        throws NoSuchMessageFlagException, SystemException {
1973        MBMessageFlag mbMessageFlag = findByPrimaryKey(messageFlagId);
1974
1975        int count = countByU_T_F(userId, threadId, flag);
1976
1977        Session session = null;
1978
1979        try {
1980            session = openSession();
1981
1982            StringBuilder query = new StringBuilder();
1983
1984            query.append(
1985                "SELECT mbMessageFlag FROM MBMessageFlag mbMessageFlag WHERE ");
1986
1987            query.append("mbMessageFlag.userId = ?");
1988
1989            query.append(" AND ");
1990
1991            query.append("mbMessageFlag.threadId = ?");
1992
1993            query.append(" AND ");
1994
1995            query.append("mbMessageFlag.flag = ?");
1996
1997            query.append(" ");
1998
1999            if (obc != null) {
2000                query.append("ORDER BY ");
2001
2002                String[] orderByFields = obc.getOrderByFields();
2003
2004                for (int i = 0; i < orderByFields.length; i++) {
2005                    query.append("mbMessageFlag.");
2006                    query.append(orderByFields[i]);
2007
2008                    if (obc.isAscending()) {
2009                        query.append(" ASC");
2010                    }
2011                    else {
2012                        query.append(" DESC");
2013                    }
2014
2015                    if ((i + 1) < orderByFields.length) {
2016                        query.append(", ");
2017                    }
2018                }
2019            }
2020
2021            Query q = session.createQuery(query.toString());
2022
2023            QueryPos qPos = QueryPos.getInstance(q);
2024
2025            qPos.add(userId);
2026
2027            qPos.add(threadId);
2028
2029            qPos.add(flag);
2030
2031            Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
2032                    mbMessageFlag);
2033
2034            MBMessageFlag[] array = new MBMessageFlagImpl[3];
2035
2036            array[0] = (MBMessageFlag)objArray[0];
2037            array[1] = (MBMessageFlag)objArray[1];
2038            array[2] = (MBMessageFlag)objArray[2];
2039
2040            return array;
2041        }
2042        catch (Exception e) {
2043            throw processException(e);
2044        }
2045        finally {
2046            closeSession(session);
2047        }
2048    }
2049
2050    public MBMessageFlag findByU_M_F(long userId, long messageId, int flag)
2051        throws NoSuchMessageFlagException, SystemException {
2052        MBMessageFlag mbMessageFlag = fetchByU_M_F(userId, messageId, flag);
2053
2054        if (mbMessageFlag == null) {
2055            StringBuilder msg = new StringBuilder();
2056
2057            msg.append("No MBMessageFlag exists with the key {");
2058
2059            msg.append("userId=" + userId);
2060
2061            msg.append(", ");
2062            msg.append("messageId=" + messageId);
2063
2064            msg.append(", ");
2065            msg.append("flag=" + flag);
2066
2067            msg.append(StringPool.CLOSE_CURLY_BRACE);
2068
2069            if (_log.isWarnEnabled()) {
2070                _log.warn(msg.toString());
2071            }
2072
2073            throw new NoSuchMessageFlagException(msg.toString());
2074        }
2075
2076        return mbMessageFlag;
2077    }
2078
2079    public MBMessageFlag fetchByU_M_F(long userId, long messageId, int flag)
2080        throws SystemException {
2081        return fetchByU_M_F(userId, messageId, flag, true);
2082    }
2083
2084    public MBMessageFlag fetchByU_M_F(long userId, long messageId, int flag,
2085        boolean retrieveFromCache) throws SystemException {
2086        Object[] finderArgs = new Object[] {
2087                new Long(userId), new Long(messageId), new Integer(flag)
2088            };
2089
2090        Object result = null;
2091
2092        if (retrieveFromCache) {
2093            result = FinderCacheUtil.getResult(FINDER_PATH_FETCH_BY_U_M_F,
2094                    finderArgs, this);
2095        }
2096
2097        if (result == null) {
2098            Session session = null;
2099
2100            try {
2101                session = openSession();
2102
2103                StringBuilder query = new StringBuilder();
2104
2105                query.append(
2106                    "SELECT mbMessageFlag FROM MBMessageFlag mbMessageFlag WHERE ");
2107
2108                query.append("mbMessageFlag.userId = ?");
2109
2110                query.append(" AND ");
2111
2112                query.append("mbMessageFlag.messageId = ?");
2113
2114                query.append(" AND ");
2115
2116                query.append("mbMessageFlag.flag = ?");
2117
2118                query.append(" ");
2119
2120                Query q = session.createQuery(query.toString());
2121
2122                QueryPos qPos = QueryPos.getInstance(q);
2123
2124                qPos.add(userId);
2125
2126                qPos.add(messageId);
2127
2128                qPos.add(flag);
2129
2130                List<MBMessageFlag> list = q.list();
2131
2132                result = list;
2133
2134                MBMessageFlag mbMessageFlag = null;
2135
2136                if (list.isEmpty()) {
2137                    FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_U_M_F,
2138                        finderArgs, list);
2139                }
2140                else {
2141                    mbMessageFlag = list.get(0);
2142
2143                    cacheResult(mbMessageFlag);
2144
2145                    if ((mbMessageFlag.getUserId() != userId) ||
2146                            (mbMessageFlag.getMessageId() != messageId) ||
2147                            (mbMessageFlag.getFlag() != flag)) {
2148                        FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_U_M_F,
2149                            finderArgs, mbMessageFlag);
2150                    }
2151                }
2152
2153                return mbMessageFlag;
2154            }
2155            catch (Exception e) {
2156                throw processException(e);
2157            }
2158            finally {
2159                if (result == null) {
2160                    FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_U_M_F,
2161                        finderArgs, new ArrayList<MBMessageFlag>());
2162                }
2163
2164                closeSession(session);
2165            }
2166        }
2167        else {
2168            if (result instanceof List) {
2169                return null;
2170            }
2171            else {
2172                return (MBMessageFlag)result;
2173            }
2174        }
2175    }
2176
2177    public List<Object> findWithDynamicQuery(DynamicQuery dynamicQuery)
2178        throws SystemException {
2179        Session session = null;
2180
2181        try {
2182            session = openSession();
2183
2184            dynamicQuery.compile(session);
2185
2186            return dynamicQuery.list();
2187        }
2188        catch (Exception e) {
2189            throw processException(e);
2190        }
2191        finally {
2192            closeSession(session);
2193        }
2194    }
2195
2196    public List<Object> findWithDynamicQuery(DynamicQuery dynamicQuery,
2197        int start, int end) throws SystemException {
2198        Session session = null;
2199
2200        try {
2201            session = openSession();
2202
2203            dynamicQuery.setLimit(start, end);
2204
2205            dynamicQuery.compile(session);
2206
2207            return dynamicQuery.list();
2208        }
2209        catch (Exception e) {
2210            throw processException(e);
2211        }
2212        finally {
2213            closeSession(session);
2214        }
2215    }
2216
2217    public List<MBMessageFlag> findAll() throws SystemException {
2218        return findAll(QueryUtil.ALL_POS, QueryUtil.ALL_POS, null);
2219    }
2220
2221    public List<MBMessageFlag> findAll(int start, int end)
2222        throws SystemException {
2223        return findAll(start, end, null);
2224    }
2225
2226    public List<MBMessageFlag> findAll(int start, int end, OrderByComparator obc)
2227        throws SystemException {
2228        Object[] finderArgs = new Object[] {
2229                String.valueOf(start), String.valueOf(end), String.valueOf(obc)
2230            };
2231
2232        List<MBMessageFlag> list = (List<MBMessageFlag>)FinderCacheUtil.getResult(FINDER_PATH_FIND_ALL,
2233                finderArgs, this);
2234
2235        if (list == null) {
2236            Session session = null;
2237
2238            try {
2239                session = openSession();
2240
2241                StringBuilder query = new StringBuilder();
2242
2243                query.append(
2244                    "SELECT mbMessageFlag FROM MBMessageFlag mbMessageFlag ");
2245
2246                if (obc != null) {
2247                    query.append("ORDER BY ");
2248
2249                    String[] orderByFields = obc.getOrderByFields();
2250
2251                    for (int i = 0; i < orderByFields.length; i++) {
2252                        query.append("mbMessageFlag.");
2253                        query.append(orderByFields[i]);
2254
2255                        if (obc.isAscending()) {
2256                            query.append(" ASC");
2257                        }
2258                        else {
2259                            query.append(" DESC");
2260                        }
2261
2262                        if ((i + 1) < orderByFields.length) {
2263                            query.append(", ");
2264                        }
2265                    }
2266                }
2267
2268                Query q = session.createQuery(query.toString());
2269
2270                if (obc == null) {
2271                    list = (List<MBMessageFlag>)QueryUtil.list(q, getDialect(),
2272                            start, end, false);
2273
2274                    Collections.sort(list);
2275                }
2276                else {
2277                    list = (List<MBMessageFlag>)QueryUtil.list(q, getDialect(),
2278                            start, end);
2279                }
2280            }
2281            catch (Exception e) {
2282                throw processException(e);
2283            }
2284            finally {
2285                if (list == null) {
2286                    list = new ArrayList<MBMessageFlag>();
2287                }
2288
2289                cacheResult(list);
2290
2291                FinderCacheUtil.putResult(FINDER_PATH_FIND_ALL, finderArgs, list);
2292
2293                closeSession(session);
2294            }
2295        }
2296
2297        return list;
2298    }
2299
2300    public void removeByUserId(long userId) throws SystemException {
2301        for (MBMessageFlag mbMessageFlag : findByUserId(userId)) {
2302            remove(mbMessageFlag);
2303        }
2304    }
2305
2306    public void removeByThreadId(long threadId) throws SystemException {
2307        for (MBMessageFlag mbMessageFlag : findByThreadId(threadId)) {
2308            remove(mbMessageFlag);
2309        }
2310    }
2311
2312    public void removeByMessageId(long messageId) throws SystemException {
2313        for (MBMessageFlag mbMessageFlag : findByMessageId(messageId)) {
2314            remove(mbMessageFlag);
2315        }
2316    }
2317
2318    public void removeByT_F(long threadId, int flag) throws SystemException {
2319        for (MBMessageFlag mbMessageFlag : findByT_F(threadId, flag)) {
2320            remove(mbMessageFlag);
2321        }
2322    }
2323
2324    public void removeByM_F(long messageId, int flag) throws SystemException {
2325        for (MBMessageFlag mbMessageFlag : findByM_F(messageId, flag)) {
2326            remove(mbMessageFlag);
2327        }
2328    }
2329
2330    public void removeByU_T_F(long userId, long threadId, int flag)
2331        throws SystemException {
2332        for (MBMessageFlag mbMessageFlag : findByU_T_F(userId, threadId, flag)) {
2333            remove(mbMessageFlag);
2334        }
2335    }
2336
2337    public void removeByU_M_F(long userId, long messageId, int flag)
2338        throws NoSuchMessageFlagException, SystemException {
2339        MBMessageFlag mbMessageFlag = findByU_M_F(userId, messageId, flag);
2340
2341        remove(mbMessageFlag);
2342    }
2343
2344    public void removeAll() throws SystemException {
2345        for (MBMessageFlag mbMessageFlag : findAll()) {
2346            remove(mbMessageFlag);
2347        }
2348    }
2349
2350    public int countByUserId(long userId) throws SystemException {
2351        Object[] finderArgs = new Object[] { new Long(userId) };
2352
2353        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_USERID,
2354                finderArgs, this);
2355
2356        if (count == null) {
2357            Session session = null;
2358
2359            try {
2360                session = openSession();
2361
2362                StringBuilder query = new StringBuilder();
2363
2364                query.append("SELECT COUNT(mbMessageFlag) ");
2365                query.append("FROM MBMessageFlag mbMessageFlag WHERE ");
2366
2367                query.append("mbMessageFlag.userId = ?");
2368
2369                query.append(" ");
2370
2371                Query q = session.createQuery(query.toString());
2372
2373                QueryPos qPos = QueryPos.getInstance(q);
2374
2375                qPos.add(userId);
2376
2377                count = (Long)q.uniqueResult();
2378            }
2379            catch (Exception e) {
2380                throw processException(e);
2381            }
2382            finally {
2383                if (count == null) {
2384                    count = Long.valueOf(0);
2385                }
2386
2387                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_USERID,
2388                    finderArgs, count);
2389
2390                closeSession(session);
2391            }
2392        }
2393
2394        return count.intValue();
2395    }
2396
2397    public int countByThreadId(long threadId) throws SystemException {
2398        Object[] finderArgs = new Object[] { new Long(threadId) };
2399
2400        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_THREADID,
2401                finderArgs, this);
2402
2403        if (count == null) {
2404            Session session = null;
2405
2406            try {
2407                session = openSession();
2408
2409                StringBuilder query = new StringBuilder();
2410
2411                query.append("SELECT COUNT(mbMessageFlag) ");
2412                query.append("FROM MBMessageFlag mbMessageFlag WHERE ");
2413
2414                query.append("mbMessageFlag.threadId = ?");
2415
2416                query.append(" ");
2417
2418                Query q = session.createQuery(query.toString());
2419
2420                QueryPos qPos = QueryPos.getInstance(q);
2421
2422                qPos.add(threadId);
2423
2424                count = (Long)q.uniqueResult();
2425            }
2426            catch (Exception e) {
2427                throw processException(e);
2428            }
2429            finally {
2430                if (count == null) {
2431                    count = Long.valueOf(0);
2432                }
2433
2434                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_THREADID,
2435                    finderArgs, count);
2436
2437                closeSession(session);
2438            }
2439        }
2440
2441        return count.intValue();
2442    }
2443
2444    public int countByMessageId(long messageId) throws SystemException {
2445        Object[] finderArgs = new Object[] { new Long(messageId) };
2446
2447        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_MESSAGEID,
2448                finderArgs, this);
2449
2450        if (count == null) {
2451            Session session = null;
2452
2453            try {
2454                session = openSession();
2455
2456                StringBuilder query = new StringBuilder();
2457
2458                query.append("SELECT COUNT(mbMessageFlag) ");
2459                query.append("FROM MBMessageFlag mbMessageFlag WHERE ");
2460
2461                query.append("mbMessageFlag.messageId = ?");
2462
2463                query.append(" ");
2464
2465                Query q = session.createQuery(query.toString());
2466
2467                QueryPos qPos = QueryPos.getInstance(q);
2468
2469                qPos.add(messageId);
2470
2471                count = (Long)q.uniqueResult();
2472            }
2473            catch (Exception e) {
2474                throw processException(e);
2475            }
2476            finally {
2477                if (count == null) {
2478                    count = Long.valueOf(0);
2479                }
2480
2481                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_MESSAGEID,
2482                    finderArgs, count);
2483
2484                closeSession(session);
2485            }
2486        }
2487
2488        return count.intValue();
2489    }
2490
2491    public int countByT_F(long threadId, int flag) throws SystemException {
2492        Object[] finderArgs = new Object[] { new Long(threadId), new Integer(flag) };
2493
2494        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_T_F,
2495                finderArgs, this);
2496
2497        if (count == null) {
2498            Session session = null;
2499
2500            try {
2501                session = openSession();
2502
2503                StringBuilder query = new StringBuilder();
2504
2505                query.append("SELECT COUNT(mbMessageFlag) ");
2506                query.append("FROM MBMessageFlag mbMessageFlag WHERE ");
2507
2508                query.append("mbMessageFlag.threadId = ?");
2509
2510                query.append(" AND ");
2511
2512                query.append("mbMessageFlag.flag = ?");
2513
2514                query.append(" ");
2515
2516                Query q = session.createQuery(query.toString());
2517
2518                QueryPos qPos = QueryPos.getInstance(q);
2519
2520                qPos.add(threadId);
2521
2522                qPos.add(flag);
2523
2524                count = (Long)q.uniqueResult();
2525            }
2526            catch (Exception e) {
2527                throw processException(e);
2528            }
2529            finally {
2530                if (count == null) {
2531                    count = Long.valueOf(0);
2532                }
2533
2534                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_T_F, finderArgs,
2535                    count);
2536
2537                closeSession(session);
2538            }
2539        }
2540
2541        return count.intValue();
2542    }
2543
2544    public int countByM_F(long messageId, int flag) throws SystemException {
2545        Object[] finderArgs = new Object[] {
2546                new Long(messageId), new Integer(flag)
2547            };
2548
2549        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_M_F,
2550                finderArgs, this);
2551
2552        if (count == null) {
2553            Session session = null;
2554
2555            try {
2556                session = openSession();
2557
2558                StringBuilder query = new StringBuilder();
2559
2560                query.append("SELECT COUNT(mbMessageFlag) ");
2561                query.append("FROM MBMessageFlag mbMessageFlag WHERE ");
2562
2563                query.append("mbMessageFlag.messageId = ?");
2564
2565                query.append(" AND ");
2566
2567                query.append("mbMessageFlag.flag = ?");
2568
2569                query.append(" ");
2570
2571                Query q = session.createQuery(query.toString());
2572
2573                QueryPos qPos = QueryPos.getInstance(q);
2574
2575                qPos.add(messageId);
2576
2577                qPos.add(flag);
2578
2579                count = (Long)q.uniqueResult();
2580            }
2581            catch (Exception e) {
2582                throw processException(e);
2583            }
2584            finally {
2585                if (count == null) {
2586                    count = Long.valueOf(0);
2587                }
2588
2589                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_M_F, finderArgs,
2590                    count);
2591
2592                closeSession(session);
2593            }
2594        }
2595
2596        return count.intValue();
2597    }
2598
2599    public int countByU_T_F(long userId, long threadId, int flag)
2600        throws SystemException {
2601        Object[] finderArgs = new Object[] {
2602                new Long(userId), new Long(threadId), new Integer(flag)
2603            };
2604
2605        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_U_T_F,
2606                finderArgs, this);
2607
2608        if (count == null) {
2609            Session session = null;
2610
2611            try {
2612                session = openSession();
2613
2614                StringBuilder query = new StringBuilder();
2615
2616                query.append("SELECT COUNT(mbMessageFlag) ");
2617                query.append("FROM MBMessageFlag mbMessageFlag WHERE ");
2618
2619                query.append("mbMessageFlag.userId = ?");
2620
2621                query.append(" AND ");
2622
2623                query.append("mbMessageFlag.threadId = ?");
2624
2625                query.append(" AND ");
2626
2627                query.append("mbMessageFlag.flag = ?");
2628
2629                query.append(" ");
2630
2631                Query q = session.createQuery(query.toString());
2632
2633                QueryPos qPos = QueryPos.getInstance(q);
2634
2635                qPos.add(userId);
2636
2637                qPos.add(threadId);
2638
2639                qPos.add(flag);
2640
2641                count = (Long)q.uniqueResult();
2642            }
2643            catch (Exception e) {
2644                throw processException(e);
2645            }
2646            finally {
2647                if (count == null) {
2648                    count = Long.valueOf(0);
2649                }
2650
2651                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_U_T_F,
2652                    finderArgs, count);
2653
2654                closeSession(session);
2655            }
2656        }
2657
2658        return count.intValue();
2659    }
2660
2661    public int countByU_M_F(long userId, long messageId, int flag)
2662        throws SystemException {
2663        Object[] finderArgs = new Object[] {
2664                new Long(userId), new Long(messageId), new Integer(flag)
2665            };
2666
2667        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_U_M_F,
2668                finderArgs, this);
2669
2670        if (count == null) {
2671            Session session = null;
2672
2673            try {
2674                session = openSession();
2675
2676                StringBuilder query = new StringBuilder();
2677
2678                query.append("SELECT COUNT(mbMessageFlag) ");
2679                query.append("FROM MBMessageFlag mbMessageFlag WHERE ");
2680
2681                query.append("mbMessageFlag.userId = ?");
2682
2683                query.append(" AND ");
2684
2685                query.append("mbMessageFlag.messageId = ?");
2686
2687                query.append(" AND ");
2688
2689                query.append("mbMessageFlag.flag = ?");
2690
2691                query.append(" ");
2692
2693                Query q = session.createQuery(query.toString());
2694
2695                QueryPos qPos = QueryPos.getInstance(q);
2696
2697                qPos.add(userId);
2698
2699                qPos.add(messageId);
2700
2701                qPos.add(flag);
2702
2703                count = (Long)q.uniqueResult();
2704            }
2705            catch (Exception e) {
2706                throw processException(e);
2707            }
2708            finally {
2709                if (count == null) {
2710                    count = Long.valueOf(0);
2711                }
2712
2713                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_U_M_F,
2714                    finderArgs, count);
2715
2716                closeSession(session);
2717            }
2718        }
2719
2720        return count.intValue();
2721    }
2722
2723    public int countAll() throws SystemException {
2724        Object[] finderArgs = new Object[0];
2725
2726        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_ALL,
2727                finderArgs, this);
2728
2729        if (count == null) {
2730            Session session = null;
2731
2732            try {
2733                session = openSession();
2734
2735                Query q = session.createQuery(
2736                        "SELECT COUNT(mbMessageFlag) FROM MBMessageFlag mbMessageFlag");
2737
2738                count = (Long)q.uniqueResult();
2739            }
2740            catch (Exception e) {
2741                throw processException(e);
2742            }
2743            finally {
2744                if (count == null) {
2745                    count = Long.valueOf(0);
2746                }
2747
2748                FinderCacheUtil.putResult(FINDER_PATH_COUNT_ALL, finderArgs,
2749                    count);
2750
2751                closeSession(session);
2752            }
2753        }
2754
2755        return count.intValue();
2756    }
2757
2758    public void afterPropertiesSet() {
2759        String[] listenerClassNames = StringUtil.split(GetterUtil.getString(
2760                    com.liferay.portal.util.PropsUtil.get(
2761                        "value.object.listener.com.liferay.portlet.messageboards.model.MBMessageFlag")));
2762
2763        if (listenerClassNames.length > 0) {
2764            try {
2765                List<ModelListener<MBMessageFlag>> listenersList = new ArrayList<ModelListener<MBMessageFlag>>();
2766
2767                for (String listenerClassName : listenerClassNames) {
2768                    listenersList.add((ModelListener<MBMessageFlag>)Class.forName(
2769                            listenerClassName).newInstance());
2770                }
2771
2772                listeners = listenersList.toArray(new ModelListener[listenersList.size()]);
2773            }
2774            catch (Exception e) {
2775                _log.error(e);
2776            }
2777        }
2778    }
2779
2780    @BeanReference(name = "com.liferay.portlet.messageboards.service.persistence.MBBanPersistence.impl")
2781    protected com.liferay.portlet.messageboards.service.persistence.MBBanPersistence mbBanPersistence;
2782    @BeanReference(name = "com.liferay.portlet.messageboards.service.persistence.MBCategoryPersistence.impl")
2783    protected com.liferay.portlet.messageboards.service.persistence.MBCategoryPersistence mbCategoryPersistence;
2784    @BeanReference(name = "com.liferay.portlet.messageboards.service.persistence.MBDiscussionPersistence.impl")
2785    protected com.liferay.portlet.messageboards.service.persistence.MBDiscussionPersistence mbDiscussionPersistence;
2786    @BeanReference(name = "com.liferay.portlet.messageboards.service.persistence.MBMailingListPersistence.impl")
2787    protected com.liferay.portlet.messageboards.service.persistence.MBMailingListPersistence mbMailingListPersistence;
2788    @BeanReference(name = "com.liferay.portlet.messageboards.service.persistence.MBMessagePersistence.impl")
2789    protected com.liferay.portlet.messageboards.service.persistence.MBMessagePersistence mbMessagePersistence;
2790    @BeanReference(name = "com.liferay.portlet.messageboards.service.persistence.MBMessageFlagPersistence.impl")
2791    protected com.liferay.portlet.messageboards.service.persistence.MBMessageFlagPersistence mbMessageFlagPersistence;
2792    @BeanReference(name = "com.liferay.portlet.messageboards.service.persistence.MBStatsUserPersistence.impl")
2793    protected com.liferay.portlet.messageboards.service.persistence.MBStatsUserPersistence mbStatsUserPersistence;
2794    @BeanReference(name = "com.liferay.portlet.messageboards.service.persistence.MBThreadPersistence.impl")
2795    protected com.liferay.portlet.messageboards.service.persistence.MBThreadPersistence mbThreadPersistence;
2796    @BeanReference(name = "com.liferay.portal.service.persistence.UserPersistence.impl")
2797    protected com.liferay.portal.service.persistence.UserPersistence userPersistence;
2798    private static Log _log = LogFactoryUtil.getLog(MBMessageFlagPersistenceImpl.class);
2799}