From 9e5b22df2d05f5ed3681dc76dd5173dfbf6453bc Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Mon, 22 Aug 2016 16:36:43 +0200 Subject: [PATCH] OO-1593: wording, refresh eff. statement more deeply... --- .../course/assessment/AssessmentHelper.java | 11 +++++ .../manager/AssessmentToolManagerImpl.java | 44 +++---------------- .../manager/EfficiencyStatementManager.java | 10 ++++- .../qti21/ui/_i18n/LocalStrings_de.properties | 4 +- .../qti21/ui/_i18n/LocalStrings_en.properties | 4 +- .../qti21/ui/_i18n/LocalStrings_fr.properties | 4 +- .../ui/AssessedIdentityListController.java | 3 +- .../ui/AssessmentOverviewController.java | 3 +- .../assessment/ui/_content/overview.html | 5 +-- .../ui/_i18n/LocalStrings_de.properties | 1 + .../ui/_i18n/LocalStrings_en.properties | 1 + 11 files changed, 37 insertions(+), 53 deletions(-) diff --git a/src/main/java/org/olat/course/assessment/AssessmentHelper.java b/src/main/java/org/olat/course/assessment/AssessmentHelper.java index 7a11c1d1a4a..aaee8717290 100644 --- a/src/main/java/org/olat/course/assessment/AssessmentHelper.java +++ b/src/main/java/org/olat/course/assessment/AssessmentHelper.java @@ -168,6 +168,17 @@ public class AssessmentHelper { Date lastModified = uce.getCourseEnvironment().getAssessmentManager().getScoreLastModifiedDate(courseNode, identity); return new AssessedIdentityWrapper(uce, attempts, details, initialLaunchDate, lastModified); } + + public static UserCourseEnvironment createInitAndUpdateUserCourseEnvironment(Identity identity, ICourse course) { + // create an identenv with no roles, no attributes, no locale + IdentityEnvironment ienv = new IdentityEnvironment(); + ienv.setIdentity(identity); + UserCourseEnvironment uce = new UserCourseEnvironmentImpl(ienv, course.getCourseEnvironment()); + // Fetch all score and passed and calculate score accounting for the entire + // course + uce.getScoreAccounting().evaluateAll(true); + return uce; + } /** * Create a user course environment for the given user and course. After 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 e99ae7d7be9..57cd72a5e75 100644 --- a/src/main/java/org/olat/course/assessment/manager/AssessmentToolManagerImpl.java +++ b/src/main/java/org/olat/course/assessment/manager/AssessmentToolManagerImpl.java @@ -160,40 +160,6 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager { return results != null && results.size() > 0 && results.get(0)[0] instanceof Number ? ((Number)results.get(0)[0]).intValue(): 0; } - - - /*public List<AssessedBusinessGroup> getBusinessGroupLoginStatistics(Identity coach, SearchAssessedIdentityParams params) { - RepositoryEntry courseEntry = params.getEntry(); - - StringBuilder sf = new StringBuilder(); - sf.append("select bgi.key, bgi.name, count(infos.key)") - .append(" from businessgroup as bgi") - .append(" inner join bgi.baseGroup as baseGroup") - .append(" inner join repoentrytogroup as rel on (rel.group.key=baseGroup.key and rel.entry.key=:repoEntryKey)") - .append(" inner join repositoryentry as entry on (rel.entry.key=entry.key)") - .append(" inner join baseGroup.members as bmember on (bmember.role='").append(GroupRoles.participant.name()).append("')") - .append(" inner join usercourseinfos as infos on (bmember.identity.key=infos.identity.key and infos.resource.key=entry.olatResource.key)"); - if(!params.isAdmin()) { - sf.append(" where bgi.key n (:groupKeys)"); - } - sf.append(" group by bgi.key"); - - TypedQuery<Object[]> stats = dbInstance.getCurrentEntityManager() - .createQuery(sf.toString(), Object[].class) - .setParameter("repoEntryKey", courseEntry.getKey()); - if(!params.isAdmin()) { - stats.setParameter("groupKeys", params.getBusinessGroupKeys()); - } - - List<Object[]> results = stats.getResultList(); - List<AssessedBusinessGroup> rows = new ArrayList<>(results.size()); - for(Object[] result:results) { - Long key = (Long)result[0]; - String name = (String)result[1]; - int login = result[2] == null ? 0 : ((Number)result[2]).intValue(); - } - return rows; - }*/ @Override public List<AssessedBusinessGroup> getBusinessGroupStatistics(Identity coach, SearchAssessedIdentityParams params) { @@ -538,6 +504,8 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager { public List<AssessmentEntry> getAssessmentEntries(Identity coach, SearchAssessedIdentityParams params, AssessmentEntryStatus status) { StringBuilder sb = new StringBuilder(); sb.append("select aentry from assessmententry aentry") + .append(" inner join fetch aentry.identity as assessedIdentity") + .append(" inner join fetch assessedIdentity.user as assessedUser") .append(" where aentry.repositoryEntry.key=:repoEntryKey"); if(params.getReferenceEntry() != null) { sb.append(" and aentry.referenceEntry.key=:referenceKey"); @@ -548,19 +516,19 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager { if(status != null) { sb.append(" and aentry.status=:assessmentStatus"); } - sb.append(" and (aentry.identity in"); + sb.append(" and (assessedIdentity.key in"); if(params.isAdmin()) { - sb.append(" (select participant.identity from repoentrytogroup as rel, bgroupmember as participant") + sb.append(" (select participant.identity.key 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()) { - sb.append(" or aentry.identity not in (select membership.identity from repoentrytogroup as rel, bgroupmember as membership") + sb.append(" or assessedIdentity.key not in (select membership.identity.key 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()) { - sb.append(" (select participant.identity from repoentrytogroup as rel, bgroupmember as participant, bgroupmember as coach") + sb.append(" (select participant.identity.key 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("'") diff --git a/src/main/java/org/olat/course/assessment/manager/EfficiencyStatementManager.java b/src/main/java/org/olat/course/assessment/manager/EfficiencyStatementManager.java index 8e58f12861f..e21c54fb5ca 100644 --- a/src/main/java/org/olat/course/assessment/manager/EfficiencyStatementManager.java +++ b/src/main/java/org/olat/course/assessment/manager/EfficiencyStatementManager.java @@ -232,11 +232,17 @@ public class EfficiencyStatementManager implements UserDataDeletable { Object passed = rootNode.get(AssessmentHelper.KEY_PASSED); if(passed instanceof Boolean) { efficiencyProperty.setPassed((Boolean)passed); + } else { + efficiencyProperty.setPassed(null); } Object fscore = rootNode.get(AssessmentHelper.KEY_SCORE_F); if(fscore instanceof Float) { - efficiencyProperty.setScore((Float)fscore); + efficiencyProperty.setScore((Float)fscore); + } else if(fscore instanceof Number) { + efficiencyProperty.setScore(((Number)fscore).floatValue()); + } else { + efficiencyProperty.setScore(null); } Object shortTitle = rootNode.get(AssessmentHelper.KEY_TITLE_SHORT); @@ -681,7 +687,7 @@ public class EfficiencyStatementManager implements UserDataDeletable { @Override public void execute() { // create temporary user course env - UserCourseEnvironment uce = AssessmentHelper.createAndInitUserCourseEnvironment(identity, course); + UserCourseEnvironment uce = AssessmentHelper.createInitAndUpdateUserCourseEnvironment(identity, course); updateUserEfficiencyStatement(uce, courseEntry); } }); diff --git a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_de.properties index ba14c5bc340..a0c7efa339e 100644 --- a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_de.properties @@ -116,8 +116,8 @@ tab.options=Optionen tab.reset.data=Daten zur\u00FCcksetzen table.header.action=Aktion table.header.duration=Dauer -table.header.lastModified=$org.olat.course.nodes.iq\:table.header.lastModified -table.header.results=$org.olat.course.nodes.iq\:table.header.results +table.header.lastModified=Datum +table.header.results=Resultat terminated.msg=Der Test ist beendet. test.complete=Test abgeschlossen test.entry.page.text=Der Test hat bis {0} Teile. diff --git a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_en.properties index 73fbdd3677e..2b6b445f63a 100644 --- a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_en.properties @@ -125,8 +125,8 @@ tab.options=Options tab.reset.data=Reset data table.header.action=Action table.header.duration=Duration -table.header.lastModified=$org.olat.course.nodes.iq\:table.header.lastModified -table.header.results=$org.olat.course.nodes.iq\:table.header.results +table.header.lastModified=Date +table.header.results=Score terminated.msg=The test is finished. test.complete=Test complete test.entry.page.text=This test consists of up to {0} parts. diff --git a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_fr.properties index 2e1bcd25efe..43a056dbc2c 100644 --- a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_fr.properties @@ -42,5 +42,5 @@ retrievetest.nothing.todo=$org.olat.ims.qti.statistics.ui\:retrievetest.nothing. score.max=$org.olat.ims.qti\:score.max suspend.test=$org.olat.modules.iq\:suspendAssess tab.options=Options -table.header.lastModified=$org.olat.course.nodes.iq\:table.header.lastModified -table.header.results=$org.olat.course.nodes.iq\:table.header.results +table.header.lastModified=Date +table.header.results=R\u00E9sultat 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 129815fc398..8e2fa14c31a 100644 --- a/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityListController.java +++ b/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityListController.java @@ -223,7 +223,8 @@ public class AssessedIdentityListController extends FormBasicController implemen List<Identity> assessedIdentities = assessmentToolManager.getAssessedIdentities(getIdentity(), params); List<AssessmentEntry> assessmentEntries = assessmentToolManager.getAssessmentEntries(getIdentity(), params, null); Map<Long,AssessmentEntry> entryMap = new HashMap<>(); - assessmentEntries.forEach((entry) -> entryMap.put(entry.getIdentity().getKey(), entry)); + assessmentEntries.stream().filter((entry) -> entry.getIdentity() != null) + .forEach((entry) -> entryMap.put(entry.getIdentity().getKey(), entry)); List<AssessedIdentityElementRow> rows = new ArrayList<>(assessedIdentities.size()); for(Identity assessedIdentity:assessedIdentities) { diff --git a/src/main/java/org/olat/modules/assessment/ui/AssessmentOverviewController.java b/src/main/java/org/olat/modules/assessment/ui/AssessmentOverviewController.java index 37b2779a10e..6ef97ed2b33 100644 --- a/src/main/java/org/olat/modules/assessment/ui/AssessmentOverviewController.java +++ b/src/main/java/org/olat/modules/assessment/ui/AssessmentOverviewController.java @@ -65,8 +65,7 @@ public class AssessmentOverviewController extends BasicController implements Act public AssessmentOverviewController(UserRequest ureq, WindowControl wControl, RepositoryEntry testEntry, AssessmentToolSecurityCallback assessmentCallback) { - super(ureq, wControl); - setTranslator(Util.createPackageTranslator(AssessmentModule.class, getLocale(), getTranslator())); + super(ureq, wControl, Util.createPackageTranslator(AssessmentModule.class, ureq.getLocale())); mainVC = createVelocityContainer("overview"); diff --git a/src/main/java/org/olat/modules/assessment/ui/_content/overview.html b/src/main/java/org/olat/modules/assessment/ui/_content/overview.html index 91ab0b9a8c5..5167247b297 100644 --- a/src/main/java/org/olat/modules/assessment/ui/_content/overview.html +++ b/src/main/java/org/olat/modules/assessment/ui/_content/overview.html @@ -1,9 +1,6 @@ $r.contextHelpWithWrapper("Using Course Tools#_bewertungswerkzeug") <h2><i class="o_icon o_icon_assessment_tool"> </i> $r.translate("assessment.tool.overview")</h2> -#if(!$hasAssessableNodes) - <p class="o_warning">$r.translate("index.noAssessableNodes")</p> -#end -<p class="o_info">$r.translate("index.intro")</p> +<p class="o_info">$r.translate("index.introduction")</p> <div class="row o_block"> <div class="col-sm-6"><ul class="list-unstyled"> #if($r.available("assessed.identities")) diff --git a/src/main/java/org/olat/modules/assessment/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/assessment/ui/_i18n/LocalStrings_de.properties index 5eda66cef5d..08f8e423294 100644 --- a/src/main/java/org/olat/modules/assessment/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/modules/assessment/ui/_i18n/LocalStrings_de.properties @@ -19,6 +19,7 @@ filter.inReview=Korrigieren filter.passed=Bestanden filter.anonymousUsers=Anonym Benutzer filter.otherUsers=Alle Benutzer +index.introduction=Mit diesem Werkzeug bewerten Sie die Teilnehmer dieser Test-Lernressource. Es gestattet Ihnen, Testergebnisse einzusehen und zu \u00E4ndern. reopen=Neu \u00F6ffnen review=\u00DCberpr\u00FCfen save.done=Speichern als vervollst\u00E4ndigt diff --git a/src/main/java/org/olat/modules/assessment/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/assessment/ui/_i18n/LocalStrings_en.properties index 5fd316fdd3e..ec9bd1a5248 100644 --- a/src/main/java/org/olat/modules/assessment/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/modules/assessment/ui/_i18n/LocalStrings_en.properties @@ -19,6 +19,7 @@ filter.inReview=To review filter.passed=Passed filter.anonymousUsers=Anonymous users filter.otherUsers=All users +index.introduction=Assess the participants of this test learning resource using its assessment tool. It allows you to access and modify test results. reopen=Reopen review=Review save.done=Save as done -- GitLab