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