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