From f818fa7161c6f5e517fdcc1d69aa26265c40bee0 Mon Sep 17 00:00:00 2001
From: uhensler <urs.hensler@frentix.com>
Date: Fri, 23 Aug 2019 14:58:10 +0200
Subject: [PATCH] OO-4186: Delete interface PersistentAssessableCourseNode

---
 .../olat/course/nodes/BasicLTICourseNode.java |   2 +-
 .../course/nodes/CheckListCourseNode.java     |   2 +-
 .../org/olat/course/nodes/GTACourseNode.java  |   4 +-
 .../olat/course/nodes/IQTESTCourseNode.java   |   2 +-
 .../org/olat/course/nodes/MSCourseNode.java   |   2 +-
 .../nodes/PersistentAssessableCourseNode.java |  33 -----
 .../course/nodes/PortfolioCourseNode.java     |   2 +-
 .../course/nodes/ProjectBrokerCourseNode.java |   2 +-
 .../olat/course/nodes/ScormCourseNode.java    |   2 +-
 .../org/olat/course/nodes/TACourseNode.java   |   4 +-
 .../gta/ui/GroupBulkDownloadResource.java     |   4 +-
 .../olat/course/nodes/iq/IQRunController.java | 113 +++++++-----------
 .../nodes/ms/MSCourseNodeRunController.java   |   8 +-
 13 files changed, 63 insertions(+), 117 deletions(-)
 delete mode 100644 src/main/java/org/olat/course/nodes/PersistentAssessableCourseNode.java

diff --git a/src/main/java/org/olat/course/nodes/BasicLTICourseNode.java b/src/main/java/org/olat/course/nodes/BasicLTICourseNode.java
index 0bad4813e6a..555f33e8a3f 100644
--- a/src/main/java/org/olat/course/nodes/BasicLTICourseNode.java
+++ b/src/main/java/org/olat/course/nodes/BasicLTICourseNode.java
@@ -59,7 +59,7 @@ import org.olat.resource.OLATResource;
  * @author guido
  * @author Charles Severance
  */
