1   /**
2    * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3    *
4    * Permission is hereby granted, free of charge, to any person obtaining a copy
5    * of this software and associated documentation files (the "Software"), to deal
6    * in the Software without restriction, including without limitation the rights
7    * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8    * copies of the Software, and to permit persons to whom the Software is
9    * furnished to do so, subject to the following conditions:
10   *
11   * The above copyright notice and this permission notice shall be included in
12   * all copies or substantial portions of the Software.
13   *
14   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20   * SOFTWARE.
21   */
22  
23  package com.liferay.portlet.bookmarks.service.persistence;
24  
25  import com.liferay.portal.SystemException;
26  import com.liferay.portal.kernel.annotation.BeanReference;
27  import com.liferay.portal.kernel.cache.CacheRegistry;
28  import com.liferay.portal.kernel.dao.orm.DynamicQuery;
29  import com.liferay.portal.kernel.dao.orm.EntityCacheUtil;
30  import com.liferay.portal.kernel.dao.orm.FinderCacheUtil;
31  import com.liferay.portal.kernel.dao.orm.FinderPath;
32  import com.liferay.portal.kernel.dao.orm.Query;
33  import com.liferay.portal.kernel.dao.orm.QueryPos;
34  import com.liferay.portal.kernel.dao.orm.QueryUtil;
35  import com.liferay.portal.kernel.dao.orm.Session;
36  import com.liferay.portal.kernel.log.Log;
37  import com.liferay.portal.kernel.log.LogFactoryUtil;
38  import com.liferay.portal.kernel.util.GetterUtil;
39  import com.liferay.portal.kernel.util.OrderByComparator;
40  import com.liferay.portal.kernel.util.StringPool;
41  import com.liferay.portal.kernel.util.StringUtil;
42  import com.liferay.portal.kernel.util.Validator;
43  import com.liferay.portal.kernel.uuid.PortalUUIDUtil;
44  import com.liferay.portal.model.ModelListener;
45  import com.liferay.portal.service.persistence.BatchSessionUtil;
46  import com.liferay.portal.service.persistence.impl.BasePersistenceImpl;
47  
48  import com.liferay.portlet.bookmarks.NoSuchFolderException;
49  import com.liferay.portlet.bookmarks.model.BookmarksFolder;
50  import com.liferay.portlet.bookmarks.model.impl.BookmarksFolderImpl;
51  import com.liferay.portlet.bookmarks.model.impl.BookmarksFolderModelImpl;
52  
53  import java.util.ArrayList;
54  import java.util.Collections;
55  import java.util.List;
56  
57  /**
58   * <a href="BookmarksFolderPersistenceImpl.java.html"><b><i>View Source</i></b></a>
59   *
60   * @author Brian Wing Shun Chan
61   *
62   */
63  public class BookmarksFolderPersistenceImpl extends BasePersistenceImpl
64      implements BookmarksFolderPersistence {
65      public static final String FINDER_CLASS_NAME_ENTITY = BookmarksFolderImpl.class.getName();
66      public static final String FINDER_CLASS_NAME_LIST = FINDER_CLASS_NAME_ENTITY +
67          ".List";
68      public static final FinderPath FINDER_PATH_FIND_BY_UUID = new FinderPath(BookmarksFolderModelImpl.ENTITY_CACHE_ENABLED,
69              BookmarksFolderModelImpl.FINDER_CACHE_ENABLED,
70              FINDER_CLASS_NAME_LIST, "findByUuid",
71              new String[] { String.class.getName() });
72      public static final FinderPath FINDER_PATH_FIND_BY_OBC_UUID = new FinderPath(BookmarksFolderModelImpl.ENTITY_CACHE_ENABLED,
73              BookmarksFolderModelImpl.FINDER_CACHE_ENABLED,
74              FINDER_CLASS_NAME_LIST, "findByUuid",
75              new String[] {
76                  String.class.getName(),
77                  
78              "java.lang.Integer", "java.lang.Integer",
79                  "com.liferay.portal.kernel.util.OrderByComparator"
80              });
81      public static final FinderPath FINDER_PATH_COUNT_BY_UUID = new FinderPath(BookmarksFolderModelImpl.ENTITY_CACHE_ENABLED,
82              BookmarksFolderModelImpl.FINDER_CACHE_ENABLED,
83              FINDER_CLASS_NAME_LIST, "countByUuid",
84              new String[] { String.class.getName() });
85      public static final FinderPath FINDER_PATH_FETCH_BY_UUID_G = new FinderPath(BookmarksFolderModelImpl.ENTITY_CACHE_ENABLED,
86              BookmarksFolderModelImpl.FINDER_CACHE_ENABLED,
87              FINDER_CLASS_NAME_ENTITY, "fetchByUUID_G",
88              new String[] { String.class.getName(), Long.class.getName() });
89      public static final FinderPath FINDER_PATH_COUNT_BY_UUID_G = new FinderPath(BookmarksFolderModelImpl.ENTITY_CACHE_ENABLED,
90              BookmarksFolderModelImpl.FINDER_CACHE_ENABLED,
91              FINDER_CLASS_NAME_LIST, "countByUUID_G",
92              new String[] { String.class.getName(), Long.class.getName() });
93      public static final FinderPath FINDER_PATH_FIND_BY_GROUPID = new FinderPath(BookmarksFolderModelImpl.ENTITY_CACHE_ENABLED,
94              BookmarksFolderModelImpl.FINDER_CACHE_ENABLED,
95              FINDER_CLASS_NAME_LIST, "findByGroupId",
96              new String[] { Long.class.getName() });
97      public static final FinderPath FINDER_PATH_FIND_BY_OBC_GROUPID = new FinderPath(BookmarksFolderModelImpl.ENTITY_CACHE_ENABLED,
98              BookmarksFolderModelImpl.FINDER_CACHE_ENABLED,
99              FINDER_CLASS_NAME_LIST, "findByGroupId",
100             new String[] {
101                 Long.class.getName(),
102                 
103             "java.lang.Integer", "java.lang.Integer",
104                 "com.liferay.portal.kernel.util.OrderByComparator"
105             });
106     public static final FinderPath FINDER_PATH_COUNT_BY_GROUPID = new FinderPath(BookmarksFolderModelImpl.ENTITY_CACHE_ENABLED,
107             BookmarksFolderModelImpl.FINDER_CACHE_ENABLED,
108             FINDER_CLASS_NAME_LIST, "countByGroupId",
109             new String[] { Long.class.getName() });
110     public static final FinderPath FINDER_PATH_FIND_BY_COMPANYID = new FinderPath(BookmarksFolderModelImpl.ENTITY_CACHE_ENABLED,
111             BookmarksFolderModelImpl.FINDER_CACHE_ENABLED,
112             FINDER_CLASS_NAME_LIST, "findByCompanyId",
113             new String[] { Long.class.getName() });
114     public static final FinderPath FINDER_PATH_FIND_BY_OBC_COMPANYID = new FinderPath(BookmarksFolderModelImpl.ENTITY_CACHE_ENABLED,
115             BookmarksFolderModelImpl.FINDER_CACHE_ENABLED,
116             FINDER_CLASS_NAME_LIST, "findByCompanyId",
117             new String[] {
118                 Long.class.getName(),
119                 
120             "java.lang.Integer", "java.lang.Integer",
121                 "com.liferay.portal.kernel.util.OrderByComparator"
122             });
123     public static final FinderPath FINDER_PATH_COUNT_BY_COMPANYID = new FinderPath(BookmarksFolderModelImpl.ENTITY_CACHE_ENABLED,
124             BookmarksFolderModelImpl.FINDER_CACHE_ENABLED,
125             FINDER_CLASS_NAME_LIST, "countByCompanyId",
126             new String[] { Long.class.getName() });
127     public static final FinderPath FINDER_PATH_FIND_BY_G_P = new FinderPath(BookmarksFolderModelImpl.ENTITY_CACHE_ENABLED,
128             BookmarksFolderModelImpl.FINDER_CACHE_ENABLED,
129             FINDER_CLASS_NAME_LIST, "findByG_P",
130             new String[] { Long.class.getName(), Long.class.getName() });
131     public static final FinderPath FINDER_PATH_FIND_BY_OBC_G_P = new FinderPath(BookmarksFolderModelImpl.ENTITY_CACHE_ENABLED,
132             BookmarksFolderModelImpl.FINDER_CACHE_ENABLED,
133             FINDER_CLASS_NAME_LIST, "findByG_P",
134             new String[] {
135                 Long.class.getName(), Long.class.getName(),
136                 
137             "java.lang.Integer", "java.lang.Integer",
138                 "com.liferay.portal.kernel.util.OrderByComparator"
139             });
140     public static final FinderPath FINDER_PATH_COUNT_BY_G_P = new FinderPath(BookmarksFolderModelImpl.ENTITY_CACHE_ENABLED,
141             BookmarksFolderModelImpl.FINDER_CACHE_ENABLED,
142             FINDER_CLASS_NAME_LIST, "countByG_P",
143             new String[] { Long.class.getName(), Long.class.getName() });
144     public static final FinderPath FINDER_PATH_FIND_ALL = new FinderPath(BookmarksFolderModelImpl.ENTITY_CACHE_ENABLED,
145             BookmarksFolderModelImpl.FINDER_CACHE_ENABLED,
146             FINDER_CLASS_NAME_LIST, "findAll", new String[0]);
147     public static final FinderPath FINDER_PATH_COUNT_ALL = new FinderPath(BookmarksFolderModelImpl.ENTITY_CACHE_ENABLED,
148             BookmarksFolderModelImpl.FINDER_CACHE_ENABLED,
149             FINDER_CLASS_NAME_LIST, "countAll", new String[0]);
150 
151     public void cacheResult(BookmarksFolder bookmarksFolder) {
152         EntityCacheUtil.putResult(BookmarksFolderModelImpl.ENTITY_CACHE_ENABLED,
153             BookmarksFolderImpl.class, bookmarksFolder.getPrimaryKey(),
154             bookmarksFolder);
155 
156         FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_UUID_G,
157             new Object[] {
158                 bookmarksFolder.getUuid(),
159                 new Long(bookmarksFolder.getGroupId())
160             }, bookmarksFolder);
161     }
162 
163     public void cacheResult(List<BookmarksFolder> bookmarksFolders) {
164         for (BookmarksFolder bookmarksFolder : bookmarksFolders) {
165             if (EntityCacheUtil.getResult(
166                         BookmarksFolderModelImpl.ENTITY_CACHE_ENABLED,
167                         BookmarksFolderImpl.class,
168                         bookmarksFolder.getPrimaryKey(), this) == null) {
169                 cacheResult(bookmarksFolder);
170             }
171         }
172     }
173 
174     public void clearCache() {
175         CacheRegistry.clear(BookmarksFolderImpl.class.getName());
176         EntityCacheUtil.clearCache(BookmarksFolderImpl.class.getName());
177         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_ENTITY);
178         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
179     }
180 
181     public BookmarksFolder create(long folderId) {
182         BookmarksFolder bookmarksFolder = new BookmarksFolderImpl();
183 
184         bookmarksFolder.setNew(true);
185         bookmarksFolder.setPrimaryKey(folderId);
186 
187         String uuid = PortalUUIDUtil.generate();
188 
189         bookmarksFolder.setUuid(uuid);
190 
191         return bookmarksFolder;
192     }
193 
194     public BookmarksFolder remove(long folderId)
195         throws NoSuchFolderException, SystemException {
196         Session session = null;
197 
198         try {
199             session = openSession();
200 
201             BookmarksFolder bookmarksFolder = (BookmarksFolder)session.get(BookmarksFolderImpl.class,
202                     new Long(folderId));
203 
204             if (bookmarksFolder == null) {
205                 if (_log.isWarnEnabled()) {
206                     _log.warn("No BookmarksFolder exists with the primary key " +
207                         folderId);
208                 }
209 
210                 throw new NoSuchFolderException(
211                     "No BookmarksFolder exists with the primary key " +
212                     folderId);
213             }
214 
215             return remove(bookmarksFolder);
216         }
217         catch (NoSuchFolderException nsee) {
218             throw nsee;
219         }
220         catch (Exception e) {
221             throw processException(e);
222         }
223         finally {
224             closeSession(session);
225         }
226     }
227 
228     public BookmarksFolder remove(BookmarksFolder bookmarksFolder)
229         throws SystemException {
230         for (ModelListener<BookmarksFolder> listener : listeners) {
231             listener.onBeforeRemove(bookmarksFolder);
232         }
233 
234         bookmarksFolder = removeImpl(bookmarksFolder);
235 
236         for (ModelListener<BookmarksFolder> listener : listeners) {
237             listener.onAfterRemove(bookmarksFolder);
238         }
239 
240         return bookmarksFolder;
241     }
242 
243     protected BookmarksFolder removeImpl(BookmarksFolder bookmarksFolder)
244         throws SystemException {
245         Session session = null;
246 
247         try {
248             session = openSession();
249 
250             if (bookmarksFolder.isCachedModel() ||
251                     BatchSessionUtil.isEnabled()) {
252                 Object staleObject = session.get(BookmarksFolderImpl.class,
253                         bookmarksFolder.getPrimaryKeyObj());
254 
255                 if (staleObject != null) {
256                     session.evict(staleObject);
257                 }
258             }
259 
260             session.delete(bookmarksFolder);
261 
262             session.flush();
263         }
264         catch (Exception e) {
265             throw processException(e);
266         }
267         finally {
268             closeSession(session);
269         }
270 
271         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
272 
273         BookmarksFolderModelImpl bookmarksFolderModelImpl = (BookmarksFolderModelImpl)bookmarksFolder;
274 
275         FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_UUID_G,
276             new Object[] {
277                 bookmarksFolderModelImpl.getOriginalUuid(),
278                 new Long(bookmarksFolderModelImpl.getOriginalGroupId())
279             });
280 
281         EntityCacheUtil.removeResult(BookmarksFolderModelImpl.ENTITY_CACHE_ENABLED,
282             BookmarksFolderImpl.class, bookmarksFolder.getPrimaryKey());
283 
284         return bookmarksFolder;
285     }
286 
287     /**
288      * @deprecated Use <code>update(BookmarksFolder bookmarksFolder, boolean merge)</code>.
289      */
290     public BookmarksFolder update(BookmarksFolder bookmarksFolder)
291         throws SystemException {
292         if (_log.isWarnEnabled()) {
293             _log.warn(
294                 "Using the deprecated update(BookmarksFolder bookmarksFolder) method. Use update(BookmarksFolder bookmarksFolder, boolean merge) instead.");
295         }
296 
297         return update(bookmarksFolder, false);
298     }
299 
300     /**
301      * Add, update, or merge, the entity. This method also calls the model
302      * listeners to trigger the proper events associated with adding, deleting,
303      * or updating an entity.
304      *
305      * @param        bookmarksFolder the entity to add, update, or merge
306      * @param        merge boolean value for whether to merge the entity. The
307      *                default value is false. Setting merge to true is more
308      *                expensive and should only be true when bookmarksFolder is
309      *                transient. See LEP-5473 for a detailed discussion of this
310      *                method.
311      * @return        true if the portlet can be displayed via Ajax
312      */
313     public BookmarksFolder update(BookmarksFolder bookmarksFolder, boolean merge)
314         throws SystemException {
315         boolean isNew = bookmarksFolder.isNew();
316 
317         for (ModelListener<BookmarksFolder> listener : listeners) {
318             if (isNew) {
319                 listener.onBeforeCreate(bookmarksFolder);
320             }
321             else {
322                 listener.onBeforeUpdate(bookmarksFolder);
323             }
324         }
325 
326         bookmarksFolder = updateImpl(bookmarksFolder, merge);
327 
328         for (ModelListener<BookmarksFolder> listener : listeners) {
329             if (isNew) {
330                 listener.onAfterCreate(bookmarksFolder);
331             }
332             else {
333                 listener.onAfterUpdate(bookmarksFolder);
334             }
335         }
336 
337         return bookmarksFolder;
338     }
339 
340     public BookmarksFolder updateImpl(
341         com.liferay.portlet.bookmarks.model.BookmarksFolder bookmarksFolder,
342         boolean merge) throws SystemException {
343         boolean isNew = bookmarksFolder.isNew();
344 
345         BookmarksFolderModelImpl bookmarksFolderModelImpl = (BookmarksFolderModelImpl)bookmarksFolder;
346 
347         if (Validator.isNull(bookmarksFolder.getUuid())) {
348             String uuid = PortalUUIDUtil.generate();
349 
350             bookmarksFolder.setUuid(uuid);
351         }
352 
353         Session session = null;
354 
355         try {
356             session = openSession();
357 
358             BatchSessionUtil.update(session, bookmarksFolder, merge);
359 
360             bookmarksFolder.setNew(false);
361         }
362         catch (Exception e) {
363             throw processException(e);
364         }
365         finally {
366             closeSession(session);
367         }
368 
369         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
370 
371         EntityCacheUtil.putResult(BookmarksFolderModelImpl.ENTITY_CACHE_ENABLED,
372             BookmarksFolderImpl.class, bookmarksFolder.getPrimaryKey(),
373             bookmarksFolder);
374 
375         if (!isNew &&
376                 (!Validator.equals(bookmarksFolder.getUuid(),
377                     bookmarksFolderModelImpl.getOriginalUuid()) ||
378                 (bookmarksFolder.getGroupId() != bookmarksFolderModelImpl.getOriginalGroupId()))) {
379             FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_UUID_G,
380                 new Object[] {
381                     bookmarksFolderModelImpl.getOriginalUuid(),
382                     new Long(bookmarksFolderModelImpl.getOriginalGroupId())
383                 });
384         }
385 
386         if (isNew ||
387                 (!Validator.equals(bookmarksFolder.getUuid(),
388                     bookmarksFolderModelImpl.getOriginalUuid()) ||
389                 (bookmarksFolder.getGroupId() != bookmarksFolderModelImpl.getOriginalGroupId()))) {
390             FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_UUID_G,
391                 new Object[] {
392                     bookmarksFolder.getUuid(),
393                     new Long(bookmarksFolder.getGroupId())
394                 }, bookmarksFolder);
395         }
396 
397         return bookmarksFolder;
398     }
399 
400     public BookmarksFolder findByPrimaryKey(long folderId)
401         throws NoSuchFolderException, SystemException {
402         BookmarksFolder bookmarksFolder = fetchByPrimaryKey(folderId);
403 
404         if (bookmarksFolder == null) {
405             if (_log.isWarnEnabled()) {
406                 _log.warn("No BookmarksFolder exists with the primary key " +
407                     folderId);
408             }
409 
410             throw new NoSuchFolderException(
411                 "No BookmarksFolder exists with the primary key " + folderId);
412         }
413 
414         return bookmarksFolder;
415     }
416 
417     public BookmarksFolder fetchByPrimaryKey(long folderId)
418         throws SystemException {
419         BookmarksFolder bookmarksFolder = (BookmarksFolder)EntityCacheUtil.getResult(BookmarksFolderModelImpl.ENTITY_CACHE_ENABLED,
420                 BookmarksFolderImpl.class, folderId, this);
421 
422         if (bookmarksFolder == null) {
423             Session session = null;
424 
425             try {
426                 session = openSession();
427 
428                 bookmarksFolder = (BookmarksFolder)session.get(BookmarksFolderImpl.class,
429                         new Long(folderId));
430             }
431             catch (Exception e) {
432                 throw processException(e);
433             }
434             finally {
435                 if (bookmarksFolder != null) {
436                     cacheResult(bookmarksFolder);
437                 }
438 
439                 closeSession(session);
440             }
441         }
442 
443         return bookmarksFolder;
444     }
445 
446     public List<BookmarksFolder> findByUuid(String uuid)
447         throws SystemException {
448         Object[] finderArgs = new Object[] { uuid };
449 
450         List<BookmarksFolder> list = (List<BookmarksFolder>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_UUID,
451                 finderArgs, this);
452 
453         if (list == null) {
454             Session session = null;
455 
456             try {
457                 session = openSession();
458 
459                 StringBuilder query = new StringBuilder();
460 
461                 query.append(
462                     "FROM com.liferay.portlet.bookmarks.model.BookmarksFolder WHERE ");
463 
464                 if (uuid == null) {
465                     query.append("uuid_ IS NULL");
466                 }
467                 else {
468                     query.append("uuid_ = ?");
469                 }
470 
471                 query.append(" ");
472 
473                 query.append("ORDER BY ");
474 
475                 query.append("parentFolderId ASC, ");
476                 query.append("name ASC");
477 
478                 Query q = session.createQuery(query.toString());
479 
480                 QueryPos qPos = QueryPos.getInstance(q);
481 
482                 if (uuid != null) {
483                     qPos.add(uuid);
484                 }
485 
486                 list = q.list();
487             }
488             catch (Exception e) {
489                 throw processException(e);
490             }
491             finally {
492                 if (list == null) {
493                     list = new ArrayList<BookmarksFolder>();
494                 }
495 
496                 cacheResult(list);
497 
498                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_UUID, finderArgs,
499                     list);
500 
501                 closeSession(session);
502             }
503         }
504 
505         return list;
506     }
507 
508     public List<BookmarksFolder> findByUuid(String uuid, int start, int end)
509         throws SystemException {
510         return findByUuid(uuid, start, end, null);
511     }
512 
513     public List<BookmarksFolder> findByUuid(String uuid, int start, int end,
514         OrderByComparator obc) throws SystemException {
515         Object[] finderArgs = new Object[] {
516                 uuid,
517                 
518                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
519             };
520 
521         List<BookmarksFolder> list = (List<BookmarksFolder>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_UUID,
522                 finderArgs, this);
523 
524         if (list == null) {
525             Session session = null;
526 
527             try {
528                 session = openSession();
529 
530                 StringBuilder query = new StringBuilder();
531 
532                 query.append(
533                     "FROM com.liferay.portlet.bookmarks.model.BookmarksFolder WHERE ");
534 
535                 if (uuid == null) {
536                     query.append("uuid_ IS NULL");
537                 }
538                 else {
539                     query.append("uuid_ = ?");
540                 }
541 
542                 query.append(" ");
543 
544                 if (obc != null) {
545                     query.append("ORDER BY ");
546                     query.append(obc.getOrderBy());
547                 }
548 
549                 else {
550                     query.append("ORDER BY ");
551 
552                     query.append("parentFolderId ASC, ");
553                     query.append("name ASC");
554                 }
555 
556                 Query q = session.createQuery(query.toString());
557 
558                 QueryPos qPos = QueryPos.getInstance(q);
559 
560                 if (uuid != null) {
561                     qPos.add(uuid);
562                 }
563 
564                 list = (List<BookmarksFolder>)QueryUtil.list(q, getDialect(),
565                         start, end);
566             }
567             catch (Exception e) {
568                 throw processException(e);
569             }
570             finally {
571                 if (list == null) {
572                     list = new ArrayList<BookmarksFolder>();
573                 }
574 
575                 cacheResult(list);
576 
577                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_UUID,
578                     finderArgs, list);
579 
580                 closeSession(session);
581             }
582         }
583 
584         return list;
585     }
586 
587     public BookmarksFolder findByUuid_First(String uuid, OrderByComparator obc)
588         throws NoSuchFolderException, SystemException {
589         List<BookmarksFolder> list = findByUuid(uuid, 0, 1, obc);
590 
591         if (list.isEmpty()) {
592             StringBuilder msg = new StringBuilder();
593 
594             msg.append("No BookmarksFolder exists with the key {");
595 
596             msg.append("uuid=" + uuid);
597 
598             msg.append(StringPool.CLOSE_CURLY_BRACE);
599 
600             throw new NoSuchFolderException(msg.toString());
601         }
602         else {
603             return list.get(0);
604         }
605     }
606 
607     public BookmarksFolder findByUuid_Last(String uuid, OrderByComparator obc)
608         throws NoSuchFolderException, SystemException {
609         int count = countByUuid(uuid);
610 
611         List<BookmarksFolder> list = findByUuid(uuid, count - 1, count, obc);
612 
613         if (list.isEmpty()) {
614             StringBuilder msg = new StringBuilder();
615 
616             msg.append("No BookmarksFolder exists with the key {");
617 
618             msg.append("uuid=" + uuid);
619 
620             msg.append(StringPool.CLOSE_CURLY_BRACE);
621 
622             throw new NoSuchFolderException(msg.toString());
623         }
624         else {
625             return list.get(0);
626         }
627     }
628 
629     public BookmarksFolder[] findByUuid_PrevAndNext(long folderId, String uuid,
630         OrderByComparator obc) throws NoSuchFolderException, SystemException {
631         BookmarksFolder bookmarksFolder = findByPrimaryKey(folderId);
632 
633         int count = countByUuid(uuid);
634 
635         Session session = null;
636 
637         try {
638             session = openSession();
639 
640             StringBuilder query = new StringBuilder();
641 
642             query.append(
643                 "FROM com.liferay.portlet.bookmarks.model.BookmarksFolder WHERE ");
644 
645             if (uuid == null) {
646                 query.append("uuid_ IS NULL");
647             }
648             else {
649                 query.append("uuid_ = ?");
650             }
651 
652             query.append(" ");
653 
654             if (obc != null) {
655                 query.append("ORDER BY ");
656                 query.append(obc.getOrderBy());
657             }
658 
659             else {
660                 query.append("ORDER BY ");
661 
662                 query.append("parentFolderId ASC, ");
663                 query.append("name ASC");
664             }
665 
666             Query q = session.createQuery(query.toString());
667 
668             QueryPos qPos = QueryPos.getInstance(q);
669 
670             if (uuid != null) {
671                 qPos.add(uuid);
672             }
673 
674             Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
675                     bookmarksFolder);
676 
677             BookmarksFolder[] array = new BookmarksFolderImpl[3];
678 
679             array[0] = (BookmarksFolder)objArray[0];
680             array[1] = (BookmarksFolder)objArray[1];
681             array[2] = (BookmarksFolder)objArray[2];
682 
683             return array;
684         }
685         catch (Exception e) {
686             throw processException(e);
687         }
688         finally {
689             closeSession(session);
690         }
691     }
692 
693     public BookmarksFolder findByUUID_G(String uuid, long groupId)
694         throws NoSuchFolderException, SystemException {
695         BookmarksFolder bookmarksFolder = fetchByUUID_G(uuid, groupId);
696 
697         if (bookmarksFolder == null) {
698             StringBuilder msg = new StringBuilder();
699 
700             msg.append("No BookmarksFolder exists with the key {");
701 
702             msg.append("uuid=" + uuid);
703 
704             msg.append(", ");
705             msg.append("groupId=" + groupId);
706 
707             msg.append(StringPool.CLOSE_CURLY_BRACE);
708 
709             if (_log.isWarnEnabled()) {
710                 _log.warn(msg.toString());
711             }
712 
713             throw new NoSuchFolderException(msg.toString());
714         }
715 
716         return bookmarksFolder;
717     }
718 
719     public BookmarksFolder fetchByUUID_G(String uuid, long groupId)
720         throws SystemException {
721         return fetchByUUID_G(uuid, groupId, true);
722     }
723 
724     public BookmarksFolder fetchByUUID_G(String uuid, long groupId,
725         boolean retrieveFromCache) throws SystemException {
726         Object[] finderArgs = new Object[] { uuid, new Long(groupId) };
727 
728         Object result = null;
729 
730         if (retrieveFromCache) {
731             result = FinderCacheUtil.getResult(FINDER_PATH_FETCH_BY_UUID_G,
732                     finderArgs, this);
733         }
734 
735         if (result == null) {
736             Session session = null;
737 
738             try {
739                 session = openSession();
740 
741                 StringBuilder query = new StringBuilder();
742 
743                 query.append(
744                     "FROM com.liferay.portlet.bookmarks.model.BookmarksFolder WHERE ");
745 
746                 if (uuid == null) {
747                     query.append("uuid_ IS NULL");
748                 }
749                 else {
750                     query.append("uuid_ = ?");
751                 }
752 
753                 query.append(" AND ");
754 
755                 query.append("groupId = ?");
756 
757                 query.append(" ");
758 
759                 query.append("ORDER BY ");
760 
761                 query.append("parentFolderId ASC, ");
762                 query.append("name ASC");
763 
764                 Query q = session.createQuery(query.toString());
765 
766                 QueryPos qPos = QueryPos.getInstance(q);
767 
768                 if (uuid != null) {
769                     qPos.add(uuid);
770                 }
771 
772                 qPos.add(groupId);
773 
774                 List<BookmarksFolder> list = q.list();
775 
776                 result = list;
777 
778                 BookmarksFolder bookmarksFolder = null;
779 
780                 if (list.isEmpty()) {
781                     FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_UUID_G,
782                         finderArgs, list);
783                 }
784                 else {
785                     bookmarksFolder = list.get(0);
786 
787                     cacheResult(bookmarksFolder);
788 
789                     if ((bookmarksFolder.getUuid() == null) ||
790                             !bookmarksFolder.getUuid().equals(uuid) ||
791                             (bookmarksFolder.getGroupId() != groupId)) {
792                         FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_UUID_G,
793                             finderArgs, bookmarksFolder);
794                     }
795                 }
796 
797                 return bookmarksFolder;
798             }
799             catch (Exception e) {
800                 throw processException(e);
801             }
802             finally {
803                 if (result == null) {
804                     FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_UUID_G,
805                         finderArgs, new ArrayList<BookmarksFolder>());
806                 }
807 
808                 closeSession(session);
809             }
810         }
811         else {
812             if (result instanceof List) {
813                 return null;
814             }
815             else {
816                 return (BookmarksFolder)result;
817             }
818         }
819     }
820 
821     public List<BookmarksFolder> findByGroupId(long groupId)
822         throws SystemException {
823         Object[] finderArgs = new Object[] { new Long(groupId) };
824 
825         List<BookmarksFolder> list = (List<BookmarksFolder>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_GROUPID,
826                 finderArgs, this);
827 
828         if (list == null) {
829             Session session = null;
830 
831             try {
832                 session = openSession();
833 
834                 StringBuilder query = new StringBuilder();
835 
836                 query.append(
837                     "FROM com.liferay.portlet.bookmarks.model.BookmarksFolder WHERE ");
838 
839                 query.append("groupId = ?");
840 
841                 query.append(" ");
842 
843                 query.append("ORDER BY ");
844 
845                 query.append("parentFolderId ASC, ");
846                 query.append("name ASC");
847 
848                 Query q = session.createQuery(query.toString());
849 
850                 QueryPos qPos = QueryPos.getInstance(q);
851 
852                 qPos.add(groupId);
853 
854                 list = q.list();
855             }
856             catch (Exception e) {
857                 throw processException(e);
858             }
859             finally {
860                 if (list == null) {
861                     list = new ArrayList<BookmarksFolder>();
862                 }
863 
864                 cacheResult(list);
865 
866                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_GROUPID,
867                     finderArgs, list);
868 
869                 closeSession(session);
870             }
871         }
872 
873         return list;
874     }
875 
876     public List<BookmarksFolder> findByGroupId(long groupId, int start, int end)
877         throws SystemException {
878         return findByGroupId(groupId, start, end, null);
879     }
880 
881     public List<BookmarksFolder> findByGroupId(long groupId, int start,
882         int end, OrderByComparator obc) throws SystemException {
883         Object[] finderArgs = new Object[] {
884                 new Long(groupId),
885                 
886                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
887             };
888 
889         List<BookmarksFolder> list = (List<BookmarksFolder>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_GROUPID,
890                 finderArgs, this);
891 
892         if (list == null) {
893             Session session = null;
894 
895             try {
896                 session = openSession();
897 
898                 StringBuilder query = new StringBuilder();
899 
900                 query.append(
901                     "FROM com.liferay.portlet.bookmarks.model.BookmarksFolder WHERE ");
902 
903                 query.append("groupId = ?");
904 
905                 query.append(" ");
906 
907                 if (obc != null) {
908                     query.append("ORDER BY ");
909                     query.append(obc.getOrderBy());
910                 }
911 
912                 else {
913                     query.append("ORDER BY ");
914 
915                     query.append("parentFolderId ASC, ");
916                     query.append("name ASC");
917                 }
918 
919                 Query q = session.createQuery(query.toString());
920 
921                 QueryPos qPos = QueryPos.getInstance(q);
922 
923                 qPos.add(groupId);
924 
925                 list = (List<BookmarksFolder>)QueryUtil.list(q, getDialect(),
926                         start, end);
927             }
928             catch (Exception e) {
929                 throw processException(e);
930             }
931             finally {
932                 if (list == null) {
933                     list = new ArrayList<BookmarksFolder>();
934                 }
935 
936                 cacheResult(list);
937 
938                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_GROUPID,
939                     finderArgs, list);
940 
941                 closeSession(session);
942             }
943         }
944 
945         return list;
946     }
947 
948     public BookmarksFolder findByGroupId_First(long groupId,
949         OrderByComparator obc) throws NoSuchFolderException, SystemException {
950         List<BookmarksFolder> list = findByGroupId(groupId, 0, 1, obc);
951 
952         if (list.isEmpty()) {
953             StringBuilder msg = new StringBuilder();
954 
955             msg.append("No BookmarksFolder exists with the key {");
956 
957             msg.append("groupId=" + groupId);
958 
959             msg.append(StringPool.CLOSE_CURLY_BRACE);
960 
961             throw new NoSuchFolderException(msg.toString());
962         }
963         else {
964             return list.get(0);
965         }
966     }
967 
968     public BookmarksFolder findByGroupId_Last(long groupId,
969         OrderByComparator obc) throws NoSuchFolderException, SystemException {
970         int count = countByGroupId(groupId);
971 
972         List<BookmarksFolder> list = findByGroupId(groupId, count - 1, count,
973                 obc);
974 
975         if (list.isEmpty()) {
976             StringBuilder msg = new StringBuilder();
977 
978             msg.append("No BookmarksFolder exists with the key {");
979 
980             msg.append("groupId=" + groupId);
981 
982             msg.append(StringPool.CLOSE_CURLY_BRACE);
983 
984             throw new NoSuchFolderException(msg.toString());
985         }
986         else {
987             return list.get(0);
988         }
989     }
990 
991     public BookmarksFolder[] findByGroupId_PrevAndNext(long folderId,
992         long groupId, OrderByComparator obc)
993         throws NoSuchFolderException, SystemException {
994         BookmarksFolder bookmarksFolder = findByPrimaryKey(folderId);
995 
996         int count = countByGroupId(groupId);
997 
998         Session session = null;
999 
1000        try {
1001            session = openSession();
1002
1003            StringBuilder query = new StringBuilder();
1004
1005            query.append(
1006                "FROM com.liferay.portlet.bookmarks.model.BookmarksFolder WHERE ");
1007
1008            query.append("groupId = ?");
1009
1010            query.append(" ");
1011
1012            if (obc != null) {
1013                query.append("ORDER BY ");
1014                query.append(obc.getOrderBy());
1015            }
1016
1017            else {
1018                query.append("ORDER BY ");
1019
1020                query.append("parentFolderId ASC, ");
1021                query.append("name ASC");
1022            }
1023
1024            Query q = session.createQuery(query.toString());
1025
1026            QueryPos qPos = QueryPos.getInstance(q);
1027
1028            qPos.add(groupId);
1029
1030            Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
1031                    bookmarksFolder);
1032
1033            BookmarksFolder[] array = new BookmarksFolderImpl[3];
1034
1035            array[0] = (BookmarksFolder)objArray[0];
1036            array[1] = (BookmarksFolder)objArray[1];
1037            array[2] = (BookmarksFolder)objArray[2];
1038
1039            return array;
1040        }
1041        catch (Exception e) {
1042            throw processException(e);
1043        }
1044        finally {
1045            closeSession(session);
1046        }
1047    }
1048
1049    public List<BookmarksFolder> findByCompanyId(long companyId)
1050        throws SystemException {
1051        Object[] finderArgs = new Object[] { new Long(companyId) };
1052
1053        List<BookmarksFolder> list = (List<BookmarksFolder>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_COMPANYID,
1054                finderArgs, this);
1055
1056        if (list == null) {
1057            Session session = null;
1058
1059            try {
1060                session = openSession();
1061
1062                StringBuilder query = new StringBuilder();
1063
1064                query.append(
1065                    "FROM com.liferay.portlet.bookmarks.model.BookmarksFolder WHERE ");
1066
1067                query.append("companyId = ?");
1068
1069                query.append(" ");
1070
1071                query.append("ORDER BY ");
1072
1073                query.append("parentFolderId ASC, ");
1074                query.append("name ASC");
1075
1076                Query q = session.createQuery(query.toString());
1077
1078                QueryPos qPos = QueryPos.getInstance(q);
1079
1080                qPos.add(companyId);
1081
1082                list = q.list();
1083            }
1084            catch (Exception e) {
1085                throw processException(e);
1086            }
1087            finally {
1088                if (list == null) {
1089                    list = new ArrayList<BookmarksFolder>();
1090                }
1091
1092                cacheResult(list);
1093
1094                FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_COMPANYID,
1095                    finderArgs, list);
1096
1097                closeSession(session);
1098            }
1099        }
1100
1101        return list;
1102    }
1103
1104    public List<BookmarksFolder> findByCompanyId(long companyId, int start,
1105        int end) throws SystemException {
1106        return findByCompanyId(companyId, start, end, null);
1107    }
1108
1109    public List<BookmarksFolder> findByCompanyId(long companyId, int start,
1110        int end, OrderByComparator obc) throws SystemException {
1111        Object[] finderArgs = new Object[] {
1112                new Long(companyId),
1113                
1114                String.valueOf(start), String.valueOf(end), String.valueOf(obc)
1115            };
1116
1117        List<BookmarksFolder> list = (List<BookmarksFolder>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_COMPANYID,
1118                finderArgs, this);
1119
1120        if (list == null) {
1121            Session session = null;
1122
1123            try {
1124                session = openSession();
1125
1126                StringBuilder query = new StringBuilder();
1127
1128                query.append(
1129                    "FROM com.liferay.portlet.bookmarks.model.BookmarksFolder WHERE ");
1130
1131                query.append("companyId = ?");
1132
1133                query.append(" ");
1134
1135                if (obc != null) {
1136                    query.append("ORDER BY ");
1137                    query.append(obc.getOrderBy());
1138                }
1139
1140                else {
1141                    query.append("ORDER BY ");
1142
1143                    query.append("parentFolderId ASC, ");
1144                    query.append("name ASC");
1145                }
1146
1147                Query q = session.createQuery(query.toString());
1148
1149                QueryPos qPos = QueryPos.getInstance(q);
1150
1151                qPos.add(companyId);
1152
1153                list = (List<BookmarksFolder>)QueryUtil.list(q, getDialect(),
1154                        start, end);
1155            }
1156            catch (Exception e) {
1157                throw processException(e);
1158            }
1159            finally {
1160                if (list == null) {
1161                    list = new ArrayList<BookmarksFolder>();
1162                }
1163
1164                cacheResult(list);
1165
1166                FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_COMPANYID,
1167                    finderArgs, list);
1168
1169                closeSession(session);
1170            }
1171        }
1172
1173        return list;
1174    }
1175
1176    public BookmarksFolder findByCompanyId_First(long companyId,
1177        OrderByComparator obc) throws NoSuchFolderException, SystemException {
1178        List<BookmarksFolder> list = findByCompanyId(companyId, 0, 1, obc);
1179
1180        if (list.isEmpty()) {
1181            StringBuilder msg = new StringBuilder();
1182
1183            msg.append("No BookmarksFolder exists with the key {");
1184
1185            msg.append("companyId=" + companyId);
1186
1187            msg.append(StringPool.CLOSE_CURLY_BRACE);
1188
1189            throw new NoSuchFolderException(msg.toString());
1190        }
1191        else {
1192            return list.get(0);
1193        }
1194    }
1195
1196    public BookmarksFolder findByCompanyId_Last(long companyId,
1197        OrderByComparator obc) throws NoSuchFolderException, SystemException {
1198        int count = countByCompanyId(companyId);
1199
1200        List<BookmarksFolder> list = findByCompanyId(companyId, count - 1,
1201                count, obc);
1202
1203        if (list.isEmpty()) {
1204            StringBuilder msg = new StringBuilder();
1205
1206            msg.append("No BookmarksFolder exists with the key {");
1207
1208            msg.append("companyId=" + companyId);
1209
1210            msg.append(StringPool.CLOSE_CURLY_BRACE);
1211
1212            throw new NoSuchFolderException(msg.toString());
1213        }
1214        else {
1215            return list.get(0);
1216        }
1217    }
1218
1219    public BookmarksFolder[] findByCompanyId_PrevAndNext(long folderId,
1220        long companyId, OrderByComparator obc)
1221        throws NoSuchFolderException, SystemException {
1222        BookmarksFolder bookmarksFolder = findByPrimaryKey(folderId);
1223
1224        int count = countByCompanyId(companyId);
1225
1226        Session session = null;
1227
1228        try {
1229            session = openSession();
1230
1231            StringBuilder query = new StringBuilder();
1232
1233            query.append(
1234                "FROM com.liferay.portlet.bookmarks.model.BookmarksFolder WHERE ");
1235
1236            query.append("companyId = ?");
1237
1238            query.append(" ");
1239
1240            if (obc != null) {
1241                query.append("ORDER BY ");
1242                query.append(obc.getOrderBy());
1243            }
1244
1245            else {
1246                query.append("ORDER BY ");
1247
1248                query.append("parentFolderId ASC, ");
1249                query.append("name ASC");
1250            }
1251
1252            Query q = session.createQuery(query.toString());
1253
1254            QueryPos qPos = QueryPos.getInstance(q);
1255
1256            qPos.add(companyId);
1257
1258            Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
1259                    bookmarksFolder);
1260
1261            BookmarksFolder[] array = new BookmarksFolderImpl[3];
1262
1263            array[0] = (BookmarksFolder)objArray[0];
1264            array[1] = (BookmarksFolder)objArray[1];
1265            array[2] = (BookmarksFolder)objArray[2];
1266
1267            return array;
1268        }
1269        catch (Exception e) {
1270            throw processException(e);
1271        }
1272        finally {
1273            closeSession(session);
1274        }
1275    }
1276
1277    public List<BookmarksFolder> findByG_P(long groupId, long parentFolderId)
1278        throws SystemException {
1279        Object[] finderArgs = new Object[] {
1280                new Long(groupId), new Long(parentFolderId)
1281            };
1282
1283        List<BookmarksFolder> list = (List<BookmarksFolder>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_G_P,
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                    "FROM com.liferay.portlet.bookmarks.model.BookmarksFolder WHERE ");
1296
1297                query.append("groupId = ?");
1298
1299                query.append(" AND ");
1300
1301                query.append("parentFolderId = ?");
1302
1303                query.append(" ");
1304
1305                query.append("ORDER BY ");
1306
1307                query.append("parentFolderId ASC, ");
1308                query.append("name ASC");
1309
1310                Query q = session.createQuery(query.toString());
1311
1312                QueryPos qPos = QueryPos.getInstance(q);
1313
1314                qPos.add(groupId);
1315
1316                qPos.add(parentFolderId);
1317
1318                list = q.list();
1319            }
1320            catch (Exception e) {
1321                throw processException(e);
1322            }
1323            finally {
1324                if (list == null) {
1325                    list = new ArrayList<BookmarksFolder>();
1326                }
1327
1328                cacheResult(list);
1329
1330                FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_G_P, finderArgs,
1331                    list);
1332
1333                closeSession(session);
1334            }
1335        }
1336
1337        return list;
1338    }
1339
1340    public List<BookmarksFolder> findByG_P(long groupId, long parentFolderId,
1341        int start, int end) throws SystemException {
1342        return findByG_P(groupId, parentFolderId, start, end, null);
1343    }
1344
1345    public List<BookmarksFolder> findByG_P(long groupId, long parentFolderId,
1346        int start, int end, OrderByComparator obc) throws SystemException {
1347        Object[] finderArgs = new Object[] {
1348                new Long(groupId), new Long(parentFolderId),
1349                
1350                String.valueOf(start), String.valueOf(end), String.valueOf(obc)
1351            };
1352
1353        List<BookmarksFolder> list = (List<BookmarksFolder>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_G_P,
1354                finderArgs, this);
1355
1356        if (list == null) {
1357            Session session = null;
1358
1359            try {
1360                session = openSession();
1361
1362                StringBuilder query = new StringBuilder();
1363
1364                query.append(
1365                    "FROM com.liferay.portlet.bookmarks.model.BookmarksFolder WHERE ");
1366
1367                query.append("groupId = ?");
1368
1369                query.append(" AND ");
1370
1371                query.append("parentFolderId = ?");
1372
1373                query.append(" ");
1374
1375                if (obc != null) {
1376                    query.append("ORDER BY ");
1377                    query.append(obc.getOrderBy());
1378                }
1379
1380                else {
1381                    query.append("ORDER BY ");
1382
1383                    query.append("parentFolderId ASC, ");
1384                    query.append("name ASC");
1385                }
1386
1387                Query q = session.createQuery(query.toString());
1388
1389                QueryPos qPos = QueryPos.getInstance(q);
1390
1391                qPos.add(groupId);
1392
1393                qPos.add(parentFolderId);
1394
1395                list = (List<BookmarksFolder>)QueryUtil.list(q, getDialect(),
1396                        start, end);
1397            }
1398            catch (Exception e) {
1399                throw processException(e);
1400            }
1401            finally {
1402                if (list == null) {
1403                    list = new ArrayList<BookmarksFolder>();
1404                }
1405
1406                cacheResult(list);
1407
1408                FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_G_P,
1409                    finderArgs, list);
1410
1411                closeSession(session);
1412            }
1413        }
1414
1415        return list;
1416    }
1417
1418    public BookmarksFolder findByG_P_First(long groupId, long parentFolderId,
1419        OrderByComparator obc) throws NoSuchFolderException, SystemException {
1420        List<BookmarksFolder> list = findByG_P(groupId, parentFolderId, 0, 1,
1421                obc);
1422
1423        if (list.isEmpty()) {
1424            StringBuilder msg = new StringBuilder();
1425
1426            msg.append("No BookmarksFolder exists with the key {");
1427
1428            msg.append("groupId=" + groupId);
1429
1430            msg.append(", ");
1431            msg.append("parentFolderId=" + parentFolderId);
1432
1433            msg.append(StringPool.CLOSE_CURLY_BRACE);
1434
1435            throw new NoSuchFolderException(msg.toString());
1436        }
1437        else {
1438            return list.get(0);
1439        }
1440    }
1441
1442    public BookmarksFolder findByG_P_Last(long groupId, long parentFolderId,
1443        OrderByComparator obc) throws NoSuchFolderException, SystemException {
1444        int count = countByG_P(groupId, parentFolderId);
1445
1446        List<BookmarksFolder> list = findByG_P(groupId, parentFolderId,
1447                count - 1, count, obc);
1448
1449        if (list.isEmpty()) {
1450            StringBuilder msg = new StringBuilder();
1451
1452            msg.append("No BookmarksFolder exists with the key {");
1453
1454            msg.append("groupId=" + groupId);
1455
1456            msg.append(", ");
1457            msg.append("parentFolderId=" + parentFolderId);
1458
1459            msg.append(StringPool.CLOSE_CURLY_BRACE);
1460
1461            throw new NoSuchFolderException(msg.toString());
1462        }
1463        else {
1464            return list.get(0);
1465        }
1466    }
1467
1468    public BookmarksFolder[] findByG_P_PrevAndNext(long folderId, long groupId,
1469        long parentFolderId, OrderByComparator obc)
1470        throws NoSuchFolderException, SystemException {
1471        BookmarksFolder bookmarksFolder = findByPrimaryKey(folderId);
1472
1473        int count = countByG_P(groupId, parentFolderId);
1474
1475        Session session = null;
1476
1477        try {
1478            session = openSession();
1479
1480            StringBuilder query = new StringBuilder();
1481
1482            query.append(
1483                "FROM com.liferay.portlet.bookmarks.model.BookmarksFolder WHERE ");
1484
1485            query.append("groupId = ?");
1486
1487            query.append(" AND ");
1488
1489            query.append("parentFolderId = ?");
1490
1491            query.append(" ");
1492
1493            if (obc != null) {
1494                query.append("ORDER BY ");
1495                query.append(obc.getOrderBy());
1496            }
1497
1498            else {
1499                query.append("ORDER BY ");
1500
1501                query.append("parentFolderId ASC, ");
1502                query.append("name ASC");
1503            }
1504
1505            Query q = session.createQuery(query.toString());
1506
1507            QueryPos qPos = QueryPos.getInstance(q);
1508
1509            qPos.add(groupId);
1510
1511            qPos.add(parentFolderId);
1512
1513            Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
1514                    bookmarksFolder);
1515
1516            BookmarksFolder[] array = new BookmarksFolderImpl[3];
1517
1518            array[0] = (BookmarksFolder)objArray[0];
1519            array[1] = (BookmarksFolder)objArray[1];
1520            array[2] = (BookmarksFolder)objArray[2];
1521
1522            return array;
1523        }
1524        catch (Exception e) {
1525            throw processException(e);
1526        }
1527        finally {
1528            closeSession(session);
1529        }
1530    }
1531
1532    public List<Object> findWithDynamicQuery(DynamicQuery dynamicQuery)
1533        throws SystemException {
1534        Session session = null;
1535
1536        try {
1537            session = openSession();
1538
1539            dynamicQuery.compile(session);
1540
1541            return dynamicQuery.list();
1542        }
1543        catch (Exception e) {
1544            throw processException(e);
1545        }
1546        finally {
1547            closeSession(session);
1548        }
1549    }
1550
1551    public List<Object> findWithDynamicQuery(DynamicQuery dynamicQuery,
1552        int start, int end) throws SystemException {
1553        Session session = null;
1554
1555        try {
1556            session = openSession();
1557
1558            dynamicQuery.setLimit(start, end);
1559
1560            dynamicQuery.compile(session);
1561
1562            return dynamicQuery.list();
1563        }
1564        catch (Exception e) {
1565            throw processException(e);
1566        }
1567        finally {
1568            closeSession(session);
1569        }
1570    }
1571
1572    public List<BookmarksFolder> findAll() throws SystemException {
1573        return findAll(QueryUtil.ALL_POS, QueryUtil.ALL_POS, null);
1574    }
1575
1576    public List<BookmarksFolder> findAll(int start, int end)
1577        throws SystemException {
1578        return findAll(start, end, null);
1579    }
1580
1581    public List<BookmarksFolder> findAll(int start, int end,
1582        OrderByComparator obc) throws SystemException {
1583        Object[] finderArgs = new Object[] {
1584                String.valueOf(start), String.valueOf(end), String.valueOf(obc)
1585            };
1586
1587        List<BookmarksFolder> list = (List<BookmarksFolder>)FinderCacheUtil.getResult(FINDER_PATH_FIND_ALL,
1588                finderArgs, this);
1589
1590        if (list == null) {
1591            Session session = null;
1592
1593            try {
1594                session = openSession();
1595
1596                StringBuilder query = new StringBuilder();
1597
1598                query.append(
1599                    "FROM com.liferay.portlet.bookmarks.model.BookmarksFolder ");
1600
1601                if (obc != null) {
1602                    query.append("ORDER BY ");
1603                    query.append(obc.getOrderBy());
1604                }
1605
1606                else {
1607                    query.append("ORDER BY ");
1608
1609                    query.append("parentFolderId ASC, ");
1610                    query.append("name ASC");
1611                }
1612
1613                Query q = session.createQuery(query.toString());
1614
1615                if (obc == null) {
1616                    list = (List<BookmarksFolder>)QueryUtil.list(q,
1617                            getDialect(), start, end, false);
1618
1619                    Collections.sort(list);
1620                }
1621                else {
1622                    list = (List<BookmarksFolder>)QueryUtil.list(q,
1623                            getDialect(), start, end);
1624                }
1625            }
1626            catch (Exception e) {
1627                throw processException(e);
1628            }
1629            finally {
1630                if (list == null) {
1631                    list = new ArrayList<BookmarksFolder>();
1632                }
1633
1634                cacheResult(list);
1635
1636                FinderCacheUtil.putResult(FINDER_PATH_FIND_ALL, finderArgs, list);
1637
1638                closeSession(session);
1639            }
1640        }
1641
1642        return list;
1643    }
1644
1645    public void removeByUuid(String uuid) throws SystemException {
1646        for (BookmarksFolder bookmarksFolder : findByUuid(uuid)) {
1647            remove(bookmarksFolder);
1648        }
1649    }
1650
1651    public void removeByUUID_G(String uuid, long groupId)
1652        throws NoSuchFolderException, SystemException {
1653        BookmarksFolder bookmarksFolder = findByUUID_G(uuid, groupId);
1654
1655        remove(bookmarksFolder);
1656    }
1657
1658    public void removeByGroupId(long groupId) throws SystemException {
1659        for (BookmarksFolder bookmarksFolder : findByGroupId(groupId)) {
1660            remove(bookmarksFolder);
1661        }
1662    }
1663
1664    public void removeByCompanyId(long companyId) throws SystemException {
1665        for (BookmarksFolder bookmarksFolder : findByCompanyId(companyId)) {
1666            remove(bookmarksFolder);
1667        }
1668    }
1669
1670    public void removeByG_P(long groupId, long parentFolderId)
1671        throws SystemException {
1672        for (BookmarksFolder bookmarksFolder : findByG_P(groupId, parentFolderId)) {
1673            remove(bookmarksFolder);
1674        }
1675    }
1676
1677    public void removeAll() throws SystemException {
1678        for (BookmarksFolder bookmarksFolder : findAll()) {
1679            remove(bookmarksFolder);
1680        }
1681    }
1682
1683    public int countByUuid(String uuid) throws SystemException {
1684        Object[] finderArgs = new Object[] { uuid };
1685
1686        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_UUID,
1687                finderArgs, this);
1688
1689        if (count == null) {
1690            Session session = null;
1691
1692            try {
1693                session = openSession();
1694
1695                StringBuilder query = new StringBuilder();
1696
1697                query.append("SELECT COUNT(*) ");
1698                query.append(
1699                    "FROM com.liferay.portlet.bookmarks.model.BookmarksFolder WHERE ");
1700
1701                if (uuid == null) {
1702                    query.append("uuid_ IS NULL");
1703                }
1704                else {
1705                    query.append("uuid_ = ?");
1706                }
1707
1708                query.append(" ");
1709
1710                Query q = session.createQuery(query.toString());
1711
1712                QueryPos qPos = QueryPos.getInstance(q);
1713
1714                if (uuid != null) {
1715                    qPos.add(uuid);
1716                }
1717
1718                count = (Long)q.uniqueResult();
1719            }
1720            catch (Exception e) {
1721                throw processException(e);
1722            }
1723            finally {
1724                if (count == null) {
1725                    count = Long.valueOf(0);
1726                }
1727
1728                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_UUID,
1729                    finderArgs, count);
1730
1731                closeSession(session);
1732            }
1733        }
1734
1735        return count.intValue();
1736    }
1737
1738    public int countByUUID_G(String uuid, long groupId)
1739        throws SystemException {
1740        Object[] finderArgs = new Object[] { uuid, new Long(groupId) };
1741
1742        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_UUID_G,
1743                finderArgs, this);
1744
1745        if (count == null) {
1746            Session session = null;
1747
1748            try {
1749                session = openSession();
1750
1751                StringBuilder query = new StringBuilder();
1752
1753                query.append("SELECT COUNT(*) ");
1754                query.append(
1755                    "FROM com.liferay.portlet.bookmarks.model.BookmarksFolder WHERE ");
1756
1757                if (uuid == null) {
1758                    query.append("uuid_ IS NULL");
1759                }
1760                else {
1761                    query.append("uuid_ = ?");
1762                }
1763
1764                query.append(" AND ");
1765
1766                query.append("groupId = ?");
1767
1768                query.append(" ");
1769
1770                Query q = session.createQuery(query.toString());
1771
1772                QueryPos qPos = QueryPos.getInstance(q);
1773
1774                if (uuid != null) {
1775                    qPos.add(uuid);
1776                }
1777
1778                qPos.add(groupId);
1779
1780                count = (Long)q.uniqueResult();
1781            }
1782            catch (Exception e) {
1783                throw processException(e);
1784            }
1785            finally {
1786                if (count == null) {
1787                    count = Long.valueOf(0);
1788                }
1789
1790                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_UUID_G,
1791                    finderArgs, count);
1792
1793                closeSession(session);
1794            }
1795        }
1796
1797        return count.intValue();
1798    }
1799
1800    public int countByGroupId(long groupId) throws SystemException {
1801        Object[] finderArgs = new Object[] { new Long(groupId) };
1802
1803        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_GROUPID,
1804                finderArgs, this);
1805
1806        if (count == null) {
1807            Session session = null;
1808
1809            try {
1810                session = openSession();
1811
1812                StringBuilder query = new StringBuilder();
1813
1814                query.append("SELECT COUNT(*) ");
1815                query.append(
1816                    "FROM com.liferay.portlet.bookmarks.model.BookmarksFolder WHERE ");
1817
1818                query.append("groupId = ?");
1819
1820                query.append(" ");
1821
1822                Query q = session.createQuery(query.toString());
1823
1824                QueryPos qPos = QueryPos.getInstance(q);
1825
1826                qPos.add(groupId);
1827
1828                count = (Long)q.uniqueResult();
1829            }
1830            catch (Exception e) {
1831                throw processException(e);
1832            }
1833            finally {
1834                if (count == null) {
1835                    count = Long.valueOf(0);
1836                }
1837
1838                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_GROUPID,
1839                    finderArgs, count);
1840
1841                closeSession(session);
1842            }
1843        }
1844
1845        return count.intValue();
1846    }
1847
1848    public int countByCompanyId(long companyId) throws SystemException {
1849        Object[] finderArgs = new Object[] { new Long(companyId) };
1850
1851        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_COMPANYID,
1852                finderArgs, this);
1853
1854        if (count == null) {
1855            Session session = null;
1856
1857            try {
1858                session = openSession();
1859
1860                StringBuilder query = new StringBuilder();
1861
1862                query.append("SELECT COUNT(*) ");
1863                query.append(
1864                    "FROM com.liferay.portlet.bookmarks.model.BookmarksFolder WHERE ");
1865
1866                query.append("companyId = ?");
1867
1868                query.append(" ");
1869
1870                Query q = session.createQuery(query.toString());
1871
1872                QueryPos qPos = QueryPos.getInstance(q);
1873
1874                qPos.add(companyId);
1875
1876                count = (Long)q.uniqueResult();
1877            }
1878            catch (Exception e) {
1879                throw processException(e);
1880            }
1881            finally {
1882                if (count == null) {
1883                    count = Long.valueOf(0);
1884                }
1885
1886                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_COMPANYID,
1887                    finderArgs, count);
1888
1889                closeSession(session);
1890            }
1891        }
1892
1893        return count.intValue();
1894    }
1895
1896    public int countByG_P(long groupId, long parentFolderId)
1897        throws SystemException {
1898        Object[] finderArgs = new Object[] {
1899                new Long(groupId), new Long(parentFolderId)
1900            };
1901
1902        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_G_P,
1903                finderArgs, this);
1904
1905        if (count == null) {
1906            Session session = null;
1907
1908            try {
1909                session = openSession();
1910
1911                StringBuilder query = new StringBuilder();
1912
1913                query.append("SELECT COUNT(*) ");
1914                query.append(
1915                    "FROM com.liferay.portlet.bookmarks.model.BookmarksFolder WHERE ");
1916
1917                query.append("groupId = ?");
1918
1919                query.append(" AND ");
1920
1921                query.append("parentFolderId = ?");
1922
1923                query.append(" ");
1924
1925                Query q = session.createQuery(query.toString());
1926
1927                QueryPos qPos = QueryPos.getInstance(q);
1928
1929                qPos.add(groupId);
1930
1931                qPos.add(parentFolderId);
1932
1933                count = (Long)q.uniqueResult();
1934            }
1935            catch (Exception e) {
1936                throw processException(e);
1937            }
1938            finally {
1939                if (count == null) {
1940                    count = Long.valueOf(0);
1941                }
1942
1943                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_G_P, finderArgs,
1944                    count);
1945
1946                closeSession(session);
1947            }
1948        }
1949
1950        return count.intValue();
1951    }
1952
1953    public int countAll() throws SystemException {
1954        Object[] finderArgs = new Object[0];
1955
1956        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_ALL,
1957                finderArgs, this);
1958
1959        if (count == null) {
1960            Session session = null;
1961
1962            try {
1963                session = openSession();
1964
1965                Query q = session.createQuery(
1966                        "SELECT COUNT(*) FROM com.liferay.portlet.bookmarks.model.BookmarksFolder");
1967
1968                count = (Long)q.uniqueResult();
1969            }
1970            catch (Exception e) {
1971                throw processException(e);
1972            }
1973            finally {
1974                if (count == null) {
1975                    count = Long.valueOf(0);
1976                }
1977
1978                FinderCacheUtil.putResult(FINDER_PATH_COUNT_ALL, finderArgs,
1979                    count);
1980
1981                closeSession(session);
1982            }
1983        }
1984
1985        return count.intValue();
1986    }
1987
1988    public void afterPropertiesSet() {
1989        String[] listenerClassNames = StringUtil.split(GetterUtil.getString(
1990                    com.liferay.portal.util.PropsUtil.get(
1991                        "value.object.listener.com.liferay.portlet.bookmarks.model.BookmarksFolder")));
1992
1993        if (listenerClassNames.length > 0) {
1994            try {
1995                List<ModelListener<BookmarksFolder>> listenersList = new ArrayList<ModelListener<BookmarksFolder>>();
1996
1997                for (String listenerClassName : listenerClassNames) {
1998                    listenersList.add((ModelListener<BookmarksFolder>)Class.forName(
1999                            listenerClassName).newInstance());
2000                }
2001
2002                listeners = listenersList.toArray(new ModelListener[listenersList.size()]);
2003            }
2004            catch (Exception e) {
2005                _log.error(e);
2006            }
2007        }
2008    }
2009
2010    @BeanReference(name = "com.liferay.portlet.bookmarks.service.persistence.BookmarksEntryPersistence.impl")
2011    protected com.liferay.portlet.bookmarks.service.persistence.BookmarksEntryPersistence bookmarksEntryPersistence;
2012    @BeanReference(name = "com.liferay.portlet.bookmarks.service.persistence.BookmarksFolderPersistence.impl")
2013    protected com.liferay.portlet.bookmarks.service.persistence.BookmarksFolderPersistence bookmarksFolderPersistence;
2014    @BeanReference(name = "com.liferay.portal.service.persistence.ResourcePersistence.impl")
2015    protected com.liferay.portal.service.persistence.ResourcePersistence resourcePersistence;
2016    @BeanReference(name = "com.liferay.portal.service.persistence.UserPersistence.impl")
2017    protected com.liferay.portal.service.persistence.UserPersistence userPersistence;
2018    @BeanReference(name = "com.liferay.portlet.expando.service.persistence.ExpandoValuePersistence.impl")
2019    protected com.liferay.portlet.expando.service.persistence.ExpandoValuePersistence expandoValuePersistence;
2020    private static Log _log = LogFactoryUtil.getLog(BookmarksFolderPersistenceImpl.class);
2021}