1   /**
2    * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3    *
4    * Permission is hereby granted, free of charge, to any person obtaining a copy
5    * of this software and associated documentation files (the "Software"), to deal
6    * in the Software without restriction, including without limitation the rights
7    * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8    * copies of the Software, and to permit persons to whom the Software is
9    * furnished to do so, subject to the following conditions:
10   *
11   * The above copyright notice and this permission notice shall be included in
12   * all copies or substantial portions of the Software.
13   *
14   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20   * SOFTWARE.
21   */
22  
23  package com.liferay.portlet.shopping.service.persistence;
24  
25  import com.liferay.portal.SystemException;
26  import com.liferay.portal.kernel.annotation.BeanReference;
27  import com.liferay.portal.kernel.dao.orm.DynamicQuery;
28  import com.liferay.portal.kernel.dao.orm.FinderCacheUtil;
29  import com.liferay.portal.kernel.dao.orm.Query;
30  import com.liferay.portal.kernel.dao.orm.QueryPos;
31  import com.liferay.portal.kernel.dao.orm.QueryUtil;
32  import com.liferay.portal.kernel.dao.orm.Session;
33  import com.liferay.portal.kernel.log.Log;
34  import com.liferay.portal.kernel.log.LogFactoryUtil;
35  import com.liferay.portal.kernel.util.GetterUtil;
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.ModelListener;
40  import com.liferay.portal.service.persistence.BatchSessionUtil;
41  import com.liferay.portal.service.persistence.impl.BasePersistenceImpl;
42  
43  import com.liferay.portlet.shopping.NoSuchCategoryException;
44  import com.liferay.portlet.shopping.model.ShoppingCategory;
45  import com.liferay.portlet.shopping.model.impl.ShoppingCategoryImpl;
46  import com.liferay.portlet.shopping.model.impl.ShoppingCategoryModelImpl;
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="ShoppingCategoryPersistenceImpl.java.html"><b><i>View Source</i></b></a>
55   *
56   * @author Brian Wing Shun Chan
57   *
58   */
59  public class ShoppingCategoryPersistenceImpl extends BasePersistenceImpl
60      implements ShoppingCategoryPersistence {
61      public ShoppingCategory create(long categoryId) {
62          ShoppingCategory shoppingCategory = new ShoppingCategoryImpl();
63  
64          shoppingCategory.setNew(true);
65          shoppingCategory.setPrimaryKey(categoryId);
66  
67          return shoppingCategory;
68      }
69  
70      public ShoppingCategory remove(long categoryId)
71          throws NoSuchCategoryException, SystemException {
72          Session session = null;
73  
74          try {
75              session = openSession();
76  
77              ShoppingCategory shoppingCategory = (ShoppingCategory)session.get(ShoppingCategoryImpl.class,
78                      new Long(categoryId));
79  
80              if (shoppingCategory == null) {
81                  if (_log.isWarnEnabled()) {
82                      _log.warn(
83                          "No ShoppingCategory exists with the primary key " +
84                          categoryId);
85                  }
86  
87                  throw new NoSuchCategoryException(
88                      "No ShoppingCategory exists with the primary key " +
89                      categoryId);
90              }
91  
92              return remove(shoppingCategory);
93          }
94          catch (NoSuchCategoryException nsee) {
95              throw nsee;
96          }
97          catch (Exception e) {
98              throw processException(e);
99          }
100         finally {
101             closeSession(session);
102         }
103     }
104 
105     public ShoppingCategory remove(ShoppingCategory shoppingCategory)
106         throws SystemException {
107         for (ModelListener listener : listeners) {
108             listener.onBeforeRemove(shoppingCategory);
109         }
110 
111         shoppingCategory = removeImpl(shoppingCategory);
112 
113         for (ModelListener listener : listeners) {
114             listener.onAfterRemove(shoppingCategory);
115         }
116 
117         return shoppingCategory;
118     }
119 
120     protected ShoppingCategory removeImpl(ShoppingCategory shoppingCategory)
121         throws SystemException {
122         Session session = null;
123 
124         try {
125             session = openSession();
126 
127             if (BatchSessionUtil.isEnabled()) {
128                 Object staleObject = session.get(ShoppingCategoryImpl.class,
129                         shoppingCategory.getPrimaryKeyObj());
130 
131                 if (staleObject != null) {
132                     session.evict(staleObject);
133                 }
134             }
135 
136             session.delete(shoppingCategory);
137 
138             session.flush();
139 
140             return shoppingCategory;
141         }
142         catch (Exception e) {
143             throw processException(e);
144         }
145         finally {
146             closeSession(session);
147 
148             FinderCacheUtil.clearCache(ShoppingCategory.class.getName());
149         }
150     }
151 
152     /**
153      * @deprecated Use <code>update(ShoppingCategory shoppingCategory, boolean merge)</code>.
154      */
155     public ShoppingCategory update(ShoppingCategory shoppingCategory)
156         throws SystemException {
157         if (_log.isWarnEnabled()) {
158             _log.warn(
159                 "Using the deprecated update(ShoppingCategory shoppingCategory) method. Use update(ShoppingCategory shoppingCategory, boolean merge) instead.");
160         }
161 
162         return update(shoppingCategory, false);
163     }
164 
165     /**
166      * Add, update, or merge, the entity. This method also calls the model
167      * listeners to trigger the proper events associated with adding, deleting,
168      * or updating an entity.
169      *
170      * @param        shoppingCategory the entity to add, update, or merge
171      * @param        merge boolean value for whether to merge the entity. The
172      *                default value is false. Setting merge to true is more
173      *                expensive and should only be true when shoppingCategory is
174      *                transient. See LEP-5473 for a detailed discussion of this
175      *                method.
176      * @return        true if the portlet can be displayed via Ajax
177      */
178     public ShoppingCategory update(ShoppingCategory shoppingCategory,
179         boolean merge) throws SystemException {
180         boolean isNew = shoppingCategory.isNew();
181 
182         for (ModelListener listener : listeners) {
183             if (isNew) {
184                 listener.onBeforeCreate(shoppingCategory);
185             }
186             else {
187                 listener.onBeforeUpdate(shoppingCategory);
188             }
189         }
190 
191         shoppingCategory = updateImpl(shoppingCategory, merge);
192 
193         for (ModelListener listener : listeners) {
194             if (isNew) {
195                 listener.onAfterCreate(shoppingCategory);
196             }
197             else {
198                 listener.onAfterUpdate(shoppingCategory);
199             }
200         }
201 
202         return shoppingCategory;
203     }
204 
205     public ShoppingCategory updateImpl(
206         com.liferay.portlet.shopping.model.ShoppingCategory shoppingCategory,
207         boolean merge) throws SystemException {
208         Session session = null;
209 
210         try {
211             session = openSession();
212 
213             BatchSessionUtil.update(session, shoppingCategory, merge);
214 
215             shoppingCategory.setNew(false);
216 
217             return shoppingCategory;
218         }
219         catch (Exception e) {
220             throw processException(e);
221         }
222         finally {
223             closeSession(session);
224 
225             FinderCacheUtil.clearCache(ShoppingCategory.class.getName());
226         }
227     }
228 
229     public ShoppingCategory findByPrimaryKey(long categoryId)
230         throws NoSuchCategoryException, SystemException {
231         ShoppingCategory shoppingCategory = fetchByPrimaryKey(categoryId);
232 
233         if (shoppingCategory == null) {
234             if (_log.isWarnEnabled()) {
235                 _log.warn("No ShoppingCategory exists with the primary key " +
236                     categoryId);
237             }
238 
239             throw new NoSuchCategoryException(
240                 "No ShoppingCategory exists with the primary key " +
241                 categoryId);
242         }
243 
244         return shoppingCategory;
245     }
246 
247     public ShoppingCategory fetchByPrimaryKey(long categoryId)
248         throws SystemException {
249         Session session = null;
250 
251         try {
252             session = openSession();
253 
254             return (ShoppingCategory)session.get(ShoppingCategoryImpl.class,
255                 new Long(categoryId));
256         }
257         catch (Exception e) {
258             throw processException(e);
259         }
260         finally {
261             closeSession(session);
262         }
263     }
264 
265     public List<ShoppingCategory> findByGroupId(long groupId)
266         throws SystemException {
267         boolean finderClassNameCacheEnabled = ShoppingCategoryModelImpl.CACHE_ENABLED;
268         String finderClassName = ShoppingCategory.class.getName();
269         String finderMethodName = "findByGroupId";
270         String[] finderParams = new String[] { Long.class.getName() };
271         Object[] finderArgs = new Object[] { new Long(groupId) };
272 
273         Object result = null;
274 
275         if (finderClassNameCacheEnabled) {
276             result = FinderCacheUtil.getResult(finderClassName,
277                     finderMethodName, finderParams, finderArgs, this);
278         }
279 
280         if (result == null) {
281             Session session = null;
282 
283             try {
284                 session = openSession();
285 
286                 StringBuilder query = new StringBuilder();
287 
288                 query.append(
289                     "FROM com.liferay.portlet.shopping.model.ShoppingCategory WHERE ");
290 
291                 query.append("groupId = ?");
292 
293                 query.append(" ");
294 
295                 query.append("ORDER BY ");
296 
297                 query.append("parentCategoryId ASC, ");
298                 query.append("name ASC");
299 
300                 Query q = session.createQuery(query.toString());
301 
302                 QueryPos qPos = QueryPos.getInstance(q);
303 
304                 qPos.add(groupId);
305 
306                 List<ShoppingCategory> list = q.list();
307 
308                 FinderCacheUtil.putResult(finderClassNameCacheEnabled,
309                     finderClassName, finderMethodName, finderParams,
310                     finderArgs, list);
311 
312                 return list;
313             }
314             catch (Exception e) {
315                 throw processException(e);
316             }
317             finally {
318                 closeSession(session);
319             }
320         }
321         else {
322             return (List<ShoppingCategory>)result;
323         }
324     }
325 
326     public List<ShoppingCategory> findByGroupId(long groupId, int start, int end)
327         throws SystemException {
328         return findByGroupId(groupId, start, end, null);
329     }
330 
331     public List<ShoppingCategory> findByGroupId(long groupId, int start,
332         int end, OrderByComparator obc) throws SystemException {
333         boolean finderClassNameCacheEnabled = ShoppingCategoryModelImpl.CACHE_ENABLED;
334         String finderClassName = ShoppingCategory.class.getName();
335         String finderMethodName = "findByGroupId";
336         String[] finderParams = new String[] {
337                 Long.class.getName(),
338                 
339                 "java.lang.Integer", "java.lang.Integer",
340                 "com.liferay.portal.kernel.util.OrderByComparator"
341             };
342         Object[] finderArgs = new Object[] {
343                 new Long(groupId),
344                 
345                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
346             };
347 
348         Object result = null;
349 
350         if (finderClassNameCacheEnabled) {
351             result = FinderCacheUtil.getResult(finderClassName,
352                     finderMethodName, finderParams, finderArgs, this);
353         }
354 
355         if (result == null) {
356             Session session = null;
357 
358             try {
359                 session = openSession();
360 
361                 StringBuilder query = new StringBuilder();
362 
363                 query.append(
364                     "FROM com.liferay.portlet.shopping.model.ShoppingCategory WHERE ");
365 
366                 query.append("groupId = ?");
367 
368                 query.append(" ");
369 
370                 if (obc != null) {
371                     query.append("ORDER BY ");
372                     query.append(obc.getOrderBy());
373                 }
374 
375                 else {
376                     query.append("ORDER BY ");
377 
378                     query.append("parentCategoryId ASC, ");
379                     query.append("name ASC");
380                 }
381 
382                 Query q = session.createQuery(query.toString());
383 
384                 QueryPos qPos = QueryPos.getInstance(q);
385 
386                 qPos.add(groupId);
387 
388                 List<ShoppingCategory> list = (List<ShoppingCategory>)QueryUtil.list(q,
389                         getDialect(), start, end);
390 
391                 FinderCacheUtil.putResult(finderClassNameCacheEnabled,
392                     finderClassName, finderMethodName, finderParams,
393                     finderArgs, list);
394 
395                 return list;
396             }
397             catch (Exception e) {
398                 throw processException(e);
399             }
400             finally {
401                 closeSession(session);
402             }
403         }
404         else {
405             return (List<ShoppingCategory>)result;
406         }
407     }
408 
409     public ShoppingCategory findByGroupId_First(long groupId,
410         OrderByComparator obc) throws NoSuchCategoryException, SystemException {
411         List<ShoppingCategory> list = findByGroupId(groupId, 0, 1, obc);
412 
413         if (list.size() == 0) {
414             StringBuilder msg = new StringBuilder();
415 
416             msg.append("No ShoppingCategory exists with the key {");
417 
418             msg.append("groupId=" + groupId);
419 
420             msg.append(StringPool.CLOSE_CURLY_BRACE);
421 
422             throw new NoSuchCategoryException(msg.toString());
423         }
424         else {
425             return list.get(0);
426         }
427     }
428 
429     public ShoppingCategory findByGroupId_Last(long groupId,
430         OrderByComparator obc) throws NoSuchCategoryException, SystemException {
431         int count = countByGroupId(groupId);
432 
433         List<ShoppingCategory> list = findByGroupId(groupId, count - 1, count,
434                 obc);
435 
436         if (list.size() == 0) {
437             StringBuilder msg = new StringBuilder();
438 
439             msg.append("No ShoppingCategory exists with the key {");
440 
441             msg.append("groupId=" + groupId);
442 
443             msg.append(StringPool.CLOSE_CURLY_BRACE);
444 
445             throw new NoSuchCategoryException(msg.toString());
446         }
447         else {
448             return list.get(0);
449         }
450     }
451 
452     public ShoppingCategory[] findByGroupId_PrevAndNext(long categoryId,
453         long groupId, OrderByComparator obc)
454         throws NoSuchCategoryException, SystemException {
455         ShoppingCategory shoppingCategory = findByPrimaryKey(categoryId);
456 
457         int count = countByGroupId(groupId);
458 
459         Session session = null;
460 
461         try {
462             session = openSession();
463 
464             StringBuilder query = new StringBuilder();
465 
466             query.append(
467                 "FROM com.liferay.portlet.shopping.model.ShoppingCategory WHERE ");
468 
469             query.append("groupId = ?");
470 
471             query.append(" ");
472 
473             if (obc != null) {
474                 query.append("ORDER BY ");
475                 query.append(obc.getOrderBy());
476             }
477 
478             else {
479                 query.append("ORDER BY ");
480 
481                 query.append("parentCategoryId ASC, ");
482                 query.append("name ASC");
483             }
484 
485             Query q = session.createQuery(query.toString());
486 
487             QueryPos qPos = QueryPos.getInstance(q);
488 
489             qPos.add(groupId);
490 
491             Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
492                     shoppingCategory);
493 
494             ShoppingCategory[] array = new ShoppingCategoryImpl[3];
495 
496             array[0] = (ShoppingCategory)objArray[0];
497             array[1] = (ShoppingCategory)objArray[1];
498             array[2] = (ShoppingCategory)objArray[2];
499 
500             return array;
501         }
502         catch (Exception e) {
503             throw processException(e);
504         }
505         finally {
506             closeSession(session);
507         }
508     }
509 
510     public List<ShoppingCategory> findByG_P(long groupId, long parentCategoryId)
511         throws SystemException {
512         boolean finderClassNameCacheEnabled = ShoppingCategoryModelImpl.CACHE_ENABLED;
513         String finderClassName = ShoppingCategory.class.getName();
514         String finderMethodName = "findByG_P";
515         String[] finderParams = new String[] {
516                 Long.class.getName(), Long.class.getName()
517             };
518         Object[] finderArgs = new Object[] {
519                 new Long(groupId), new Long(parentCategoryId)
520             };
521 
522         Object result = null;
523 
524         if (finderClassNameCacheEnabled) {
525             result = FinderCacheUtil.getResult(finderClassName,
526                     finderMethodName, finderParams, finderArgs, this);
527         }
528 
529         if (result == null) {
530             Session session = null;
531 
532             try {
533                 session = openSession();
534 
535                 StringBuilder query = new StringBuilder();
536 
537                 query.append(
538                     "FROM com.liferay.portlet.shopping.model.ShoppingCategory WHERE ");
539 
540                 query.append("groupId = ?");
541 
542                 query.append(" AND ");
543 
544                 query.append("parentCategoryId = ?");
545 
546                 query.append(" ");
547 
548                 query.append("ORDER BY ");
549 
550                 query.append("parentCategoryId ASC, ");
551                 query.append("name ASC");
552 
553                 Query q = session.createQuery(query.toString());
554 
555                 QueryPos qPos = QueryPos.getInstance(q);
556 
557                 qPos.add(groupId);
558 
559                 qPos.add(parentCategoryId);
560 
561                 List<ShoppingCategory> list = q.list();
562 
563                 FinderCacheUtil.putResult(finderClassNameCacheEnabled,
564                     finderClassName, finderMethodName, finderParams,
565                     finderArgs, list);
566 
567                 return list;
568             }
569             catch (Exception e) {
570                 throw processException(e);
571             }
572             finally {
573                 closeSession(session);
574             }
575         }
576         else {
577             return (List<ShoppingCategory>)result;
578         }
579     }
580 
581     public List<ShoppingCategory> findByG_P(long groupId,
582         long parentCategoryId, int start, int end) throws SystemException {
583         return findByG_P(groupId, parentCategoryId, start, end, null);
584     }
585 
586     public List<ShoppingCategory> findByG_P(long groupId,
587         long parentCategoryId, int start, int end, OrderByComparator obc)
588         throws SystemException {
589         boolean finderClassNameCacheEnabled = ShoppingCategoryModelImpl.CACHE_ENABLED;
590         String finderClassName = ShoppingCategory.class.getName();
591         String finderMethodName = "findByG_P";
592         String[] finderParams = new String[] {
593                 Long.class.getName(), Long.class.getName(),
594                 
595                 "java.lang.Integer", "java.lang.Integer",
596                 "com.liferay.portal.kernel.util.OrderByComparator"
597             };
598         Object[] finderArgs = new Object[] {
599                 new Long(groupId), new Long(parentCategoryId),
600                 
601                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
602             };
603 
604         Object result = null;
605 
606         if (finderClassNameCacheEnabled) {
607             result = FinderCacheUtil.getResult(finderClassName,
608                     finderMethodName, finderParams, finderArgs, this);
609         }
610 
611         if (result == null) {
612             Session session = null;
613 
614             try {
615                 session = openSession();
616 
617                 StringBuilder query = new StringBuilder();
618 
619                 query.append(
620                     "FROM com.liferay.portlet.shopping.model.ShoppingCategory WHERE ");
621 
622                 query.append("groupId = ?");
623 
624                 query.append(" AND ");
625 
626                 query.append("parentCategoryId = ?");
627 
628                 query.append(" ");
629 
630                 if (obc != null) {
631                     query.append("ORDER BY ");
632                     query.append(obc.getOrderBy());
633                 }
634 
635                 else {
636                     query.append("ORDER BY ");
637 
638                     query.append("parentCategoryId ASC, ");
639                     query.append("name ASC");
640                 }
641 
642                 Query q = session.createQuery(query.toString());
643 
644                 QueryPos qPos = QueryPos.getInstance(q);
645 
646                 qPos.add(groupId);
647 
648                 qPos.add(parentCategoryId);
649 
650                 List<ShoppingCategory> list = (List<ShoppingCategory>)QueryUtil.list(q,
651                         getDialect(), start, end);
652 
653                 FinderCacheUtil.putResult(finderClassNameCacheEnabled,
654                     finderClassName, finderMethodName, finderParams,
655                     finderArgs, list);
656 
657                 return list;
658             }
659             catch (Exception e) {
660                 throw processException(e);
661             }
662             finally {
663                 closeSession(session);
664             }
665         }
666         else {
667             return (List<ShoppingCategory>)result;
668         }
669     }
670 
671     public ShoppingCategory findByG_P_First(long groupId,
672         long parentCategoryId, OrderByComparator obc)
673         throws NoSuchCategoryException, SystemException {
674         List<ShoppingCategory> list = findByG_P(groupId, parentCategoryId, 0,
675                 1, obc);
676 
677         if (list.size() == 0) {
678             StringBuilder msg = new StringBuilder();
679 
680             msg.append("No ShoppingCategory exists with the key {");
681 
682             msg.append("groupId=" + groupId);
683 
684             msg.append(", ");
685             msg.append("parentCategoryId=" + parentCategoryId);
686 
687             msg.append(StringPool.CLOSE_CURLY_BRACE);
688 
689             throw new NoSuchCategoryException(msg.toString());
690         }
691         else {
692             return list.get(0);
693         }
694     }
695 
696     public ShoppingCategory findByG_P_Last(long groupId, long parentCategoryId,
697         OrderByComparator obc) throws NoSuchCategoryException, SystemException {
698         int count = countByG_P(groupId, parentCategoryId);
699 
700         List<ShoppingCategory> list = findByG_P(groupId, parentCategoryId,
701                 count - 1, count, obc);
702 
703         if (list.size() == 0) {
704             StringBuilder msg = new StringBuilder();
705 
706             msg.append("No ShoppingCategory exists with the key {");
707 
708             msg.append("groupId=" + groupId);
709 
710             msg.append(", ");
711             msg.append("parentCategoryId=" + parentCategoryId);
712 
713             msg.append(StringPool.CLOSE_CURLY_BRACE);
714 
715             throw new NoSuchCategoryException(msg.toString());
716         }
717         else {
718             return list.get(0);
719         }
720     }
721 
722     public ShoppingCategory[] findByG_P_PrevAndNext(long categoryId,
723         long groupId, long parentCategoryId, OrderByComparator obc)
724         throws NoSuchCategoryException, SystemException {
725         ShoppingCategory shoppingCategory = findByPrimaryKey(categoryId);
726 
727         int count = countByG_P(groupId, parentCategoryId);
728 
729         Session session = null;
730 
731         try {
732             session = openSession();
733 
734             StringBuilder query = new StringBuilder();
735 
736             query.append(
737                 "FROM com.liferay.portlet.shopping.model.ShoppingCategory WHERE ");
738 
739             query.append("groupId = ?");
740 
741             query.append(" AND ");
742 
743             query.append("parentCategoryId = ?");
744 
745             query.append(" ");
746 
747             if (obc != null) {
748                 query.append("ORDER BY ");
749                 query.append(obc.getOrderBy());
750             }
751 
752             else {
753                 query.append("ORDER BY ");
754 
755                 query.append("parentCategoryId ASC, ");
756                 query.append("name ASC");
757             }
758 
759             Query q = session.createQuery(query.toString());
760 
761             QueryPos qPos = QueryPos.getInstance(q);
762 
763             qPos.add(groupId);
764 
765             qPos.add(parentCategoryId);
766 
767             Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
768                     shoppingCategory);
769 
770             ShoppingCategory[] array = new ShoppingCategoryImpl[3];
771 
772             array[0] = (ShoppingCategory)objArray[0];
773             array[1] = (ShoppingCategory)objArray[1];
774             array[2] = (ShoppingCategory)objArray[2];
775 
776             return array;
777         }
778         catch (Exception e) {
779             throw processException(e);
780         }
781         finally {
782             closeSession(session);
783         }
784     }
785 
786     public List<Object> findWithDynamicQuery(DynamicQuery dynamicQuery)
787         throws SystemException {
788         Session session = null;
789 
790         try {
791             session = openSession();
792 
793             dynamicQuery.compile(session);
794 
795             return dynamicQuery.list();
796         }
797         catch (Exception e) {
798             throw processException(e);
799         }
800         finally {
801             closeSession(session);
802         }
803     }
804 
805     public List<Object> findWithDynamicQuery(DynamicQuery dynamicQuery,
806         int start, int end) throws SystemException {
807         Session session = null;
808 
809         try {
810             session = openSession();
811 
812             dynamicQuery.setLimit(start, end);
813 
814             dynamicQuery.compile(session);
815 
816             return dynamicQuery.list();
817         }
818         catch (Exception e) {
819             throw processException(e);
820         }
821         finally {
822             closeSession(session);
823         }
824     }
825 
826     public List<ShoppingCategory> findAll() throws SystemException {
827         return findAll(QueryUtil.ALL_POS, QueryUtil.ALL_POS, null);
828     }
829 
830     public List<ShoppingCategory> findAll(int start, int end)
831         throws SystemException {
832         return findAll(start, end, null);
833     }
834 
835     public List<ShoppingCategory> findAll(int start, int end,
836         OrderByComparator obc) throws SystemException {
837         boolean finderClassNameCacheEnabled = ShoppingCategoryModelImpl.CACHE_ENABLED;
838         String finderClassName = ShoppingCategory.class.getName();
839         String finderMethodName = "findAll";
840         String[] finderParams = new String[] {
841                 "java.lang.Integer", "java.lang.Integer",
842                 "com.liferay.portal.kernel.util.OrderByComparator"
843             };
844         Object[] finderArgs = new Object[] {
845                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
846             };
847 
848         Object result = null;
849 
850         if (finderClassNameCacheEnabled) {
851             result = FinderCacheUtil.getResult(finderClassName,
852                     finderMethodName, finderParams, finderArgs, this);
853         }
854 
855         if (result == null) {
856             Session session = null;
857 
858             try {
859                 session = openSession();
860 
861                 StringBuilder query = new StringBuilder();
862 
863                 query.append(
864                     "FROM com.liferay.portlet.shopping.model.ShoppingCategory ");
865 
866                 if (obc != null) {
867                     query.append("ORDER BY ");
868                     query.append(obc.getOrderBy());
869                 }
870 
871                 else {
872                     query.append("ORDER BY ");
873 
874                     query.append("parentCategoryId ASC, ");
875                     query.append("name ASC");
876                 }
877 
878                 Query q = session.createQuery(query.toString());
879 
880                 List<ShoppingCategory> list = null;
881 
882                 if (obc == null) {
883                     list = (List<ShoppingCategory>)QueryUtil.list(q,
884                             getDialect(), start, end, false);
885 
886                     Collections.sort(list);
887                 }
888                 else {
889                     list = (List<ShoppingCategory>)QueryUtil.list(q,
890                             getDialect(), start, end);
891                 }
892 
893                 FinderCacheUtil.putResult(finderClassNameCacheEnabled,
894                     finderClassName, finderMethodName, finderParams,
895                     finderArgs, list);
896 
897                 return list;
898             }
899             catch (Exception e) {
900                 throw processException(e);
901             }
902             finally {
903                 closeSession(session);
904             }
905         }
906         else {
907             return (List<ShoppingCategory>)result;
908         }
909     }
910 
911     public void removeByGroupId(long groupId) throws SystemException {
912         for (ShoppingCategory shoppingCategory : findByGroupId(groupId)) {
913             remove(shoppingCategory);
914         }
915     }
916 
917     public void removeByG_P(long groupId, long parentCategoryId)
918         throws SystemException {
919         for (ShoppingCategory shoppingCategory : findByG_P(groupId,
920                 parentCategoryId)) {
921             remove(shoppingCategory);
922         }
923     }
924 
925     public void removeAll() throws SystemException {
926         for (ShoppingCategory shoppingCategory : findAll()) {
927             remove(shoppingCategory);
928         }
929     }
930 
931     public int countByGroupId(long groupId) throws SystemException {
932         boolean finderClassNameCacheEnabled = ShoppingCategoryModelImpl.CACHE_ENABLED;
933         String finderClassName = ShoppingCategory.class.getName();
934         String finderMethodName = "countByGroupId";
935         String[] finderParams = new String[] { Long.class.getName() };
936         Object[] finderArgs = new Object[] { new Long(groupId) };
937 
938         Object result = null;
939 
940         if (finderClassNameCacheEnabled) {
941             result = FinderCacheUtil.getResult(finderClassName,
942                     finderMethodName, finderParams, finderArgs, this);
943         }
944 
945         if (result == null) {
946             Session session = null;
947 
948             try {
949                 session = openSession();
950 
951                 StringBuilder query = new StringBuilder();
952 
953                 query.append("SELECT COUNT(*) ");
954                 query.append(
955                     "FROM com.liferay.portlet.shopping.model.ShoppingCategory WHERE ");
956 
957                 query.append("groupId = ?");
958 
959                 query.append(" ");
960 
961                 Query q = session.createQuery(query.toString());
962 
963                 QueryPos qPos = QueryPos.getInstance(q);
964 
965                 qPos.add(groupId);
966 
967                 Long count = null;
968 
969                 Iterator<Long> itr = q.list().iterator();
970 
971                 if (itr.hasNext()) {
972                     count = itr.next();
973                 }
974 
975                 if (count == null) {
976                     count = new Long(0);
977                 }
978 
979                 FinderCacheUtil.putResult(finderClassNameCacheEnabled,
980                     finderClassName, finderMethodName, finderParams,
981                     finderArgs, count);
982 
983                 return count.intValue();
984             }
985             catch (Exception e) {
986                 throw processException(e);
987             }
988             finally {
989                 closeSession(session);
990             }
991         }
992         else {
993             return ((Long)result).intValue();
994         }
995     }
996 
997     public int countByG_P(long groupId, long parentCategoryId)
998         throws SystemException {
999         boolean finderClassNameCacheEnabled = ShoppingCategoryModelImpl.CACHE_ENABLED;
1000        String finderClassName = ShoppingCategory.class.getName();
1001        String finderMethodName = "countByG_P";
1002        String[] finderParams = new String[] {
1003                Long.class.getName(), Long.class.getName()
1004            };
1005        Object[] finderArgs = new Object[] {
1006                new Long(groupId), new Long(parentCategoryId)
1007            };
1008
1009        Object result = null;
1010
1011        if (finderClassNameCacheEnabled) {
1012            result = FinderCacheUtil.getResult(finderClassName,
1013                    finderMethodName, finderParams, finderArgs, this);
1014        }
1015
1016        if (result == null) {
1017            Session session = null;
1018
1019            try {
1020                session = openSession();
1021
1022                StringBuilder query = new StringBuilder();
1023
1024                query.append("SELECT COUNT(*) ");
1025                query.append(
1026                    "FROM com.liferay.portlet.shopping.model.ShoppingCategory WHERE ");
1027
1028                query.append("groupId = ?");
1029
1030                query.append(" AND ");
1031
1032                query.append("parentCategoryId = ?");
1033
1034                query.append(" ");
1035
1036                Query q = session.createQuery(query.toString());
1037
1038                QueryPos qPos = QueryPos.getInstance(q);
1039
1040                qPos.add(groupId);
1041
1042                qPos.add(parentCategoryId);
1043
1044                Long count = null;
1045
1046                Iterator<Long> itr = q.list().iterator();
1047
1048                if (itr.hasNext()) {
1049                    count = itr.next();
1050                }
1051
1052                if (count == null) {
1053                    count = new Long(0);
1054                }
1055
1056                FinderCacheUtil.putResult(finderClassNameCacheEnabled,
1057                    finderClassName, finderMethodName, finderParams,
1058                    finderArgs, count);
1059
1060                return count.intValue();
1061            }
1062            catch (Exception e) {
1063                throw processException(e);
1064            }
1065            finally {
1066                closeSession(session);
1067            }
1068        }
1069        else {
1070            return ((Long)result).intValue();
1071        }
1072    }
1073
1074    public int countAll() throws SystemException {
1075        boolean finderClassNameCacheEnabled = ShoppingCategoryModelImpl.CACHE_ENABLED;
1076        String finderClassName = ShoppingCategory.class.getName();
1077        String finderMethodName = "countAll";
1078        String[] finderParams = new String[] {  };
1079        Object[] finderArgs = new Object[] {  };
1080
1081        Object result = null;
1082
1083        if (finderClassNameCacheEnabled) {
1084            result = FinderCacheUtil.getResult(finderClassName,
1085                    finderMethodName, finderParams, finderArgs, this);
1086        }
1087
1088        if (result == null) {
1089            Session session = null;
1090
1091            try {
1092                session = openSession();
1093
1094                Query q = session.createQuery(
1095                        "SELECT COUNT(*) FROM com.liferay.portlet.shopping.model.ShoppingCategory");
1096
1097                Long count = null;
1098
1099                Iterator<Long> itr = q.list().iterator();
1100
1101                if (itr.hasNext()) {
1102                    count = itr.next();
1103                }
1104
1105                if (count == null) {
1106                    count = new Long(0);
1107                }
1108
1109                FinderCacheUtil.putResult(finderClassNameCacheEnabled,
1110                    finderClassName, finderMethodName, finderParams,
1111                    finderArgs, count);
1112
1113                return count.intValue();
1114            }
1115            catch (Exception e) {
1116                throw processException(e);
1117            }
1118            finally {
1119                closeSession(session);
1120            }
1121        }
1122        else {
1123            return ((Long)result).intValue();
1124        }
1125    }
1126
1127    public void afterPropertiesSet() {
1128        String[] listenerClassNames = StringUtil.split(GetterUtil.getString(
1129                    com.liferay.portal.util.PropsUtil.get(
1130                        "value.object.listener.com.liferay.portlet.shopping.model.ShoppingCategory")));
1131
1132        if (listenerClassNames.length > 0) {
1133            try {
1134                List<ModelListener> listenersList = new ArrayList<ModelListener>();
1135
1136                for (String listenerClassName : listenerClassNames) {
1137                    listenersList.add((ModelListener)Class.forName(
1138                            listenerClassName).newInstance());
1139                }
1140
1141                listeners = listenersList.toArray(new ModelListener[listenersList.size()]);
1142            }
1143            catch (Exception e) {
1144                _log.error(e);
1145            }
1146        }
1147    }
1148
1149    @BeanReference(name = "com.liferay.portlet.shopping.service.persistence.ShoppingCartPersistence.impl")
1150    protected com.liferay.portlet.shopping.service.persistence.ShoppingCartPersistence shoppingCartPersistence;
1151    @BeanReference(name = "com.liferay.portlet.shopping.service.persistence.ShoppingCategoryPersistence.impl")
1152    protected com.liferay.portlet.shopping.service.persistence.ShoppingCategoryPersistence shoppingCategoryPersistence;
1153    @BeanReference(name = "com.liferay.portlet.shopping.service.persistence.ShoppingCouponPersistence.impl")
1154    protected com.liferay.portlet.shopping.service.persistence.ShoppingCouponPersistence shoppingCouponPersistence;
1155    @BeanReference(name = "com.liferay.portlet.shopping.service.persistence.ShoppingItemPersistence.impl")
1156    protected com.liferay.portlet.shopping.service.persistence.ShoppingItemPersistence shoppingItemPersistence;
1157    @BeanReference(name = "com.liferay.portlet.shopping.service.persistence.ShoppingItemFieldPersistence.impl")
1158    protected com.liferay.portlet.shopping.service.persistence.ShoppingItemFieldPersistence shoppingItemFieldPersistence;
1159    @BeanReference(name = "com.liferay.portlet.shopping.service.persistence.ShoppingItemPricePersistence.impl")
1160    protected com.liferay.portlet.shopping.service.persistence.ShoppingItemPricePersistence shoppingItemPricePersistence;
1161    @BeanReference(name = "com.liferay.portlet.shopping.service.persistence.ShoppingOrderPersistence.impl")
1162    protected com.liferay.portlet.shopping.service.persistence.ShoppingOrderPersistence shoppingOrderPersistence;
1163    @BeanReference(name = "com.liferay.portlet.shopping.service.persistence.ShoppingOrderItemPersistence.impl")
1164    protected com.liferay.portlet.shopping.service.persistence.ShoppingOrderItemPersistence shoppingOrderItemPersistence;
1165    @BeanReference(name = "com.liferay.portal.service.persistence.ResourcePersistence.impl")
1166    protected com.liferay.portal.service.persistence.ResourcePersistence resourcePersistence;
1167    @BeanReference(name = "com.liferay.portal.service.persistence.UserPersistence.impl")
1168    protected com.liferay.portal.service.persistence.UserPersistence userPersistence;
1169    private static Log _log = LogFactoryUtil.getLog(ShoppingCategoryPersistenceImpl.class);
1170}