-public class BasicLTICourseNode extends AbstractAccessableCourseNode implements PersistentAssessableCourseNode {
+public class BasicLTICourseNode extends AbstractAccessableCourseNode implements AssessableCourseNode {
 
 	private static final long serialVersionUID = 2210572148308757127L;
 	private static final String translatorPackage = Util.getPackageName(LTIEditController.class);
diff --git a/src/main/java/org/olat/course/nodes/CheckListCourseNode.java b/src/main/java/org/olat/course/nodes/CheckListCourseNode.java
index dc28173ac50..cc1fbd2388b 100644
--- a/src/main/java/org/olat/course/nodes/CheckListCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/CheckListCourseNode.java
@@ -87,7 +87,7 @@ import org.olat.repository.RepositoryEntry;
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  *
  */
-public class CheckListCourseNode extends AbstractAccessableCourseNode implements PersistentAssessableCourseNode {
+public class CheckListCourseNode extends AbstractAccessableCourseNode implements AssessableCourseNode {
 	
 	private static final String PACKAGE_CL = Util.getPackageName(CheckListEditController.class);
 	private static final long serialVersionUID = -7460670977531082040L;
diff --git a/src/main/java/org/olat/course/nodes/GTACourseNode.java b/src/main/java/org/olat/course/nodes/GTACourseNode.java
index 7965a57ea6f..319bb12471e 100644
--- a/src/main/java/org/olat/course/nodes/GTACourseNode.java
+++ b/src/main/java/org/olat/course/nodes/GTACourseNode.java
@@ -91,7 +91,7 @@ import org.olat.user.UserManager;
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  *
  */
-public class GTACourseNode extends AbstractAccessableCourseNode implements PersistentAssessableCourseNode {
+public class GTACourseNode extends AbstractAccessableCourseNode implements AssessableCourseNode {
 	
 	private static final Logger log = Tracing.createLoggerFor(GTACourseNode.class);
 	private static final String PACKAGE_GTA = Util.getPackageName(GTAEditController.class);
@@ -535,7 +535,7 @@ public class GTACourseNode extends AbstractAccessableCourseNode implements Persi
 			
 			String courseTitle = course.getCourseTitle();
 			String fileName = ExportUtil.createFileNameWithTimeStamp(courseTitle, "xlsx");
-			List<AssessableCourseNode> nodes = Collections.<AssessableCourseNode>singletonList(this);
+			List<AssessableCourseNode> nodes = Collections.singletonList(this);
 			try(OutputStream out = new ShieldOutputStream(exportStream)) {
 				exportStream.putNextEntry(new ZipEntry(dirName + "/" + fileName));
 				ScoreAccountingHelper.createCourseResultsOverviewXMLTable(users, nodes, course, locale, out);
diff --git a/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java b/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java
index 573d3e2cf0e..509cdfcd940 100644
--- a/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java
@@ -122,7 +122,7 @@ import uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentTest;
  * @author Mike Stock Comment:
  * @author BPS (<a href="http://www.bps-system.de/">BPS Bildungsportal Sachsen GmbH</a>)
  */
-public class IQTESTCourseNode extends AbstractAccessableCourseNode implements PersistentAssessableCourseNode, QTICourseNode {
+public class IQTESTCourseNode extends AbstractAccessableCourseNode implements AssessableCourseNode, QTICourseNode {
 	private static final long serialVersionUID = 5806292895738005387L;
 	private static final Logger log = Tracing.createLoggerFor(IQTESTCourseNode.class);
 	private static final String translatorStr = Util.getPackageName(IQEditController.class);
diff --git a/src/main/java/org/olat/course/nodes/MSCourseNode.java b/src/main/java/org/olat/course/nodes/MSCourseNode.java
index df8c5bc67a9..4b07c728307 100644
--- a/src/main/java/org/olat/course/nodes/MSCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/MSCourseNode.java
@@ -85,7 +85,7 @@ import org.olat.resource.OLATResource;
  * @author gnaegi
  * @author BPS (<a href="http://www.bps-system.de/">BPS Bildungsportal Sachsen GmbH</a>)
  */
-public class MSCourseNode extends AbstractAccessableCourseNode implements PersistentAssessableCourseNode {
+public class MSCourseNode extends AbstractAccessableCourseNode implements AssessableCourseNode {
 	
 	private static final long serialVersionUID = -7741172700015384397L;
 	
diff --git a/src/main/java/org/olat/course/nodes/PersistentAssessableCourseNode.java b/src/main/java/org/olat/course/nodes/PersistentAssessableCourseNode.java
deleted file mode 100644
index 4ea8b9f6e68..00000000000
--- a/src/main/java/org/olat/course/nodes/PersistentAssessableCourseNode.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * <a href="http://www.openolat.org">
- * OpenOLAT - Online Learning and Training</a><br>
- * <p>
- * Licensed under the Apache License, Version 2.0 (the "License"); <br>
- * you may not use this file except in compliance with the License.<br>
- * You may obtain a copy of the License at the
- * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
- * <p>
- * Unless required by applicable law or agreed to in writing,<br>
- * software distributed under the License is distributed on an "AS IS" BASIS, <br>
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
- * See the License for the specific language governing permissions and <br>
- * limitations under the License.
- * <p>
- * Initial code contributed and copyrighted by<br>
- * frentix GmbH, http://www.frentix.com
- * <p>
- */
-package org.olat.course.nodes;
-
-/**
- * Most of the course node saved their data on the database with the
- * assessment service.
- * 
- * Initial date: 26.10.2015<br>
- * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
- *
- */
-public interface PersistentAssessableCourseNode extends AssessableCourseNode {
-	
-
-}
diff --git a/src/main/java/org/olat/course/nodes/PortfolioCourseNode.java b/src/main/java/org/olat/course/nodes/PortfolioCourseNode.java
index 43e78f57384..9f0de6b4d39 100644
--- a/src/main/java/org/olat/course/nodes/PortfolioCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/PortfolioCourseNode.java
@@ -78,7 +78,7 @@ import org.olat.repository.handlers.RepositoryHandlerFactory;
  * Initial Date:  6 oct. 2010 <br>
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  */
-public class PortfolioCourseNode extends AbstractAccessableCourseNode implements PersistentAssessableCourseNode {
+public class PortfolioCourseNode extends AbstractAccessableCourseNode implements AssessableCourseNode {
 	
 	private static final Logger log = Tracing.createLoggerFor(PortfolioCourseNode.class);
 	private static final int CURRENT_CONFIG_VERSION = 2;
diff --git a/src/main/java/org/olat/course/nodes/ProjectBrokerCourseNode.java b/src/main/java/org/olat/course/nodes/ProjectBrokerCourseNode.java
index 559b2345fbb..1ce4d540116 100644
--- a/src/main/java/org/olat/course/nodes/ProjectBrokerCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/ProjectBrokerCourseNode.java
@@ -115,7 +115,7 @@ import com.thoughtworks.xstream.XStream;
  *   @author Christian Guretzki
  */
 
-public class ProjectBrokerCourseNode extends GenericCourseNode implements PersistentAssessableCourseNode {
+public class ProjectBrokerCourseNode extends GenericCourseNode implements AssessableCourseNode {
 
 	private static final long serialVersionUID = -8177448874150049173L;
 	private static final Logger log = Tracing.createLoggerFor(ProjectBrokerCourseNode.class);
diff --git a/src/main/java/org/olat/course/nodes/ScormCourseNode.java b/src/main/java/org/olat/course/nodes/ScormCourseNode.java
index 6fbd0ec3961..fab1348a4ce 100644
--- a/src/main/java/org/olat/course/nodes/ScormCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/ScormCourseNode.java
@@ -76,7 +76,7 @@ import org.olat.repository.handlers.RepositoryHandlerFactory;
  * @author Felix Jost
  * @author BPS (<a href="http://www.bps-system.de/">BPS Bildungsportal Sachsen GmbH</a>)
  */
-public class ScormCourseNode extends AbstractAccessableCourseNode implements PersistentAssessableCourseNode {
+public class ScormCourseNode extends AbstractAccessableCourseNode implements AssessableCourseNode {
 	
 	private static final Logger log = Tracing.createLoggerFor(ScormCourseNode.class);
 	private static final long serialVersionUID = 2970594874787761801L;
diff --git a/src/main/java/org/olat/course/nodes/TACourseNode.java b/src/main/java/org/olat/course/nodes/TACourseNode.java
index 72cf5471648..d56b310129b 100644
--- a/src/main/java/org/olat/course/nodes/TACourseNode.java
+++ b/src/main/java/org/olat/course/nodes/TACourseNode.java
@@ -101,7 +101,7 @@ import org.olat.resource.OLATResource;
  * 	 @author BPS (<a href="http://www.bps-system.de/">BPS Bildungsportal Sachsen GmbH</a>)
  */
 
-public class TACourseNode extends GenericCourseNode implements PersistentAssessableCourseNode {
+public class TACourseNode extends GenericCourseNode implements AssessableCourseNode {
 	
 	private static final long serialVersionUID = -7266553843441305310L;
 
@@ -505,7 +505,7 @@ public class TACourseNode extends GenericCourseNode implements PersistentAssessa
 			
 			String courseTitle = course.getCourseTitle();
 			String fileName = ExportUtil.createFileNameWithTimeStamp(courseTitle, "xlsx");
-			List<AssessableCourseNode> nodes = Collections.<AssessableCourseNode>singletonList(this);
+			List<AssessableCourseNode> nodes = Collections.singletonList(this);
 			// write course results overview table to filesystem
 			try(OutputStream out = new ShieldOutputStream(exportStream)) {
 				exportStream.putNextEntry(new ZipEntry(dirName + "/" + fileName));
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GroupBulkDownloadResource.java b/src/main/java/org/olat/course/nodes/gta/ui/GroupBulkDownloadResource.java
index dd3971e2f07..986cabb473c 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/GroupBulkDownloadResource.java
+++ b/src/main/java/org/olat/course/nodes/gta/ui/GroupBulkDownloadResource.java
@@ -30,13 +30,13 @@ import java.util.zip.ZipOutputStream;
 
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.logging.log4j.Logger;
 import org.olat.basesecurity.GroupRoles;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.media.MediaResource;
 import org.olat.core.gui.media.ServletUtil;
 import org.olat.core.id.Identity;
 import org.olat.core.id.OLATResourceable;
-import org.apache.logging.log4j.Logger;
 import org.olat.core.logging.Tracing;
 import org.olat.core.util.ExportUtil;
 import org.olat.core.util.Formatter;
@@ -130,7 +130,7 @@ public class GroupBulkDownloadResource implements MediaResource {
 						.getMembers(groups, GroupRoles.participant.name());
 				String courseTitle = course.getCourseTitle();
 				String fileName = ExportUtil.createFileNameWithTimeStamp(courseTitle, "xlsx");
-				List<AssessableCourseNode> nodes = Collections.<AssessableCourseNode>singletonList(courseNode);
+				List<AssessableCourseNode> nodes = Collections.singletonList(courseNode);
 				try(OutputStream out = new ShieldOutputStream(zout)) {
 					zout.putNextEntry(new ZipEntry(fileName));
 					ScoreAccountingHelper.createCourseResultsOverviewXMLTable(assessableIdentities, nodes, course, locale, out);
diff --git a/src/main/java/org/olat/course/nodes/iq/IQRunController.java b/src/main/java/org/olat/course/nodes/iq/IQRunController.java
index 0356bd7299a..a757c3cfe7c 100644
--- a/src/main/java/org/olat/course/nodes/iq/IQRunController.java
+++ b/src/main/java/org/olat/course/nodes/iq/IQRunController.java
@@ -81,7 +81,6 @@ import org.olat.course.nodes.IQSELFCourseNode;
 import org.olat.course.nodes.IQSURVCourseNode;
 import org.olat.course.nodes.IQTESTCourseNode;
 import org.olat.course.nodes.ObjectivesHelper;
-import org.olat.course.nodes.PersistentAssessableCourseNode;
 import org.olat.course.nodes.SelfAssessableCourseNode;
 import org.olat.course.nodes.ms.DocumentsMapper;
 import org.olat.course.run.scoring.ScoreEvaluation;
@@ -211,10 +210,6 @@ public class IQRunController extends BasicController implements GenericEventList
 		myContent.contextPut("changelogconfig", courseModule.isDisplayChangeLog());
 	}
 
-	/**
-	 * @param ureq
-	 * @return
-	 */
 	private StringBuilder createChangelogMsg(UserRequest ureq) {
 		//re could be null, but if we are here it should not be null!
 		Roles userRoles = ureq.getUserSession().getRoles();
@@ -350,9 +345,6 @@ public class IQRunController extends BasicController implements GenericEventList
 		myContent.contextPut("infobox", courseModule.isDisplayInfoBox());
 		myContent.contextPut("changelogconfig", courseModule.isDisplayChangeLog());
 	}
-
-	
-	
 	
 	private void init(UserRequest ureq) {
 		startButton = LinkFactory.createButton("start", myContent, this);
@@ -424,9 +416,6 @@ public class IQRunController extends BasicController implements GenericEventList
 		}
 	}
 	
-	/**
-	 * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest, org.olat.core.gui.components.Component, org.olat.core.gui.control.Event)
-	 */
 	@Override
 	public void event(UserRequest ureq, Component source, Event event) {
 		if (source == startButton && startButton.isEnabled() && startButton.isVisible()){
@@ -486,7 +475,7 @@ public class IQRunController extends BasicController implements GenericEventList
 			AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager();
 			Long assessmentID = am.getAssessmentID(courseNode, ureq.getIdentity());			
 			if(assessmentID==null) {
-        //fallback solution: if the assessmentID is not available via AssessmentManager than try to get it via IQManager
+				//fallback solution: if the assessmentID is not available via AssessmentManager than try to get it via IQManager
 				long callingResId = userCourseEnv.getCourseEnvironment().getCourseResourceableId().longValue();
 				String callingResDetail = courseNode.getIdent();
 				assessmentID = iqManager.getLastAssessmentID(ureq.getIdentity(), callingResId, callingResDetail);
@@ -566,9 +555,6 @@ public class IQRunController extends BasicController implements GenericEventList
 		//
 	}
 
-	/**
-	 * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest, org.olat.core.gui.control.Controller, org.olat.core.gui.control.Event)
-	 */
 	@Override
 	public void event(UserRequest urequest, Controller source, Event event) {
 		if (source == displayController) {
@@ -637,54 +623,51 @@ public class IQRunController extends BasicController implements GenericEventList
 
 		// user data
 		Identity identity = userCourseEnv.getIdentityEnvironment().getIdentity();
-    	if(courseNode instanceof PersistentAssessableCourseNode) {
-    		PersistentAssessableCourseNode acn = (PersistentAssessableCourseNode)courseNode;
-    		AssessmentEntry assessmentEntry = courseAssessmentService.getAssessmentEntry(courseNode, userCourseEnv);
-    		if(assessmentEntry == null) {
-    			myContent.contextPut("blockAfterSuccess", Boolean.FALSE);
-	    		myContent.contextPut("score", null);
-	    		myContent.contextPut("hasPassedValue", Boolean.FALSE);
-	    		myContent.contextPut("passed", Boolean.FALSE);
-	    		myContent.contextPut("comment", null);
-	    		myContent.contextPut("docs", null);
-	    		myContent.contextPut("attempts", 0);
-    		} else {
-	    		//block if test passed (and config set to check it)
-	    		Boolean blockAfterSuccess = modConfig.getBooleanEntry(IQEditController.CONFIG_KEY_BLOCK_AFTER_SUCCESS);
-	    		Boolean blocked = Boolean.FALSE;
-	    		if(blockAfterSuccess != null && blockAfterSuccess.booleanValue()) {
-	        		Boolean passed = assessmentEntry.getPassed();
-	        		if(passed != null && passed.booleanValue()) {
-	        			blocked = Boolean.TRUE;
-	        		}
-	    		}
-	    		myContent.contextPut("blockAfterSuccess", blocked);
-	    		boolean resultsVisible = assessmentEntry.getUserVisibility() == null || assessmentEntry.getUserVisibility().booleanValue();
-	    		myContent.contextPut("resultsVisible", resultsVisible);
-	    		myContent.contextPut("score", AssessmentHelper.getRoundedScore(assessmentEntry.getScore()));
-	    		myContent.contextPut("hasPassedValue", (assessmentEntry.getPassed() == null ? Boolean.FALSE : Boolean.TRUE));
-	    		myContent.contextPut("passed", assessmentEntry.getPassed());
-	    		if(resultsVisible) {
-	    			AssessmentConfig assessmentConfig = courseAssessmentService.getAssessmentConfig(courseNode);
-	    			if(assessmentConfig.hasComment()) {
-	    				StringBuilder comment = Formatter.stripTabsAndReturns(assessmentEntry.getComment());
-	    				myContent.contextPut("comment", StringHelper.xssScan(comment));
-						myContent.contextPut("incomment", isPanelOpen(ureq, "comment", true));
-	    			}
-
-	    			if(assessmentConfig.hasIndividualAsssessmentDocuments()) {
-						List<File> docs = courseAssessmentService.getIndividualAssessmentDocuments(acn, userCourseEnv);
-						String mapperUri = registerCacheableMapper(ureq, null, new DocumentsMapper(docs));
-						myContent.contextPut("docsMapperUri", mapperUri);
-						myContent.contextPut("docs", docs);
-						myContent.contextPut("inassessmentDocuments", isPanelOpen(ureq, "assessmentDocuments", true));
-	    			}
-	    		}
-	    		myContent.contextPut("attempts", assessmentEntry.getAttempts() == null ? 0 : assessmentEntry.getAttempts());
-    		}
-    	}
-    	
-    	UserNodeAuditManager am = userCourseEnv.getCourseEnvironment().getAuditManager();
+		AssessmentEntry assessmentEntry = courseAssessmentService.getAssessmentEntry(courseNode, userCourseEnv);
+		if(assessmentEntry == null) {
+			myContent.contextPut("blockAfterSuccess", Boolean.FALSE);
+			myContent.contextPut("score", null);
+			myContent.contextPut("hasPassedValue", Boolean.FALSE);
+			myContent.contextPut("passed", Boolean.FALSE);
+			myContent.contextPut("comment", null);
+			myContent.contextPut("docs", null);
+			myContent.contextPut("attempts", 0);
+		} else {
+			//block if test passed (and config set to check it)
+			Boolean blockAfterSuccess = modConfig.getBooleanEntry(IQEditController.CONFIG_KEY_BLOCK_AFTER_SUCCESS);
+			Boolean blocked = Boolean.FALSE;
+			if(blockAfterSuccess != null && blockAfterSuccess.booleanValue()) {
+				Boolean passed = assessmentEntry.getPassed();
+				if(passed != null && passed.booleanValue()) {
+					blocked = Boolean.TRUE;
+				}
+			}
+			myContent.contextPut("blockAfterSuccess", blocked);
+			boolean resultsVisible = assessmentEntry.getUserVisibility() == null || assessmentEntry.getUserVisibility().booleanValue();
+			myContent.contextPut("resultsVisible", resultsVisible);
+			myContent.contextPut("score", AssessmentHelper.getRoundedScore(assessmentEntry.getScore()));
+			myContent.contextPut("hasPassedValue", (assessmentEntry.getPassed() == null ? Boolean.FALSE : Boolean.TRUE));
+			myContent.contextPut("passed", assessmentEntry.getPassed());
+			if(resultsVisible) {
+				AssessmentConfig assessmentConfig = courseAssessmentService.getAssessmentConfig(courseNode);
+				if(assessmentConfig.hasComment()) {
+					StringBuilder comment = Formatter.stripTabsAndReturns(assessmentEntry.getComment());
+					myContent.contextPut("comment", StringHelper.xssScan(comment));
+					myContent.contextPut("incomment", isPanelOpen(ureq, "comment", true));
+				}
+
+				if(assessmentConfig.hasIndividualAsssessmentDocuments()) {
+					List<File> docs = courseAssessmentService.getIndividualAssessmentDocuments(courseNode, userCourseEnv);
+					String mapperUri = registerCacheableMapper(ureq, null, new DocumentsMapper(docs));
+					myContent.contextPut("docsMapperUri", mapperUri);
+					myContent.contextPut("docs", docs);
+					myContent.contextPut("inassessmentDocuments", isPanelOpen(ureq, "assessmentDocuments", true));
+				}
+			}
+			myContent.contextPut("attempts", assessmentEntry.getAttempts() == null ? 0 : assessmentEntry.getAttempts());
+		}
+		
+		UserNodeAuditManager am = userCourseEnv.getCourseEnvironment().getAuditManager();
 		myContent.contextPut("log", am.getUserNodeLog(courseNode, identity));
 						
 		exposeResults(ureq);
@@ -780,10 +763,6 @@ public class IQRunController extends BasicController implements GenericEventList
 		return panelId + "::" + userCourseEnv.getCourseEnvironment().getCourseResourceableId() + "::" + courseNode.getIdent();
 	}
 	
-	/**
-	 * 
-	 * @see org.olat.core.gui.control.DefaultController#doDisspose(boolean)
-	 */
 	@Override
 	protected void doDispose() {
 		// child controllers disposed by basic controller
diff --git a/src/main/java/org/olat/course/nodes/ms/MSCourseNodeRunController.java b/src/main/java/org/olat/course/nodes/ms/MSCourseNodeRunController.java
index d9ea6ec5930..8bdd719accf 100644
--- a/src/main/java/org/olat/course/nodes/ms/MSCourseNodeRunController.java
+++ b/src/main/java/org/olat/course/nodes/ms/MSCourseNodeRunController.java
@@ -50,10 +50,10 @@ import org.olat.course.assessment.CourseAssessmentService;
 import org.olat.course.assessment.handler.AssessmentConfig;
 import org.olat.course.auditing.UserNodeAuditManager;
 import org.olat.course.highscore.ui.HighScoreRunController;
+import org.olat.course.nodes.AssessableCourseNode;
 import org.olat.course.nodes.CourseNode;
 import org.olat.course.nodes.MSCourseNode;
 import org.olat.course.nodes.ObjectivesHelper;
-import org.olat.course.nodes.PersistentAssessableCourseNode;
 import org.olat.course.run.userview.UserCourseEnvironment;
 import org.olat.modules.ModuleConfiguration;
 import org.olat.modules.assessment.AssessmentEntry;
@@ -74,7 +74,7 @@ public class MSCourseNodeRunController extends BasicController implements Activa
 	private boolean hasScore, hasPassed, hasComment;
 	private final UserCourseEnvironment userCourseEnv;
 	private final boolean overrideUserResultsVisiblity;
-	private final PersistentAssessableCourseNode courseNode;
+	private final AssessableCourseNode courseNode;
 	
 	@Autowired
 	private CourseModule courseModule;
@@ -92,7 +92,7 @@ public class MSCourseNodeRunController extends BasicController implements Activa
 	 * @param showLog If true, the change log will be displayed
 	 */
 	public MSCourseNodeRunController(UserRequest ureq, WindowControl wControl, UserCourseEnvironment userCourseEnv,
-			PersistentAssessableCourseNode courseNode, boolean displayNodeInfo, boolean showLog) {
+			AssessableCourseNode courseNode, boolean displayNodeInfo, boolean showLog) {
 		this(ureq, wControl, userCourseEnv, courseNode, displayNodeInfo, showLog, false);
 	}
 	
@@ -108,7 +108,7 @@ public class MSCourseNodeRunController extends BasicController implements Activa
 	 * @param overrideUserResultsVisiblity If the controller can override the user visiblity of the score evaluation
 	 */
 	public MSCourseNodeRunController(UserRequest ureq, WindowControl wControl,
-			UserCourseEnvironment userCourseEnv, PersistentAssessableCourseNode courseNode,
+			UserCourseEnvironment userCourseEnv, AssessableCourseNode courseNode,
 			boolean displayNodeInfo, boolean showLog, boolean overrideUserResultsVisiblity) {
 		super(ureq, wControl, Util.createPackageTranslator(CourseNode.class, ureq.getLocale()));
 		
-- 
GitLab