From db3abe6b10ad093d3b1ad8716c57e33824ee5a3f Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Fri, 22 Aug 2014 08:57:34 +0200 Subject: [PATCH] OO-984: if rating and comment is disabled, don't join fetch the repository statistics --- .../RepositoryEntryMyCourseQueries.java | 20 ++++++++++++++----- .../model/RepositoryEntryMyCourseImpl.java | 5 ++--- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/olat/repository/manager/RepositoryEntryMyCourseQueries.java b/src/main/java/org/olat/repository/manager/RepositoryEntryMyCourseQueries.java index 046ff773c3f..0ff14945f63 100644 --- a/src/main/java/org/olat/repository/manager/RepositoryEntryMyCourseQueries.java +++ b/src/main/java/org/olat/repository/manager/RepositoryEntryMyCourseQueries.java @@ -47,6 +47,7 @@ import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryEntryMyView; import org.olat.repository.RepositoryModule; import org.olat.repository.model.RepositoryEntryMyCourseImpl; +import org.olat.repository.model.RepositoryEntryStatistics; import org.olat.repository.model.SearchMyRepositoryEntryViewParams; import org.olat.repository.model.SearchMyRepositoryEntryViewParams.Filter; import org.olat.repository.model.SearchMyRepositoryEntryViewParams.OrderBy; @@ -103,6 +104,8 @@ public class RepositoryEntryMyCourseQueries { query.setMaxResults(maxResults); } + boolean neddStats = repositoryModule.isRatingEnabled() || repositoryModule.isCommentEnabled(); + List<Long> effKeys = new ArrayList<>(); List<Object[]> objects = query.getResultList(); List<RepositoryEntryMyView> views = new ArrayList<>(objects.size()); @@ -115,7 +118,13 @@ public class RepositoryEntryMyCourseQueries { long offers = numOffers == null ? 0l : numOffers.longValue(); Integer myRating = (Integer)object[3]; - RepositoryEntryMyCourseImpl view = new RepositoryEntryMyCourseImpl(re, hasMarks, offers, myRating); + RepositoryEntryStatistics stats; + if(neddStats) { + stats = re.getStatistics(); + } else { + stats = null; + } + RepositoryEntryMyCourseImpl view = new RepositoryEntryMyCourseImpl(re, stats, hasMarks, offers, myRating); views.add(view); viewsMap.put(re.getOlatResource(), view); @@ -157,7 +166,6 @@ public class RepositoryEntryMyCourseQueries { sb.append("select count(v.key) ") .append(" from repositoryentry as v, ").append(IdentityImpl.class.getName()).append(" as ident ") .append(" inner join v.olatResource as res") - .append(" inner join v.statistics as stats") .append(" left join v.lifecycle as lifecycle "); } else { sb.append("select v, ") @@ -185,9 +193,11 @@ public class RepositoryEntryMyCourseQueries { .append(" ) as effKey"); appendOrderByInSelect(params, sb); sb.append(" from repositoryentry as v, ").append(IdentityImpl.class.getName()).append(" as ident ") - .append(" inner join ").append(oracle ? "" : "fetch").append(" v.olatResource as res") - .append(" inner join fetch v.statistics as stats") - .append(" left join fetch v.lifecycle as lifecycle "); + .append(" inner join ").append(oracle ? "" : "fetch").append(" v.olatResource as res"); + if(repositoryModule.isRatingEnabled() || repositoryModule.isCommentEnabled()) { + sb.append(" inner join fetch v.statistics as stats"); + } + sb.append(" left join fetch v.lifecycle as lifecycle "); } //user course informations //efficiency statements diff --git a/src/main/java/org/olat/repository/model/RepositoryEntryMyCourseImpl.java b/src/main/java/org/olat/repository/model/RepositoryEntryMyCourseImpl.java index f2d98ee8d4c..015f76894c8 100644 --- a/src/main/java/org/olat/repository/model/RepositoryEntryMyCourseImpl.java +++ b/src/main/java/org/olat/repository/model/RepositoryEntryMyCourseImpl.java @@ -67,7 +67,7 @@ public class RepositoryEntryMyCourseImpl implements RepositoryEntryMyView, Creat private long offersAvailable; - public RepositoryEntryMyCourseImpl(RepositoryEntry re, + public RepositoryEntryMyCourseImpl(RepositoryEntry re, RepositoryEntryStatistics stats, boolean marked, long offersAvailable, Integer myRating) { key = re.getKey(); externalRef = re.getExternalRef(); @@ -85,8 +85,7 @@ public class RepositoryEntryMyCourseImpl implements RepositoryEntryMyView, Creat this.marked = marked; this.myRating = myRating; - - RepositoryEntryStatistics stats = re.getStatistics(); + if(stats != null) { averageRating = stats.getRating(); numOfRatings = stats.getNumOfRatings(); -- GitLab