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