From b76f65365ff67e87bccc4d3d19be60a5bc4037f3 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Fri, 2 Jun 2017 08:38:38 +0200 Subject: [PATCH] OO-2795: show the real intitial course launch date in assessment tool to match the label --- .../UserCourseInformationsManager.java | 2 ++ .../UserCourseInformationsManagerImpl.java | 28 ++++++++++++++++++- .../IdentityListCourseNodeController.java | 8 +++++- .../IdentityListCourseNodeTableModel.java | 2 +- .../ui/AssessedIdentityElementRow.java | 16 ++++++----- .../ui/AssessedIdentityListController.java | 9 +++++- .../ui/AssessedIdentityListTableModel.java | 2 +- 7 files changed, 55 insertions(+), 12 deletions(-) diff --git a/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManager.java b/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManager.java index 315a00a152c..6a354efee74 100644 --- a/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManager.java +++ b/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManager.java @@ -70,6 +70,8 @@ public interface UserCourseInformationsManager { */ public Map<Long,Date> getInitialLaunchDates(Long courseResourceId); + public Map<Long,Date> getInitialLaunchDates(OLATResource resource); + public int deleteUserCourseInformations(RepositoryEntry entry); } diff --git a/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManagerImpl.java b/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManagerImpl.java index 63eddbf537d..f97267f00d3 100644 --- a/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManagerImpl.java +++ b/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManagerImpl.java @@ -266,7 +266,6 @@ public class UserCourseInformationsManagerImpl implements UserCourseInformations @Override public Map<Long,Date> getInitialLaunchDates(Long courseResourceId) { try { - StringBuilder sb = new StringBuilder(); sb.append("select infos.identity.key, infos.initialLaunch from ").append(UserCourseInfosImpl.class.getName()).append(" as infos ") .append(" inner join infos.resource as resource") @@ -290,6 +289,33 @@ public class UserCourseInformationsManagerImpl implements UserCourseInformations return Collections.emptyMap(); } } + + @Override + public Map<Long,Date> getInitialLaunchDates(OLATResource resource) { + try { + StringBuilder sb = new StringBuilder(); + sb.append("select infos.identity.key, infos.initialLaunch from usercourseinfos as infos ") + .append(" inner join infos.resource as resource") + .append(" where resource.key=:resourceKey"); + + TypedQuery<Object[]> query = dbInstance.getCurrentEntityManager().createQuery(sb.toString(), Object[].class) + .setParameter("resourceKey", resource.getKey()); + + List<Object[]> infoList = query.getResultList(); + Map<Long,Date> dateMap = new HashMap<Long,Date>(); + for(Object[] infos:infoList) { + Long identityKey = (Long)infos[0]; + Date initialLaunch = (Date)infos[1]; + if(identityKey != null && initialLaunch != null) { + dateMap.put(identityKey, initialLaunch); + } + } + return dateMap; + } catch (Exception e) { + log.error("Cannot retrieve course informations for: " + resource, e); + return Collections.emptyMap(); + } + } @Override public Map<Long, Date> getRecentLaunchDates(OLATResource resource) { 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 21ad5fd7397..2168f49f359 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 @@ -21,6 +21,7 @@ package org.olat.course.assessment.ui.tool; import java.util.ArrayList; import java.util.Collections; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -73,6 +74,7 @@ import org.olat.course.ICourse; import org.olat.course.assessment.AssessmentModule; import org.olat.course.assessment.AssessmentToolManager; import org.olat.course.assessment.bulk.PassedCellRenderer; +import org.olat.course.assessment.manager.UserCourseInformationsManager; import org.olat.course.assessment.model.SearchAssessedIdentityParams; import org.olat.course.assessment.ui.tool.IdentityListCourseNodeTableModel.IdentityCourseElementCols; import org.olat.course.certificate.CertificateLight; @@ -143,6 +145,8 @@ public class IdentityListCourseNodeController extends FormBasicController implem @Autowired private CertificatesManager certificatesManager; @Autowired + private UserCourseInformationsManager userInfosMgr; + @Autowired private AssessmentToolManager assessmentToolManager; public IdentityListCourseNodeController(UserRequest ureq, WindowControl wControl, TooledStackedPanel stackPanel, @@ -343,11 +347,13 @@ public class IdentityListCourseNodeController extends FormBasicController implem assessmentEntries.stream() .filter(entry -> entry.getIdentity() != null) .forEach((entry) -> entryMap.put(entry.getIdentity().getKey(), entry)); + Map<Long,Date> initialLaunchDates = userInfosMgr.getInitialLaunchDates(courseEntry.getOlatResource()); List<AssessedIdentityElementRow> rows = new ArrayList<>(assessedIdentities.size()); for(Identity assessedIdentity:assessedIdentities) { AssessmentEntry entry = entryMap.get(assessedIdentity.getKey()); - rows.add(new AssessedIdentityElementRow(assessedIdentity, entry, userPropertyHandlers, getLocale())); + Date initialLaunchDate = initialLaunchDates.get(assessedIdentity.getKey()); + rows.add(new AssessedIdentityElementRow(assessedIdentity, entry, initialLaunchDate, userPropertyHandlers, getLocale())); } if(toolContainer.getCertificateMap() == null) { diff --git a/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeTableModel.java b/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeTableModel.java index eaf0be11426..bc25f7d5ea0 100644 --- a/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeTableModel.java +++ b/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeTableModel.java @@ -146,7 +146,7 @@ public class IdentityListCourseNodeTableModel extends DefaultFlexiTableDataModel CertificateLight certificate = certificateMap.get(row.getIdentityKey()); return certificate == null ? null : certificate.getNextRecertificationDate(); } - case initialLaunchDate: return row.getCreationDate(); + case initialLaunchDate: return row.getInitialCourseLaunchDate(); case lastScoreUpdate: return row.getLastModified(); } } diff --git a/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityElementRow.java b/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityElementRow.java index c2846834860..603127f241e 100644 --- a/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityElementRow.java +++ b/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityElementRow.java @@ -42,19 +42,20 @@ public class AssessedIdentityElementRow extends UserPropertiesRow { private final Boolean userVisibility; private final BigDecimal score; private final Boolean passed; - private final Date creationDate; + private final Date initialCourseLaunchDate; private final Date lastModified; private final int numOfAssessmentDocs; private final AssessmentEntryStatus status; - public AssessedIdentityElementRow(Identity identity, AssessmentEntry entry, List<UserPropertyHandler> userPropertyHandlers, Locale locale) { + public AssessedIdentityElementRow(Identity identity, AssessmentEntry entry, Date initialCourseLaunchDate, + List<UserPropertyHandler> userPropertyHandlers, Locale locale) { super(identity, userPropertyHandlers, locale); + this.initialCourseLaunchDate = initialCourseLaunchDate; if(entry != null) { attempts = entry.getAttempts(); score = entry.getScore(); passed = entry.getPassed(); - userVisibility = entry.getUserVisibility(); - creationDate = entry.getCreationDate(); + userVisibility = entry.getUserVisibility(); lastModified = entry.getLastModified(); status = entry.getAssessmentStatus(); numOfAssessmentDocs = entry.getNumberOfAssessmentDocuments(); @@ -63,7 +64,7 @@ public class AssessedIdentityElementRow extends UserPropertiesRow { score = null; passed = null; userVisibility = null; - creationDate = lastModified = null; + lastModified = null; status = null; numOfAssessmentDocs = 0; } @@ -81,9 +82,10 @@ public class AssessedIdentityElementRow extends UserPropertiesRow { return passed; } - public Date getCreationDate() { - return creationDate; + public Date getInitialCourseLaunchDate() { + return initialCourseLaunchDate; } + public Date getLastModified() { return lastModified; 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 4a3fdd7419f..f20d7030d75 100644 --- a/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityListController.java +++ b/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityListController.java @@ -21,6 +21,7 @@ package org.olat.modules.assessment.ui; import java.util.ArrayList; import java.util.Collections; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -59,6 +60,7 @@ import org.olat.core.util.Util; import org.olat.course.assessment.AssessmentModule; import org.olat.course.assessment.AssessmentToolManager; import org.olat.course.assessment.bulk.PassedCellRenderer; +import org.olat.course.assessment.manager.UserCourseInformationsManager; import org.olat.course.assessment.model.SearchAssessedIdentityParams; import org.olat.course.assessment.ui.tool.AssessedIdentityListProvider; import org.olat.course.assessment.ui.tool.AssessmentStatusCellRenderer; @@ -110,6 +112,8 @@ public class AssessedIdentityListController extends FormBasicController implemen @Autowired private BusinessGroupService businessGroupService; @Autowired + private UserCourseInformationsManager userInfosMgr; + @Autowired private AssessmentToolManager assessmentToolManager; @Autowired private RepositoryHandlerFactory repositoryHandlerFactory; @@ -251,10 +255,13 @@ public class AssessedIdentityListController extends FormBasicController implemen assessmentEntries.stream().filter((entry) -> entry.getIdentity() != null) .forEach((entry) -> entryMap.put(entry.getIdentity().getKey(), entry)); + Map<Long,Date> initialLaunchDates = userInfosMgr.getInitialLaunchDates(testEntry.getOlatResource()); + List<AssessedIdentityElementRow> rows = new ArrayList<>(assessedIdentities.size()); for(Identity assessedIdentity:assessedIdentities) { AssessmentEntry entry = entryMap.get(assessedIdentity.getKey()); - rows.add(new AssessedIdentityElementRow(assessedIdentity, entry, userPropertyHandlers, getLocale())); + Date initialLaunchDate = initialLaunchDates.get(assessedIdentity.getKey()); + rows.add(new AssessedIdentityElementRow(assessedIdentity, entry, initialLaunchDate, userPropertyHandlers, getLocale())); } usersTableModel.setObjects(rows); diff --git a/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityListTableModel.java b/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityListTableModel.java index b21b83ca7eb..2c264bb907d 100644 --- a/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityListTableModel.java +++ b/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityListTableModel.java @@ -136,7 +136,7 @@ public class AssessedIdentityListTableModel extends DefaultFlexiTableDataModel<A } return certificateMap.get(row.getIdentityKey()); } - case initialLaunchDate: return row.getCreationDate(); + case initialLaunchDate: return row.getInitialCourseLaunchDate(); case lastScoreUpdate: return row.getLastModified(); } } -- GitLab