1
22
23 package com.liferay.portlet.ratings.service.impl;
24
25 import com.liferay.portal.PortalException;
26 import com.liferay.portal.SystemException;
27 import com.liferay.portal.kernel.log.Log;
28 import com.liferay.portal.kernel.log.LogFactoryUtil;
29 import com.liferay.portal.util.PortalUtil;
30 import com.liferay.portlet.ratings.NoSuchStatsException;
31 import com.liferay.portlet.ratings.model.RatingsStats;
32 import com.liferay.portlet.ratings.service.base.RatingsStatsLocalServiceBaseImpl;
33
34
41 public class RatingsStatsLocalServiceImpl
42 extends RatingsStatsLocalServiceBaseImpl {
43
44 public RatingsStats addStats(long classNameId, long classPK)
45 throws SystemException {
46
47 long statsId = counterLocalService.increment();
48
49 RatingsStats stats = ratingsStatsPersistence.create(statsId);
50
51 stats.setClassNameId(classNameId);
52 stats.setClassPK(classPK);
53 stats.setTotalEntries(0);
54 stats.setTotalScore(0.0);
55 stats.setAverageScore(0.0);
56
57 try {
58 ratingsStatsPersistence.update(stats, false);
59 }
60 catch (SystemException se) {
61 if (_log.isWarnEnabled()) {
62 _log.warn(
63 "Add failed, fetch {classNameId=" + classNameId +
64 ", classPK=" + classPK + "}");
65 }
66
67 stats = ratingsStatsPersistence.fetchByC_C(
68 classNameId, classPK, false);
69
70 if (stats == null) {
71 throw se;
72 }
73 }
74
75 return stats;
76 }
77
78 public void deleteStats(String className, long classPK)
79 throws SystemException {
80
81 long classNameId = PortalUtil.getClassNameId(className);
82
83 try {
84 ratingsStatsPersistence.removeByC_C(classNameId, classPK);
85 }
86 catch (NoSuchStatsException nsse) {
87 _log.warn(nsse);
88 }
89
90 ratingsEntryPersistence.removeByC_C(classNameId, classPK);
91 }
92
93 public RatingsStats getStats(long statsId)
94 throws PortalException, SystemException {
95
96 return ratingsStatsPersistence.findByPrimaryKey(statsId);
97 }
98
99 public RatingsStats getStats(String className, long classPK)
100 throws SystemException {
101
102 long classNameId = PortalUtil.getClassNameId(className);
103
104 RatingsStats stats = ratingsStatsPersistence.fetchByC_C(
105 classNameId, classPK);
106
107 if (stats == null) {
108 stats = ratingsStatsLocalService.addStats(classNameId, classPK);
109 }
110
111 return stats;
112 }
113
114 private static Log _log =
115 LogFactoryUtil.getLog(RatingsStatsLocalServiceImpl.class);
116
117 }