Skip to content
Snippets Groups Projects
Commit b76f6536 authored by srosse's avatar srosse
Browse files

OO-2795: show the real intitial course launch date in assessment tool to match the label

parent da33356a
No related branches found
No related tags found
No related merge requests found
...@@ -70,6 +70,8 @@ public interface UserCourseInformationsManager { ...@@ -70,6 +70,8 @@ public interface UserCourseInformationsManager {
*/ */
public Map<Long,Date> getInitialLaunchDates(Long courseResourceId); public Map<Long,Date> getInitialLaunchDates(Long courseResourceId);
public Map<Long,Date> getInitialLaunchDates(OLATResource resource);
public int deleteUserCourseInformations(RepositoryEntry entry); public int deleteUserCourseInformations(RepositoryEntry entry);
} }
...@@ -266,7 +266,6 @@ public class UserCourseInformationsManagerImpl implements UserCourseInformations ...@@ -266,7 +266,6 @@ public class UserCourseInformationsManagerImpl implements UserCourseInformations
@Override @Override
public Map<Long,Date> getInitialLaunchDates(Long courseResourceId) { public Map<Long,Date> getInitialLaunchDates(Long courseResourceId) {
try { try {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("select infos.identity.key, infos.initialLaunch from ").append(UserCourseInfosImpl.class.getName()).append(" as infos ") sb.append("select infos.identity.key, infos.initialLaunch from ").append(UserCourseInfosImpl.class.getName()).append(" as infos ")
.append(" inner join infos.resource as resource") .append(" inner join infos.resource as resource")
...@@ -290,6 +289,33 @@ public class UserCourseInformationsManagerImpl implements UserCourseInformations ...@@ -290,6 +289,33 @@ public class UserCourseInformationsManagerImpl implements UserCourseInformations
return Collections.emptyMap(); 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 @Override
public Map<Long, Date> getRecentLaunchDates(OLATResource resource) { public Map<Long, Date> getRecentLaunchDates(OLATResource resource) {
......
...@@ -21,6 +21,7 @@ package org.olat.course.assessment.ui.tool; ...@@ -21,6 +21,7 @@ package org.olat.course.assessment.ui.tool;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -73,6 +74,7 @@ import org.olat.course.ICourse; ...@@ -73,6 +74,7 @@ import org.olat.course.ICourse;
import org.olat.course.assessment.AssessmentModule; import org.olat.course.assessment.AssessmentModule;
import org.olat.course.assessment.AssessmentToolManager; import org.olat.course.assessment.AssessmentToolManager;
import org.olat.course.assessment.bulk.PassedCellRenderer; 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.model.SearchAssessedIdentityParams;
import org.olat.course.assessment.ui.tool.IdentityListCourseNodeTableModel.IdentityCourseElementCols; import org.olat.course.assessment.ui.tool.IdentityListCourseNodeTableModel.IdentityCourseElementCols;
import org.olat.course.certificate.CertificateLight; import org.olat.course.certificate.CertificateLight;
...@@ -143,6 +145,8 @@ public class IdentityListCourseNodeController extends FormBasicController implem ...@@ -143,6 +145,8 @@ public class IdentityListCourseNodeController extends FormBasicController implem
@Autowired @Autowired
private CertificatesManager certificatesManager; private CertificatesManager certificatesManager;
@Autowired @Autowired
private UserCourseInformationsManager userInfosMgr;
@Autowired
private AssessmentToolManager assessmentToolManager; private AssessmentToolManager assessmentToolManager;
public IdentityListCourseNodeController(UserRequest ureq, WindowControl wControl, TooledStackedPanel stackPanel, public IdentityListCourseNodeController(UserRequest ureq, WindowControl wControl, TooledStackedPanel stackPanel,
...@@ -343,11 +347,13 @@ public class IdentityListCourseNodeController extends FormBasicController implem ...@@ -343,11 +347,13 @@ public class IdentityListCourseNodeController extends FormBasicController implem
assessmentEntries.stream() assessmentEntries.stream()
.filter(entry -> entry.getIdentity() != null) .filter(entry -> entry.getIdentity() != null)
.forEach((entry) -> entryMap.put(entry.getIdentity().getKey(), entry)); .forEach((entry) -> entryMap.put(entry.getIdentity().getKey(), entry));
Map<Long,Date> initialLaunchDates = userInfosMgr.getInitialLaunchDates(courseEntry.getOlatResource());
List<AssessedIdentityElementRow> rows = new ArrayList<>(assessedIdentities.size()); List<AssessedIdentityElementRow> rows = new ArrayList<>(assessedIdentities.size());
for(Identity assessedIdentity:assessedIdentities) { for(Identity assessedIdentity:assessedIdentities) {
AssessmentEntry entry = entryMap.get(assessedIdentity.getKey()); 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) { if(toolContainer.getCertificateMap() == null) {
......
...@@ -146,7 +146,7 @@ public class IdentityListCourseNodeTableModel extends DefaultFlexiTableDataModel ...@@ -146,7 +146,7 @@ public class IdentityListCourseNodeTableModel extends DefaultFlexiTableDataModel
CertificateLight certificate = certificateMap.get(row.getIdentityKey()); CertificateLight certificate = certificateMap.get(row.getIdentityKey());
return certificate == null ? null : certificate.getNextRecertificationDate(); return certificate == null ? null : certificate.getNextRecertificationDate();
} }
case initialLaunchDate: return row.getCreationDate(); case initialLaunchDate: return row.getInitialCourseLaunchDate();
case lastScoreUpdate: return row.getLastModified(); case lastScoreUpdate: return row.getLastModified();
} }
} }
......
...@@ -42,19 +42,20 @@ public class AssessedIdentityElementRow extends UserPropertiesRow { ...@@ -42,19 +42,20 @@ public class AssessedIdentityElementRow extends UserPropertiesRow {
private final Boolean userVisibility; private final Boolean userVisibility;
private final BigDecimal score; private final BigDecimal score;
private final Boolean passed; private final Boolean passed;
private final Date creationDate; private final Date initialCourseLaunchDate;
private final Date lastModified; private final Date lastModified;
private final int numOfAssessmentDocs; private final int numOfAssessmentDocs;
private final AssessmentEntryStatus status; 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); super(identity, userPropertyHandlers, locale);
this.initialCourseLaunchDate = initialCourseLaunchDate;
if(entry != null) { if(entry != null) {
attempts = entry.getAttempts(); attempts = entry.getAttempts();
score = entry.getScore(); score = entry.getScore();
passed = entry.getPassed(); passed = entry.getPassed();
userVisibility = entry.getUserVisibility(); userVisibility = entry.getUserVisibility();
creationDate = entry.getCreationDate();
lastModified = entry.getLastModified(); lastModified = entry.getLastModified();
status = entry.getAssessmentStatus(); status = entry.getAssessmentStatus();
numOfAssessmentDocs = entry.getNumberOfAssessmentDocuments(); numOfAssessmentDocs = entry.getNumberOfAssessmentDocuments();
...@@ -63,7 +64,7 @@ public class AssessedIdentityElementRow extends UserPropertiesRow { ...@@ -63,7 +64,7 @@ public class AssessedIdentityElementRow extends UserPropertiesRow {
score = null; score = null;
passed = null; passed = null;
userVisibility = null; userVisibility = null;
creationDate = lastModified = null; lastModified = null;
status = null; status = null;
numOfAssessmentDocs = 0; numOfAssessmentDocs = 0;
} }
...@@ -81,9 +82,10 @@ public class AssessedIdentityElementRow extends UserPropertiesRow { ...@@ -81,9 +82,10 @@ public class AssessedIdentityElementRow extends UserPropertiesRow {
return passed; return passed;
} }
public Date getCreationDate() { public Date getInitialCourseLaunchDate() {
return creationDate; return initialCourseLaunchDate;
} }
public Date getLastModified() { public Date getLastModified() {
return lastModified; return lastModified;
......
...@@ -21,6 +21,7 @@ package org.olat.modules.assessment.ui; ...@@ -21,6 +21,7 @@ package org.olat.modules.assessment.ui;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -59,6 +60,7 @@ import org.olat.core.util.Util; ...@@ -59,6 +60,7 @@ import org.olat.core.util.Util;
import org.olat.course.assessment.AssessmentModule; import org.olat.course.assessment.AssessmentModule;
import org.olat.course.assessment.AssessmentToolManager; import org.olat.course.assessment.AssessmentToolManager;
import org.olat.course.assessment.bulk.PassedCellRenderer; 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.model.SearchAssessedIdentityParams;
import org.olat.course.assessment.ui.tool.AssessedIdentityListProvider; import org.olat.course.assessment.ui.tool.AssessedIdentityListProvider;
import org.olat.course.assessment.ui.tool.AssessmentStatusCellRenderer; import org.olat.course.assessment.ui.tool.AssessmentStatusCellRenderer;
...@@ -110,6 +112,8 @@ public class AssessedIdentityListController extends FormBasicController implemen ...@@ -110,6 +112,8 @@ public class AssessedIdentityListController extends FormBasicController implemen
@Autowired @Autowired
private BusinessGroupService businessGroupService; private BusinessGroupService businessGroupService;
@Autowired @Autowired
private UserCourseInformationsManager userInfosMgr;
@Autowired
private AssessmentToolManager assessmentToolManager; private AssessmentToolManager assessmentToolManager;
@Autowired @Autowired
private RepositoryHandlerFactory repositoryHandlerFactory; private RepositoryHandlerFactory repositoryHandlerFactory;
...@@ -251,10 +255,13 @@ public class AssessedIdentityListController extends FormBasicController implemen ...@@ -251,10 +255,13 @@ public class AssessedIdentityListController extends FormBasicController implemen
assessmentEntries.stream().filter((entry) -> entry.getIdentity() != null) assessmentEntries.stream().filter((entry) -> entry.getIdentity() != null)
.forEach((entry) -> entryMap.put(entry.getIdentity().getKey(), entry)); .forEach((entry) -> entryMap.put(entry.getIdentity().getKey(), entry));
Map<Long,Date> initialLaunchDates = userInfosMgr.getInitialLaunchDates(testEntry.getOlatResource());
List<AssessedIdentityElementRow> rows = new ArrayList<>(assessedIdentities.size()); List<AssessedIdentityElementRow> rows = new ArrayList<>(assessedIdentities.size());
for(Identity assessedIdentity:assessedIdentities) { for(Identity assessedIdentity:assessedIdentities) {
AssessmentEntry entry = entryMap.get(assessedIdentity.getKey()); 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); usersTableModel.setObjects(rows);
......
...@@ -136,7 +136,7 @@ public class AssessedIdentityListTableModel extends DefaultFlexiTableDataModel<A ...@@ -136,7 +136,7 @@ public class AssessedIdentityListTableModel extends DefaultFlexiTableDataModel<A
} }
return certificateMap.get(row.getIdentityKey()); return certificateMap.get(row.getIdentityKey());
} }
case initialLaunchDate: return row.getCreationDate(); case initialLaunchDate: return row.getInitialCourseLaunchDate();
case lastScoreUpdate: return row.getLastModified(); case lastScoreUpdate: return row.getLastModified();
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment