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