001
014
015 package com.liferay.portlet.ratings.service.persistence;
016
017 import com.liferay.portal.kernel.dao.orm.FinderCacheUtil;
018 import com.liferay.portal.kernel.dao.orm.FinderPath;
019 import com.liferay.portal.kernel.dao.orm.QueryPos;
020 import com.liferay.portal.kernel.dao.orm.SQLQuery;
021 import com.liferay.portal.kernel.dao.orm.Session;
022 import com.liferay.portal.kernel.exception.SystemException;
023 import com.liferay.portal.kernel.util.StringUtil;
024 import com.liferay.portal.service.persistence.impl.BasePersistenceImpl;
025 import com.liferay.portlet.ratings.model.RatingsEntry;
026 import com.liferay.portlet.ratings.model.impl.RatingsEntryImpl;
027 import com.liferay.portlet.ratings.model.impl.RatingsEntryModelImpl;
028 import com.liferay.util.dao.orm.CustomSQLUtil;
029
030 import java.util.ArrayList;
031 import java.util.List;
032
033
037 public class RatingsEntryFinderImpl
038 extends BasePersistenceImpl<RatingsEntry> implements RatingsEntryFinder {
039
040 public static final String FIND_BY_U_C_C =
041 RatingsEntryFinder.class.getName() + ".findByU_C_C";
042
043 public static final FinderPath FINDER_PATH_FIND_BY_U_C_C = new FinderPath(
044 RatingsEntryModelImpl.ENTITY_CACHE_ENABLED,
045 RatingsEntryModelImpl.FINDER_CACHE_ENABLED, RatingsEntryImpl.class,
046 RatingsEntryPersistenceImpl.FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION,
047 "findByU_C_C",
048 new String[] {
049 Long.class.getName(), Long.class.getName(), List.class.getName()
050 });
051
052 public List<RatingsEntry> findByU_C_C(
053 long userId, long classNameId, List<Long> classPKs)
054 throws SystemException {
055
056 Object[] finderArgs = new Object[] {
057 userId, classNameId,
058 StringUtil.merge(classPKs.toArray(new Long[classPKs.size()]))
059 };
060
061 List<RatingsEntry> list = (List<RatingsEntry>)FinderCacheUtil.getResult(
062 FINDER_PATH_FIND_BY_U_C_C, finderArgs, this);
063
064 if ((list != null) && !list.isEmpty()) {
065 for (RatingsEntry ratingsEntry : list) {
066 if ((userId != ratingsEntry.getUserId()) ||
067 (classNameId != ratingsEntry.getClassNameId()) ||
068 !classPKs.contains(ratingsEntry.getClassPK())) {
069
070 list = null;
071
072 break;
073 }
074 }
075 }
076
077 if (list != null) {
078 return list;
079 }
080
081 Session session = null;
082
083 try {
084 session = openSession();
085
086 String sql = CustomSQLUtil.get(FIND_BY_U_C_C);
087
088 sql = StringUtil.replace(
089 sql, "[$CLASS_PKS$]", StringUtil.merge(classPKs));
090
091 SQLQuery q = session.createSQLQuery(sql);
092
093 q.addEntity("RatingsEntry", RatingsEntryImpl.class);
094
095 QueryPos qPos = QueryPos.getInstance(q);
096
097 qPos.add(userId);
098 qPos.add(classNameId);
099
100 list = q.list(true);
101 }
102 catch (Exception e) {
103 throw new SystemException(e);
104 }
105 finally {
106 if (list == null) {
107 list = new ArrayList<RatingsEntry>();
108 }
109
110 FinderCacheUtil.putResult(
111 FINDER_PATH_FIND_BY_U_C_C, finderArgs, list);
112
113 closeSession(session);
114 }
115
116 return list;
117 }
118
119 }