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