From 0fc01d1f10577aaeefce57f915e093d219ec49e4 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Mon, 21 Mar 2016 12:15:34 +0100
Subject: [PATCH] OO-1945: better naming of user course environment, use the
 course environment of the assessed identities to update the score...

---
 .../NewCachePersistingAssessmentManager.java  |  6 ++--
 .../AssessedIdentityCheckListController.java  |  8 ++---
 .../AssessedIdentityOverviewController.java   |  8 ++---
 .../cl/ui/CheckListAssessmentController.java  | 29 ++++++++++++-------
 .../cl/ui/CheckboxAssessmentController.java   |  9 +++---
 5 files changed, 34 insertions(+), 26 deletions(-)

diff --git a/src/main/java/org/olat/course/assessment/NewCachePersistingAssessmentManager.java b/src/main/java/org/olat/course/assessment/NewCachePersistingAssessmentManager.java
index ebf2473260a..711ecb5f5d4 100644
--- a/src/main/java/org/olat/course/assessment/NewCachePersistingAssessmentManager.java
+++ b/src/main/java/org/olat/course/assessment/NewCachePersistingAssessmentManager.java
@@ -858,7 +858,7 @@ public class NewCachePersistingAssessmentManager extends BasicManager implements
 	 * @see org.olat.course.assessment.AssessmentManager#saveScoreEvaluation(org.olat.course.nodes.CourseNode, org.olat.core.id.Identity, org.olat.core.id.Identity, org.olat.course.run.scoring.ScoreEvaluation)
 	 */
 	public void saveScoreEvaluation(final CourseNode courseNode, final Identity identity, final Identity assessedIdentity, final ScoreEvaluation scoreEvaluation, 
-			final UserCourseEnvironment userCourseEnv, final boolean incrementUserAttempts) {
+			final UserCourseEnvironment assessedUserCourseEnv, final boolean incrementUserAttempts) {
 		final ICourse course = CourseFactory.loadCourse(ores);
 		final CoursePropertyManager cpm = course.getCourseEnvironment().getCoursePropertyManager();
 		final RepositoryEntry courseEntry = course.getCourseEnvironment().getCourseGroupManager().getCourseEntry();
@@ -880,10 +880,10 @@ public class NewCachePersistingAssessmentManager extends BasicManager implements
 					attempts = incrementNodeAttemptsProperty(courseNode, assessedIdentity, cpm);
 				}
 				if(courseNode instanceof AssessableCourseNode) {
-				  userCourseEnv.getScoreAccounting().scoreInfoChanged((AssessableCourseNode)courseNode, scoreEvaluation);
+					assessedUserCourseEnv.getScoreAccounting().scoreInfoChanged((AssessableCourseNode)courseNode, scoreEvaluation);
 				  // Update users efficiency statement
 				  EfficiencyStatementManager esm =	EfficiencyStatementManager.getInstance();
-				  esm.updateUserEfficiencyStatement(userCourseEnv);
+				  esm.updateUserEfficiencyStatement(assessedUserCourseEnv);
 				}
 				
 				if(passed != null && passed.booleanValue() && course.getCourseConfig().isAutomaticCertificationEnabled()) {
diff --git a/src/main/java/org/olat/course/nodes/cl/ui/AssessedIdentityCheckListController.java b/src/main/java/org/olat/course/nodes/cl/ui/AssessedIdentityCheckListController.java
index addfd6296ff..fa449d3c9fd 100644
--- a/src/main/java/org/olat/course/nodes/cl/ui/AssessedIdentityCheckListController.java
+++ b/src/main/java/org/olat/course/nodes/cl/ui/AssessedIdentityCheckListController.java
@@ -69,7 +69,7 @@ public class AssessedIdentityCheckListController extends FormBasicController {
 	private final boolean saveAndClose;
 	private final ModuleConfiguration config;
 	private final CheckListCourseNode courseNode;
-	private final UserCourseEnvironment userCourseEnv;
+	private final UserCourseEnvironment assessedUserCourseEnv;
 	private final OLATResourceable courseOres;
 	private final Identity assessedIdentity;
 	private final CheckboxList checkboxList;
@@ -82,13 +82,13 @@ public class AssessedIdentityCheckListController extends FormBasicController {
 	
 	public AssessedIdentityCheckListController(UserRequest ureq, WindowControl wControl,
 			Identity assessedIdentity, OLATResourceable courseOres,
-			UserCourseEnvironment userCourseEnv, CheckListCourseNode courseNode, boolean saveAndClose) {
+			UserCourseEnvironment assessedUserCourseEnv, CheckListCourseNode courseNode, boolean saveAndClose) {
 		super(ureq, wControl);
 
 		this.courseNode = courseNode;
 		this.courseOres = courseOres;
 		this.saveAndClose = saveAndClose;
-		this.userCourseEnv = userCourseEnv;
+		this.assessedUserCourseEnv = assessedUserCourseEnv;
 		config = courseNode.getModuleConfiguration();
 		Boolean hasScore = (Boolean)config.get(MSCourseNode.CONFIG_KEY_HAS_SCORE_FIELD);
 		withScore = (hasScore == null || hasScore.booleanValue());	
@@ -278,7 +278,7 @@ public class AssessedIdentityCheckListController extends FormBasicController {
 		}
 		checkboxManager.check(courseOres, courseNode.getIdent(), batchElements);
 		
-		courseNode.updateScoreEvaluation(userCourseEnv, assessedIdentity);
+		courseNode.updateScoreEvaluation(assessedUserCourseEnv, assessedIdentity);
 	}
 	
 	private void doUpdateCheck(CheckboxWrapper wrapper, boolean check) {
diff --git a/src/main/java/org/olat/course/nodes/cl/ui/AssessedIdentityOverviewController.java b/src/main/java/org/olat/course/nodes/cl/ui/AssessedIdentityOverviewController.java
index dbe0ab67069..900848b24f5 100644
--- a/src/main/java/org/olat/course/nodes/cl/ui/AssessedIdentityOverviewController.java
+++ b/src/main/java/org/olat/course/nodes/cl/ui/AssessedIdentityOverviewController.java
@@ -60,19 +60,19 @@ public class AssessedIdentityOverviewController extends BasicController {
 	private final Identity assessedIdentity;
 	private final OLATResourceable courseOres;
 	private final CheckListCourseNode courseNode;
-	private final UserCourseEnvironment userCourseEnv;
+	private final UserCourseEnvironment assessedUserCourseEnv;
 	
 	private boolean changes = false;
 	
 	public AssessedIdentityOverviewController(UserRequest ureq, WindowControl wControl,
 			Identity assessedIdentity, OLATResourceable courseOres,
-			UserCourseEnvironment userCourseEnv, CheckListCourseNode courseNode) {
+			UserCourseEnvironment assessedUserCourseEnv, CheckListCourseNode courseNode) {
 		super(ureq, wControl);
 		
 		this.courseNode = courseNode;
 		this.courseOres = courseOres;
 		this.assessedIdentity = assessedIdentity;
-		this.userCourseEnv = userCourseEnv;
+		this.assessedUserCourseEnv = assessedUserCourseEnv;
 		
 		mainVC = createVelocityContainer("user_assessment");
 		
@@ -150,7 +150,7 @@ public class AssessedIdentityOverviewController extends BasicController {
 	private void doOpenCheckList(UserRequest ureq) {
 		if(listCtrl == null) {
 			listCtrl = new AssessedIdentityCheckListController(ureq, getWindowControl(), assessedIdentity,
-					courseOres, userCourseEnv, courseNode, true);
+					courseOres, assessedUserCourseEnv, courseNode, true);
 			listenTo(listCtrl);
 		}
 		mainVC.put("segmentCmp", listCtrl.getInitialComponent());
diff --git a/src/main/java/org/olat/course/nodes/cl/ui/CheckListAssessmentController.java b/src/main/java/org/olat/course/nodes/cl/ui/CheckListAssessmentController.java
index 40f8bca400b..31a59be6936 100644
--- a/src/main/java/org/olat/course/nodes/cl/ui/CheckListAssessmentController.java
+++ b/src/main/java/org/olat/course/nodes/cl/ui/CheckListAssessmentController.java
@@ -72,6 +72,7 @@ import org.olat.core.id.UserConstants;
 import org.olat.core.util.StringHelper;
 import org.olat.course.CourseFactory;
 import org.olat.course.ICourse;
+import org.olat.course.assessment.AssessmentHelper;
 import org.olat.course.nodes.CheckListCourseNode;
 import org.olat.course.nodes.MSCourseNode;
 import org.olat.course.nodes.cl.CheckboxManager;
@@ -95,6 +96,8 @@ import org.olat.user.UserManager;
 import org.olat.user.propertyhandlers.UserPropertyHandler;
 
 /**
+ * 
+ * This is the coach view.
  * 
  * Initial date: 07.02.2014<br>
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
@@ -115,7 +118,7 @@ public class CheckListAssessmentController extends FormBasicController implement
 	private final OLATResourceable courseOres;
 	private final CheckListCourseNode courseNode;
 	private final ModuleConfiguration config;
-	private final UserCourseEnvironment userCourseEnv;
+	private final UserCourseEnvironment coachCourseEnv;
 	private final boolean isAdministrativeUser;
 	private final List<UserPropertyHandler> userPropertyHandlers;
 
@@ -143,7 +146,7 @@ public class CheckListAssessmentController extends FormBasicController implement
 	 * @param wControl
 	 * @param courseNode
 	 */
-	public CheckListAssessmentController(UserRequest ureq, WindowControl wControl, UserCourseEnvironment userCourseEnv,
+	public CheckListAssessmentController(UserRequest ureq, WindowControl wControl, UserCourseEnvironment coachCourseEnv,
 			OLATResourceable courseOres, CheckListCourseNode courseNode) {
 		super(ureq, wControl, "assessment_list");
 
@@ -158,7 +161,7 @@ public class CheckListAssessmentController extends FormBasicController implement
 		
 		this.courseOres = courseOres;
 		this.courseNode = courseNode;
-		this.userCourseEnv = userCourseEnv;
+		this.coachCourseEnv = coachCourseEnv;
 		config = courseNode.getModuleConfiguration();
 		CheckboxList configCheckboxList = (CheckboxList)config.get(CheckListCourseNode.CONFIG_KEY_CHECKBOX);
 		if(configCheckboxList == null) {
@@ -243,8 +246,8 @@ public class CheckListAssessmentController extends FormBasicController implement
 		List<CheckListAssessmentRow> datas = loadDatas();
 		model = new CheckListAssessmentDataModel(checkboxList, datas, columnsModel);
 		table = uifactory.addTableElement(getWindowControl(), "checkbox-list", model, getTranslator(), formLayout);
-		if(userCourseEnv instanceof UserCourseEnvironmentImpl) {
-			UserCourseEnvironmentImpl env = (UserCourseEnvironmentImpl)userCourseEnv;
+		if(coachCourseEnv instanceof UserCourseEnvironmentImpl) {
+			UserCourseEnvironmentImpl env = (UserCourseEnvironmentImpl)coachCourseEnv;
 			List<BusinessGroup> coachedGroups = env.getCoachedGroups();
 			List<FlexiTableFilter> filters = new ArrayList<>(coachedGroups.size() + 1);
 			filters.add(new FlexiTableFilter(translate("filter.all"), "all"));
@@ -276,11 +279,11 @@ public class CheckListAssessmentController extends FormBasicController implement
 	}
 	
 	private List<CheckListAssessmentRow> loadDatas() {
-		if(!(userCourseEnv instanceof UserCourseEnvironmentImpl)) {
+		if(!(coachCourseEnv instanceof UserCourseEnvironmentImpl)) {
 			return Collections.emptyList();
 		}
 
-		UserCourseEnvironmentImpl env = (UserCourseEnvironmentImpl)userCourseEnv;
+		UserCourseEnvironmentImpl env = (UserCourseEnvironmentImpl)coachCourseEnv;
 		List<Checkbox> checkboxColl = checkboxList.getList();
 		int numOfCheckbox = checkboxList.getNumOfCheckbox();
 		
@@ -300,7 +303,7 @@ public class CheckListAssessmentController extends FormBasicController implement
 		}
 
 		List<BusinessGroup> coachedGroups = courseAdmin ?
-				userCourseEnv.getCourseEnvironment().getCourseGroupManager().getAllBusinessGroups()
+				coachCourseEnv.getCourseEnvironment().getCourseGroupManager().getAllBusinessGroups()
 				: env.getCoachedGroups();
 		List<AssessmentData> dataList = checkboxManager.getAssessmentDatas(courseOres, courseNode.getIdent(), courseTutor || courseAdmin ? re : null, coachedGroups);
 		List<CheckListAssessmentRow> boxList = getAssessmentDataViews(dataList, checkboxColl);
@@ -481,7 +484,7 @@ public class CheckListAssessmentController extends FormBasicController implement
 
 		List<CheckListAssessmentRow> rows = model.getObjects();
 		boxAssessmentCtrl = new CheckboxAssessmentController(ureq, getWindowControl(), checkboxList, rows,
-				courseOres, userCourseEnv, courseNode);
+				courseOres, courseNode);
 		listenTo(boxAssessmentCtrl);
 
 		String title = translate("box.assessment");
@@ -557,9 +560,11 @@ public class CheckListAssessmentController extends FormBasicController implement
 		if(assessedIdentityToUpdate.size() > 0) {
 			DBFactory.getInstance().commit();
 			
+			ICourse course = CourseFactory.loadCourse(courseOres);
 			List<Identity> identities = securityManager.loadIdentityByKeys(assessedIdentityToUpdate);
 			for(Identity identity:identities) {
-				courseNode.updateScoreEvaluation(userCourseEnv, identity);
+				UserCourseEnvironment assessedUserCourseEnv = AssessmentHelper.createAndInitUserCourseEnvironment(identity, course);
+				courseNode.updateScoreEvaluation(assessedUserCourseEnv, identity);
 			}
 		}
 		
@@ -623,9 +628,11 @@ public class CheckListAssessmentController extends FormBasicController implement
 	private void doOpenEdit(UserRequest ureq, CheckListAssessmentRow row) {
 		if(editCtrl != null) return;
 		
+		ICourse course = CourseFactory.loadCourse(courseOres);
 		Identity assessedIdentity = securityManager.loadIdentityByKey(row.getIdentityKey());
+		UserCourseEnvironment assessedUserCourseEnv = AssessmentHelper.createAndInitUserCourseEnvironment(assessedIdentity, course);
 		editCtrl = new AssessedIdentityOverviewController(ureq, getWindowControl(), assessedIdentity,
-				courseOres, userCourseEnv, courseNode);
+				courseOres, assessedUserCourseEnv, courseNode);
 		listenTo(editCtrl);
 
 		String title = courseNode.getShortTitle();
diff --git a/src/main/java/org/olat/course/nodes/cl/ui/CheckboxAssessmentController.java b/src/main/java/org/olat/course/nodes/cl/ui/CheckboxAssessmentController.java
index 7ba853945cf..fdd24d53217 100644
--- a/src/main/java/org/olat/course/nodes/cl/ui/CheckboxAssessmentController.java
+++ b/src/main/java/org/olat/course/nodes/cl/ui/CheckboxAssessmentController.java
@@ -56,6 +56,8 @@ import org.olat.core.id.Identity;
 import org.olat.core.id.OLATResourceable;
 import org.olat.core.id.Roles;
 import org.olat.core.id.UserConstants;
+import org.olat.course.CourseFactory;
+import org.olat.course.ICourse;
 import org.olat.course.assessment.AssessmentHelper;
 import org.olat.course.nodes.CheckListCourseNode;
 import org.olat.course.nodes.MSCourseNode;
@@ -99,17 +101,14 @@ public class CheckboxAssessmentController extends FormBasicController {
 	private int currentCheckboxIndex = 0;
 	private final OLATResourceable courseOres;
 	private final CheckListCourseNode courseNode;
-	private final UserCourseEnvironment userCourseEnv;
 	
 	public CheckboxAssessmentController(UserRequest ureq, WindowControl wControl, CheckboxList checkboxList,
-			List<CheckListAssessmentRow> initialRows, OLATResourceable courseOres,
-			UserCourseEnvironment userCourseEnv, CheckListCourseNode courseNode) {
+			List<CheckListAssessmentRow> initialRows, OLATResourceable courseOres, CheckListCourseNode courseNode) {
 		super(ureq, wControl, "assessment_per_box");
 		this.courseNode = courseNode;
 		this.courseOres = courseOres;
 		this.initialRows = initialRows;
 		this.checkboxList = checkboxList;
-		this.userCourseEnv = userCourseEnv;
 
 		ModuleConfiguration config = courseNode.getModuleConfiguration();
 		Boolean hasScore = (Boolean)config.get(MSCourseNode.CONFIG_KEY_HAS_SCORE_FIELD);
@@ -380,9 +379,11 @@ public class CheckboxAssessmentController extends FormBasicController {
 		
 		if(assessedIdentityToUpdate.size() > 0) {
 			DBFactory.getInstance().commit();
+			ICourse course = CourseFactory.loadCourse(courseOres);
 			
 			List<Identity> identities = securityManager.loadIdentityByKeys(assessedIdentityToUpdate);
 			for(Identity identity:identities) {
+				UserCourseEnvironment userCourseEnv = AssessmentHelper.createAndInitUserCourseEnvironment(identity, course);
 				courseNode.updateScoreEvaluation(userCourseEnv, identity);
 			}
 		}
-- 
GitLab