diff --git a/src/main/java/org/olat/course/assessment/AssessmentToolManager.java b/src/main/java/org/olat/course/assessment/AssessmentToolManager.java index 1085706cf3b50a24deeb2ba5e6237eb8ea1d3ab0..5684ca08ec9408fe2fda6fc1c53308641fec7125 100644 --- a/src/main/java/org/olat/course/assessment/AssessmentToolManager.java +++ b/src/main/java/org/olat/course/assessment/AssessmentToolManager.java @@ -23,7 +23,7 @@ import java.util.List; import org.olat.basesecurity.IdentityShort; import org.olat.core.id.Identity; -import org.olat.course.assessment.model.CourseStatistics; +import org.olat.course.assessment.model.AssessmentStatistics; import org.olat.course.assessment.model.SearchAssessedIdentityParams; import org.olat.modules.assessment.AssessmentEntry; import org.olat.modules.assessment.model.AssessmentEntryStatus; @@ -38,7 +38,23 @@ import org.olat.modules.assessment.model.AssessmentEntryStatus; */ public interface AssessmentToolManager { - public CourseStatistics getStatistics(Identity coach, SearchAssessedIdentityParams params); + public AssessmentStatistics getStatistics(Identity coach, SearchAssessedIdentityParams params); + + /** + * + * @param coach + * @param params + * @return + */ + public int getNumberOfAssessedIndetities(Identity coach, SearchAssessedIdentityParams params); + + /** + * The number of user who launched the course / resource + * @param coach + * @param params + * @return + */ + public int getNumberOfInitialLaunches(Identity coach, SearchAssessedIdentityParams params); public List<Identity> getAssessedIdentities(Identity coach, SearchAssessedIdentityParams params); diff --git a/src/main/java/org/olat/course/assessment/manager/AssessmentToolManagerImpl.java b/src/main/java/org/olat/course/assessment/manager/AssessmentToolManagerImpl.java index 1b85bab419d6fc5c06446d1514c679c1625857f9..fee25b618b6d8e46cc5e33a046a6b9acf8319c21 100644 --- a/src/main/java/org/olat/course/assessment/manager/AssessmentToolManagerImpl.java +++ b/src/main/java/org/olat/course/assessment/manager/AssessmentToolManagerImpl.java @@ -29,11 +29,9 @@ import org.olat.basesecurity.IdentityShort; import org.olat.core.commons.persistence.DB; import org.olat.core.commons.persistence.PersistenceHelper; import org.olat.core.id.Identity; -import org.olat.core.logging.OLog; -import org.olat.core.logging.Tracing; import org.olat.core.util.StringHelper; import org.olat.course.assessment.AssessmentToolManager; -import org.olat.course.assessment.model.CourseStatistics; +import org.olat.course.assessment.model.AssessmentStatistics; import org.olat.course.assessment.model.SearchAssessedIdentityParams; import org.olat.course.assessment.model.UserCourseInfosImpl; import org.olat.modules.assessment.AssessmentEntry; @@ -52,148 +50,130 @@ import org.springframework.stereotype.Service; */ @Service public class AssessmentToolManagerImpl implements AssessmentToolManager { - - private static final OLog log = Tracing.createLoggerFor(AssessmentToolManagerImpl.class); - + @Autowired private DB dbInstance; - + @Override - public CourseStatistics getStatistics(Identity coach, SearchAssessedIdentityParams params) { - CourseStatistics entry = new CourseStatistics(); - + public int getNumberOfAssessedIndetities(Identity coach, SearchAssessedIdentityParams params) { //count all possible participants for the coach permissions TypedQuery<Long> countUsers = createAssessedIdentities(coach, params, Long.class); int numOfAssessedIdentites = 0; List<Long> numOfUsersList = countUsers.getResultList(); if(numOfUsersList.size() == 1) { - numOfAssessedIdentites = numOfUsersList.get(0) == null ? 0 : numOfUsersList.get(0).intValue(); + numOfAssessedIdentites = numOfUsersList.get(0) == null ? 0 : numOfUsersList.get(0).intValue(); } - entry.setNumOfAssessedIdentities(numOfAssessedIdentites); - - //retrive statistcis about efficicency statements - assessmentEntryStatistics(coach, params, entry); - - //retrieve statistics in user course infos - userCourseInfosStatistics(coach, params, entry); - - return entry; + return numOfAssessedIdentites; } - private void userCourseInfosStatistics(Identity coach, SearchAssessedIdentityParams params, CourseStatistics entry) { + @Override + public int getNumberOfInitialLaunches(Identity coach, SearchAssessedIdentityParams params) { RepositoryEntry courseEntry = params.getEntry(); - try { - StringBuilder sf = new StringBuilder(); - sf.append("select count(infos.key), infos.resource.key from ").append(UserCourseInfosImpl.class.getName()).append(" as infos ") - .append(" where infos.resource.key=:resourceKey and (infos.identity in"); - if(params.isAdmin()) { - sf.append(" (select participant.identity from repoentrytogroup as rel, bgroupmember as participant") - .append(" where rel.entry.key=:repoEntryKey and rel.group=participant.group") - .append(" and participant.role='").append(GroupRoles.participant.name()).append("'") - .append(" )"); - if(params.isNonMembers()) { - sf.append(" or not exists (select membership.identity from repoentrytogroup as rel, bgroupmember as membership") - .append(" where rel.entry.key=:repoEntryKey and rel.group=membership.group and membership.identity=infos.identity") - .append(" )"); - } - } else if(params.isBusinessGroupCoach() || params.isRepositoryEntryCoach()) { - sf.append(" (select participant.identity from repoentrytogroup as rel, bgroupmember as participant, bgroupmember as coach") - .append(" where rel.entry.key=:repoEntryKey") - .append(" and rel.group=coach.group and coach.role='").append(GroupRoles.coach.name()).append("' and coach.identity.key=:identityKey") - .append(" and rel.group=participant.group and participant.role='").append(GroupRoles.participant.name()).append("'") - .append(" )"); - } - sf.append(" ) group by infos.resource.key"); - TypedQuery<Object[]> infos = dbInstance.getCurrentEntityManager() - .createQuery(sf.toString(), Object[].class) - .setParameter("resourceKey", courseEntry.getOlatResource().getKey()) - .setParameter("repoEntryKey", courseEntry.getKey()); - if(!params.isAdmin()) { - infos.setParameter("identityKey", coach.getKey()); + StringBuilder sf = new StringBuilder(); + sf.append("select count(infos.key), infos.resource.key from ").append(UserCourseInfosImpl.class.getName()).append(" as infos ") + .append(" where infos.resource.key=:resourceKey and (infos.identity in"); + if(params.isAdmin()) { + sf.append(" (select participant.identity from repoentrytogroup as rel, bgroupmember as participant") + .append(" where rel.entry.key=:repoEntryKey and rel.group=participant.group") + .append(" and participant.role='").append(GroupRoles.participant.name()).append("'") + .append(" )"); + if(params.isNonMembers()) { + sf.append(" or not exists (select membership.identity from repoentrytogroup as rel, bgroupmember as membership") + .append(" where rel.entry.key=:repoEntryKey and rel.group=membership.group and membership.identity=infos.identity") + .append(" )"); } + } else if(params.isBusinessGroupCoach() || params.isRepositoryEntryCoach()) { + sf.append(" (select participant.identity from repoentrytogroup as rel, bgroupmember as participant, bgroupmember as coach") + .append(" where rel.entry.key=:repoEntryKey") + .append(" and rel.group=coach.group and coach.role='").append(GroupRoles.coach.name()).append("' and coach.identity.key=:identityKey") + .append(" and rel.group=participant.group and participant.role='").append(GroupRoles.participant.name()).append("'") + .append(" )"); + } + sf.append(" ) group by infos.resource.key"); - List<Object[]> results = infos.getResultList(); - Long initalLaunch = null; - if(results != null && results.size() > 0) { - initalLaunch = (Long)results.get(0)[0]; - } - entry.setInitialLaunch(initalLaunch == null ? 0 : initalLaunch.intValue()); - } catch (Exception e) { - e.printStackTrace(); - log.error("", e); + TypedQuery<Object[]> infos = dbInstance.getCurrentEntityManager() + .createQuery(sf.toString(), Object[].class) + .setParameter("resourceKey", courseEntry.getOlatResource().getKey()) + .setParameter("repoEntryKey", courseEntry.getKey()); + if(!params.isAdmin()) { + infos.setParameter("identityKey", coach.getKey()); } + + List<Object[]> results = infos.getResultList(); + return results != null && results.size() > 0 && results.get(0)[0] instanceof Number + ? ((Number)results.get(0)[0]).intValue(): 0; } - private void assessmentEntryStatistics(Identity coach, SearchAssessedIdentityParams params, CourseStatistics entry) { + @Override + public AssessmentStatistics getStatistics(Identity coach, SearchAssessedIdentityParams params) { RepositoryEntry courseEntry = params.getEntry(); - try { - StringBuilder sf = new StringBuilder(); - sf.append("select avg(aentry.score) as scoreAverage, ") - .append(" sum(case when aentry.passed=true then 1 else 0 end) as numOfPassed,") - .append(" sum(case when aentry.passed=false then 1 else 0 end) as numOfFailed,") - .append(" sum(case when aentry.passed is null then 1 else 0 end) as numOfNotAttempted,") - .append(" sum(aentry.key) as numOfStatements,") - .append(" v.key as repoKey") - .append(" from assessmententry aentry ") - .append(" inner join aentry.repositoryEntry v ") - .append(" where v.key=:repoEntryKey and aentry.status is not null and not(aentry.status='").append(AssessmentEntryStatus.notStarted.name()).append("')"); - if(params.getReferenceEntry() != null) { - sf.append(" and aentry.referenceEntry.key=:referenceKey"); - } - if(params.getSubIdent() != null) { - sf.append(" and aentry.subIdent=:subIdent"); - } - sf.append(" and (aentry.identity in"); - if(params.isAdmin()) { - sf.append(" (select participant.identity from repoentrytogroup as rel, bgroupmember as participant") - .append(" where rel.entry.key=:repoEntryKey and rel.group=participant.group") - .append(" and participant.role='").append(GroupRoles.participant.name()).append("'") - .append(" )"); - if(params.isNonMembers()) { - sf.append(" or aentry.identity not in (select membership.identity from repoentrytogroup as rel, bgroupmember as membership") - .append(" where rel.entry.key=:repoEntryKey and rel.group=membership.group and membership.identity=aentry.identity") - .append(" )"); - } - } else if(params.isBusinessGroupCoach() || params.isRepositoryEntryCoach()) { - sf.append(" (select participant.identity from repoentrytogroup as rel, bgroupmember as participant, bgroupmember as coach") - .append(" where rel.entry.key=:repoEntryKey") - .append(" and rel.group=coach.group and coach.role='").append(GroupRoles.coach.name()).append("' and coach.identity.key=:identityKey") - .append(" and rel.group=participant.group and participant.role='").append(GroupRoles.participant.name()).append("'") - .append(" )"); - } - sf.append(" ) group by v.key"); - TypedQuery<Object[]> stats = dbInstance.getCurrentEntityManager() - .createQuery(sf.toString(), Object[].class) - .setParameter("repoEntryKey", courseEntry.getKey()); - if(!params.isAdmin()) { - stats.setParameter("identityKey", coach.getKey()); - } - if(params.getReferenceEntry() != null) { - stats.setParameter("referenceKey", params.getReferenceEntry().getKey()); - } - if(params.getSubIdent() != null) { - stats.setParameter("subIdent", params.getSubIdent()); + StringBuilder sf = new StringBuilder(); + sf.append("select avg(aentry.score) as scoreAverage, ") + .append(" sum(case when aentry.passed=true then 1 else 0 end) as numOfPassed,") + .append(" sum(case when aentry.passed=false then 1 else 0 end) as numOfFailed,") + .append(" sum(case when aentry.passed is null then 1 else 0 end) as numOfNotAttempted,") + .append(" sum(aentry.key) as numOfStatements,") + .append(" v.key as repoKey") + .append(" from assessmententry aentry ") + .append(" inner join aentry.repositoryEntry v ") + .append(" where v.key=:repoEntryKey and aentry.status is not null and not(aentry.status='").append(AssessmentEntryStatus.notStarted.name()).append("')"); + if(params.getReferenceEntry() != null) { + sf.append(" and aentry.referenceEntry.key=:referenceKey"); + } + if(params.getSubIdent() != null) { + sf.append(" and aentry.subIdent=:subIdent"); + } + sf.append(" and (aentry.identity in"); + if(params.isAdmin()) { + sf.append(" (select participant.identity from repoentrytogroup as rel, bgroupmember as participant") + .append(" where rel.entry.key=:repoEntryKey and rel.group=participant.group") + .append(" and participant.role='").append(GroupRoles.participant.name()).append("'") + .append(" )"); + if(params.isNonMembers()) { + sf.append(" or aentry.identity not in (select membership.identity from repoentrytogroup as rel, bgroupmember as membership") + .append(" where rel.entry.key=:repoEntryKey and rel.group=membership.group and membership.identity=aentry.identity") + .append(" )"); } + } else if(params.isBusinessGroupCoach() || params.isRepositoryEntryCoach()) { + sf.append(" (select participant.identity from repoentrytogroup as rel, bgroupmember as participant, bgroupmember as coach") + .append(" where rel.entry.key=:repoEntryKey") + .append(" and rel.group=coach.group and coach.role='").append(GroupRoles.coach.name()).append("' and coach.identity.key=:identityKey") + .append(" and rel.group=participant.group and participant.role='").append(GroupRoles.participant.name()).append("'") + .append(" )"); + } + sf.append(" ) group by v.key"); + + TypedQuery<Object[]> stats = dbInstance.getCurrentEntityManager() + .createQuery(sf.toString(), Object[].class) + .setParameter("repoEntryKey", courseEntry.getKey()); + if(!params.isAdmin()) { + stats.setParameter("identityKey", coach.getKey()); + } + if(params.getReferenceEntry() != null) { + stats.setParameter("referenceKey", params.getReferenceEntry().getKey()); + } + if(params.getSubIdent() != null) { + stats.setParameter("subIdent", params.getSubIdent()); + } + + + AssessmentStatistics entry = new AssessmentStatistics(); + List<Object[]> results = stats.getResultList(); + if(results != null && results.size() > 0) { + Object[] result = results.get(0); + Double averageScore = (Double)result[0]; + Long numOfPassed = (Long)result[1]; + Long numOfFailed = (Long)result[2]; + Long numOfNotAttempted = (Long)result[3]; - List<Object[]> results = stats.getResultList(); - if(results != null && results.size() > 0) { - Object[] result = results.get(0); - Double averageScore = (Double)result[0]; - Long numOfPassed = (Long)result[1]; - Long numOfFailed = (Long)result[2]; - Long numOfNotAttempted = (Long)result[3]; - - entry.setAverageScore(averageScore); - entry.setCountPassed(numOfPassed == null ? 0 : numOfPassed.intValue()); - entry.setCountFailed(numOfFailed == null ? 0 : numOfFailed.intValue()); - entry.setCountNotAttempted(numOfNotAttempted == null ? 0 : numOfNotAttempted.intValue()); - } - } catch (Exception e) { - e.printStackTrace(); - log.error("", e); + entry.setAverageScore(averageScore); + entry.setCountPassed(numOfPassed == null ? 0 : numOfPassed.intValue()); + entry.setCountFailed(numOfFailed == null ? 0 : numOfFailed.intValue()); + entry.setCountNotAttempted(numOfNotAttempted == null ? 0 : numOfNotAttempted.intValue()); } + return entry; } @Override diff --git a/src/main/java/org/olat/course/assessment/model/CourseStatistics.java b/src/main/java/org/olat/course/assessment/model/AssessmentStatistics.java similarity index 78% rename from src/main/java/org/olat/course/assessment/model/CourseStatistics.java rename to src/main/java/org/olat/course/assessment/model/AssessmentStatistics.java index cee766367b89a9d34e09095e43415ea3074b5461..9fb7a7436b8cc6614b33ae9553f90ca7faebbb31 100644 --- a/src/main/java/org/olat/course/assessment/model/CourseStatistics.java +++ b/src/main/java/org/olat/course/assessment/model/AssessmentStatistics.java @@ -25,22 +25,12 @@ package org.olat.course.assessment.model; * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com * */ -public class CourseStatistics { - - private int numOfAssessedIdentities; +public class AssessmentStatistics { + private int countPassed; private int countFailed; private int countNotAttempted; private Double averageScore; - private int initialLaunch; - - public int getNumOfAssessedIdentities() { - return numOfAssessedIdentities; - } - - public void setNumOfAssessedIdentities(int numOfAssessedIdentities) { - this.numOfAssessedIdentities = numOfAssessedIdentities; - } public int getCountPassed() { return countPassed; @@ -73,12 +63,4 @@ public class CourseStatistics { public void setAverageScore(Double averageScore) { this.averageScore = averageScore; } - - public int getInitialLaunch() { - return initialLaunch; - } - - public void setInitialLaunch(int initialLaunch) { - this.initialLaunch = initialLaunch; - } } diff --git a/src/main/java/org/olat/course/assessment/model/SearchAssessedIdentityParams.java b/src/main/java/org/olat/course/assessment/model/SearchAssessedIdentityParams.java index 261d082815e4bac6c3913a44ca831c699382e048..7b0de9af1e5354321aa839dd39b3625bde911a6f 100644 --- a/src/main/java/org/olat/course/assessment/model/SearchAssessedIdentityParams.java +++ b/src/main/java/org/olat/course/assessment/model/SearchAssessedIdentityParams.java @@ -49,7 +49,7 @@ public class SearchAssessedIdentityParams { private String searchString; private List<Long> businessGroupKeys; - public SearchAssessedIdentityParams(RepositoryEntry entry, RepositoryEntry referenceEntry, String subIdent, + public SearchAssessedIdentityParams(RepositoryEntry entry, String subIdent, RepositoryEntry referenceEntry, AssessmentToolSecurityCallback secCallback) { this.entry = entry; this.referenceEntry = referenceEntry; diff --git a/src/main/java/org/olat/course/assessment/ui/tool/AssessedIdentityListProvider.java b/src/main/java/org/olat/course/assessment/ui/tool/AssessedIdentityListProvider.java index 07996514552e022d69c4f32dd8b2374739b390da..bad77e8421962dbbaefb3c43ab6caae95e2ba961 100644 --- a/src/main/java/org/olat/course/assessment/ui/tool/AssessedIdentityListProvider.java +++ b/src/main/java/org/olat/course/assessment/ui/tool/AssessedIdentityListProvider.java @@ -69,7 +69,7 @@ public class AssessedIdentityListProvider implements ListProvider { @Override public void getResult(String searchValue, ListReceiver receiver) { - SearchAssessedIdentityParams params = new SearchAssessedIdentityParams(courseEntry, referenceEntry, subIdent, assessmentCallback); + SearchAssessedIdentityParams params = new SearchAssessedIdentityParams(courseEntry, subIdent, referenceEntry, assessmentCallback); params.setSearchString(searchValue); int maxEntries = MAX_ENTRIES; diff --git a/src/main/java/org/olat/course/assessment/ui/tool/AssessmentCourseStatisticsSmallController.java b/src/main/java/org/olat/course/assessment/ui/tool/AssessmentCourseStatisticsSmallController.java index d5af160fa360d03cb52323b61cf752decab92307..0fd40b1bc5c95c9db42b662fd4751fc9a25e06e0 100644 --- a/src/main/java/org/olat/course/assessment/ui/tool/AssessmentCourseStatisticsSmallController.java +++ b/src/main/java/org/olat/course/assessment/ui/tool/AssessmentCourseStatisticsSmallController.java @@ -25,9 +25,11 @@ import org.olat.core.gui.components.velocity.VelocityContainer; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; +import org.olat.course.CourseFactory; +import org.olat.course.ICourse; import org.olat.course.assessment.AssessmentHelper; import org.olat.course.assessment.AssessmentToolManager; -import org.olat.course.assessment.model.CourseStatistics; +import org.olat.course.assessment.model.AssessmentStatistics; import org.olat.course.assessment.model.SearchAssessedIdentityParams; import org.olat.modules.assessment.ui.AssessmentToolSecurityCallback; import org.olat.repository.RepositoryEntry; @@ -77,22 +79,26 @@ public class AssessmentCourseStatisticsSmallController extends BasicController { } public void updateStatistics() { - SearchAssessedIdentityParams params = new SearchAssessedIdentityParams(courseEntry, null, null, assessmentCallback); - CourseStatistics stats = assessmentToolManager.getStatistics(getIdentity(), params); + ICourse course = CourseFactory.loadCourse(courseEntry); + String rootNodeIdent = course.getRunStructure().getRootNode().getIdent(); - numOfAssessedIdentities = stats.getNumOfAssessedIdentities(); + SearchAssessedIdentityParams params = new SearchAssessedIdentityParams(courseEntry, null /* rootNodeIdent */, null, assessmentCallback); + numOfAssessedIdentities = assessmentToolManager.getNumberOfAssessedIndetities(getIdentity(), params); mainVC.contextPut("numOfAssessedIdentities", numOfAssessedIdentities); + + AssessmentStatistics stats = assessmentToolManager.getStatistics(getIdentity(), params); mainVC.contextPut("scoreAverage", AssessmentHelper.getRoundedScore(stats.getAverageScore())); numOfPassed = stats.getCountPassed(); mainVC.contextPut("numOfPassed", numOfPassed); - int percentPassed = Math.round(100.0f * ((float)stats.getCountPassed() / (float)stats.getNumOfAssessedIdentities())); + int percentPassed = Math.round(100.0f * (stats.getCountPassed() / numOfAssessedIdentities)); mainVC.contextPut("percentPassed", percentPassed); numOfFailed = stats.getCountFailed(); mainVC.contextPut("numOfFailed", numOfFailed); - int percentFailed = Math.round(100.0f * ((float)stats.getCountFailed() / (float)stats.getNumOfAssessedIdentities())); + int percentFailed = Math.round(100.0f * (stats.getCountFailed() / numOfAssessedIdentities)); mainVC.contextPut("percentFailed", percentFailed); - mainVC.contextPut("numOfInitialLaunch", stats.getInitialLaunch()); + int numOfLaunches = assessmentToolManager.getNumberOfInitialLaunches(getIdentity(), params); + mainVC.contextPut("numOfInitialLaunch", numOfLaunches); } @Override diff --git a/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java b/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java index 4b0ba245e790bd99cf0bbf156b8150e6c2525f68..edf21f8c67d4fb8576013c8c5c0370938ea3115c 100644 --- a/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java +++ b/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java @@ -226,7 +226,7 @@ public class IdentityListCourseNodeController extends FormBasicController implem } private void updateModel(UserRequest ureq, String searchString, List<FlexiTableFilter> filters, List<FlexiTableFilter> extendedFilters) { - SearchAssessedIdentityParams params = new SearchAssessedIdentityParams(courseEntry, referenceEntry, courseNode.getIdent(), assessmentCallback); + SearchAssessedIdentityParams params = new SearchAssessedIdentityParams(courseEntry, courseNode.getIdent(), referenceEntry, assessmentCallback); List<AssessmentEntryStatus> assessmentStatus = null; if(filters != null && filters.size() > 0) { @@ -279,6 +279,7 @@ public class IdentityListCourseNodeController extends FormBasicController implem if(filters != null && filters.size() > 0) { usersTableModel.filter(filters.get(0).getFilter()); } + tableEl.reset(); tableEl.reloadData(); List<String> toolCmpNames = new ArrayList<>(); diff --git a/src/main/java/org/olat/modules/assessment/manager/AssessmentEntryDAO.java b/src/main/java/org/olat/modules/assessment/manager/AssessmentEntryDAO.java index 855743f24c37b87c4e1fe4581bb75ba0430a1782..3e80f5039a842f6e24d446e80b14622c5a56c829 100644 --- a/src/main/java/org/olat/modules/assessment/manager/AssessmentEntryDAO.java +++ b/src/main/java/org/olat/modules/assessment/manager/AssessmentEntryDAO.java @@ -73,7 +73,9 @@ public class AssessmentEntryDAO { data.setRepositoryEntry(entry); data.setSubIdent(subIdent); data.setReferenceEntry(referenceEntry); - data.setScore(new BigDecimal(score)); + if(score != null) { + data.setScore(new BigDecimal(score)); + } data.setPassed(passed); dbInstance.getCurrentEntityManager().persist(data); return data; diff --git a/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityListController.java b/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityListController.java index 2d126d4340b112a2afcd72be8a056f89bcc83b5b..1521171d98592b02ac10d6a3514baf34987f55c8 100644 --- a/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityListController.java +++ b/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityListController.java @@ -191,7 +191,7 @@ public class AssessedIdentityListController extends FormBasicController implemen } private void updateModel(String searchString, List<FlexiTableFilter> filters, List<FlexiTableFilter> extendedFilters) { - SearchAssessedIdentityParams params = new SearchAssessedIdentityParams(testEntry, testEntry, null, assessmentCallback); + SearchAssessedIdentityParams params = new SearchAssessedIdentityParams(testEntry, null, testEntry, assessmentCallback); List<AssessmentEntryStatus> assessmentStatus = null; if(filters != null && filters.size() > 0) { diff --git a/src/main/java/org/olat/modules/assessment/ui/AssessmentStatisticsSmallController.java b/src/main/java/org/olat/modules/assessment/ui/AssessmentStatisticsSmallController.java index 1b9419aba7cdac31e3472cdd216696dbc16d5caa..8d6f0f40c6d0934dd0bf15260d5e64e841ff6f83 100644 --- a/src/main/java/org/olat/modules/assessment/ui/AssessmentStatisticsSmallController.java +++ b/src/main/java/org/olat/modules/assessment/ui/AssessmentStatisticsSmallController.java @@ -27,7 +27,7 @@ import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; import org.olat.course.assessment.AssessmentHelper; import org.olat.course.assessment.AssessmentToolManager; -import org.olat.course.assessment.model.CourseStatistics; +import org.olat.course.assessment.model.AssessmentStatistics; import org.olat.course.assessment.model.SearchAssessedIdentityParams; import org.olat.modules.assessment.ui.AssessmentToolSecurityCallback; import org.olat.repository.RepositoryEntry; @@ -77,22 +77,23 @@ public class AssessmentStatisticsSmallController extends BasicController { } public void updateStatistics() { - SearchAssessedIdentityParams params = new SearchAssessedIdentityParams(testEntry, testEntry, null, assessmentCallback); - CourseStatistics stats = assessmentToolManager.getStatistics(getIdentity(), params); - - numOfAssessedIdentities = stats.getNumOfAssessedIdentities(); + SearchAssessedIdentityParams params = new SearchAssessedIdentityParams(testEntry, null, testEntry, assessmentCallback); + numOfAssessedIdentities = assessmentToolManager.getNumberOfAssessedIndetities(getIdentity(), params); mainVC.contextPut("numOfAssessedIdentities", numOfAssessedIdentities); + + AssessmentStatistics stats = assessmentToolManager.getStatistics(getIdentity(), params); mainVC.contextPut("scoreAverage", AssessmentHelper.getRoundedScore(stats.getAverageScore())); numOfPassed = stats.getCountPassed(); mainVC.contextPut("numOfPassed", numOfPassed); - int percentPassed = Math.round(100.0f * ((float)stats.getCountPassed() / (float)stats.getNumOfAssessedIdentities())); + int percentPassed = Math.round(100.0f * (stats.getCountPassed() / numOfAssessedIdentities)); mainVC.contextPut("percentPassed", percentPassed); numOfFailed = stats.getCountFailed(); mainVC.contextPut("numOfFailed", numOfFailed); - int percentFailed = Math.round(100.0f * ((float)stats.getCountFailed() / (float)stats.getNumOfAssessedIdentities())); + int percentFailed = Math.round(100.0f * (stats.getCountFailed() / numOfAssessedIdentities)); mainVC.contextPut("percentFailed", percentFailed); - mainVC.contextPut("numOfInitialLaunch", stats.getInitialLaunch()); + int numOfLaunches = assessmentToolManager.getNumberOfInitialLaunches(getIdentity(), params); + mainVC.contextPut("numOfInitialLaunch", numOfLaunches); } @Override diff --git a/src/main/java/org/olat/modules/assessment/ui/AssessmentToReviewSmallController.java b/src/main/java/org/olat/modules/assessment/ui/AssessmentToReviewSmallController.java index 44b155e42f6f532a84b971d2a50dafbb9a7a7e8b..5f1634d9d0b34be11f3e256ecf7c30f96e5cee28 100644 --- a/src/main/java/org/olat/modules/assessment/ui/AssessmentToReviewSmallController.java +++ b/src/main/java/org/olat/modules/assessment/ui/AssessmentToReviewSmallController.java @@ -124,7 +124,7 @@ public class AssessmentToReviewSmallController extends FormBasicController { } private void loadModel() { - SearchAssessedIdentityParams params = new SearchAssessedIdentityParams(testEntry, testEntry, null, assessmentCallback); + SearchAssessedIdentityParams params = new SearchAssessedIdentityParams(testEntry, null, testEntry, assessmentCallback); List<AssessmentEntry> entries = assessmentToolManager.getAssessmentEntries(getIdentity(), params, AssessmentEntryStatus.inReview); List<UserToReviewRow> rows = new ArrayList<>();