1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * This library is free software; you can redistribute it and/or modify it under
5    * the terms of the GNU Lesser General Public License as published by the Free
6    * Software Foundation; either version 2.1 of the License, or (at your option)
7    * any later version.
8    *
9    * This library is distributed in the hope that it will be useful, but WITHOUT
10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11   * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12   * details.
13   */
14  
15  package com.liferay.portlet.asset.service.persistence;
16  
17  import com.liferay.portal.NoSuchModelException;
18  import com.liferay.portal.kernel.annotation.BeanReference;
19  import com.liferay.portal.kernel.cache.CacheRegistry;
20  import com.liferay.portal.kernel.dao.orm.DynamicQuery;
21  import com.liferay.portal.kernel.dao.orm.EntityCacheUtil;
22  import com.liferay.portal.kernel.dao.orm.FinderCacheUtil;
23  import com.liferay.portal.kernel.dao.orm.FinderPath;
24  import com.liferay.portal.kernel.dao.orm.Query;
25  import com.liferay.portal.kernel.dao.orm.QueryPos;
26  import com.liferay.portal.kernel.dao.orm.QueryUtil;
27  import com.liferay.portal.kernel.dao.orm.Session;
28  import com.liferay.portal.kernel.exception.SystemException;
29  import com.liferay.portal.kernel.log.Log;
30  import com.liferay.portal.kernel.log.LogFactoryUtil;
31  import com.liferay.portal.kernel.util.GetterUtil;
32  import com.liferay.portal.kernel.util.OrderByComparator;
33  import com.liferay.portal.kernel.util.StringBundler;
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.service.persistence.BatchSessionUtil;
38  import com.liferay.portal.service.persistence.impl.BasePersistenceImpl;
39  
40  import com.liferay.portlet.asset.NoSuchTagStatsException;
41  import com.liferay.portlet.asset.model.AssetTagStats;
42  import com.liferay.portlet.asset.model.impl.AssetTagStatsImpl;
43  import com.liferay.portlet.asset.model.impl.AssetTagStatsModelImpl;
44  
45  import java.io.Serializable;
46  
47  import java.util.ArrayList;
48  import java.util.Collections;
49  import java.util.List;
50  
51  /**
52   * <a href="AssetTagStatsPersistenceImpl.java.html"><b><i>View Source</i></b></a>
53   *
54   * <p>
55   * ServiceBuilder generated this class. Modifications in this class will be
56   * overwritten the next time is generated.
57   * </p>
58   *
59   * @author    Brian Wing Shun Chan
60   * @see       AssetTagStatsPersistence
61   * @see       AssetTagStatsUtil
62   * @generated
63   */
64  public class AssetTagStatsPersistenceImpl extends BasePersistenceImpl<AssetTagStats>
65      implements AssetTagStatsPersistence {
66      public static final String FINDER_CLASS_NAME_ENTITY = AssetTagStatsImpl.class.getName();
67      public static final String FINDER_CLASS_NAME_LIST = FINDER_CLASS_NAME_ENTITY +
68          ".List";
69      public static final FinderPath FINDER_PATH_FIND_BY_TAGID = new FinderPath(AssetTagStatsModelImpl.ENTITY_CACHE_ENABLED,
70              AssetTagStatsModelImpl.FINDER_CACHE_ENABLED,
71              FINDER_CLASS_NAME_LIST, "findByTagId",
72              new String[] { Long.class.getName() });
73      public static final FinderPath FINDER_PATH_FIND_BY_OBC_TAGID = new FinderPath(AssetTagStatsModelImpl.ENTITY_CACHE_ENABLED,
74              AssetTagStatsModelImpl.FINDER_CACHE_ENABLED,
75              FINDER_CLASS_NAME_LIST, "findByTagId",
76              new String[] {
77                  Long.class.getName(),
78                  
79              "java.lang.Integer", "java.lang.Integer",
80                  "com.liferay.portal.kernel.util.OrderByComparator"
81              });
82      public static final FinderPath FINDER_PATH_COUNT_BY_TAGID = new FinderPath(AssetTagStatsModelImpl.ENTITY_CACHE_ENABLED,
83              AssetTagStatsModelImpl.FINDER_CACHE_ENABLED,
84              FINDER_CLASS_NAME_LIST, "countByTagId",
85              new String[] { Long.class.getName() });
86      public static final FinderPath FINDER_PATH_FIND_BY_CLASSNAMEID = new FinderPath(AssetTagStatsModelImpl.ENTITY_CACHE_ENABLED,
87              AssetTagStatsModelImpl.FINDER_CACHE_ENABLED,
88              FINDER_CLASS_NAME_LIST, "findByClassNameId",
89              new String[] { Long.class.getName() });
90      public static final FinderPath FINDER_PATH_FIND_BY_OBC_CLASSNAMEID = new FinderPath(AssetTagStatsModelImpl.ENTITY_CACHE_ENABLED,
91              AssetTagStatsModelImpl.FINDER_CACHE_ENABLED,
92              FINDER_CLASS_NAME_LIST, "findByClassNameId",
93              new String[] {
94                  Long.class.getName(),
95                  
96              "java.lang.Integer", "java.lang.Integer",
97                  "com.liferay.portal.kernel.util.OrderByComparator"
98              });
99      public static final FinderPath FINDER_PATH_COUNT_BY_CLASSNAMEID = new FinderPath(AssetTagStatsModelImpl.ENTITY_CACHE_ENABLED,
100             AssetTagStatsModelImpl.FINDER_CACHE_ENABLED,
101             FINDER_CLASS_NAME_LIST, "countByClassNameId",
102             new String[] { Long.class.getName() });
103     public static final FinderPath FINDER_PATH_FETCH_BY_T_C = new FinderPath(AssetTagStatsModelImpl.ENTITY_CACHE_ENABLED,
104             AssetTagStatsModelImpl.FINDER_CACHE_ENABLED,
105             FINDER_CLASS_NAME_ENTITY, "fetchByT_C",
106             new String[] { Long.class.getName(), Long.class.getName() });
107     public static final FinderPath FINDER_PATH_COUNT_BY_T_C = new FinderPath(AssetTagStatsModelImpl.ENTITY_CACHE_ENABLED,
108             AssetTagStatsModelImpl.FINDER_CACHE_ENABLED,
109             FINDER_CLASS_NAME_LIST, "countByT_C",
110             new String[] { Long.class.getName(), Long.class.getName() });
111     public static final FinderPath FINDER_PATH_FIND_ALL = new FinderPath(AssetTagStatsModelImpl.ENTITY_CACHE_ENABLED,
112             AssetTagStatsModelImpl.FINDER_CACHE_ENABLED,
113             FINDER_CLASS_NAME_LIST, "findAll", new String[0]);
114     public static final FinderPath FINDER_PATH_COUNT_ALL = new FinderPath(AssetTagStatsModelImpl.ENTITY_CACHE_ENABLED,
115             AssetTagStatsModelImpl.FINDER_CACHE_ENABLED,
116             FINDER_CLASS_NAME_LIST, "countAll", new String[0]);
117 
118     public void cacheResult(AssetTagStats assetTagStats) {
119         EntityCacheUtil.putResult(AssetTagStatsModelImpl.ENTITY_CACHE_ENABLED,
120             AssetTagStatsImpl.class, assetTagStats.getPrimaryKey(),
121             assetTagStats);
122 
123         FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_T_C,
124             new Object[] {
125                 new Long(assetTagStats.getTagId()),
126                 new Long(assetTagStats.getClassNameId())
127             }, assetTagStats);
128     }
129 
130     public void cacheResult(List<AssetTagStats> assetTagStatses) {
131         for (AssetTagStats assetTagStats : assetTagStatses) {
132             if (EntityCacheUtil.getResult(
133                         AssetTagStatsModelImpl.ENTITY_CACHE_ENABLED,
134                         AssetTagStatsImpl.class, assetTagStats.getPrimaryKey(),
135                         this) == null) {
136                 cacheResult(assetTagStats);
137             }
138         }
139     }
140 
141     public void clearCache() {
142         CacheRegistry.clear(AssetTagStatsImpl.class.getName());
143         EntityCacheUtil.clearCache(AssetTagStatsImpl.class.getName());
144         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_ENTITY);
145         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
146     }
147 
148     public AssetTagStats create(long tagStatsId) {
149         AssetTagStats assetTagStats = new AssetTagStatsImpl();
150 
151         assetTagStats.setNew(true);
152         assetTagStats.setPrimaryKey(tagStatsId);
153 
154         return assetTagStats;
155     }
156 
157     public AssetTagStats remove(Serializable primaryKey)
158         throws NoSuchModelException, SystemException {
159         return remove(((Long)primaryKey).longValue());
160     }
161 
162     public AssetTagStats remove(long tagStatsId)
163         throws NoSuchTagStatsException, SystemException {
164         Session session = null;
165 
166         try {
167             session = openSession();
168 
169             AssetTagStats assetTagStats = (AssetTagStats)session.get(AssetTagStatsImpl.class,
170                     new Long(tagStatsId));
171 
172             if (assetTagStats == null) {
173                 if (_log.isWarnEnabled()) {
174                     _log.warn(_NO_SUCH_ENTITY_WITH_PRIMARY_KEY + tagStatsId);
175                 }
176 
177                 throw new NoSuchTagStatsException(_NO_SUCH_ENTITY_WITH_PRIMARY_KEY +
178                     tagStatsId);
179             }
180 
181             return remove(assetTagStats);
182         }
183         catch (NoSuchTagStatsException nsee) {
184             throw nsee;
185         }
186         catch (Exception e) {
187             throw processException(e);
188         }
189         finally {
190             closeSession(session);
191         }
192     }
193 
194     public AssetTagStats remove(AssetTagStats assetTagStats)
195         throws SystemException {
196         for (ModelListener<AssetTagStats> listener : listeners) {
197             listener.onBeforeRemove(assetTagStats);
198         }
199 
200         assetTagStats = removeImpl(assetTagStats);
201 
202         for (ModelListener<AssetTagStats> listener : listeners) {
203             listener.onAfterRemove(assetTagStats);
204         }
205 
206         return assetTagStats;
207     }
208 
209     protected AssetTagStats removeImpl(AssetTagStats assetTagStats)
210         throws SystemException {
211         assetTagStats = toUnwrappedModel(assetTagStats);
212 
213         Session session = null;
214 
215         try {
216             session = openSession();
217 
218             if (assetTagStats.isCachedModel() || BatchSessionUtil.isEnabled()) {
219                 Object staleObject = session.get(AssetTagStatsImpl.class,
220                         assetTagStats.getPrimaryKeyObj());
221 
222                 if (staleObject != null) {
223                     session.evict(staleObject);
224                 }
225             }
226 
227             session.delete(assetTagStats);
228 
229             session.flush();
230         }
231         catch (Exception e) {
232             throw processException(e);
233         }
234         finally {
235             closeSession(session);
236         }
237 
238         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
239 
240         AssetTagStatsModelImpl assetTagStatsModelImpl = (AssetTagStatsModelImpl)assetTagStats;
241 
242         FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_T_C,
243             new Object[] {
244                 new Long(assetTagStatsModelImpl.getOriginalTagId()),
245                 new Long(assetTagStatsModelImpl.getOriginalClassNameId())
246             });
247 
248         EntityCacheUtil.removeResult(AssetTagStatsModelImpl.ENTITY_CACHE_ENABLED,
249             AssetTagStatsImpl.class, assetTagStats.getPrimaryKey());
250 
251         return assetTagStats;
252     }
253 
254     public AssetTagStats updateImpl(
255         com.liferay.portlet.asset.model.AssetTagStats assetTagStats,
256         boolean merge) throws SystemException {
257         assetTagStats = toUnwrappedModel(assetTagStats);
258 
259         boolean isNew = assetTagStats.isNew();
260 
261         AssetTagStatsModelImpl assetTagStatsModelImpl = (AssetTagStatsModelImpl)assetTagStats;
262 
263         Session session = null;
264 
265         try {
266             session = openSession();
267 
268             BatchSessionUtil.update(session, assetTagStats, merge);
269 
270             assetTagStats.setNew(false);
271         }
272         catch (Exception e) {
273             throw processException(e);
274         }
275         finally {
276             closeSession(session);
277         }
278 
279         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
280 
281         EntityCacheUtil.putResult(AssetTagStatsModelImpl.ENTITY_CACHE_ENABLED,
282             AssetTagStatsImpl.class, assetTagStats.getPrimaryKey(),
283             assetTagStats);
284 
285         if (!isNew &&
286                 ((assetTagStats.getTagId() != assetTagStatsModelImpl.getOriginalTagId()) ||
287                 (assetTagStats.getClassNameId() != assetTagStatsModelImpl.getOriginalClassNameId()))) {
288             FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_T_C,
289                 new Object[] {
290                     new Long(assetTagStatsModelImpl.getOriginalTagId()),
291                     new Long(assetTagStatsModelImpl.getOriginalClassNameId())
292                 });
293         }
294 
295         if (isNew ||
296                 ((assetTagStats.getTagId() != assetTagStatsModelImpl.getOriginalTagId()) ||
297                 (assetTagStats.getClassNameId() != assetTagStatsModelImpl.getOriginalClassNameId()))) {
298             FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_T_C,
299                 new Object[] {
300                     new Long(assetTagStats.getTagId()),
301                     new Long(assetTagStats.getClassNameId())
302                 }, assetTagStats);
303         }
304 
305         return assetTagStats;
306     }
307 
308     protected AssetTagStats toUnwrappedModel(AssetTagStats assetTagStats) {
309         if (assetTagStats instanceof AssetTagStatsImpl) {
310             return assetTagStats;
311         }
312 
313         AssetTagStatsImpl assetTagStatsImpl = new AssetTagStatsImpl();
314 
315         assetTagStatsImpl.setNew(assetTagStats.isNew());
316         assetTagStatsImpl.setPrimaryKey(assetTagStats.getPrimaryKey());
317 
318         assetTagStatsImpl.setTagStatsId(assetTagStats.getTagStatsId());
319         assetTagStatsImpl.setTagId(assetTagStats.getTagId());
320         assetTagStatsImpl.setClassNameId(assetTagStats.getClassNameId());
321         assetTagStatsImpl.setAssetCount(assetTagStats.getAssetCount());
322 
323         return assetTagStatsImpl;
324     }
325 
326     public AssetTagStats findByPrimaryKey(Serializable primaryKey)
327         throws NoSuchModelException, SystemException {
328         return findByPrimaryKey(((Long)primaryKey).longValue());
329     }
330 
331     public AssetTagStats findByPrimaryKey(long tagStatsId)
332         throws NoSuchTagStatsException, SystemException {
333         AssetTagStats assetTagStats = fetchByPrimaryKey(tagStatsId);
334 
335         if (assetTagStats == null) {
336             if (_log.isWarnEnabled()) {
337                 _log.warn(_NO_SUCH_ENTITY_WITH_PRIMARY_KEY + tagStatsId);
338             }
339 
340             throw new NoSuchTagStatsException(_NO_SUCH_ENTITY_WITH_PRIMARY_KEY +
341                 tagStatsId);
342         }
343 
344         return assetTagStats;
345     }
346 
347     public AssetTagStats fetchByPrimaryKey(Serializable primaryKey)
348         throws SystemException {
349         return fetchByPrimaryKey(((Long)primaryKey).longValue());
350     }
351 
352     public AssetTagStats fetchByPrimaryKey(long tagStatsId)
353         throws SystemException {
354         AssetTagStats assetTagStats = (AssetTagStats)EntityCacheUtil.getResult(AssetTagStatsModelImpl.ENTITY_CACHE_ENABLED,
355                 AssetTagStatsImpl.class, tagStatsId, this);
356 
357         if (assetTagStats == null) {
358             Session session = null;
359 
360             try {
361                 session = openSession();
362 
363                 assetTagStats = (AssetTagStats)session.get(AssetTagStatsImpl.class,
364                         new Long(tagStatsId));
365             }
366             catch (Exception e) {
367                 throw processException(e);
368             }
369             finally {
370                 if (assetTagStats != null) {
371                     cacheResult(assetTagStats);
372                 }
373 
374                 closeSession(session);
375             }
376         }
377 
378         return assetTagStats;
379     }
380 
381     public List<AssetTagStats> findByTagId(long tagId)
382         throws SystemException {
383         Object[] finderArgs = new Object[] { new Long(tagId) };
384 
385         List<AssetTagStats> list = (List<AssetTagStats>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_TAGID,
386                 finderArgs, this);
387 
388         if (list == null) {
389             Session session = null;
390 
391             try {
392                 session = openSession();
393 
394                 StringBundler query = new StringBundler(3);
395 
396                 query.append(_SQL_SELECT_ASSETTAGSTATS_WHERE);
397 
398                 query.append(_FINDER_COLUMN_TAGID_TAGID_2);
399 
400                 query.append(AssetTagStatsModelImpl.ORDER_BY_JPQL);
401 
402                 String sql = query.toString();
403 
404                 Query q = session.createQuery(sql);
405 
406                 QueryPos qPos = QueryPos.getInstance(q);
407 
408                 qPos.add(tagId);
409 
410                 list = q.list();
411             }
412             catch (Exception e) {
413                 throw processException(e);
414             }
415             finally {
416                 if (list == null) {
417                     list = new ArrayList<AssetTagStats>();
418                 }
419 
420                 cacheResult(list);
421 
422                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_TAGID,
423                     finderArgs, list);
424 
425                 closeSession(session);
426             }
427         }
428 
429         return list;
430     }
431 
432     public List<AssetTagStats> findByTagId(long tagId, int start, int end)
433         throws SystemException {
434         return findByTagId(tagId, start, end, null);
435     }
436 
437     public List<AssetTagStats> findByTagId(long tagId, int start, int end,
438         OrderByComparator obc) throws SystemException {
439         Object[] finderArgs = new Object[] {
440                 new Long(tagId),
441                 
442                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
443             };
444 
445         List<AssetTagStats> list = (List<AssetTagStats>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_TAGID,
446                 finderArgs, this);
447 
448         if (list == null) {
449             Session session = null;
450 
451             try {
452                 session = openSession();
453 
454                 StringBundler query = null;
455 
456                 if (obc != null) {
457                     query = new StringBundler(3 +
458                             (obc.getOrderByFields().length * 3));
459                 }
460                 else {
461                     query = new StringBundler(3);
462                 }
463 
464                 query.append(_SQL_SELECT_ASSETTAGSTATS_WHERE);
465 
466                 query.append(_FINDER_COLUMN_TAGID_TAGID_2);
467 
468                 if (obc != null) {
469                     appendOrderByComparator(query, _ORDER_BY_ENTITY_ALIAS, obc);
470                 }
471 
472                 else {
473                     query.append(AssetTagStatsModelImpl.ORDER_BY_JPQL);
474                 }
475 
476                 String sql = query.toString();
477 
478                 Query q = session.createQuery(sql);
479 
480                 QueryPos qPos = QueryPos.getInstance(q);
481 
482                 qPos.add(tagId);
483 
484                 list = (List<AssetTagStats>)QueryUtil.list(q, getDialect(),
485                         start, end);
486             }
487             catch (Exception e) {
488                 throw processException(e);
489             }
490             finally {
491                 if (list == null) {
492                     list = new ArrayList<AssetTagStats>();
493                 }
494 
495                 cacheResult(list);
496 
497                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_TAGID,
498                     finderArgs, list);
499 
500                 closeSession(session);
501             }
502         }
503 
504         return list;
505     }
506 
507     public AssetTagStats findByTagId_First(long tagId, OrderByComparator obc)
508         throws NoSuchTagStatsException, SystemException {
509         List<AssetTagStats> list = findByTagId(tagId, 0, 1, obc);
510 
511         if (list.isEmpty()) {
512             StringBundler msg = new StringBundler(4);
513 
514             msg.append(_NO_SUCH_ENTITY_WITH_KEY);
515 
516             msg.append("tagId=");
517             msg.append(tagId);
518 
519             msg.append(StringPool.CLOSE_CURLY_BRACE);
520 
521             throw new NoSuchTagStatsException(msg.toString());
522         }
523         else {
524             return list.get(0);
525         }
526     }
527 
528     public AssetTagStats findByTagId_Last(long tagId, OrderByComparator obc)
529         throws NoSuchTagStatsException, SystemException {
530         int count = countByTagId(tagId);
531 
532         List<AssetTagStats> list = findByTagId(tagId, count - 1, count, obc);
533 
534         if (list.isEmpty()) {
535             StringBundler msg = new StringBundler(4);
536 
537             msg.append(_NO_SUCH_ENTITY_WITH_KEY);
538 
539             msg.append("tagId=");
540             msg.append(tagId);
541 
542             msg.append(StringPool.CLOSE_CURLY_BRACE);
543 
544             throw new NoSuchTagStatsException(msg.toString());
545         }
546         else {
547             return list.get(0);
548         }
549     }
550 
551     public AssetTagStats[] findByTagId_PrevAndNext(long tagStatsId, long tagId,
552         OrderByComparator obc) throws NoSuchTagStatsException, SystemException {
553         AssetTagStats assetTagStats = findByPrimaryKey(tagStatsId);
554 
555         int count = countByTagId(tagId);
556 
557         Session session = null;
558 
559         try {
560             session = openSession();
561 
562             StringBundler query = null;
563 
564             if (obc != null) {
565                 query = new StringBundler(3 +
566                         (obc.getOrderByFields().length * 3));
567             }
568             else {
569                 query = new StringBundler(3);
570             }
571 
572             query.append(_SQL_SELECT_ASSETTAGSTATS_WHERE);
573 
574             query.append(_FINDER_COLUMN_TAGID_TAGID_2);
575 
576             if (obc != null) {
577                 appendOrderByComparator(query, _ORDER_BY_ENTITY_ALIAS, obc);
578             }
579 
580             else {
581                 query.append(AssetTagStatsModelImpl.ORDER_BY_JPQL);
582             }
583 
584             String sql = query.toString();
585 
586             Query q = session.createQuery(sql);
587 
588             QueryPos qPos = QueryPos.getInstance(q);
589 
590             qPos.add(tagId);
591 
592             Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
593                     assetTagStats);
594 
595             AssetTagStats[] array = new AssetTagStatsImpl[3];
596 
597             array[0] = (AssetTagStats)objArray[0];
598             array[1] = (AssetTagStats)objArray[1];
599             array[2] = (AssetTagStats)objArray[2];
600 
601             return array;
602         }
603         catch (Exception e) {
604             throw processException(e);
605         }
606         finally {
607             closeSession(session);
608         }
609     }
610 
611     public List<AssetTagStats> findByClassNameId(long classNameId)
612         throws SystemException {
613         Object[] finderArgs = new Object[] { new Long(classNameId) };
614 
615         List<AssetTagStats> list = (List<AssetTagStats>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_CLASSNAMEID,
616                 finderArgs, this);
617 
618         if (list == null) {
619             Session session = null;
620 
621             try {
622                 session = openSession();
623 
624                 StringBundler query = new StringBundler(3);
625 
626                 query.append(_SQL_SELECT_ASSETTAGSTATS_WHERE);
627 
628                 query.append(_FINDER_COLUMN_CLASSNAMEID_CLASSNAMEID_2);
629 
630                 query.append(AssetTagStatsModelImpl.ORDER_BY_JPQL);
631 
632                 String sql = query.toString();
633 
634                 Query q = session.createQuery(sql);
635 
636                 QueryPos qPos = QueryPos.getInstance(q);
637 
638                 qPos.add(classNameId);
639 
640                 list = q.list();
641             }
642             catch (Exception e) {
643                 throw processException(e);
644             }
645             finally {
646                 if (list == null) {
647                     list = new ArrayList<AssetTagStats>();
648                 }
649 
650                 cacheResult(list);
651 
652                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_CLASSNAMEID,
653                     finderArgs, list);
654 
655                 closeSession(session);
656             }
657         }
658 
659         return list;
660     }
661 
662     public List<AssetTagStats> findByClassNameId(long classNameId, int start,
663         int end) throws SystemException {
664         return findByClassNameId(classNameId, start, end, null);
665     }
666 
667     public List<AssetTagStats> findByClassNameId(long classNameId, int start,
668         int end, OrderByComparator obc) throws SystemException {
669         Object[] finderArgs = new Object[] {
670                 new Long(classNameId),
671                 
672                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
673             };
674 
675         List<AssetTagStats> list = (List<AssetTagStats>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_CLASSNAMEID,
676                 finderArgs, this);
677 
678         if (list == null) {
679             Session session = null;
680 
681             try {
682                 session = openSession();
683 
684                 StringBundler query = null;
685 
686                 if (obc != null) {
687                     query = new StringBundler(3 +
688                             (obc.getOrderByFields().length * 3));
689                 }
690                 else {
691                     query = new StringBundler(3);
692                 }
693 
694                 query.append(_SQL_SELECT_ASSETTAGSTATS_WHERE);
695 
696                 query.append(_FINDER_COLUMN_CLASSNAMEID_CLASSNAMEID_2);
697 
698                 if (obc != null) {
699                     appendOrderByComparator(query, _ORDER_BY_ENTITY_ALIAS, obc);
700                 }
701 
702                 else {
703                     query.append(AssetTagStatsModelImpl.ORDER_BY_JPQL);
704                 }
705 
706                 String sql = query.toString();
707 
708                 Query q = session.createQuery(sql);
709 
710                 QueryPos qPos = QueryPos.getInstance(q);
711 
712                 qPos.add(classNameId);
713 
714                 list = (List<AssetTagStats>)QueryUtil.list(q, getDialect(),
715                         start, end);
716             }
717             catch (Exception e) {
718                 throw processException(e);
719             }
720             finally {
721                 if (list == null) {
722                     list = new ArrayList<AssetTagStats>();
723                 }
724 
725                 cacheResult(list);
726 
727                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_CLASSNAMEID,
728                     finderArgs, list);
729 
730                 closeSession(session);
731             }
732         }
733 
734         return list;
735     }
736 
737     public AssetTagStats findByClassNameId_First(long classNameId,
738         OrderByComparator obc) throws NoSuchTagStatsException, SystemException {
739         List<AssetTagStats> list = findByClassNameId(classNameId, 0, 1, obc);
740 
741         if (list.isEmpty()) {
742             StringBundler msg = new StringBundler(4);
743 
744             msg.append(_NO_SUCH_ENTITY_WITH_KEY);
745 
746             msg.append("classNameId=");
747             msg.append(classNameId);
748 
749             msg.append(StringPool.CLOSE_CURLY_BRACE);
750 
751             throw new NoSuchTagStatsException(msg.toString());
752         }
753         else {
754             return list.get(0);
755         }
756     }
757 
758     public AssetTagStats findByClassNameId_Last(long classNameId,
759         OrderByComparator obc) throws NoSuchTagStatsException, SystemException {
760         int count = countByClassNameId(classNameId);
761 
762         List<AssetTagStats> list = findByClassNameId(classNameId, count - 1,
763                 count, obc);
764 
765         if (list.isEmpty()) {
766             StringBundler msg = new StringBundler(4);
767 
768             msg.append(_NO_SUCH_ENTITY_WITH_KEY);
769 
770             msg.append("classNameId=");
771             msg.append(classNameId);
772 
773             msg.append(StringPool.CLOSE_CURLY_BRACE);
774 
775             throw new NoSuchTagStatsException(msg.toString());
776         }
777         else {
778             return list.get(0);
779         }
780     }
781 
782     public AssetTagStats[] findByClassNameId_PrevAndNext(long tagStatsId,
783         long classNameId, OrderByComparator obc)
784         throws NoSuchTagStatsException, SystemException {
785         AssetTagStats assetTagStats = findByPrimaryKey(tagStatsId);
786 
787         int count = countByClassNameId(classNameId);
788 
789         Session session = null;
790 
791         try {
792             session = openSession();
793 
794             StringBundler query = null;
795 
796             if (obc != null) {
797                 query = new StringBundler(3 +
798                         (obc.getOrderByFields().length * 3));
799             }
800             else {
801                 query = new StringBundler(3);
802             }
803 
804             query.append(_SQL_SELECT_ASSETTAGSTATS_WHERE);
805 
806             query.append(_FINDER_COLUMN_CLASSNAMEID_CLASSNAMEID_2);
807 
808             if (obc != null) {
809                 appendOrderByComparator(query, _ORDER_BY_ENTITY_ALIAS, obc);
810             }
811 
812             else {
813                 query.append(AssetTagStatsModelImpl.ORDER_BY_JPQL);
814             }
815 
816             String sql = query.toString();
817 
818             Query q = session.createQuery(sql);
819 
820             QueryPos qPos = QueryPos.getInstance(q);
821 
822             qPos.add(classNameId);
823 
824             Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
825                     assetTagStats);
826 
827             AssetTagStats[] array = new AssetTagStatsImpl[3];
828 
829             array[0] = (AssetTagStats)objArray[0];
830             array[1] = (AssetTagStats)objArray[1];
831             array[2] = (AssetTagStats)objArray[2];
832 
833             return array;
834         }
835         catch (Exception e) {
836             throw processException(e);
837         }
838         finally {
839             closeSession(session);
840         }
841     }
842 
843     public AssetTagStats findByT_C(long tagId, long classNameId)
844         throws NoSuchTagStatsException, SystemException {
845         AssetTagStats assetTagStats = fetchByT_C(tagId, classNameId);
846 
847         if (assetTagStats == null) {
848             StringBundler msg = new StringBundler(6);
849 
850             msg.append(_NO_SUCH_ENTITY_WITH_KEY);
851 
852             msg.append("tagId=");
853             msg.append(tagId);
854 
855             msg.append(", classNameId=");
856             msg.append(classNameId);
857 
858             msg.append(StringPool.CLOSE_CURLY_BRACE);
859 
860             if (_log.isWarnEnabled()) {
861                 _log.warn(msg.toString());
862             }
863 
864             throw new NoSuchTagStatsException(msg.toString());
865         }
866 
867         return assetTagStats;
868     }
869 
870     public AssetTagStats fetchByT_C(long tagId, long classNameId)
871         throws SystemException {
872         return fetchByT_C(tagId, classNameId, true);
873     }
874 
875     public AssetTagStats fetchByT_C(long tagId, long classNameId,
876         boolean retrieveFromCache) throws SystemException {
877         Object[] finderArgs = new Object[] {
878                 new Long(tagId), new Long(classNameId)
879             };
880 
881         Object result = null;
882 
883         if (retrieveFromCache) {
884             result = FinderCacheUtil.getResult(FINDER_PATH_FETCH_BY_T_C,
885                     finderArgs, this);
886         }
887 
888         if (result == null) {
889             Session session = null;
890 
891             try {
892                 session = openSession();
893 
894                 StringBundler query = new StringBundler(4);
895 
896                 query.append(_SQL_SELECT_ASSETTAGSTATS_WHERE);
897 
898                 query.append(_FINDER_COLUMN_T_C_TAGID_2);
899 
900                 query.append(_FINDER_COLUMN_T_C_CLASSNAMEID_2);
901 
902                 query.append(AssetTagStatsModelImpl.ORDER_BY_JPQL);
903 
904                 String sql = query.toString();
905 
906                 Query q = session.createQuery(sql);
907 
908                 QueryPos qPos = QueryPos.getInstance(q);
909 
910                 qPos.add(tagId);
911 
912                 qPos.add(classNameId);
913 
914                 List<AssetTagStats> list = q.list();
915 
916                 result = list;
917 
918                 AssetTagStats assetTagStats = null;
919 
920                 if (list.isEmpty()) {
921                     FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_T_C,
922                         finderArgs, list);
923                 }
924                 else {
925                     assetTagStats = list.get(0);
926 
927                     cacheResult(assetTagStats);
928 
929                     if ((assetTagStats.getTagId() != tagId) ||
930                             (assetTagStats.getClassNameId() != classNameId)) {
931                         FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_T_C,
932                             finderArgs, assetTagStats);
933                     }
934                 }
935 
936                 return assetTagStats;
937             }
938             catch (Exception e) {
939                 throw processException(e);
940             }
941             finally {
942                 if (result == null) {
943                     FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_T_C,
944                         finderArgs, new ArrayList<AssetTagStats>());
945                 }
946 
947                 closeSession(session);
948             }
949         }
950         else {
951             if (result instanceof List<?>) {
952                 return null;
953             }
954             else {
955                 return (AssetTagStats)result;
956             }
957         }
958     }
959 
960     public List<Object> findWithDynamicQuery(DynamicQuery dynamicQuery)
961         throws SystemException {
962         Session session = null;
963 
964         try {
965             session = openSession();
966 
967             dynamicQuery.compile(session);
968 
969             return dynamicQuery.list();
970         }
971         catch (Exception e) {
972             throw processException(e);
973         }
974         finally {
975             closeSession(session);
976         }
977     }
978 
979     public List<Object> findWithDynamicQuery(DynamicQuery dynamicQuery,
980         int start, int end) throws SystemException {
981         Session session = null;
982 
983         try {
984             session = openSession();
985 
986             dynamicQuery.setLimit(start, end);
987 
988             dynamicQuery.compile(session);
989 
990             return dynamicQuery.list();
991         }
992         catch (Exception e) {
993             throw processException(e);
994         }
995         finally {
996             closeSession(session);
997         }
998     }
999 
1000    public List<AssetTagStats> findAll() throws SystemException {
1001        return findAll(QueryUtil.ALL_POS, QueryUtil.ALL_POS, null);
1002    }
1003
1004    public List<AssetTagStats> findAll(int start, int end)
1005        throws SystemException {
1006        return findAll(start, end, null);
1007    }
1008
1009    public List<AssetTagStats> findAll(int start, int end, OrderByComparator obc)
1010        throws SystemException {
1011        Object[] finderArgs = new Object[] {
1012                String.valueOf(start), String.valueOf(end), String.valueOf(obc)
1013            };
1014
1015        List<AssetTagStats> list = (List<AssetTagStats>)FinderCacheUtil.getResult(FINDER_PATH_FIND_ALL,
1016                finderArgs, this);
1017
1018        if (list == null) {
1019            Session session = null;
1020
1021            try {
1022                session = openSession();
1023
1024                StringBundler query = null;
1025                String sql = null;
1026
1027                if (obc != null) {
1028                    query = new StringBundler(2 +
1029                            (obc.getOrderByFields().length * 3));
1030
1031                    query.append(_SQL_SELECT_ASSETTAGSTATS);
1032
1033                    appendOrderByComparator(query, _ORDER_BY_ENTITY_ALIAS, obc);
1034
1035                    sql = query.toString();
1036                }
1037
1038                else {
1039                    sql = _SQL_SELECT_ASSETTAGSTATS.concat(AssetTagStatsModelImpl.ORDER_BY_JPQL);
1040                }
1041
1042                Query q = session.createQuery(sql);
1043
1044                if (obc == null) {
1045                    list = (List<AssetTagStats>)QueryUtil.list(q, getDialect(),
1046                            start, end, false);
1047
1048                    Collections.sort(list);
1049                }
1050                else {
1051                    list = (List<AssetTagStats>)QueryUtil.list(q, getDialect(),
1052                            start, end);
1053                }
1054            }
1055            catch (Exception e) {
1056                throw processException(e);
1057            }
1058            finally {
1059                if (list == null) {
1060                    list = new ArrayList<AssetTagStats>();
1061                }
1062
1063                cacheResult(list);
1064
1065                FinderCacheUtil.putResult(FINDER_PATH_FIND_ALL, finderArgs, list);
1066
1067                closeSession(session);
1068            }
1069        }
1070
1071        return list;
1072    }
1073
1074    public void removeByTagId(long tagId) throws SystemException {
1075        for (AssetTagStats assetTagStats : findByTagId(tagId)) {
1076            remove(assetTagStats);
1077        }
1078    }
1079
1080    public void removeByClassNameId(long classNameId) throws SystemException {
1081        for (AssetTagStats assetTagStats : findByClassNameId(classNameId)) {
1082            remove(assetTagStats);
1083        }
1084    }
1085
1086    public void removeByT_C(long tagId, long classNameId)
1087        throws NoSuchTagStatsException, SystemException {
1088        AssetTagStats assetTagStats = findByT_C(tagId, classNameId);
1089
1090        remove(assetTagStats);
1091    }
1092
1093    public void removeAll() throws SystemException {
1094        for (AssetTagStats assetTagStats : findAll()) {
1095            remove(assetTagStats);
1096        }
1097    }
1098
1099    public int countByTagId(long tagId) throws SystemException {
1100        Object[] finderArgs = new Object[] { new Long(tagId) };
1101
1102        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_TAGID,
1103                finderArgs, this);
1104
1105        if (count == null) {
1106            Session session = null;
1107
1108            try {
1109                session = openSession();
1110
1111                StringBundler query = new StringBundler(2);
1112
1113                query.append(_SQL_COUNT_ASSETTAGSTATS_WHERE);
1114
1115                query.append(_FINDER_COLUMN_TAGID_TAGID_2);
1116
1117                String sql = query.toString();
1118
1119                Query q = session.createQuery(sql);
1120
1121                QueryPos qPos = QueryPos.getInstance(q);
1122
1123                qPos.add(tagId);
1124
1125                count = (Long)q.uniqueResult();
1126            }
1127            catch (Exception e) {
1128                throw processException(e);
1129            }
1130            finally {
1131                if (count == null) {
1132                    count = Long.valueOf(0);
1133                }
1134
1135                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_TAGID,
1136                    finderArgs, count);
1137
1138                closeSession(session);
1139            }
1140        }
1141
1142        return count.intValue();
1143    }
1144
1145    public int countByClassNameId(long classNameId) throws SystemException {
1146        Object[] finderArgs = new Object[] { new Long(classNameId) };
1147
1148        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_CLASSNAMEID,
1149                finderArgs, this);
1150
1151        if (count == null) {
1152            Session session = null;
1153
1154            try {
1155                session = openSession();
1156
1157                StringBundler query = new StringBundler(2);
1158
1159                query.append(_SQL_COUNT_ASSETTAGSTATS_WHERE);
1160
1161                query.append(_FINDER_COLUMN_CLASSNAMEID_CLASSNAMEID_2);
1162
1163                String sql = query.toString();
1164
1165                Query q = session.createQuery(sql);
1166
1167                QueryPos qPos = QueryPos.getInstance(q);
1168
1169                qPos.add(classNameId);
1170
1171                count = (Long)q.uniqueResult();
1172            }
1173            catch (Exception e) {
1174                throw processException(e);
1175            }
1176            finally {
1177                if (count == null) {
1178                    count = Long.valueOf(0);
1179                }
1180
1181                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_CLASSNAMEID,
1182                    finderArgs, count);
1183
1184                closeSession(session);
1185            }
1186        }
1187
1188        return count.intValue();
1189    }
1190
1191    public int countByT_C(long tagId, long classNameId)
1192        throws SystemException {
1193        Object[] finderArgs = new Object[] {
1194                new Long(tagId), new Long(classNameId)
1195            };
1196
1197        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_T_C,
1198                finderArgs, this);
1199
1200        if (count == null) {
1201            Session session = null;
1202
1203            try {
1204                session = openSession();
1205
1206                StringBundler query = new StringBundler(3);
1207
1208                query.append(_SQL_COUNT_ASSETTAGSTATS_WHERE);
1209
1210                query.append(_FINDER_COLUMN_T_C_TAGID_2);
1211
1212                query.append(_FINDER_COLUMN_T_C_CLASSNAMEID_2);
1213
1214                String sql = query.toString();
1215
1216                Query q = session.createQuery(sql);
1217
1218                QueryPos qPos = QueryPos.getInstance(q);
1219
1220                qPos.add(tagId);
1221
1222                qPos.add(classNameId);
1223
1224                count = (Long)q.uniqueResult();
1225            }
1226            catch (Exception e) {
1227                throw processException(e);
1228            }
1229            finally {
1230                if (count == null) {
1231                    count = Long.valueOf(0);
1232                }
1233
1234                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_T_C, finderArgs,
1235                    count);
1236
1237                closeSession(session);
1238            }
1239        }
1240
1241        return count.intValue();
1242    }
1243
1244    public int countAll() throws SystemException {
1245        Object[] finderArgs = new Object[0];
1246
1247        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_ALL,
1248                finderArgs, this);
1249
1250        if (count == null) {
1251            Session session = null;
1252
1253            try {
1254                session = openSession();
1255
1256                Query q = session.createQuery(_SQL_COUNT_ASSETTAGSTATS);
1257
1258                count = (Long)q.uniqueResult();
1259            }
1260            catch (Exception e) {
1261                throw processException(e);
1262            }
1263            finally {
1264                if (count == null) {
1265                    count = Long.valueOf(0);
1266                }
1267
1268                FinderCacheUtil.putResult(FINDER_PATH_COUNT_ALL, finderArgs,
1269                    count);
1270
1271                closeSession(session);
1272            }
1273        }
1274
1275        return count.intValue();
1276    }
1277
1278    public void afterPropertiesSet() {
1279        String[] listenerClassNames = StringUtil.split(GetterUtil.getString(
1280                    com.liferay.portal.util.PropsUtil.get(
1281                        "value.object.listener.com.liferay.portlet.asset.model.AssetTagStats")));
1282
1283        if (listenerClassNames.length > 0) {
1284            try {
1285                List<ModelListener<AssetTagStats>> listenersList = new ArrayList<ModelListener<AssetTagStats>>();
1286
1287                for (String listenerClassName : listenerClassNames) {
1288                    listenersList.add((ModelListener<AssetTagStats>)Class.forName(
1289                            listenerClassName).newInstance());
1290                }
1291
1292                listeners = listenersList.toArray(new ModelListener[listenersList.size()]);
1293            }
1294            catch (Exception e) {
1295                _log.error(e);
1296            }
1297        }
1298    }
1299
1300    @BeanReference(name = "com.liferay.portlet.asset.service.persistence.AssetCategoryPersistence")
1301    protected com.liferay.portlet.asset.service.persistence.AssetCategoryPersistence assetCategoryPersistence;
1302    @BeanReference(name = "com.liferay.portlet.asset.service.persistence.AssetCategoryPropertyPersistence")
1303    protected com.liferay.portlet.asset.service.persistence.AssetCategoryPropertyPersistence assetCategoryPropertyPersistence;
1304    @BeanReference(name = "com.liferay.portlet.asset.service.persistence.AssetEntryPersistence")
1305    protected com.liferay.portlet.asset.service.persistence.AssetEntryPersistence assetEntryPersistence;
1306    @BeanReference(name = "com.liferay.portlet.asset.service.persistence.AssetTagPersistence")
1307    protected com.liferay.portlet.asset.service.persistence.AssetTagPersistence assetTagPersistence;
1308    @BeanReference(name = "com.liferay.portlet.asset.service.persistence.AssetTagPropertyPersistence")
1309    protected com.liferay.portlet.asset.service.persistence.AssetTagPropertyPersistence assetTagPropertyPersistence;
1310    @BeanReference(name = "com.liferay.portlet.asset.service.persistence.AssetTagStatsPersistence")
1311    protected com.liferay.portlet.asset.service.persistence.AssetTagStatsPersistence assetTagStatsPersistence;
1312    @BeanReference(name = "com.liferay.portlet.asset.service.persistence.AssetVocabularyPersistence")
1313    protected com.liferay.portlet.asset.service.persistence.AssetVocabularyPersistence assetVocabularyPersistence;
1314    @BeanReference(name = "com.liferay.portal.service.persistence.ResourcePersistence")
1315    protected com.liferay.portal.service.persistence.ResourcePersistence resourcePersistence;
1316    @BeanReference(name = "com.liferay.portal.service.persistence.UserPersistence")
1317    protected com.liferay.portal.service.persistence.UserPersistence userPersistence;
1318    private static final String _SQL_SELECT_ASSETTAGSTATS = "SELECT assetTagStats FROM AssetTagStats assetTagStats";
1319    private static final String _SQL_SELECT_ASSETTAGSTATS_WHERE = "SELECT assetTagStats FROM AssetTagStats assetTagStats WHERE ";
1320    private static final String _SQL_COUNT_ASSETTAGSTATS = "SELECT COUNT(assetTagStats) FROM AssetTagStats assetTagStats";
1321    private static final String _SQL_COUNT_ASSETTAGSTATS_WHERE = "SELECT COUNT(assetTagStats) FROM AssetTagStats assetTagStats WHERE ";
1322    private static final String _FINDER_COLUMN_TAGID_TAGID_2 = "assetTagStats.tagId = ?";
1323    private static final String _FINDER_COLUMN_CLASSNAMEID_CLASSNAMEID_2 = "assetTagStats.classNameId = ?";
1324    private static final String _FINDER_COLUMN_T_C_TAGID_2 = "assetTagStats.tagId = ? AND ";
1325    private static final String _FINDER_COLUMN_T_C_CLASSNAMEID_2 = "assetTagStats.classNameId = ?";
1326    private static final String _ORDER_BY_ENTITY_ALIAS = "assetTagStats.";
1327    private static final String _NO_SUCH_ENTITY_WITH_PRIMARY_KEY = "No AssetTagStats exists with the primary key ";
1328    private static final String _NO_SUCH_ENTITY_WITH_KEY = "No AssetTagStats exists with the key {";
1329    private static Log _log = LogFactoryUtil.getLog(AssetTagStatsPersistenceImpl.class);
1330}