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