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