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.portal.service.persistence;
24  
25  import com.liferay.portal.NoSuchLayoutException;
26  import com.liferay.portal.SystemException;
27  import com.liferay.portal.kernel.annotation.BeanReference;
28  import com.liferay.portal.kernel.cache.CacheRegistry;
29  import com.liferay.portal.kernel.dao.orm.DynamicQuery;
30  import com.liferay.portal.kernel.dao.orm.EntityCacheUtil;
31  import com.liferay.portal.kernel.dao.orm.FinderCacheUtil;
32  import com.liferay.portal.kernel.dao.orm.FinderPath;
33  import com.liferay.portal.kernel.dao.orm.Query;
34  import com.liferay.portal.kernel.dao.orm.QueryPos;
35  import com.liferay.portal.kernel.dao.orm.QueryUtil;
36  import com.liferay.portal.kernel.dao.orm.Session;
37  import com.liferay.portal.kernel.log.Log;
38  import com.liferay.portal.kernel.log.LogFactoryUtil;
39  import com.liferay.portal.kernel.util.GetterUtil;
40  import com.liferay.portal.kernel.util.OrderByComparator;
41  import com.liferay.portal.kernel.util.StringPool;
42  import com.liferay.portal.kernel.util.StringUtil;
43  import com.liferay.portal.kernel.util.Validator;
44  import com.liferay.portal.model.Layout;
45  import com.liferay.portal.model.ModelListener;
46  import com.liferay.portal.model.impl.LayoutImpl;
47  import com.liferay.portal.model.impl.LayoutModelImpl;
48  import com.liferay.portal.service.persistence.impl.BasePersistenceImpl;
49  
50  import java.util.ArrayList;
51  import java.util.Collections;
52  import java.util.List;
53  
54  /**
55   * <a href="LayoutPersistenceImpl.java.html"><b><i>View Source</i></b></a>
56   *
57   * @author Brian Wing Shun Chan
58   *
59   */
60  public class LayoutPersistenceImpl extends BasePersistenceImpl
61      implements LayoutPersistence {
62      public static final String FINDER_CLASS_NAME_ENTITY = LayoutImpl.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_GROUPID = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
66              LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
67              "findByGroupId", new String[] { Long.class.getName() });
68      public static final FinderPath FINDER_PATH_FIND_BY_OBC_GROUPID = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
69              LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
70              "findByGroupId",
71              new String[] {
72                  Long.class.getName(),
73                  
74              "java.lang.Integer", "java.lang.Integer",
75                  "com.liferay.portal.kernel.util.OrderByComparator"
76              });
77      public static final FinderPath FINDER_PATH_COUNT_BY_GROUPID = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
78              LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
79              "countByGroupId", new String[] { Long.class.getName() });
80      public static final FinderPath FINDER_PATH_FIND_BY_COMPANYID = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
81              LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
82              "findByCompanyId", new String[] { Long.class.getName() });
83      public static final FinderPath FINDER_PATH_FIND_BY_OBC_COMPANYID = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
84              LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
85              "findByCompanyId",
86              new String[] {
87                  Long.class.getName(),
88                  
89              "java.lang.Integer", "java.lang.Integer",
90                  "com.liferay.portal.kernel.util.OrderByComparator"
91              });
92      public static final FinderPath FINDER_PATH_COUNT_BY_COMPANYID = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
93              LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
94              "countByCompanyId", new String[] { Long.class.getName() });
95      public static final FinderPath FINDER_PATH_FETCH_BY_DLFOLDERID = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
96              LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_ENTITY,
97              "fetchByDLFolderId", new String[] { Long.class.getName() });
98      public static final FinderPath FINDER_PATH_COUNT_BY_DLFOLDERID = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
99              LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
100             "countByDLFolderId", new String[] { Long.class.getName() });
101     public static final FinderPath FINDER_PATH_FETCH_BY_ICONIMAGEID = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
102             LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_ENTITY,
103             "fetchByIconImageId", new String[] { Long.class.getName() });
104     public static final FinderPath FINDER_PATH_COUNT_BY_ICONIMAGEID = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
105             LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
106             "countByIconImageId", new String[] { Long.class.getName() });
107     public static final FinderPath FINDER_PATH_FIND_BY_G_P = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
108             LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
109             "findByG_P",
110             new String[] { Long.class.getName(), Boolean.class.getName() });
111     public static final FinderPath FINDER_PATH_FIND_BY_OBC_G_P = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
112             LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
113             "findByG_P",
114             new String[] {
115                 Long.class.getName(), Boolean.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_G_P = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
121             LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
122             "countByG_P",
123             new String[] { Long.class.getName(), Boolean.class.getName() });
124     public static final FinderPath FINDER_PATH_FETCH_BY_G_P_L = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
125             LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_ENTITY,
126             "fetchByG_P_L",
127             new String[] {
128                 Long.class.getName(), Boolean.class.getName(),
129                 Long.class.getName()
130             });
131     public static final FinderPath FINDER_PATH_COUNT_BY_G_P_L = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
132             LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
133             "countByG_P_L",
134             new String[] {
135                 Long.class.getName(), Boolean.class.getName(),
136                 Long.class.getName()
137             });
138     public static final FinderPath FINDER_PATH_FIND_BY_G_P_P = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
139             LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
140             "findByG_P_P",
141             new String[] {
142                 Long.class.getName(), Boolean.class.getName(),
143                 Long.class.getName()
144             });
145     public static final FinderPath FINDER_PATH_FIND_BY_OBC_G_P_P = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
146             LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
147             "findByG_P_P",
148             new String[] {
149                 Long.class.getName(), Boolean.class.getName(),
150                 Long.class.getName(),
151                 
152             "java.lang.Integer", "java.lang.Integer",
153                 "com.liferay.portal.kernel.util.OrderByComparator"
154             });
155     public static final FinderPath FINDER_PATH_COUNT_BY_G_P_P = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
156             LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
157             "countByG_P_P",
158             new String[] {
159                 Long.class.getName(), Boolean.class.getName(),
160                 Long.class.getName()
161             });
162     public static final FinderPath FINDER_PATH_FETCH_BY_G_P_F = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
163             LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_ENTITY,
164             "fetchByG_P_F",
165             new String[] {
166                 Long.class.getName(), Boolean.class.getName(),
167                 String.class.getName()
168             });
169     public static final FinderPath FINDER_PATH_COUNT_BY_G_P_F = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
170             LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
171             "countByG_P_F",
172             new String[] {
173                 Long.class.getName(), Boolean.class.getName(),
174                 String.class.getName()
175             });
176     public static final FinderPath FINDER_PATH_FIND_BY_G_P_T = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
177             LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
178             "findByG_P_T",
179             new String[] {
180                 Long.class.getName(), Boolean.class.getName(),
181                 String.class.getName()
182             });
183     public static final FinderPath FINDER_PATH_FIND_BY_OBC_G_P_T = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
184             LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
185             "findByG_P_T",
186             new String[] {
187                 Long.class.getName(), Boolean.class.getName(),
188                 String.class.getName(),
189                 
190             "java.lang.Integer", "java.lang.Integer",
191                 "com.liferay.portal.kernel.util.OrderByComparator"
192             });
193     public static final FinderPath FINDER_PATH_COUNT_BY_G_P_T = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
194             LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
195             "countByG_P_T",
196             new String[] {
197                 Long.class.getName(), Boolean.class.getName(),
198                 String.class.getName()
199             });
200     public static final FinderPath FINDER_PATH_FIND_ALL = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
201             LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
202             "findAll", new String[0]);
203     public static final FinderPath FINDER_PATH_COUNT_ALL = new FinderPath(LayoutModelImpl.ENTITY_CACHE_ENABLED,
204             LayoutModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
205             "countAll", new String[0]);
206 
207     public void cacheResult(Layout layout) {
208         EntityCacheUtil.putResult(LayoutModelImpl.ENTITY_CACHE_ENABLED,
209             LayoutImpl.class, layout.getPrimaryKey(), layout);
210 
211         FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_DLFOLDERID,
212             new Object[] { new Long(layout.getDlFolderId()) }, layout);
213 
214         FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_ICONIMAGEID,
215             new Object[] { new Long(layout.getIconImageId()) }, layout);
216 
217         FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_G_P_L,
218             new Object[] {
219                 new Long(layout.getGroupId()),
220                 Boolean.valueOf(layout.getPrivateLayout()),
221                 new Long(layout.getLayoutId())
222             }, layout);
223 
224         FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_G_P_F,
225             new Object[] {
226                 new Long(layout.getGroupId()),
227                 Boolean.valueOf(layout.getPrivateLayout()),
228                 
229             layout.getFriendlyURL()
230             }, layout);
231     }
232 
233     public void cacheResult(List<Layout> layouts) {
234         for (Layout layout : layouts) {
235             if (EntityCacheUtil.getResult(
236                         LayoutModelImpl.ENTITY_CACHE_ENABLED, LayoutImpl.class,
237                         layout.getPrimaryKey(), this) == null) {
238                 cacheResult(layout);
239             }
240         }
241     }
242 
243     public void clearCache() {
244         CacheRegistry.clear(LayoutImpl.class.getName());
245         EntityCacheUtil.clearCache(LayoutImpl.class.getName());
246         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_ENTITY);
247         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
248     }
249 
250     public Layout create(long plid) {
251         Layout layout = new LayoutImpl();
252 
253         layout.setNew(true);
254         layout.setPrimaryKey(plid);
255 
256         return layout;
257     }
258 
259     public Layout remove(long plid)
260         throws NoSuchLayoutException, SystemException {
261         Session session = null;
262 
263         try {
264             session = openSession();
265 
266             Layout layout = (Layout)session.get(LayoutImpl.class, new Long(plid));
267 
268             if (layout == null) {
269                 if (_log.isWarnEnabled()) {
270                     _log.warn("No Layout exists with the primary key " + plid);
271                 }
272 
273                 throw new NoSuchLayoutException(
274                     "No Layout exists with the primary key " + plid);
275             }
276 
277             return remove(layout);
278         }
279         catch (NoSuchLayoutException nsee) {
280             throw nsee;
281         }
282         catch (Exception e) {
283             throw processException(e);
284         }
285         finally {
286             closeSession(session);
287         }
288     }
289 
290     public Layout remove(Layout layout) throws SystemException {
291         for (ModelListener<Layout> listener : listeners) {
292             listener.onBeforeRemove(layout);
293         }
294 
295         layout = removeImpl(layout);
296 
297         for (ModelListener<Layout> listener : listeners) {
298             listener.onAfterRemove(layout);
299         }
300 
301         return layout;
302     }
303 
304     protected Layout removeImpl(Layout layout) throws SystemException {
305         Session session = null;
306 
307         try {
308             session = openSession();
309 
310             if (layout.isCachedModel() || BatchSessionUtil.isEnabled()) {
311                 Object staleObject = session.get(LayoutImpl.class,
312                         layout.getPrimaryKeyObj());
313 
314                 if (staleObject != null) {
315                     session.evict(staleObject);
316                 }
317             }
318 
319             session.delete(layout);
320 
321             session.flush();
322         }
323         catch (Exception e) {
324             throw processException(e);
325         }
326         finally {
327             closeSession(session);
328         }
329 
330         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
331 
332         LayoutModelImpl layoutModelImpl = (LayoutModelImpl)layout;
333 
334         FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_DLFOLDERID,
335             new Object[] { new Long(layoutModelImpl.getOriginalDlFolderId()) });
336 
337         FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_ICONIMAGEID,
338             new Object[] { new Long(layoutModelImpl.getOriginalIconImageId()) });
339 
340         FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_G_P_L,
341             new Object[] {
342                 new Long(layoutModelImpl.getOriginalGroupId()),
343                 Boolean.valueOf(layoutModelImpl.getOriginalPrivateLayout()),
344                 new Long(layoutModelImpl.getOriginalLayoutId())
345             });
346 
347         FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_G_P_F,
348             new Object[] {
349                 new Long(layoutModelImpl.getOriginalGroupId()),
350                 Boolean.valueOf(layoutModelImpl.getOriginalPrivateLayout()),
351                 
352             layoutModelImpl.getOriginalFriendlyURL()
353             });
354 
355         EntityCacheUtil.removeResult(LayoutModelImpl.ENTITY_CACHE_ENABLED,
356             LayoutImpl.class, layout.getPrimaryKey());
357 
358         return layout;
359     }
360 
361     /**
362      * @deprecated Use <code>update(Layout layout, boolean merge)</code>.
363      */
364     public Layout update(Layout layout) throws SystemException {
365         if (_log.isWarnEnabled()) {
366             _log.warn(
367                 "Using the deprecated update(Layout layout) method. Use update(Layout layout, boolean merge) instead.");
368         }
369 
370         return update(layout, false);
371     }
372 
373     /**
374      * Add, update, or merge, the entity. This method also calls the model
375      * listeners to trigger the proper events associated with adding, deleting,
376      * or updating an entity.
377      *
378      * @param        layout the entity to add, update, or merge
379      * @param        merge boolean value for whether to merge the entity. The
380      *                default value is false. Setting merge to true is more
381      *                expensive and should only be true when layout is
382      *                transient. See LEP-5473 for a detailed discussion of this
383      *                method.
384      * @return        true if the portlet can be displayed via Ajax
385      */
386     public Layout update(Layout layout, boolean merge)
387         throws SystemException {
388         boolean isNew = layout.isNew();
389 
390         for (ModelListener<Layout> listener : listeners) {
391             if (isNew) {
392                 listener.onBeforeCreate(layout);
393             }
394             else {
395                 listener.onBeforeUpdate(layout);
396             }
397         }
398 
399         layout = updateImpl(layout, merge);
400 
401         for (ModelListener<Layout> listener : listeners) {
402             if (isNew) {
403                 listener.onAfterCreate(layout);
404             }
405             else {
406                 listener.onAfterUpdate(layout);
407             }
408         }
409 
410         return layout;
411     }
412 
413     public Layout updateImpl(com.liferay.portal.model.Layout layout,
414         boolean merge) throws SystemException {
415         boolean isNew = layout.isNew();
416 
417         LayoutModelImpl layoutModelImpl = (LayoutModelImpl)layout;
418 
419         Session session = null;
420 
421         try {
422             session = openSession();
423 
424             BatchSessionUtil.update(session, layout, merge);
425 
426             layout.setNew(false);
427         }
428         catch (Exception e) {
429             throw processException(e);
430         }
431         finally {
432             closeSession(session);
433         }
434 
435         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
436 
437         EntityCacheUtil.putResult(LayoutModelImpl.ENTITY_CACHE_ENABLED,
438             LayoutImpl.class, layout.getPrimaryKey(), layout);
439 
440         if (!isNew &&
441                 (layout.getDlFolderId() != layoutModelImpl.getOriginalDlFolderId())) {
442             FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_DLFOLDERID,
443                 new Object[] { new Long(layoutModelImpl.getOriginalDlFolderId()) });
444         }
445 
446         if (isNew ||
447                 (layout.getDlFolderId() != layoutModelImpl.getOriginalDlFolderId())) {
448             FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_DLFOLDERID,
449                 new Object[] { new Long(layout.getDlFolderId()) }, layout);
450         }
451 
452         if (!isNew &&
453                 (layout.getIconImageId() != layoutModelImpl.getOriginalIconImageId())) {
454             FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_ICONIMAGEID,
455                 new Object[] { new Long(layoutModelImpl.getOriginalIconImageId()) });
456         }
457 
458         if (isNew ||
459                 (layout.getIconImageId() != layoutModelImpl.getOriginalIconImageId())) {
460             FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_ICONIMAGEID,
461                 new Object[] { new Long(layout.getIconImageId()) }, layout);
462         }
463 
464         if (!isNew &&
465                 ((layout.getGroupId() != layoutModelImpl.getOriginalGroupId()) ||
466                 (layout.getPrivateLayout() != layoutModelImpl.getOriginalPrivateLayout()) ||
467                 (layout.getLayoutId() != layoutModelImpl.getOriginalLayoutId()))) {
468             FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_G_P_L,
469                 new Object[] {
470                     new Long(layoutModelImpl.getOriginalGroupId()),
471                     Boolean.valueOf(layoutModelImpl.getOriginalPrivateLayout()),
472                     new Long(layoutModelImpl.getOriginalLayoutId())
473                 });
474         }
475 
476         if (isNew ||
477                 ((layout.getGroupId() != layoutModelImpl.getOriginalGroupId()) ||
478                 (layout.getPrivateLayout() != layoutModelImpl.getOriginalPrivateLayout()) ||
479                 (layout.getLayoutId() != layoutModelImpl.getOriginalLayoutId()))) {
480             FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_G_P_L,
481                 new Object[] {
482                     new Long(layout.getGroupId()),
483                     Boolean.valueOf(layout.getPrivateLayout()),
484                     new Long(layout.getLayoutId())
485                 }, layout);
486         }
487 
488         if (!isNew &&
489                 ((layout.getGroupId() != layoutModelImpl.getOriginalGroupId()) ||
490                 (layout.getPrivateLayout() != layoutModelImpl.getOriginalPrivateLayout()) ||
491                 !Validator.equals(layout.getFriendlyURL(),
492                     layoutModelImpl.getOriginalFriendlyURL()))) {
493             FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_G_P_F,
494                 new Object[] {
495                     new Long(layoutModelImpl.getOriginalGroupId()),
496                     Boolean.valueOf(layoutModelImpl.getOriginalPrivateLayout()),
497                     
498                 layoutModelImpl.getOriginalFriendlyURL()
499                 });
500         }
501 
502         if (isNew ||
503                 ((layout.getGroupId() != layoutModelImpl.getOriginalGroupId()) ||
504                 (layout.getPrivateLayout() != layoutModelImpl.getOriginalPrivateLayout()) ||
505                 !Validator.equals(layout.getFriendlyURL(),
506                     layoutModelImpl.getOriginalFriendlyURL()))) {
507             FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_G_P_F,
508                 new Object[] {
509                     new Long(layout.getGroupId()),
510                     Boolean.valueOf(layout.getPrivateLayout()),
511                     
512                 layout.getFriendlyURL()
513                 }, layout);
514         }
515 
516         return layout;
517     }
518 
519     public Layout findByPrimaryKey(long plid)
520         throws NoSuchLayoutException, SystemException {
521         Layout layout = fetchByPrimaryKey(plid);
522 
523         if (layout == null) {
524             if (_log.isWarnEnabled()) {
525                 _log.warn("No Layout exists with the primary key " + plid);
526             }
527 
528             throw new NoSuchLayoutException(
529                 "No Layout exists with the primary key " + plid);
530         }
531 
532         return layout;
533     }
534 
535     public Layout fetchByPrimaryKey(long plid) throws SystemException {
536         Layout layout = (Layout)EntityCacheUtil.getResult(LayoutModelImpl.ENTITY_CACHE_ENABLED,
537                 LayoutImpl.class, plid, this);
538 
539         if (layout == null) {
540             Session session = null;
541 
542             try {
543                 session = openSession();
544 
545                 layout = (Layout)session.get(LayoutImpl.class, new Long(plid));
546             }
547             catch (Exception e) {
548                 throw processException(e);
549             }
550             finally {
551                 if (layout != null) {
552                     cacheResult(layout);
553                 }
554 
555                 closeSession(session);
556             }
557         }
558 
559         return layout;
560     }
561 
562     public List<Layout> findByGroupId(long groupId) throws SystemException {
563         Object[] finderArgs = new Object[] { new Long(groupId) };
564 
565         List<Layout> list = (List<Layout>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_GROUPID,
566                 finderArgs, this);
567 
568         if (list == null) {
569             Session session = null;
570 
571             try {
572                 session = openSession();
573 
574                 StringBuilder query = new StringBuilder();
575 
576                 query.append("SELECT layout FROM Layout layout WHERE ");
577 
578                 query.append("layout.groupId = ?");
579 
580                 query.append(" ");
581 
582                 query.append("ORDER BY ");
583 
584                 query.append("layout.parentLayoutId ASC, ");
585                 query.append("layout.priority ASC");
586 
587                 Query q = session.createQuery(query.toString());
588 
589                 QueryPos qPos = QueryPos.getInstance(q);
590 
591                 qPos.add(groupId);
592 
593                 list = q.list();
594             }
595             catch (Exception e) {
596                 throw processException(e);
597             }
598             finally {
599                 if (list == null) {
600                     list = new ArrayList<Layout>();
601                 }
602 
603                 cacheResult(list);
604 
605                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_GROUPID,
606                     finderArgs, list);
607 
608                 closeSession(session);
609             }
610         }
611 
612         return list;
613     }
614 
615     public List<Layout> findByGroupId(long groupId, int start, int end)
616         throws SystemException {
617         return findByGroupId(groupId, start, end, null);
618     }
619 
620     public List<Layout> findByGroupId(long groupId, int start, int end,
621         OrderByComparator obc) throws SystemException {
622         Object[] finderArgs = new Object[] {
623                 new Long(groupId),
624                 
625                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
626             };
627 
628         List<Layout> list = (List<Layout>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_GROUPID,
629                 finderArgs, this);
630 
631         if (list == null) {
632             Session session = null;
633 
634             try {
635                 session = openSession();
636 
637                 StringBuilder query = new StringBuilder();
638 
639                 query.append("SELECT layout FROM Layout layout WHERE ");
640 
641                 query.append("layout.groupId = ?");
642 
643                 query.append(" ");
644 
645                 if (obc != null) {
646                     query.append("ORDER BY ");
647 
648                     String[] orderByFields = obc.getOrderByFields();
649 
650                     for (int i = 0; i < orderByFields.length; i++) {
651                         query.append("layout.");
652                         query.append(orderByFields[i]);
653 
654                         if (obc.isAscending()) {
655                             query.append(" ASC");
656                         }
657                         else {
658                             query.append(" DESC");
659                         }
660 
661                         if ((i + 1) < orderByFields.length) {
662                             query.append(", ");
663                         }
664                     }
665                 }
666 
667                 else {
668                     query.append("ORDER BY ");
669 
670                     query.append("layout.parentLayoutId ASC, ");
671                     query.append("layout.priority ASC");
672                 }
673 
674                 Query q = session.createQuery(query.toString());
675 
676                 QueryPos qPos = QueryPos.getInstance(q);
677 
678                 qPos.add(groupId);
679 
680                 list = (List<Layout>)QueryUtil.list(q, getDialect(), start, end);
681             }
682             catch (Exception e) {
683                 throw processException(e);
684             }
685             finally {
686                 if (list == null) {
687                     list = new ArrayList<Layout>();
688                 }
689 
690                 cacheResult(list);
691 
692                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_GROUPID,
693                     finderArgs, list);
694 
695                 closeSession(session);
696             }
697         }
698 
699         return list;
700     }
701 
702     public Layout findByGroupId_First(long groupId, OrderByComparator obc)
703         throws NoSuchLayoutException, SystemException {
704         List<Layout> list = findByGroupId(groupId, 0, 1, obc);
705 
706         if (list.isEmpty()) {
707             StringBuilder msg = new StringBuilder();
708 
709             msg.append("No Layout exists with the key {");
710 
711             msg.append("groupId=" + groupId);
712 
713             msg.append(StringPool.CLOSE_CURLY_BRACE);
714 
715             throw new NoSuchLayoutException(msg.toString());
716         }
717         else {
718             return list.get(0);
719         }
720     }
721 
722     public Layout findByGroupId_Last(long groupId, OrderByComparator obc)
723         throws NoSuchLayoutException, SystemException {
724         int count = countByGroupId(groupId);
725 
726         List<Layout> list = findByGroupId(groupId, count - 1, count, obc);
727 
728         if (list.isEmpty()) {
729             StringBuilder msg = new StringBuilder();
730 
731             msg.append("No Layout exists with the key {");
732 
733             msg.append("groupId=" + groupId);
734 
735             msg.append(StringPool.CLOSE_CURLY_BRACE);
736 
737             throw new NoSuchLayoutException(msg.toString());
738         }
739         else {
740             return list.get(0);
741         }
742     }
743 
744     public Layout[] findByGroupId_PrevAndNext(long plid, long groupId,
745         OrderByComparator obc) throws NoSuchLayoutException, SystemException {
746         Layout layout = findByPrimaryKey(plid);
747 
748         int count = countByGroupId(groupId);
749 
750         Session session = null;
751 
752         try {
753             session = openSession();
754 
755             StringBuilder query = new StringBuilder();
756 
757             query.append("SELECT layout FROM Layout layout WHERE ");
758 
759             query.append("layout.groupId = ?");
760 
761             query.append(" ");
762 
763             if (obc != null) {
764                 query.append("ORDER BY ");
765 
766                 String[] orderByFields = obc.getOrderByFields();
767 
768                 for (int i = 0; i < orderByFields.length; i++) {
769                     query.append("layout.");
770                     query.append(orderByFields[i]);
771 
772                     if (obc.isAscending()) {
773                         query.append(" ASC");
774                     }
775                     else {
776                         query.append(" DESC");
777                     }
778 
779                     if ((i + 1) < orderByFields.length) {
780                         query.append(", ");
781                     }
782                 }
783             }
784 
785             else {
786                 query.append("ORDER BY ");
787 
788                 query.append("layout.parentLayoutId ASC, ");
789                 query.append("layout.priority ASC");
790             }
791 
792             Query q = session.createQuery(query.toString());
793 
794             QueryPos qPos = QueryPos.getInstance(q);
795 
796             qPos.add(groupId);
797 
798             Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc, layout);
799 
800             Layout[] array = new LayoutImpl[3];
801 
802             array[0] = (Layout)objArray[0];
803             array[1] = (Layout)objArray[1];
804             array[2] = (Layout)objArray[2];
805 
806             return array;
807         }
808         catch (Exception e) {
809             throw processException(e);
810         }
811         finally {
812             closeSession(session);
813         }
814     }
815 
816     public List<Layout> findByCompanyId(long companyId)
817         throws SystemException {
818         Object[] finderArgs = new Object[] { new Long(companyId) };
819 
820         List<Layout> list = (List<Layout>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_COMPANYID,
821                 finderArgs, this);
822 
823         if (list == null) {
824             Session session = null;
825 
826             try {
827                 session = openSession();
828 
829                 StringBuilder query = new StringBuilder();
830 
831                 query.append("SELECT layout FROM Layout layout WHERE ");
832 
833                 query.append("layout.companyId = ?");
834 
835                 query.append(" ");
836 
837                 query.append("ORDER BY ");
838 
839                 query.append("layout.parentLayoutId ASC, ");
840                 query.append("layout.priority ASC");
841 
842                 Query q = session.createQuery(query.toString());
843 
844                 QueryPos qPos = QueryPos.getInstance(q);
845 
846                 qPos.add(companyId);
847 
848                 list = q.list();
849             }
850             catch (Exception e) {
851                 throw processException(e);
852             }
853             finally {
854                 if (list == null) {
855                     list = new ArrayList<Layout>();
856                 }
857 
858                 cacheResult(list);
859 
860                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_COMPANYID,
861                     finderArgs, list);
862 
863                 closeSession(session);
864             }
865         }
866 
867         return list;
868     }
869 
870     public List<Layout> findByCompanyId(long companyId, int start, int end)
871         throws SystemException {
872         return findByCompanyId(companyId, start, end, null);
873     }
874 
875     public List<Layout> findByCompanyId(long companyId, int start, int end,
876         OrderByComparator obc) throws SystemException {
877         Object[] finderArgs = new Object[] {
878                 new Long(companyId),
879                 
880                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
881             };
882 
883         List<Layout> list = (List<Layout>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_COMPANYID,
884                 finderArgs, this);
885 
886         if (list == null) {
887             Session session = null;
888 
889             try {
890                 session = openSession();
891 
892                 StringBuilder query = new StringBuilder();
893 
894                 query.append("SELECT layout FROM Layout layout WHERE ");
895 
896                 query.append("layout.companyId = ?");
897 
898                 query.append(" ");
899 
900                 if (obc != null) {
901                     query.append("ORDER BY ");
902 
903                     String[] orderByFields = obc.getOrderByFields();
904 
905                     for (int i = 0; i < orderByFields.length; i++) {
906                         query.append("layout.");
907                         query.append(orderByFields[i]);
908 
909                         if (obc.isAscending()) {
910                             query.append(" ASC");
911                         }
912                         else {
913                             query.append(" DESC");
914                         }
915 
916                         if ((i + 1) < orderByFields.length) {
917                             query.append(", ");
918                         }
919                     }
920                 }
921 
922                 else {
923                     query.append("ORDER BY ");
924 
925                     query.append("layout.parentLayoutId ASC, ");
926                     query.append("layout.priority ASC");
927                 }
928 
929                 Query q = session.createQuery(query.toString());
930 
931                 QueryPos qPos = QueryPos.getInstance(q);
932 
933                 qPos.add(companyId);
934 
935                 list = (List<Layout>)QueryUtil.list(q, getDialect(), start, end);
936             }
937             catch (Exception e) {
938                 throw processException(e);
939             }
940             finally {
941                 if (list == null) {
942                     list = new ArrayList<Layout>();
943                 }
944 
945                 cacheResult(list);
946 
947                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_COMPANYID,
948                     finderArgs, list);
949 
950                 closeSession(session);
951             }
952         }
953 
954         return list;
955     }
956 
957     public Layout findByCompanyId_First(long companyId, OrderByComparator obc)
958         throws NoSuchLayoutException, SystemException {
959         List<Layout> list = findByCompanyId(companyId, 0, 1, obc);
960 
961         if (list.isEmpty()) {
962             StringBuilder msg = new StringBuilder();
963 
964             msg.append("No Layout exists with the key {");
965 
966             msg.append("companyId=" + companyId);
967 
968             msg.append(StringPool.CLOSE_CURLY_BRACE);
969 
970             throw new NoSuchLayoutException(msg.toString());
971         }
972         else {
973             return list.get(0);
974         }
975     }
976 
977     public Layout findByCompanyId_Last(long companyId, OrderByComparator obc)
978         throws NoSuchLayoutException, SystemException {
979         int count = countByCompanyId(companyId);
980 
981         List<Layout> list = findByCompanyId(companyId, count - 1, count, obc);
982 
983         if (list.isEmpty()) {
984             StringBuilder msg = new StringBuilder();
985 
986             msg.append("No Layout exists with the key {");
987 
988             msg.append("companyId=" + companyId);
989 
990             msg.append(StringPool.CLOSE_CURLY_BRACE);
991 
992             throw new NoSuchLayoutException(msg.toString());
993         }
994         else {
995             return list.get(0);
996         }
997     }
998 
999     public Layout[] findByCompanyId_PrevAndNext(long plid, long companyId,
1000        OrderByComparator obc) throws NoSuchLayoutException, SystemException {
1001        Layout layout = findByPrimaryKey(plid);
1002
1003        int count = countByCompanyId(companyId);
1004
1005        Session session = null;
1006
1007        try {
1008            session = openSession();
1009
1010            StringBuilder query = new StringBuilder();
1011
1012            query.append("SELECT layout FROM Layout layout WHERE ");
1013
1014            query.append("layout.companyId = ?");
1015
1016            query.append(" ");
1017
1018            if (obc != null) {
1019                query.append("ORDER BY ");
1020
1021                String[] orderByFields = obc.getOrderByFields();
1022
1023                for (int i = 0; i < orderByFields.length; i++) {
1024                    query.append("layout.");
1025                    query.append(orderByFields[i]);
1026
1027                    if (obc.isAscending()) {
1028                        query.append(" ASC");
1029                    }
1030                    else {
1031                        query.append(" DESC");
1032                    }
1033
1034                    if ((i + 1) < orderByFields.length) {
1035                        query.append(", ");
1036                    }
1037                }
1038            }
1039
1040            else {
1041                query.append("ORDER BY ");
1042
1043                query.append("layout.parentLayoutId ASC, ");
1044                query.append("layout.priority ASC");
1045            }
1046
1047            Query q = session.createQuery(query.toString());
1048
1049            QueryPos qPos = QueryPos.getInstance(q);
1050
1051            qPos.add(companyId);
1052
1053            Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc, layout);
1054
1055            Layout[] array = new LayoutImpl[3];
1056
1057            array[0] = (Layout)objArray[0];
1058            array[1] = (Layout)objArray[1];
1059            array[2] = (Layout)objArray[2];
1060
1061            return array;
1062        }
1063        catch (Exception e) {
1064            throw processException(e);
1065        }
1066        finally {
1067            closeSession(session);
1068        }
1069    }
1070
1071    public Layout findByDLFolderId(long dlFolderId)
1072        throws NoSuchLayoutException, SystemException {
1073        Layout layout = fetchByDLFolderId(dlFolderId);
1074
1075        if (layout == null) {
1076            StringBuilder msg = new StringBuilder();
1077
1078            msg.append("No Layout exists with the key {");
1079
1080            msg.append("dlFolderId=" + dlFolderId);
1081
1082            msg.append(StringPool.CLOSE_CURLY_BRACE);
1083
1084            if (_log.isWarnEnabled()) {
1085                _log.warn(msg.toString());
1086            }
1087
1088            throw new NoSuchLayoutException(msg.toString());
1089        }
1090
1091        return layout;
1092    }
1093
1094    public Layout fetchByDLFolderId(long dlFolderId) throws SystemException {
1095        return fetchByDLFolderId(dlFolderId, true);
1096    }
1097
1098    public Layout fetchByDLFolderId(long dlFolderId, boolean retrieveFromCache)
1099        throws SystemException {
1100        Object[] finderArgs = new Object[] { new Long(dlFolderId) };
1101
1102        Object result = null;
1103
1104        if (retrieveFromCache) {
1105            result = FinderCacheUtil.getResult(FINDER_PATH_FETCH_BY_DLFOLDERID,
1106                    finderArgs, this);
1107        }
1108
1109        if (result == null) {
1110            Session session = null;
1111
1112            try {
1113                session = openSession();
1114
1115                StringBuilder query = new StringBuilder();
1116
1117                query.append("SELECT layout FROM Layout layout WHERE ");
1118
1119                query.append("layout.dlFolderId = ?");
1120
1121                query.append(" ");
1122
1123                query.append("ORDER BY ");
1124
1125                query.append("layout.parentLayoutId ASC, ");
1126                query.append("layout.priority ASC");
1127
1128                Query q = session.createQuery(query.toString());
1129
1130                QueryPos qPos = QueryPos.getInstance(q);
1131
1132                qPos.add(dlFolderId);
1133
1134                List<Layout> list = q.list();
1135
1136                result = list;
1137
1138                Layout layout = null;
1139
1140                if (list.isEmpty()) {
1141                    FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_DLFOLDERID,
1142                        finderArgs, list);
1143                }
1144                else {
1145                    layout = list.get(0);
1146
1147                    cacheResult(layout);
1148
1149                    if ((layout.getDlFolderId() != dlFolderId)) {
1150                        FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_DLFOLDERID,
1151                            finderArgs, layout);
1152                    }
1153                }
1154
1155                return layout;
1156            }
1157            catch (Exception e) {
1158                throw processException(e);
1159            }
1160            finally {
1161                if (result == null) {
1162                    FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_DLFOLDERID,
1163                        finderArgs, new ArrayList<Layout>());
1164                }
1165
1166                closeSession(session);
1167            }
1168        }
1169        else {
1170            if (result instanceof List) {
1171                return null;
1172            }
1173            else {
1174                return (Layout)result;
1175            }
1176        }
1177    }
1178
1179    public Layout findByIconImageId(long iconImageId)
1180        throws NoSuchLayoutException, SystemException {
1181        Layout layout = fetchByIconImageId(iconImageId);
1182
1183        if (layout == null) {
1184            StringBuilder msg = new StringBuilder();
1185
1186            msg.append("No Layout exists with the key {");
1187
1188            msg.append("iconImageId=" + iconImageId);
1189
1190            msg.append(StringPool.CLOSE_CURLY_BRACE);
1191
1192            if (_log.isWarnEnabled()) {
1193                _log.warn(msg.toString());
1194            }
1195
1196            throw new NoSuchLayoutException(msg.toString());
1197        }
1198
1199        return layout;
1200    }
1201
1202    public Layout fetchByIconImageId(long iconImageId)
1203        throws SystemException {
1204        return fetchByIconImageId(iconImageId, true);
1205    }
1206
1207    public Layout fetchByIconImageId(long iconImageId, boolean retrieveFromCache)
1208        throws SystemException {
1209        Object[] finderArgs = new Object[] { new Long(iconImageId) };
1210
1211        Object result = null;
1212
1213        if (retrieveFromCache) {
1214            result = FinderCacheUtil.getResult(FINDER_PATH_FETCH_BY_ICONIMAGEID,
1215                    finderArgs, this);
1216        }
1217
1218        if (result == null) {
1219            Session session = null;
1220
1221            try {
1222                session = openSession();
1223
1224                StringBuilder query = new StringBuilder();
1225
1226                query.append("SELECT layout FROM Layout layout WHERE ");
1227
1228                query.append("layout.iconImageId = ?");
1229
1230                query.append(" ");
1231
1232                query.append("ORDER BY ");
1233
1234                query.append("layout.parentLayoutId ASC, ");
1235                query.append("layout.priority ASC");
1236
1237                Query q = session.createQuery(query.toString());
1238
1239                QueryPos qPos = QueryPos.getInstance(q);
1240
1241                qPos.add(iconImageId);
1242
1243                List<Layout> list = q.list();
1244
1245                result = list;
1246
1247                Layout layout = null;
1248
1249                if (list.isEmpty()) {
1250                    FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_ICONIMAGEID,
1251                        finderArgs, list);
1252                }
1253                else {
1254                    layout = list.get(0);
1255
1256                    cacheResult(layout);
1257
1258                    if ((layout.getIconImageId() != iconImageId)) {
1259                        FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_ICONIMAGEID,
1260                            finderArgs, layout);
1261                    }
1262                }
1263
1264                return layout;
1265            }
1266            catch (Exception e) {
1267                throw processException(e);
1268            }
1269            finally {
1270                if (result == null) {
1271                    FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_ICONIMAGEID,
1272                        finderArgs, new ArrayList<Layout>());
1273                }
1274
1275                closeSession(session);
1276            }
1277        }
1278        else {
1279            if (result instanceof List) {
1280                return null;
1281            }
1282            else {
1283                return (Layout)result;
1284            }
1285        }
1286    }
1287
1288    public List<Layout> findByG_P(long groupId, boolean privateLayout)
1289        throws SystemException {
1290        Object[] finderArgs = new Object[] {
1291                new Long(groupId), Boolean.valueOf(privateLayout)
1292            };
1293
1294        List<Layout> list = (List<Layout>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_G_P,
1295                finderArgs, this);
1296
1297        if (list == null) {
1298            Session session = null;
1299
1300            try {
1301                session = openSession();
1302
1303                StringBuilder query = new StringBuilder();
1304
1305                query.append("SELECT layout FROM Layout layout WHERE ");
1306
1307                query.append("layout.groupId = ?");
1308
1309                query.append(" AND ");
1310
1311                query.append("layout.privateLayout = ?");
1312
1313                query.append(" ");
1314
1315                query.append("ORDER BY ");
1316
1317                query.append("layout.parentLayoutId ASC, ");
1318                query.append("layout.priority ASC");
1319
1320                Query q = session.createQuery(query.toString());
1321
1322                QueryPos qPos = QueryPos.getInstance(q);
1323
1324                qPos.add(groupId);
1325
1326                qPos.add(privateLayout);
1327
1328                list = q.list();
1329            }
1330            catch (Exception e) {
1331                throw processException(e);
1332            }
1333            finally {
1334                if (list == null) {
1335                    list = new ArrayList<Layout>();
1336                }
1337
1338                cacheResult(list);
1339
1340                FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_G_P, finderArgs,
1341                    list);
1342
1343                closeSession(session);
1344            }
1345        }
1346
1347        return list;
1348    }
1349
1350    public List<Layout> findByG_P(long groupId, boolean privateLayout,
1351        int start, int end) throws SystemException {
1352        return findByG_P(groupId, privateLayout, start, end, null);
1353    }
1354
1355    public List<Layout> findByG_P(long groupId, boolean privateLayout,
1356        int start, int end, OrderByComparator obc) throws SystemException {
1357        Object[] finderArgs = new Object[] {
1358                new Long(groupId), Boolean.valueOf(privateLayout),
1359                
1360                String.valueOf(start), String.valueOf(end), String.valueOf(obc)
1361            };
1362
1363        List<Layout> list = (List<Layout>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_G_P,
1364                finderArgs, this);
1365
1366        if (list == null) {
1367            Session session = null;
1368
1369            try {
1370                session = openSession();
1371
1372                StringBuilder query = new StringBuilder();
1373
1374                query.append("SELECT layout FROM Layout layout WHERE ");
1375
1376                query.append("layout.groupId = ?");
1377
1378                query.append(" AND ");
1379
1380                query.append("layout.privateLayout = ?");
1381
1382                query.append(" ");
1383
1384                if (obc != null) {
1385                    query.append("ORDER BY ");
1386
1387                    String[] orderByFields = obc.getOrderByFields();
1388
1389                    for (int i = 0; i < orderByFields.length; i++) {
1390                        query.append("layout.");
1391                        query.append(orderByFields[i]);
1392
1393                        if (obc.isAscending()) {
1394                            query.append(" ASC");
1395                        }
1396                        else {
1397                            query.append(" DESC");
1398                        }
1399
1400                        if ((i + 1) < orderByFields.length) {
1401                            query.append(", ");
1402                        }
1403                    }
1404                }
1405
1406                else {
1407                    query.append("ORDER BY ");
1408
1409                    query.append("layout.parentLayoutId ASC, ");
1410                    query.append("layout.priority ASC");
1411                }
1412
1413                Query q = session.createQuery(query.toString());
1414
1415                QueryPos qPos = QueryPos.getInstance(q);
1416
1417                qPos.add(groupId);
1418
1419                qPos.add(privateLayout);
1420
1421                list = (List<Layout>)QueryUtil.list(q, getDialect(), start, end);
1422            }
1423            catch (Exception e) {
1424                throw processException(e);
1425            }
1426            finally {
1427                if (list == null) {
1428                    list = new ArrayList<Layout>();
1429                }
1430
1431                cacheResult(list);
1432
1433                FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_G_P,
1434                    finderArgs, list);
1435
1436                closeSession(session);
1437            }
1438        }
1439
1440        return list;
1441    }
1442
1443    public Layout findByG_P_First(long groupId, boolean privateLayout,
1444        OrderByComparator obc) throws NoSuchLayoutException, SystemException {
1445        List<Layout> list = findByG_P(groupId, privateLayout, 0, 1, obc);
1446
1447        if (list.isEmpty()) {
1448            StringBuilder msg = new StringBuilder();
1449
1450            msg.append("No Layout exists with the key {");
1451
1452            msg.append("groupId=" + groupId);
1453
1454            msg.append(", ");
1455            msg.append("privateLayout=" + privateLayout);
1456
1457            msg.append(StringPool.CLOSE_CURLY_BRACE);
1458
1459            throw new NoSuchLayoutException(msg.toString());
1460        }
1461        else {
1462            return list.get(0);
1463        }
1464    }
1465
1466    public Layout findByG_P_Last(long groupId, boolean privateLayout,
1467        OrderByComparator obc) throws NoSuchLayoutException, SystemException {
1468        int count = countByG_P(groupId, privateLayout);
1469
1470        List<Layout> list = findByG_P(groupId, privateLayout, count - 1, count,
1471                obc);
1472
1473        if (list.isEmpty()) {
1474            StringBuilder msg = new StringBuilder();
1475
1476            msg.append("No Layout exists with the key {");
1477
1478            msg.append("groupId=" + groupId);
1479
1480            msg.append(", ");
1481            msg.append("privateLayout=" + privateLayout);
1482
1483            msg.append(StringPool.CLOSE_CURLY_BRACE);
1484
1485            throw new NoSuchLayoutException(msg.toString());
1486        }
1487        else {
1488            return list.get(0);
1489        }
1490    }
1491
1492    public Layout[] findByG_P_PrevAndNext(long plid, long groupId,
1493        boolean privateLayout, OrderByComparator obc)
1494        throws NoSuchLayoutException, SystemException {
1495        Layout layout = findByPrimaryKey(plid);
1496
1497        int count = countByG_P(groupId, privateLayout);
1498
1499        Session session = null;
1500
1501        try {
1502            session = openSession();
1503
1504            StringBuilder query = new StringBuilder();
1505
1506            query.append("SELECT layout FROM Layout layout WHERE ");
1507
1508            query.append("layout.groupId = ?");
1509
1510            query.append(" AND ");
1511
1512            query.append("layout.privateLayout = ?");
1513
1514            query.append(" ");
1515
1516            if (obc != null) {
1517                query.append("ORDER BY ");
1518
1519                String[] orderByFields = obc.getOrderByFields();
1520
1521                for (int i = 0; i < orderByFields.length; i++) {
1522                    query.append("layout.");
1523                    query.append(orderByFields[i]);
1524
1525                    if (obc.isAscending()) {
1526                        query.append(" ASC");
1527                    }
1528                    else {
1529                        query.append(" DESC");
1530                    }
1531
1532                    if ((i + 1) < orderByFields.length) {
1533                        query.append(", ");
1534                    }
1535                }
1536            }
1537
1538            else {
1539                query.append("ORDER BY ");
1540
1541                query.append("layout.parentLayoutId ASC, ");
1542                query.append("layout.priority ASC");
1543            }
1544
1545            Query q = session.createQuery(query.toString());
1546
1547            QueryPos qPos = QueryPos.getInstance(q);
1548
1549            qPos.add(groupId);
1550
1551            qPos.add(privateLayout);
1552
1553            Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc, layout);
1554
1555            Layout[] array = new LayoutImpl[3];
1556
1557            array[0] = (Layout)objArray[0];
1558            array[1] = (Layout)objArray[1];
1559            array[2] = (Layout)objArray[2];
1560
1561            return array;
1562        }
1563        catch (Exception e) {
1564            throw processException(e);
1565        }
1566        finally {
1567            closeSession(session);
1568        }
1569    }
1570
1571    public Layout findByG_P_L(long groupId, boolean privateLayout, long layoutId)
1572        throws NoSuchLayoutException, SystemException {
1573        Layout layout = fetchByG_P_L(groupId, privateLayout, layoutId);
1574
1575        if (layout == null) {
1576            StringBuilder msg = new StringBuilder();
1577
1578            msg.append("No Layout exists with the key {");
1579
1580            msg.append("groupId=" + groupId);
1581
1582            msg.append(", ");
1583            msg.append("privateLayout=" + privateLayout);
1584
1585            msg.append(", ");
1586            msg.append("layoutId=" + layoutId);
1587
1588            msg.append(StringPool.CLOSE_CURLY_BRACE);
1589
1590            if (_log.isWarnEnabled()) {
1591                _log.warn(msg.toString());
1592            }
1593
1594            throw new NoSuchLayoutException(msg.toString());
1595        }
1596
1597        return layout;
1598    }
1599
1600    public Layout fetchByG_P_L(long groupId, boolean privateLayout,
1601        long layoutId) throws SystemException {
1602        return fetchByG_P_L(groupId, privateLayout, layoutId, true);
1603    }
1604
1605    public Layout fetchByG_P_L(long groupId, boolean privateLayout,
1606        long layoutId, boolean retrieveFromCache) throws SystemException {
1607        Object[] finderArgs = new Object[] {
1608                new Long(groupId), Boolean.valueOf(privateLayout),
1609                new Long(layoutId)
1610            };
1611
1612        Object result = null;
1613
1614        if (retrieveFromCache) {
1615            result = FinderCacheUtil.getResult(FINDER_PATH_FETCH_BY_G_P_L,
1616                    finderArgs, this);
1617        }
1618
1619        if (result == null) {
1620            Session session = null;
1621
1622            try {
1623                session = openSession();
1624
1625                StringBuilder query = new StringBuilder();
1626
1627                query.append("SELECT layout FROM Layout layout WHERE ");
1628
1629                query.append("layout.groupId = ?");
1630
1631                query.append(" AND ");
1632
1633                query.append("layout.privateLayout = ?");
1634
1635                query.append(" AND ");
1636
1637                query.append("layout.layoutId = ?");
1638
1639                query.append(" ");
1640
1641                query.append("ORDER BY ");
1642
1643                query.append("layout.parentLayoutId ASC, ");
1644                query.append("layout.priority ASC");
1645
1646                Query q = session.createQuery(query.toString());
1647
1648                QueryPos qPos = QueryPos.getInstance(q);
1649
1650                qPos.add(groupId);
1651
1652                qPos.add(privateLayout);
1653
1654                qPos.add(layoutId);
1655
1656                List<Layout> list = q.list();
1657
1658                result = list;
1659
1660                Layout layout = null;
1661
1662                if (list.isEmpty()) {
1663                    FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_G_P_L,
1664                        finderArgs, list);
1665                }
1666                else {
1667                    layout = list.get(0);
1668
1669                    cacheResult(layout);
1670
1671                    if ((layout.getGroupId() != groupId) ||
1672                            (layout.getPrivateLayout() != privateLayout) ||
1673                            (layout.getLayoutId() != layoutId)) {
1674                        FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_G_P_L,
1675                            finderArgs, layout);
1676                    }
1677                }
1678
1679                return layout;
1680            }
1681            catch (Exception e) {
1682                throw processException(e);
1683            }
1684            finally {
1685                if (result == null) {
1686                    FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_G_P_L,
1687                        finderArgs, new ArrayList<Layout>());
1688                }
1689
1690                closeSession(session);
1691            }
1692        }
1693        else {
1694            if (result instanceof List) {
1695                return null;
1696            }
1697            else {
1698                return (Layout)result;
1699            }
1700        }
1701    }
1702
1703    public List<Layout> findByG_P_P(long groupId, boolean privateLayout,
1704        long parentLayoutId) throws SystemException {
1705        Object[] finderArgs = new Object[] {
1706                new Long(groupId), Boolean.valueOf(privateLayout),
1707                new Long(parentLayoutId)
1708            };
1709
1710        List<Layout> list = (List<Layout>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_G_P_P,
1711                finderArgs, this);
1712
1713        if (list == null) {
1714            Session session = null;
1715
1716            try {
1717                session = openSession();
1718
1719                StringBuilder query = new StringBuilder();
1720
1721                query.append("SELECT layout FROM Layout layout WHERE ");
1722
1723                query.append("layout.groupId = ?");
1724
1725                query.append(" AND ");
1726
1727                query.append("layout.privateLayout = ?");
1728
1729                query.append(" AND ");
1730
1731                query.append("layout.parentLayoutId = ?");
1732
1733                query.append(" ");
1734
1735                query.append("ORDER BY ");
1736
1737                query.append("layout.parentLayoutId ASC, ");
1738                query.append("layout.priority ASC");
1739
1740                Query q = session.createQuery(query.toString());
1741
1742                QueryPos qPos = QueryPos.getInstance(q);
1743
1744                qPos.add(groupId);
1745
1746                qPos.add(privateLayout);
1747
1748                qPos.add(parentLayoutId);
1749
1750                list = q.list();
1751            }
1752            catch (Exception e) {
1753                throw processException(e);
1754            }
1755            finally {
1756                if (list == null) {
1757                    list = new ArrayList<Layout>();
1758                }
1759
1760                cacheResult(list);
1761
1762                FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_G_P_P,
1763                    finderArgs, list);
1764
1765                closeSession(session);
1766            }
1767        }
1768
1769        return list;
1770    }
1771
1772    public List<Layout> findByG_P_P(long groupId, boolean privateLayout,
1773        long parentLayoutId, int start, int end) throws SystemException {
1774        return findByG_P_P(groupId, privateLayout, parentLayoutId, start, end,
1775            null);
1776    }
1777
1778    public List<Layout> findByG_P_P(long groupId, boolean privateLayout,
1779        long parentLayoutId, int start, int end, OrderByComparator obc)
1780        throws SystemException {
1781        Object[] finderArgs = new Object[] {
1782                new Long(groupId), Boolean.valueOf(privateLayout),
1783                new Long(parentLayoutId),
1784                
1785                String.valueOf(start), String.valueOf(end), String.valueOf(obc)
1786            };
1787
1788        List<Layout> list = (List<Layout>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_G_P_P,
1789                finderArgs, this);
1790
1791        if (list == null) {
1792            Session session = null;
1793
1794            try {
1795                session = openSession();
1796
1797                StringBuilder query = new StringBuilder();
1798
1799                query.append("SELECT layout FROM Layout layout WHERE ");
1800
1801                query.append("layout.groupId = ?");
1802
1803                query.append(" AND ");
1804
1805                query.append("layout.privateLayout = ?");
1806
1807                query.append(" AND ");
1808
1809                query.append("layout.parentLayoutId = ?");
1810
1811                query.append(" ");
1812
1813                if (obc != null) {
1814                    query.append("ORDER BY ");
1815
1816                    String[] orderByFields = obc.getOrderByFields();
1817
1818                    for (int i = 0; i < orderByFields.length; i++) {
1819                        query.append("layout.");
1820                        query.append(orderByFields[i]);
1821
1822                        if (obc.isAscending()) {
1823                            query.append(" ASC");
1824                        }
1825                        else {
1826                            query.append(" DESC");
1827                        }
1828
1829                        if ((i + 1) < orderByFields.length) {
1830                            query.append(", ");
1831                        }
1832                    }
1833                }
1834
1835                else {
1836                    query.append("ORDER BY ");
1837
1838                    query.append("layout.parentLayoutId ASC, ");
1839                    query.append("layout.priority ASC");
1840                }
1841
1842                Query q = session.createQuery(query.toString());
1843
1844                QueryPos qPos = QueryPos.getInstance(q);
1845
1846                qPos.add(groupId);
1847
1848                qPos.add(privateLayout);
1849
1850                qPos.add(parentLayoutId);
1851
1852                list = (List<Layout>)QueryUtil.list(q, getDialect(), start, end);
1853            }
1854            catch (Exception e) {
1855                throw processException(e);
1856            }
1857            finally {
1858                if (list == null) {
1859                    list = new ArrayList<Layout>();
1860                }
1861
1862                cacheResult(list);
1863
1864                FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_G_P_P,
1865                    finderArgs, list);
1866
1867                closeSession(session);
1868            }
1869        }
1870
1871        return list;
1872    }
1873
1874    public Layout findByG_P_P_First(long groupId, boolean privateLayout,
1875        long parentLayoutId, OrderByComparator obc)
1876        throws NoSuchLayoutException, SystemException {
1877        List<Layout> list = findByG_P_P(groupId, privateLayout, parentLayoutId,
1878                0, 1, obc);
1879
1880        if (list.isEmpty()) {
1881            StringBuilder msg = new StringBuilder();
1882
1883            msg.append("No Layout exists with the key {");
1884
1885            msg.append("groupId=" + groupId);
1886
1887            msg.append(", ");
1888            msg.append("privateLayout=" + privateLayout);
1889
1890            msg.append(", ");
1891            msg.append("parentLayoutId=" + parentLayoutId);
1892
1893            msg.append(StringPool.CLOSE_CURLY_BRACE);
1894
1895            throw new NoSuchLayoutException(msg.toString());
1896        }
1897        else {
1898            return list.get(0);
1899        }
1900    }
1901
1902    public Layout findByG_P_P_Last(long groupId, boolean privateLayout,
1903        long parentLayoutId, OrderByComparator obc)
1904        throws NoSuchLayoutException, SystemException {
1905        int count = countByG_P_P(groupId, privateLayout, parentLayoutId);
1906
1907        List<Layout> list = findByG_P_P(groupId, privateLayout, parentLayoutId,
1908                count - 1, count, obc);
1909
1910        if (list.isEmpty()) {
1911            StringBuilder msg = new StringBuilder();
1912
1913            msg.append("No Layout exists with the key {");
1914
1915            msg.append("groupId=" + groupId);
1916
1917            msg.append(", ");
1918            msg.append("privateLayout=" + privateLayout);
1919
1920            msg.append(", ");
1921            msg.append("parentLayoutId=" + parentLayoutId);
1922
1923            msg.append(StringPool.CLOSE_CURLY_BRACE);
1924
1925            throw new NoSuchLayoutException(msg.toString());
1926        }
1927        else {
1928            return list.get(0);
1929        }
1930    }
1931
1932    public Layout[] findByG_P_P_PrevAndNext(long plid, long groupId,
1933        boolean privateLayout, long parentLayoutId, OrderByComparator obc)
1934        throws NoSuchLayoutException, SystemException {
1935        Layout layout = findByPrimaryKey(plid);
1936
1937        int count = countByG_P_P(groupId, privateLayout, parentLayoutId);
1938
1939        Session session = null;
1940
1941        try {
1942            session = openSession();
1943
1944            StringBuilder query = new StringBuilder();
1945
1946            query.append("SELECT layout FROM Layout layout WHERE ");
1947
1948            query.append("layout.groupId = ?");
1949
1950            query.append(" AND ");
1951
1952            query.append("layout.privateLayout = ?");
1953
1954            query.append(" AND ");
1955
1956            query.append("layout.parentLayoutId = ?");
1957
1958            query.append(" ");
1959
1960            if (obc != null) {
1961                query.append("ORDER BY ");
1962
1963                String[] orderByFields = obc.getOrderByFields();
1964
1965                for (int i = 0; i < orderByFields.length; i++) {
1966                    query.append("layout.");
1967                    query.append(orderByFields[i]);
1968
1969                    if (obc.isAscending()) {
1970                        query.append(" ASC");
1971                    }
1972                    else {
1973                        query.append(" DESC");
1974                    }
1975
1976                    if ((i + 1) < orderByFields.length) {
1977                        query.append(", ");
1978                    }
1979                }
1980            }
1981
1982            else {
1983                query.append("ORDER BY ");
1984
1985                query.append("layout.parentLayoutId ASC, ");
1986                query.append("layout.priority ASC");
1987            }
1988
1989            Query q = session.createQuery(query.toString());
1990
1991            QueryPos qPos = QueryPos.getInstance(q);
1992
1993            qPos.add(groupId);
1994
1995            qPos.add(privateLayout);
1996
1997            qPos.add(parentLayoutId);
1998
1999            Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc, layout);
2000
2001            Layout[] array = new LayoutImpl[3];
2002
2003            array[0] = (Layout)objArray[0];
2004            array[1] = (Layout)objArray[1];
2005            array[2] = (Layout)objArray[2];
2006
2007            return array;
2008        }
2009        catch (Exception e) {
2010            throw processException(e);
2011        }
2012        finally {
2013            closeSession(session);
2014        }
2015    }
2016
2017    public Layout findByG_P_F(long groupId, boolean privateLayout,
2018        String friendlyURL) throws NoSuchLayoutException, SystemException {
2019        Layout layout = fetchByG_P_F(groupId, privateLayout, friendlyURL);
2020
2021        if (layout == null) {
2022            StringBuilder msg = new StringBuilder();
2023
2024            msg.append("No Layout exists with the key {");
2025
2026            msg.append("groupId=" + groupId);
2027
2028            msg.append(", ");
2029            msg.append("privateLayout=" + privateLayout);
2030
2031            msg.append(", ");
2032            msg.append("friendlyURL=" + friendlyURL);
2033
2034            msg.append(StringPool.CLOSE_CURLY_BRACE);
2035
2036            if (_log.isWarnEnabled()) {
2037                _log.warn(msg.toString());
2038            }
2039
2040            throw new NoSuchLayoutException(msg.toString());
2041        }
2042
2043        return layout;
2044    }
2045
2046    public Layout fetchByG_P_F(long groupId, boolean privateLayout,
2047        String friendlyURL) throws SystemException {
2048        return fetchByG_P_F(groupId, privateLayout, friendlyURL, true);
2049    }
2050
2051    public Layout fetchByG_P_F(long groupId, boolean privateLayout,
2052        String friendlyURL, boolean retrieveFromCache)
2053        throws SystemException {
2054        Object[] finderArgs = new Object[] {
2055                new Long(groupId), Boolean.valueOf(privateLayout),
2056                
2057                friendlyURL
2058            };
2059
2060        Object result = null;
2061
2062        if (retrieveFromCache) {
2063            result = FinderCacheUtil.getResult(FINDER_PATH_FETCH_BY_G_P_F,
2064                    finderArgs, this);
2065        }
2066
2067        if (result == null) {
2068            Session session = null;
2069
2070            try {
2071                session = openSession();
2072
2073                StringBuilder query = new StringBuilder();
2074
2075                query.append("SELECT layout FROM Layout layout WHERE ");
2076
2077                query.append("layout.groupId = ?");
2078
2079                query.append(" AND ");
2080
2081                query.append("layout.privateLayout = ?");
2082
2083                query.append(" AND ");
2084
2085                if (friendlyURL == null) {
2086                    query.append("layout.friendlyURL IS NULL");
2087                }
2088                else {
2089                    query.append("layout.friendlyURL = ?");
2090                }
2091
2092                query.append(" ");
2093
2094                query.append("ORDER BY ");
2095
2096                query.append("layout.parentLayoutId ASC, ");
2097                query.append("layout.priority ASC");
2098
2099                Query q = session.createQuery(query.toString());
2100
2101                QueryPos qPos = QueryPos.getInstance(q);
2102
2103                qPos.add(groupId);
2104
2105                qPos.add(privateLayout);
2106
2107                if (friendlyURL != null) {
2108                    qPos.add(friendlyURL);
2109                }
2110
2111                List<Layout> list = q.list();
2112
2113                result = list;
2114
2115                Layout layout = null;
2116
2117                if (list.isEmpty()) {
2118                    FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_G_P_F,
2119                        finderArgs, list);
2120                }
2121                else {
2122                    layout = list.get(0);
2123
2124                    cacheResult(layout);
2125
2126                    if ((layout.getGroupId() != groupId) ||
2127                            (layout.getPrivateLayout() != privateLayout) ||
2128                            (layout.getFriendlyURL() == null) ||
2129                            !layout.getFriendlyURL().equals(friendlyURL)) {
2130                        FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_G_P_F,
2131                            finderArgs, layout);
2132                    }
2133                }
2134
2135                return layout;
2136            }
2137            catch (Exception e) {
2138                throw processException(e);
2139            }
2140            finally {
2141                if (result == null) {
2142                    FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_G_P_F,
2143                        finderArgs, new ArrayList<Layout>());
2144                }
2145
2146                closeSession(session);
2147            }
2148        }
2149        else {
2150            if (result instanceof List) {
2151                return null;
2152            }
2153            else {
2154                return (Layout)result;
2155            }
2156        }
2157    }
2158
2159    public List<Layout> findByG_P_T(long groupId, boolean privateLayout,
2160        String type) throws SystemException {
2161        Object[] finderArgs = new Object[] {
2162                new Long(groupId), Boolean.valueOf(privateLayout),
2163                
2164                type
2165            };
2166
2167        List<Layout> list = (List<Layout>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_G_P_T,
2168                finderArgs, this);
2169
2170        if (list == null) {
2171            Session session = null;
2172
2173            try {
2174                session = openSession();
2175
2176                StringBuilder query = new StringBuilder();
2177
2178                query.append("SELECT layout FROM Layout layout WHERE ");
2179
2180                query.append("layout.groupId = ?");
2181
2182                query.append(" AND ");
2183
2184                query.append("layout.privateLayout = ?");
2185
2186                query.append(" AND ");
2187
2188                if (type == null) {
2189                    query.append("layout.type IS NULL");
2190                }
2191                else {
2192                    query.append("layout.type = ?");
2193                }
2194
2195                query.append(" ");
2196
2197                query.append("ORDER BY ");
2198
2199                query.append("layout.parentLayoutId ASC, ");
2200                query.append("layout.priority ASC");
2201
2202                Query q = session.createQuery(query.toString());
2203
2204                QueryPos qPos = QueryPos.getInstance(q);
2205
2206                qPos.add(groupId);
2207
2208                qPos.add(privateLayout);
2209
2210                if (type != null) {
2211                    qPos.add(type);
2212                }
2213
2214                list = q.list();
2215            }
2216            catch (Exception e) {
2217                throw processException(e);
2218            }
2219            finally {
2220                if (list == null) {
2221                    list = new ArrayList<Layout>();
2222                }
2223
2224                cacheResult(list);
2225
2226                FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_G_P_T,
2227                    finderArgs, list);
2228
2229                closeSession(session);
2230            }
2231        }
2232
2233        return list;
2234    }
2235
2236    public List<Layout> findByG_P_T(long groupId, boolean privateLayout,
2237        String type, int start, int end) throws SystemException {
2238        return findByG_P_T(groupId, privateLayout, type, start, end, null);
2239    }
2240
2241    public List<Layout> findByG_P_T(long groupId, boolean privateLayout,
2242        String type, int start, int end, OrderByComparator obc)
2243        throws SystemException {
2244        Object[] finderArgs = new Object[] {
2245                new Long(groupId), Boolean.valueOf(privateLayout),
2246                
2247                type,
2248                
2249                String.valueOf(start), String.valueOf(end), String.valueOf(obc)
2250            };
2251
2252        List<Layout> list = (List<Layout>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_G_P_T,
2253                finderArgs, this);
2254
2255        if (list == null) {
2256            Session session = null;
2257
2258            try {
2259                session = openSession();
2260
2261                StringBuilder query = new StringBuilder();
2262
2263                query.append("SELECT layout FROM Layout layout WHERE ");
2264
2265                query.append("layout.groupId = ?");
2266
2267                query.append(" AND ");
2268
2269                query.append("layout.privateLayout = ?");
2270
2271                query.append(" AND ");
2272
2273                if (type == null) {
2274                    query.append("layout.type IS NULL");
2275                }
2276                else {
2277                    query.append("layout.type = ?");
2278                }
2279
2280                query.append(" ");
2281
2282                if (obc != null) {
2283                    query.append("ORDER BY ");
2284
2285                    String[] orderByFields = obc.getOrderByFields();
2286
2287                    for (int i = 0; i < orderByFields.length; i++) {
2288                        query.append("layout.");
2289                        query.append(orderByFields[i]);
2290
2291                        if (obc.isAscending()) {
2292                            query.append(" ASC");
2293                        }
2294                        else {
2295                            query.append(" DESC");
2296                        }
2297
2298                        if ((i + 1) < orderByFields.length) {
2299                            query.append(", ");
2300                        }
2301                    }
2302                }
2303
2304                else {
2305                    query.append("ORDER BY ");
2306
2307                    query.append("layout.parentLayoutId ASC, ");
2308                    query.append("layout.priority ASC");
2309                }
2310
2311                Query q = session.createQuery(query.toString());
2312
2313                QueryPos qPos = QueryPos.getInstance(q);
2314
2315                qPos.add(groupId);
2316
2317                qPos.add(privateLayout);
2318
2319                if (type != null) {
2320                    qPos.add(type);
2321                }
2322
2323                list = (List<Layout>)QueryUtil.list(q, getDialect(), start, end);
2324            }
2325            catch (Exception e) {
2326                throw processException(e);
2327            }
2328            finally {
2329                if (list == null) {
2330                    list = new ArrayList<Layout>();
2331                }
2332
2333                cacheResult(list);
2334
2335                FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_G_P_T,
2336                    finderArgs, list);
2337
2338                closeSession(session);
2339            }
2340        }
2341
2342        return list;
2343    }
2344
2345    public Layout findByG_P_T_First(long groupId, boolean privateLayout,
2346        String type, OrderByComparator obc)
2347        throws NoSuchLayoutException, SystemException {
2348        List<Layout> list = findByG_P_T(groupId, privateLayout, type, 0, 1, obc);
2349
2350        if (list.isEmpty()) {
2351            StringBuilder msg = new StringBuilder();
2352
2353            msg.append("No Layout exists with the key {");
2354
2355            msg.append("groupId=" + groupId);
2356
2357            msg.append(", ");
2358            msg.append("privateLayout=" + privateLayout);
2359
2360            msg.append(", ");
2361            msg.append("type=" + type);
2362
2363            msg.append(StringPool.CLOSE_CURLY_BRACE);
2364
2365            throw new NoSuchLayoutException(msg.toString());
2366        }
2367        else {
2368            return list.get(0);
2369        }
2370    }
2371
2372    public Layout findByG_P_T_Last(long groupId, boolean privateLayout,
2373        String type, OrderByComparator obc)
2374        throws NoSuchLayoutException, SystemException {
2375        int count = countByG_P_T(groupId, privateLayout, type);
2376
2377        List<Layout> list = findByG_P_T(groupId, privateLayout, type,
2378                count - 1, count, obc);
2379
2380        if (list.isEmpty()) {
2381            StringBuilder msg = new StringBuilder();
2382
2383            msg.append("No Layout exists with the key {");
2384
2385            msg.append("groupId=" + groupId);
2386
2387            msg.append(", ");
2388            msg.append("privateLayout=" + privateLayout);
2389
2390            msg.append(", ");
2391            msg.append("type=" + type);
2392
2393            msg.append(StringPool.CLOSE_CURLY_BRACE);
2394
2395            throw new NoSuchLayoutException(msg.toString());
2396        }
2397        else {
2398            return list.get(0);
2399        }
2400    }
2401
2402    public Layout[] findByG_P_T_PrevAndNext(long plid, long groupId,
2403        boolean privateLayout, String type, OrderByComparator obc)
2404        throws NoSuchLayoutException, SystemException {
2405        Layout layout = findByPrimaryKey(plid);
2406
2407        int count = countByG_P_T(groupId, privateLayout, type);
2408
2409        Session session = null;
2410
2411        try {
2412            session = openSession();
2413
2414            StringBuilder query = new StringBuilder();
2415
2416            query.append("SELECT layout FROM Layout layout WHERE ");
2417
2418            query.append("layout.groupId = ?");
2419
2420            query.append(" AND ");
2421
2422            query.append("layout.privateLayout = ?");
2423
2424            query.append(" AND ");
2425
2426            if (type == null) {
2427                query.append("layout.type IS NULL");
2428            }
2429            else {
2430                query.append("layout.type = ?");
2431            }
2432
2433            query.append(" ");
2434
2435            if (obc != null) {
2436                query.append("ORDER BY ");
2437
2438                String[] orderByFields = obc.getOrderByFields();
2439
2440                for (int i = 0; i < orderByFields.length; i++) {
2441                    query.append("layout.");
2442                    query.append(orderByFields[i]);
2443
2444                    if (obc.isAscending()) {
2445                        query.append(" ASC");
2446                    }
2447                    else {
2448                        query.append(" DESC");
2449                    }
2450
2451                    if ((i + 1) < orderByFields.length) {
2452                        query.append(", ");
2453                    }
2454                }
2455            }
2456
2457            else {
2458                query.append("ORDER BY ");
2459
2460                query.append("layout.parentLayoutId ASC, ");
2461                query.append("layout.priority ASC");
2462            }
2463
2464            Query q = session.createQuery(query.toString());
2465
2466            QueryPos qPos = QueryPos.getInstance(q);
2467
2468            qPos.add(groupId);
2469
2470            qPos.add(privateLayout);
2471
2472            if (type != null) {
2473                qPos.add(type);
2474            }
2475
2476            Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc, layout);
2477
2478            Layout[] array = new LayoutImpl[3];
2479
2480            array[0] = (Layout)objArray[0];
2481            array[1] = (Layout)objArray[1];
2482            array[2] = (Layout)objArray[2];
2483
2484            return array;
2485        }
2486        catch (Exception e) {
2487            throw processException(e);
2488        }
2489        finally {
2490            closeSession(session);
2491        }
2492    }
2493
2494    public List<Object> findWithDynamicQuery(DynamicQuery dynamicQuery)
2495        throws SystemException {
2496        Session session = null;
2497
2498        try {
2499            session = openSession();
2500
2501            dynamicQuery.compile(session);
2502
2503            return dynamicQuery.list();
2504        }
2505        catch (Exception e) {
2506            throw processException(e);
2507        }
2508        finally {
2509            closeSession(session);
2510        }
2511    }
2512
2513    public List<Object> findWithDynamicQuery(DynamicQuery dynamicQuery,
2514        int start, int end) throws SystemException {
2515        Session session = null;
2516
2517        try {
2518            session = openSession();
2519
2520            dynamicQuery.setLimit(start, end);
2521
2522            dynamicQuery.compile(session);
2523
2524            return dynamicQuery.list();
2525        }
2526        catch (Exception e) {
2527            throw processException(e);
2528        }
2529        finally {
2530            closeSession(session);
2531        }
2532    }
2533
2534    public List<Layout> findAll() throws SystemException {
2535        return findAll(QueryUtil.ALL_POS, QueryUtil.ALL_POS, null);
2536    }
2537
2538    public List<Layout> findAll(int start, int end) throws SystemException {
2539        return findAll(start, end, null);
2540    }
2541
2542    public List<Layout> findAll(int start, int end, OrderByComparator obc)
2543        throws SystemException {
2544        Object[] finderArgs = new Object[] {
2545                String.valueOf(start), String.valueOf(end), String.valueOf(obc)
2546            };
2547
2548        List<Layout> list = (List<Layout>)FinderCacheUtil.getResult(FINDER_PATH_FIND_ALL,
2549                finderArgs, this);
2550
2551        if (list == null) {
2552            Session session = null;
2553
2554            try {
2555                session = openSession();
2556
2557                StringBuilder query = new StringBuilder();
2558
2559                query.append("SELECT layout FROM Layout layout ");
2560
2561                if (obc != null) {
2562                    query.append("ORDER BY ");
2563
2564                    String[] orderByFields = obc.getOrderByFields();
2565
2566                    for (int i = 0; i < orderByFields.length; i++) {
2567                        query.append("layout.");
2568                        query.append(orderByFields[i]);
2569
2570                        if (obc.isAscending()) {
2571                            query.append(" ASC");
2572                        }
2573                        else {
2574                            query.append(" DESC");
2575                        }
2576
2577                        if ((i + 1) < orderByFields.length) {
2578                            query.append(", ");
2579                        }
2580                    }
2581                }
2582
2583                else {
2584                    query.append("ORDER BY ");
2585
2586                    query.append("layout.parentLayoutId ASC, ");
2587                    query.append("layout.priority ASC");
2588                }
2589
2590                Query q = session.createQuery(query.toString());
2591
2592                if (obc == null) {
2593                    list = (List<Layout>)QueryUtil.list(q, getDialect(), start,
2594                            end, false);
2595
2596                    Collections.sort(list);
2597                }
2598                else {
2599                    list = (List<Layout>)QueryUtil.list(q, getDialect(), start,
2600                            end);
2601                }
2602            }
2603            catch (Exception e) {
2604                throw processException(e);
2605            }
2606            finally {
2607                if (list == null) {
2608                    list = new ArrayList<Layout>();
2609                }
2610
2611                cacheResult(list);
2612
2613                FinderCacheUtil.putResult(FINDER_PATH_FIND_ALL, finderArgs, list);
2614
2615                closeSession(session);
2616            }
2617        }
2618
2619        return list;
2620    }
2621
2622    public void removeByGroupId(long groupId) throws SystemException {
2623        for (Layout layout : findByGroupId(groupId)) {
2624            remove(layout);
2625        }
2626    }
2627
2628    public void removeByCompanyId(long companyId) throws SystemException {
2629        for (Layout layout : findByCompanyId(companyId)) {
2630            remove(layout);
2631        }
2632    }
2633
2634    public void removeByDLFolderId(long dlFolderId)
2635        throws NoSuchLayoutException, SystemException {
2636        Layout layout = findByDLFolderId(dlFolderId);
2637
2638        remove(layout);
2639    }
2640
2641    public void removeByIconImageId(long iconImageId)
2642        throws NoSuchLayoutException, SystemException {
2643        Layout layout = findByIconImageId(iconImageId);
2644
2645        remove(layout);
2646    }
2647
2648    public void removeByG_P(long groupId, boolean privateLayout)
2649        throws SystemException {
2650        for (Layout layout : findByG_P(groupId, privateLayout)) {
2651            remove(layout);
2652        }
2653    }
2654
2655    public void removeByG_P_L(long groupId, boolean privateLayout, long layoutId)
2656        throws NoSuchLayoutException, SystemException {
2657        Layout layout = findByG_P_L(groupId, privateLayout, layoutId);
2658
2659        remove(layout);
2660    }
2661
2662    public void removeByG_P_P(long groupId, boolean privateLayout,
2663        long parentLayoutId) throws SystemException {
2664        for (Layout layout : findByG_P_P(groupId, privateLayout, parentLayoutId)) {
2665            remove(layout);
2666        }
2667    }
2668
2669    public void removeByG_P_F(long groupId, boolean privateLayout,
2670        String friendlyURL) throws NoSuchLayoutException, SystemException {
2671        Layout layout = findByG_P_F(groupId, privateLayout, friendlyURL);
2672
2673        remove(layout);
2674    }
2675
2676    public void removeByG_P_T(long groupId, boolean privateLayout, String type)
2677        throws SystemException {
2678        for (Layout layout : findByG_P_T(groupId, privateLayout, type)) {
2679            remove(layout);
2680        }
2681    }
2682
2683    public void removeAll() throws SystemException {
2684        for (Layout layout : findAll()) {
2685            remove(layout);
2686        }
2687    }
2688
2689    public int countByGroupId(long groupId) throws SystemException {
2690        Object[] finderArgs = new Object[] { new Long(groupId) };
2691
2692        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_GROUPID,
2693                finderArgs, this);
2694
2695        if (count == null) {
2696            Session session = null;
2697
2698            try {
2699                session = openSession();
2700
2701                StringBuilder query = new StringBuilder();
2702
2703                query.append("SELECT COUNT(layout) ");
2704                query.append("FROM Layout layout WHERE ");
2705
2706                query.append("layout.groupId = ?");
2707
2708                query.append(" ");
2709
2710                Query q = session.createQuery(query.toString());
2711
2712                QueryPos qPos = QueryPos.getInstance(q);
2713
2714                qPos.add(groupId);
2715
2716                count = (Long)q.uniqueResult();
2717            }
2718            catch (Exception e) {
2719                throw processException(e);
2720            }
2721            finally {
2722                if (count == null) {
2723                    count = Long.valueOf(0);
2724                }
2725
2726                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_GROUPID,
2727                    finderArgs, count);
2728
2729                closeSession(session);
2730            }
2731        }
2732
2733        return count.intValue();
2734    }
2735
2736    public int countByCompanyId(long companyId) throws SystemException {
2737        Object[] finderArgs = new Object[] { new Long(companyId) };
2738
2739        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_COMPANYID,
2740                finderArgs, this);
2741
2742        if (count == null) {
2743            Session session = null;
2744
2745            try {
2746                session = openSession();
2747
2748                StringBuilder query = new StringBuilder();
2749
2750                query.append("SELECT COUNT(layout) ");
2751                query.append("FROM Layout layout WHERE ");
2752
2753                query.append("layout.companyId = ?");
2754
2755                query.append(" ");
2756
2757                Query q = session.createQuery(query.toString());
2758
2759                QueryPos qPos = QueryPos.getInstance(q);
2760
2761                qPos.add(companyId);
2762
2763                count = (Long)q.uniqueResult();
2764            }
2765            catch (Exception e) {
2766                throw processException(e);
2767            }
2768            finally {
2769                if (count == null) {
2770                    count = Long.valueOf(0);
2771                }
2772
2773                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_COMPANYID,
2774                    finderArgs, count);
2775
2776                closeSession(session);
2777            }
2778        }
2779
2780        return count.intValue();
2781    }
2782
2783    public int countByDLFolderId(long dlFolderId) throws SystemException {
2784        Object[] finderArgs = new Object[] { new Long(dlFolderId) };
2785
2786        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_DLFOLDERID,
2787                finderArgs, this);
2788
2789        if (count == null) {
2790            Session session = null;
2791
2792            try {
2793                session = openSession();
2794
2795                StringBuilder query = new StringBuilder();
2796
2797                query.append("SELECT COUNT(layout) ");
2798                query.append("FROM Layout layout WHERE ");
2799
2800                query.append("layout.dlFolderId = ?");
2801
2802                query.append(" ");
2803
2804                Query q = session.createQuery(query.toString());
2805
2806                QueryPos qPos = QueryPos.getInstance(q);
2807
2808                qPos.add(dlFolderId);
2809
2810                count = (Long)q.uniqueResult();
2811            }
2812            catch (Exception e) {
2813                throw processException(e);
2814            }
2815            finally {
2816                if (count == null) {
2817                    count = Long.valueOf(0);
2818                }
2819
2820                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_DLFOLDERID,
2821                    finderArgs, count);
2822
2823                closeSession(session);
2824            }
2825        }
2826
2827        return count.intValue();
2828    }
2829
2830    public int countByIconImageId(long iconImageId) throws SystemException {
2831        Object[] finderArgs = new Object[] { new Long(iconImageId) };
2832
2833        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_ICONIMAGEID,
2834                finderArgs, this);
2835
2836        if (count == null) {
2837            Session session = null;
2838
2839            try {
2840                session = openSession();
2841
2842                StringBuilder query = new StringBuilder();
2843
2844                query.append("SELECT COUNT(layout) ");
2845                query.append("FROM Layout layout WHERE ");
2846
2847                query.append("layout.iconImageId = ?");
2848
2849                query.append(" ");
2850
2851                Query q = session.createQuery(query.toString());
2852
2853                QueryPos qPos = QueryPos.getInstance(q);
2854
2855                qPos.add(iconImageId);
2856
2857                count = (Long)q.uniqueResult();
2858            }
2859            catch (Exception e) {
2860                throw processException(e);
2861            }
2862            finally {
2863                if (count == null) {
2864                    count = Long.valueOf(0);
2865                }
2866
2867                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_ICONIMAGEID,
2868                    finderArgs, count);
2869
2870                closeSession(session);
2871            }
2872        }
2873
2874        return count.intValue();
2875    }
2876
2877    public int countByG_P(long groupId, boolean privateLayout)
2878        throws SystemException {
2879        Object[] finderArgs = new Object[] {
2880                new Long(groupId), Boolean.valueOf(privateLayout)
2881            };
2882
2883        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_G_P,
2884                finderArgs, this);
2885
2886        if (count == null) {
2887            Session session = null;
2888
2889            try {
2890                session = openSession();
2891
2892                StringBuilder query = new StringBuilder();
2893
2894                query.append("SELECT COUNT(layout) ");
2895                query.append("FROM Layout layout WHERE ");
2896
2897                query.append("layout.groupId = ?");
2898
2899                query.append(" AND ");
2900
2901                query.append("layout.privateLayout = ?");
2902
2903                query.append(" ");
2904
2905                Query q = session.createQuery(query.toString());
2906
2907                QueryPos qPos = QueryPos.getInstance(q);
2908
2909                qPos.add(groupId);
2910
2911                qPos.add(privateLayout);
2912
2913                count = (Long)q.uniqueResult();
2914            }
2915            catch (Exception e) {
2916                throw processException(e);
2917            }
2918            finally {
2919                if (count == null) {
2920                    count = Long.valueOf(0);
2921                }
2922
2923                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_G_P, finderArgs,
2924                    count);
2925
2926                closeSession(session);
2927            }
2928        }
2929
2930        return count.intValue();
2931    }
2932
2933    public int countByG_P_L(long groupId, boolean privateLayout, long layoutId)
2934        throws SystemException {
2935        Object[] finderArgs = new Object[] {
2936                new Long(groupId), Boolean.valueOf(privateLayout),
2937                new Long(layoutId)
2938            };
2939
2940        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_G_P_L,
2941                finderArgs, this);
2942
2943        if (count == null) {
2944            Session session = null;
2945
2946            try {
2947                session = openSession();
2948
2949                StringBuilder query = new StringBuilder();
2950
2951                query.append("SELECT COUNT(layout) ");
2952                query.append("FROM Layout layout WHERE ");
2953
2954                query.append("layout.groupId = ?");
2955
2956                query.append(" AND ");
2957
2958                query.append("layout.privateLayout = ?");
2959
2960                query.append(" AND ");
2961
2962                query.append("layout.layoutId = ?");
2963
2964                query.append(" ");
2965
2966                Query q = session.createQuery(query.toString());
2967
2968                QueryPos qPos = QueryPos.getInstance(q);
2969
2970                qPos.add(groupId);
2971
2972                qPos.add(privateLayout);
2973
2974                qPos.add(layoutId);
2975
2976                count = (Long)q.uniqueResult();
2977            }
2978            catch (Exception e) {
2979                throw processException(e);
2980            }
2981            finally {
2982                if (count == null) {
2983                    count = Long.valueOf(0);
2984                }
2985
2986                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_G_P_L,
2987                    finderArgs, count);
2988
2989                closeSession(session);
2990            }
2991        }
2992
2993        return count.intValue();
2994    }
2995
2996    public int countByG_P_P(long groupId, boolean privateLayout,
2997        long parentLayoutId) throws SystemException {
2998        Object[] finderArgs = new Object[] {
2999                new Long(groupId), Boolean.valueOf(privateLayout),
3000                new Long(parentLayoutId)
3001            };
3002
3003        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_G_P_P,
3004                finderArgs, this);
3005
3006        if (count == null) {
3007            Session session = null;
3008
3009            try {
3010                session = openSession();
3011
3012                StringBuilder query = new StringBuilder();
3013
3014                query.append("SELECT COUNT(layout) ");
3015                query.append("FROM Layout layout WHERE ");
3016
3017                query.append("layout.groupId = ?");
3018
3019                query.append(" AND ");
3020
3021                query.append("layout.privateLayout = ?");
3022
3023                query.append(" AND ");
3024
3025                query.append("layout.parentLayoutId = ?");
3026
3027                query.append(" ");
3028
3029                Query q = session.createQuery(query.toString());
3030
3031                QueryPos qPos = QueryPos.getInstance(q);
3032
3033                qPos.add(groupId);
3034
3035                qPos.add(privateLayout);
3036
3037                qPos.add(parentLayoutId);
3038
3039                count = (Long)q.uniqueResult();
3040            }
3041            catch (Exception e) {
3042                throw processException(e);
3043            }
3044            finally {
3045                if (count == null) {
3046                    count = Long.valueOf(0);
3047                }
3048
3049                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_G_P_P,
3050                    finderArgs, count);
3051
3052                closeSession(session);
3053            }
3054        }
3055
3056        return count.intValue();
3057    }
3058
3059    public int countByG_P_F(long groupId, boolean privateLayout,
3060        String friendlyURL) throws SystemException {
3061        Object[] finderArgs = new Object[] {
3062                new Long(groupId), Boolean.valueOf(privateLayout),
3063                
3064                friendlyURL
3065            };
3066
3067        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_G_P_F,
3068                finderArgs, this);
3069
3070        if (count == null) {
3071            Session session = null;
3072
3073            try {
3074                session = openSession();
3075
3076                StringBuilder query = new StringBuilder();
3077
3078                query.append("SELECT COUNT(layout) ");
3079                query.append("FROM Layout layout WHERE ");
3080
3081                query.append("layout.groupId = ?");
3082
3083                query.append(" AND ");
3084
3085                query.append("layout.privateLayout = ?");
3086
3087                query.append(" AND ");
3088
3089                if (friendlyURL == null) {
3090                    query.append("layout.friendlyURL IS NULL");
3091                }
3092                else {
3093                    query.append("layout.friendlyURL = ?");
3094                }
3095
3096                query.append(" ");
3097
3098                Query q = session.createQuery(query.toString());
3099
3100                QueryPos qPos = QueryPos.getInstance(q);
3101
3102                qPos.add(groupId);
3103
3104                qPos.add(privateLayout);
3105
3106                if (friendlyURL != null) {
3107                    qPos.add(friendlyURL);
3108                }
3109
3110                count = (Long)q.uniqueResult();
3111            }
3112            catch (Exception e) {
3113                throw processException(e);
3114            }
3115            finally {
3116                if (count == null) {
3117                    count = Long.valueOf(0);
3118                }
3119
3120                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_G_P_F,
3121                    finderArgs, count);
3122
3123                closeSession(session);
3124            }
3125        }
3126
3127        return count.intValue();
3128    }
3129
3130    public int countByG_P_T(long groupId, boolean privateLayout, String type)
3131        throws SystemException {
3132        Object[] finderArgs = new Object[] {
3133                new Long(groupId), Boolean.valueOf(privateLayout),
3134                
3135                type
3136            };
3137
3138        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_G_P_T,
3139                finderArgs, this);
3140
3141        if (count == null) {
3142            Session session = null;
3143
3144            try {
3145                session = openSession();
3146
3147                StringBuilder query = new StringBuilder();
3148
3149                query.append("SELECT COUNT(layout) ");
3150                query.append("FROM Layout layout WHERE ");
3151
3152                query.append("layout.groupId = ?");
3153
3154                query.append(" AND ");
3155
3156                query.append("layout.privateLayout = ?");
3157
3158                query.append(" AND ");
3159
3160                if (type == null) {
3161                    query.append("layout.type IS NULL");
3162                }
3163                else {
3164                    query.append("layout.type = ?");
3165                }
3166
3167                query.append(" ");
3168
3169                Query q = session.createQuery(query.toString());
3170
3171                QueryPos qPos = QueryPos.getInstance(q);
3172
3173                qPos.add(groupId);
3174
3175                qPos.add(privateLayout);
3176
3177                if (type != null) {
3178                    qPos.add(type);
3179                }
3180
3181                count = (Long)q.uniqueResult();
3182            }
3183            catch (Exception e) {
3184                throw processException(e);
3185            }
3186            finally {
3187                if (count == null) {
3188                    count = Long.valueOf(0);
3189                }
3190
3191                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_G_P_T,
3192                    finderArgs, count);
3193
3194                closeSession(session);
3195            }
3196        }
3197
3198        return count.intValue();
3199    }
3200
3201    public int countAll() throws SystemException {
3202        Object[] finderArgs = new Object[0];
3203
3204        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_ALL,
3205                finderArgs, this);
3206
3207        if (count == null) {
3208            Session session = null;
3209
3210            try {
3211                session = openSession();
3212
3213                Query q = session.createQuery(
3214                        "SELECT COUNT(layout) FROM Layout layout");
3215
3216                count = (Long)q.uniqueResult();
3217            }
3218            catch (Exception e) {
3219                throw processException(e);
3220            }
3221            finally {
3222                if (count == null) {
3223                    count = Long.valueOf(0);
3224                }
3225
3226                FinderCacheUtil.putResult(FINDER_PATH_COUNT_ALL, finderArgs,
3227                    count);
3228
3229                closeSession(session);
3230            }
3231        }
3232
3233        return count.intValue();
3234    }
3235
3236    public void afterPropertiesSet() {
3237        String[] listenerClassNames = StringUtil.split(GetterUtil.getString(
3238                    com.liferay.portal.util.PropsUtil.get(
3239                        "value.object.listener.com.liferay.portal.model.Layout")));
3240
3241        if (listenerClassNames.length > 0) {
3242            try {
3243                List<ModelListener<Layout>> listenersList = new ArrayList<ModelListener<Layout>>();
3244
3245                for (String listenerClassName : listenerClassNames) {
3246                    listenersList.add((ModelListener<Layout>)Class.forName(
3247                            listenerClassName).newInstance());
3248                }
3249
3250                listeners = listenersList.toArray(new ModelListener[listenersList.size()]);
3251            }
3252            catch (Exception e) {
3253                _log.error(e);
3254            }
3255        }
3256    }
3257
3258    @BeanReference(name = "com.liferay.portal.service.persistence.AccountPersistence.impl")
3259    protected com.liferay.portal.service.persistence.AccountPersistence accountPersistence;
3260    @BeanReference(name = "com.liferay.portal.service.persistence.AddressPersistence.impl")
3261    protected com.liferay.portal.service.persistence.AddressPersistence addressPersistence;
3262    @BeanReference(name = "com.liferay.portal.service.persistence.BrowserTrackerPersistence.impl")
3263    protected com.liferay.portal.service.persistence.BrowserTrackerPersistence browserTrackerPersistence;
3264    @BeanReference(name = "com.liferay.portal.service.persistence.ClassNamePersistence.impl")
3265    protected com.liferay.portal.service.persistence.ClassNamePersistence classNamePersistence;
3266    @BeanReference(name = "com.liferay.portal.service.persistence.CompanyPersistence.impl")
3267    protected com.liferay.portal.service.persistence.CompanyPersistence companyPersistence;
3268    @BeanReference(name = "com.liferay.portal.service.persistence.ContactPersistence.impl")
3269    protected com.liferay.portal.service.persistence.ContactPersistence contactPersistence;
3270    @BeanReference(name = "com.liferay.portal.service.persistence.CountryPersistence.impl")
3271    protected com.liferay.portal.service.persistence.CountryPersistence countryPersistence;
3272    @BeanReference(name = "com.liferay.portal.service.persistence.EmailAddressPersistence.impl")
3273    protected com.liferay.portal.service.persistence.EmailAddressPersistence emailAddressPersistence;
3274    @BeanReference(name = "com.liferay.portal.service.persistence.GroupPersistence.impl")
3275    protected com.liferay.portal.service.persistence.GroupPersistence groupPersistence;
3276    @BeanReference(name = "com.liferay.portal.service.persistence.ImagePersistence.impl")
3277    protected com.liferay.portal.service.persistence.ImagePersistence imagePersistence;
3278    @BeanReference(name = "com.liferay.portal.service.persistence.LayoutPersistence.impl")
3279    protected com.liferay.portal.service.persistence.LayoutPersistence layoutPersistence;
3280    @BeanReference(name = "com.liferay.portal.service.persistence.LayoutSetPersistence.impl")
3281    protected com.liferay.portal.service.persistence.LayoutSetPersistence layoutSetPersistence;
3282    @BeanReference(name = "com.liferay.portal.service.persistence.ListTypePersistence.impl")
3283    protected com.liferay.portal.service.persistence.ListTypePersistence listTypePersistence;
3284    @BeanReference(name = "com.liferay.portal.service.persistence.MembershipRequestPersistence.impl")
3285    protected com.liferay.portal.service.persistence.MembershipRequestPersistence membershipRequestPersistence;
3286    @BeanReference(name = "com.liferay.portal.service.persistence.OrganizationPersistence.impl")
3287    protected com.liferay.portal.service.persistence.OrganizationPersistence organizationPersistence;
3288    @BeanReference(name = "com.liferay.portal.service.persistence.OrgGroupPermissionPersistence.impl")
3289    protected com.liferay.portal.service.persistence.OrgGroupPermissionPersistence orgGroupPermissionPersistence;
3290    @BeanReference(name = "com.liferay.portal.service.persistence.OrgGroupRolePersistence.impl")
3291    protected com.liferay.portal.service.persistence.OrgGroupRolePersistence orgGroupRolePersistence;
3292    @BeanReference(name = "com.liferay.portal.service.persistence.OrgLaborPersistence.impl")
3293    protected com.liferay.portal.service.persistence.OrgLaborPersistence orgLaborPersistence;
3294    @BeanReference(name = "com.liferay.portal.service.persistence.PasswordPolicyPersistence.impl")
3295    protected com.liferay.portal.service.persistence.PasswordPolicyPersistence passwordPolicyPersistence;
3296    @BeanReference(name = "com.liferay.portal.service.persistence.PasswordPolicyRelPersistence.impl")
3297    protected com.liferay.portal.service.persistence.PasswordPolicyRelPersistence passwordPolicyRelPersistence;
3298    @BeanReference(name = "com.liferay.portal.service.persistence.PasswordTrackerPersistence.impl")
3299    protected com.liferay.portal.service.persistence.PasswordTrackerPersistence passwordTrackerPersistence;
3300    @BeanReference(name = "com.liferay.portal.service.persistence.PermissionPersistence.impl")
3301    protected com.liferay.portal.service.persistence.PermissionPersistence permissionPersistence;
3302    @BeanReference(name = "com.liferay.portal.service.persistence.PhonePersistence.impl")
3303    protected com.liferay.portal.service.persistence.PhonePersistence phonePersistence;
3304    @BeanReference(name = "com.liferay.portal.service.persistence.PluginSettingPersistence.impl")
3305    protected com.liferay.portal.service.persistence.PluginSettingPersistence pluginSettingPersistence;
3306    @BeanReference(name = "com.liferay.portal.service.persistence.PortletPersistence.impl")
3307    protected com.liferay.portal.service.persistence.PortletPersistence portletPersistence;
3308    @BeanReference(name = "com.liferay.portal.service.persistence.PortletItemPersistence.impl")
3309    protected com.liferay.portal.service.persistence.PortletItemPersistence portletItemPersistence;
3310    @BeanReference(name = "com.liferay.portal.service.persistence.PortletPreferencesPersistence.impl")
3311    protected com.liferay.portal.service.persistence.PortletPreferencesPersistence portletPreferencesPersistence;
3312    @BeanReference(name = "com.liferay.portal.service.persistence.RegionPersistence.impl")
3313    protected com.liferay.portal.service.persistence.RegionPersistence regionPersistence;
3314    @BeanReference(name = "com.liferay.portal.service.persistence.ReleasePersistence.impl")
3315    protected com.liferay.portal.service.persistence.ReleasePersistence releasePersistence;
3316    @BeanReference(name = "com.liferay.portal.service.persistence.ResourcePersistence.impl")
3317    protected com.liferay.portal.service.persistence.ResourcePersistence resourcePersistence;
3318    @BeanReference(name = "com.liferay.portal.service.persistence.ResourceActionPersistence.impl")
3319    protected com.liferay.portal.service.persistence.ResourceActionPersistence resourceActionPersistence;
3320    @BeanReference(name = "com.liferay.portal.service.persistence.ResourceCodePersistence.impl")
3321    protected com.liferay.portal.service.persistence.ResourceCodePersistence resourceCodePersistence;
3322    @BeanReference(name = "com.liferay.portal.service.persistence.ResourcePermissionPersistence.impl")
3323    protected com.liferay.portal.service.persistence.ResourcePermissionPersistence resourcePermissionPersistence;
3324    @BeanReference(name = "com.liferay.portal.service.persistence.RolePersistence.impl")
3325    protected com.liferay.portal.service.persistence.RolePersistence rolePersistence;
3326    @BeanReference(name = "com.liferay.portal.service.persistence.ServiceComponentPersistence.impl")
3327    protected com.liferay.portal.service.persistence.ServiceComponentPersistence serviceComponentPersistence;
3328    @BeanReference(name = "com.liferay.portal.service.persistence.ShardPersistence.impl")
3329    protected com.liferay.portal.service.persistence.ShardPersistence shardPersistence;
3330    @BeanReference(name = "com.liferay.portal.service.persistence.SubscriptionPersistence.impl")
3331    protected com.liferay.portal.service.persistence.SubscriptionPersistence subscriptionPersistence;
3332    @BeanReference(name = "com.liferay.portal.service.persistence.UserPersistence.impl")
3333    protected com.liferay.portal.service.persistence.UserPersistence userPersistence;
3334    @BeanReference(name = "com.liferay.portal.service.persistence.UserGroupPersistence.impl")
3335    protected com.liferay.portal.service.persistence.UserGroupPersistence userGroupPersistence;
3336    @BeanReference(name = "com.liferay.portal.service.persistence.UserGroupRolePersistence.impl")
3337    protected com.liferay.portal.service.persistence.UserGroupRolePersistence userGroupRolePersistence;
3338    @BeanReference(name = "com.liferay.portal.service.persistence.UserIdMapperPersistence.impl")
3339    protected com.liferay.portal.service.persistence.UserIdMapperPersistence userIdMapperPersistence;
3340    @BeanReference(name = "com.liferay.portal.service.persistence.UserTrackerPersistence.impl")
3341    protected com.liferay.portal.service.persistence.UserTrackerPersistence userTrackerPersistence;
3342    @BeanReference(name = "com.liferay.portal.service.persistence.UserTrackerPathPersistence.impl")
3343    protected com.liferay.portal.service.persistence.UserTrackerPathPersistence userTrackerPathPersistence;
3344    @BeanReference(name = "com.liferay.portal.service.persistence.WebDAVPropsPersistence.impl")
3345    protected com.liferay.portal.service.persistence.WebDAVPropsPersistence webDAVPropsPersistence;
3346    @BeanReference(name = "com.liferay.portal.service.persistence.WebsitePersistence.impl")
3347    protected com.liferay.portal.service.persistence.WebsitePersistence websitePersistence;
3348    @BeanReference(name = "com.liferay.portlet.documentlibrary.service.persistence.DLFolderPersistence.impl")
3349    protected com.liferay.portlet.documentlibrary.service.persistence.DLFolderPersistence dlFolderPersistence;
3350    @BeanReference(name = "com.liferay.portlet.journal.service.persistence.JournalContentSearchPersistence.impl")
3351    protected com.liferay.portlet.journal.service.persistence.JournalContentSearchPersistence journalContentSearchPersistence;
3352    @BeanReference(name = "com.liferay.portlet.messageboards.service.persistence.MBMessagePersistence.impl")
3353    protected com.liferay.portlet.messageboards.service.persistence.MBMessagePersistence mbMessagePersistence;
3354    @BeanReference(name = "com.liferay.portlet.ratings.service.persistence.RatingsStatsPersistence.impl")
3355    protected com.liferay.portlet.ratings.service.persistence.RatingsStatsPersistence ratingsStatsPersistence;
3356    @BeanReference(name = "com.liferay.portlet.tasks.service.persistence.TasksProposalPersistence.impl")
3357    protected com.liferay.portlet.tasks.service.persistence.TasksProposalPersistence tasksProposalPersistence;
3358    private static Log _log = LogFactoryUtil.getLog(LayoutPersistenceImpl.class);
3359}