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