From db04f5708745ea85763b4eb1bd4152350830dbc5 Mon Sep 17 00:00:00 2001 From: uhensler <urs.hensler@frentix.com> Date: Wed, 21 Aug 2019 11:29:17 +0200 Subject: [PATCH] OO-4186: Use the service as a facade for the handlers --- .../assessment/CourseAssessmentService.java | 53 +++++++++++++++++-- .../assessment/handler/AssessmentHandler.java | 33 ++---------- .../manager/CourseAssessmentServiceImpl.java | 45 +++++++++++++--- .../tool/AssessmentCourseTreeController.java | 6 +-- ...ssessmentIdentityCourseNodeController.java | 5 +- ...smentIdentityListCourseTreeController.java | 6 +-- 6 files changed, 97 insertions(+), 51 deletions(-) diff --git a/src/main/java/org/olat/course/assessment/CourseAssessmentService.java b/src/main/java/org/olat/course/assessment/CourseAssessmentService.java index b3839211d08..71f01cd15a9 100644 --- a/src/main/java/org/olat/course/assessment/CourseAssessmentService.java +++ b/src/main/java/org/olat/course/assessment/CourseAssessmentService.java @@ -22,14 +22,23 @@ package org.olat.course.assessment; import java.io.File; import java.util.List; +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.stack.BreadcrumbPanel; +import org.olat.core.gui.components.stack.TooledStackedPanel; +import org.olat.core.gui.control.Controller; +import org.olat.core.gui.control.WindowControl; import org.olat.core.id.Identity; import org.olat.course.assessment.handler.AssessmentConfig; -import org.olat.course.assessment.handler.AssessmentHandler; +import org.olat.course.assessment.ui.tool.AssessmentCourseNodeController; import org.olat.course.nodes.CourseNode; import org.olat.course.run.scoring.ScoreEvaluation; import org.olat.course.run.userview.UserCourseEnvironment; +import org.olat.group.BusinessGroup; import org.olat.modules.assessment.Role; import org.olat.modules.assessment.model.AssessmentRunStatus; +import org.olat.modules.assessment.ui.AssessmentToolContainer; +import org.olat.modules.assessment.ui.AssessmentToolSecurityCallback; +import org.olat.repository.RepositoryEntry; /** * @@ -40,8 +49,6 @@ import org.olat.modules.assessment.model.AssessmentRunStatus; */ public interface CourseAssessmentService { - public AssessmentHandler getAssessmentHandler(CourseNode courseNode); - public AssessmentConfig getAssessmentConfig(CourseNode node); public void updateUserScoreEvaluation(CourseNode courseNode, ScoreEvaluation scoreEvaluation, @@ -172,5 +179,45 @@ public interface CourseAssessmentService { * @return the users log of this node */ public String getUserLog(CourseNode courseNode, UserCourseEnvironment userCourseEnvironment); + + /** + * Returns a controller to edit the node specific details. Check + * AssessmentConfig.hasEditableDetails() before invoking this method. + * + * @param ureq + * @param wControl + * @param courseNode + * @param userCourseEnvironment + * @return a controller or null + */ + public Controller getDetailsEditController(UserRequest ureq, WindowControl wControl, BreadcrumbPanel stackPanel, + CourseNode courseNode, UserCourseEnvironment coachCourseEnv, UserCourseEnvironment assessedUserCourseEnvironment); + + /** + * + * @return whether this node has a custom controller for the identity list. + */ + public boolean hasCustomIdentityList(CourseNode courseNode); + + /** + * Returns the controller with the list of assessed identities for a specific + * course node. Check AssessmentHandler.hasCustomIdentityList() before invoking + * this method. + * + * @param ureq + * @param wControl + * @param stackPanel + * @param courseNode + * @param courseEntry + * @param group + * @param coachCourseEnv + * @param toolContainer + * @param assessmentCallback + * @return + */ + public AssessmentCourseNodeController getIdentityListController(UserRequest ureq, WindowControl wControl, + TooledStackedPanel stackPanel, CourseNode courseNode, RepositoryEntry courseEntry, BusinessGroup group, + UserCourseEnvironment coachCourseEnv, AssessmentToolContainer toolContainer, + AssessmentToolSecurityCallback assessmentCallback); } diff --git a/src/main/java/org/olat/course/assessment/handler/AssessmentHandler.java b/src/main/java/org/olat/course/assessment/handler/AssessmentHandler.java index defddaf7799..22342455067 100644 --- a/src/main/java/org/olat/course/assessment/handler/AssessmentHandler.java +++ b/src/main/java/org/olat/course/assessment/handler/AssessmentHandler.java @@ -33,8 +33,11 @@ import org.olat.modules.assessment.ui.AssessmentToolSecurityCallback; import org.olat.repository.RepositoryEntry; /** + * The course nodes can implement some details individually. Have a look at the + * CourseAssessmentService for the descriptions of the methods. * * Initial date: 20 Aug 2019<br> + * * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com * */ @@ -44,41 +47,11 @@ public interface AssessmentHandler { public AssessmentConfig getAssessmentConfig(CourseNode courseNode); - /** - * Returns a controller to edit the node specific details. Check - * AssessmentConfig.hasEditableDetails() before invoking this method. - * - * @param ureq - * @param wControl - * @param courseNode - * @param userCourseEnvironment - * @return a controller or null - */ public Controller getDetailsEditController(UserRequest ureq, WindowControl wControl, BreadcrumbPanel stackPanel, CourseNode courseNode, UserCourseEnvironment coachCourseEnv, UserCourseEnvironment assessedUserCourseEnvironment); - /** - * - * @return whether this node has a custom controller for the identity list. - */ public boolean hasCustomIdentityList(); - /** - * Returns the controller with the list of assessed identities for a specific - * course node. Check AssessmentHandler.hasCustomIdentityList() before invoking - * this method. - * - * @param ureq - * @param wControl - * @param stackPanel - * @param courseNode - * @param courseEntry - * @param group - * @param coachCourseEnv - * @param toolContainer - * @param assessmentCallback - * @return - */ public AssessmentCourseNodeController getIdentityListController(UserRequest ureq, WindowControl wControl, TooledStackedPanel stackPanel, CourseNode courseNode, RepositoryEntry courseEntry, BusinessGroup group, UserCourseEnvironment coachCourseEnv, AssessmentToolContainer toolContainer, diff --git a/src/main/java/org/olat/course/assessment/manager/CourseAssessmentServiceImpl.java b/src/main/java/org/olat/course/assessment/manager/CourseAssessmentServiceImpl.java index d6dd7e2a2af..35ea3d50c9e 100644 --- a/src/main/java/org/olat/course/assessment/manager/CourseAssessmentServiceImpl.java +++ b/src/main/java/org/olat/course/assessment/manager/CourseAssessmentServiceImpl.java @@ -26,18 +26,28 @@ import java.util.Map; import javax.annotation.PostConstruct; +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.stack.BreadcrumbPanel; +import org.olat.core.gui.components.stack.TooledStackedPanel; +import org.olat.core.gui.control.Controller; +import org.olat.core.gui.control.WindowControl; import org.olat.core.id.Identity; import org.olat.course.assessment.AssessmentManager; import org.olat.course.assessment.CourseAssessmentService; import org.olat.course.assessment.handler.AssessmentConfig; import org.olat.course.assessment.handler.AssessmentHandler; import org.olat.course.assessment.handler.NonAssessmentHandler; +import org.olat.course.assessment.ui.tool.AssessmentCourseNodeController; import org.olat.course.auditing.UserNodeAuditManager; import org.olat.course.nodes.CourseNode; import org.olat.course.run.scoring.ScoreEvaluation; import org.olat.course.run.userview.UserCourseEnvironment; +import org.olat.group.BusinessGroup; import org.olat.modules.assessment.Role; import org.olat.modules.assessment.model.AssessmentRunStatus; +import org.olat.modules.assessment.ui.AssessmentToolContainer; +import org.olat.modules.assessment.ui.AssessmentToolSecurityCallback; +import org.olat.repository.RepositoryEntry; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -68,13 +78,7 @@ public class CourseAssessmentServiceImpl implements CourseAssessmentService { } } - @Override - public AssessmentConfig getAssessmentConfig(CourseNode node) { - return getAssessmentHandler(node).getAssessmentConfig(node); - } - - @Override - public AssessmentHandler getAssessmentHandler(CourseNode courseNode) { + private AssessmentHandler getAssessmentHandler(CourseNode courseNode) { AssessmentHandler handler = assessmentHandlers.get(courseNode.getType()); if (handler == null) { handler = nonAssessmentHandler; @@ -82,6 +86,11 @@ public class CourseAssessmentServiceImpl implements CourseAssessmentService { return handler; } + @Override + public AssessmentConfig getAssessmentConfig(CourseNode node) { + return getAssessmentHandler(node).getAssessmentConfig(node); + } + @Override public void updateUserScoreEvaluation(CourseNode courseNode, ScoreEvaluation scoreEvaluation, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity, boolean incrementAttempts, Role by) { @@ -207,4 +216,26 @@ public class CourseAssessmentServiceImpl implements CourseAssessmentService { return am.getUserNodeLog(courseNode, assessedIdentity); } + @Override + public Controller getDetailsEditController(UserRequest ureq, WindowControl wControl, BreadcrumbPanel stackPanel, + CourseNode courseNode, UserCourseEnvironment coachCourseEnv, + UserCourseEnvironment assessedUserCourseEnvironment) { + return getAssessmentHandler(courseNode).getDetailsEditController(ureq, wControl, stackPanel, courseNode, + coachCourseEnv, assessedUserCourseEnvironment); + } + + @Override + public boolean hasCustomIdentityList(CourseNode courseNode) { + return getAssessmentHandler(courseNode).hasCustomIdentityList(); + } + + @Override + public AssessmentCourseNodeController getIdentityListController(UserRequest ureq, WindowControl wControl, + TooledStackedPanel stackPanel, CourseNode courseNode, RepositoryEntry courseEntry, BusinessGroup group, + UserCourseEnvironment coachCourseEnv, AssessmentToolContainer toolContainer, + AssessmentToolSecurityCallback assessmentCallback) { + return getAssessmentHandler(courseNode).getIdentityListController(ureq, wControl, stackPanel, courseNode, + courseEntry, group, coachCourseEnv, toolContainer, assessmentCallback); + } + } diff --git a/src/main/java/org/olat/course/assessment/ui/tool/AssessmentCourseTreeController.java b/src/main/java/org/olat/course/assessment/ui/tool/AssessmentCourseTreeController.java index ace5afc334b..fa589b51d0f 100644 --- a/src/main/java/org/olat/course/assessment/ui/tool/AssessmentCourseTreeController.java +++ b/src/main/java/org/olat/course/assessment/ui/tool/AssessmentCourseTreeController.java @@ -46,7 +46,6 @@ import org.olat.course.ICourse; import org.olat.course.assessment.AssessmentHelper; import org.olat.course.assessment.CourseAssessmentService; import org.olat.course.assessment.handler.AssessmentConfig; -import org.olat.course.assessment.handler.AssessmentHandler; import org.olat.course.assessment.ui.tool.event.CourseNodeEvent; import org.olat.course.nodes.AssessableCourseNode; import org.olat.course.nodes.CourseNode; @@ -297,9 +296,8 @@ public class AssessmentCourseTreeController extends BasicController implements A WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(oresUsers, null, getWindowControl()); OLATResourceable oresNode = OresHelper.createOLATResourceableInstance("Node", Long.valueOf(courseNode.getIdent())); WindowControl bbwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(oresNode, null, bwControl); - AssessmentHandler assessmentHandler = courseAssessmentService.getAssessmentHandler(courseNode); - if (assessmentHandler.hasCustomIdentityList()) { - identityListCtrl = assessmentHandler.getIdentityListController(ureq, getWindowControl(), stackPanel, + if (courseAssessmentService.hasCustomIdentityList(courseNode)) { + identityListCtrl = courseAssessmentService.getIdentityListController(ureq, getWindowControl(), stackPanel, courseNode, courseEntry, null, coachCourseEnv, toolContainer, assessmentCallback); } else { identityListCtrl = new IdentityListCourseNodeController(ureq, bbwControl, stackPanel, courseEntry, null, diff --git a/src/main/java/org/olat/course/assessment/ui/tool/AssessmentIdentityCourseNodeController.java b/src/main/java/org/olat/course/assessment/ui/tool/AssessmentIdentityCourseNodeController.java index 09335e2c722..d2c23bccbcb 100644 --- a/src/main/java/org/olat/course/assessment/ui/tool/AssessmentIdentityCourseNodeController.java +++ b/src/main/java/org/olat/course/assessment/ui/tool/AssessmentIdentityCourseNodeController.java @@ -128,9 +128,8 @@ public class AssessmentIdentityCourseNodeController extends BasicController impl // Add the users details controller AssessmentConfig assessmentConfig = courseAssessmentService.getAssessmentConfig(courseNode); if (assessmentConfig.hasEditableDetails() && courseNodeDetails) { - detailsEditController = courseAssessmentService.getAssessmentHandler(aCourseNode) - .getDetailsEditController(ureq, wControl, stackPanel, courseNode, coachCourseEnv, - assessedUserCourseEnvironment); + detailsEditController = courseAssessmentService.getDetailsEditController(ureq, wControl, stackPanel, + courseNode, coachCourseEnv, assessedUserCourseEnvironment); listenTo(detailsEditController); identityAssessmentVC.put("details", detailsEditController.getInitialComponent()); } diff --git a/src/main/java/org/olat/course/assessment/ui/tool/AssessmentIdentityListCourseTreeController.java b/src/main/java/org/olat/course/assessment/ui/tool/AssessmentIdentityListCourseTreeController.java index 09165a7570b..1f06ae04f63 100644 --- a/src/main/java/org/olat/course/assessment/ui/tool/AssessmentIdentityListCourseTreeController.java +++ b/src/main/java/org/olat/course/assessment/ui/tool/AssessmentIdentityListCourseTreeController.java @@ -46,7 +46,6 @@ import org.olat.course.ICourse; import org.olat.course.assessment.AssessmentHelper; import org.olat.course.assessment.CourseAssessmentService; import org.olat.course.assessment.handler.AssessmentConfig; -import org.olat.course.assessment.handler.AssessmentHandler; import org.olat.course.assessment.ui.tool.event.CourseNodeEvent; import org.olat.course.nodes.CourseNode; import org.olat.course.nodes.GTACourseNode; @@ -165,7 +164,6 @@ public class AssessmentIdentityListCourseTreeController extends BasicController OLATResourceable ores = OresHelper.createOLATResourceableInstance("Node", new Long(courseNode.getIdent())); WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ores, null, getWindowControl()); - AssessmentHandler assessmentHandler = courseAssessmentService.getAssessmentHandler(courseNode); AssessmentConfig assessmentConfig = courseAssessmentService.getAssessmentConfig(courseNode); if(assessmentConfig.isAssessedBusinessGroups() && courseNode instanceof GTACourseNode) { CourseEnvironment courseEnv = CourseFactory.loadCourse(courseEntry).getCourseEnvironment(); @@ -179,8 +177,8 @@ public class AssessmentIdentityListCourseTreeController extends BasicController } currentCtrl = ((GTACourseNode)courseNode).getCoachedGroupListController(ureq, bwControl, stackPanel, coachCourseEnv, assessmentCallback.isAdmin(), coachedGroups); - } else if (assessmentHandler.hasCustomIdentityList()) { - currentCtrl = assessmentHandler.getIdentityListController(ureq, bwControl, stackPanel, courseNode, + } else if (courseAssessmentService.hasCustomIdentityList(courseNode)) { + currentCtrl = courseAssessmentService.getIdentityListController(ureq, bwControl, stackPanel, courseNode, courseEntry, businessGroup, coachCourseEnv, toolContainer, assessmentCallback); } else { currentCtrl = new IdentityListCourseNodeController(ureq, bwControl, stackPanel, courseEntry, businessGroup, -- GitLab