From 82d65316bae6cd62b8a4e73b714123233972a2aa Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Tue, 17 Jul 2018 15:27:00 +0200
Subject: [PATCH] OO-3286: adapt archive data methods to curriculums

---
 .../org/olat/course/archiver/ArchiveResource.java  |  9 ++-------
 .../ui/tool/IdentityListCourseNodeController.java  | 14 +++++++++-----
 .../ui/QTI12StatisticsToolController.java          |  4 ++--
 .../qti21/ui/QTI21RuntimeStatisticsController.java |  4 ++--
 .../statistics/QTI21StatisticsToolController.java  |  4 ++--
 .../modules/assessment/AssessmentToolOptions.java  | 10 ++++++++--
 6 files changed, 25 insertions(+), 20 deletions(-)

diff --git a/src/main/java/org/olat/course/archiver/ArchiveResource.java b/src/main/java/org/olat/course/archiver/ArchiveResource.java
index caefdf01d19..593a05f457b 100644
--- a/src/main/java/org/olat/course/archiver/ArchiveResource.java
+++ b/src/main/java/org/olat/course/archiver/ArchiveResource.java
@@ -26,7 +26,6 @@ import java.util.zip.ZipOutputStream;
 
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.commons.io.IOUtils;
 import org.olat.core.gui.media.MediaResource;
 import org.olat.core.id.OLATResourceable;
 import org.olat.core.logging.OLog;
@@ -104,17 +103,13 @@ public class ArchiveResource implements MediaResource {
 		String urlEncodedLabel = StringHelper.urlEncodeUTF8(label);
 		hres.setHeader("Content-Disposition","attachment; filename*=UTF-8''" + urlEncodedLabel);			
 		hres.setHeader("Content-Description", urlEncodedLabel);
-		
-		ZipOutputStream zout = null;
-		try {
-			zout = new ZipOutputStream(hres.getOutputStream());
+
+		try(ZipOutputStream zout = new ZipOutputStream(hres.getOutputStream())) {
 			zout.setLevel(9);
 			ICourse course = CourseFactory.loadCourse(courseOres);
 			courseNode.archiveNodeData(locale, course, options, zout, encoding);
 		} catch (Exception e) {
 			log.error("", e);
-		} finally {
-			IOUtils.closeQuietly(zout);
 		}
 	}
 
diff --git a/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java b/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java
index 956e2da54a4..c992c772ac1 100644
--- a/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java
+++ b/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java
@@ -526,17 +526,21 @@ public class IdentityListCourseNodeController extends FormBasicController
 	
 	private void fillAlternativeToAssessableIdentityList(AssessmentToolOptions options, SearchAssessedIdentityParams params) {
 		List<Group> baseGroups = new ArrayList<>();
-		if((assessmentCallback.canAssessRepositoryEntryMembers()
-				&& (assessmentCallback.getCoachedGroups() == null || assessmentCallback.getCoachedGroups().isEmpty()))
-				|| assessmentCallback.canAssessNonMembers()) {
+		if(assessmentCallback.canAssessRepositoryEntryMembers() || assessmentCallback.canAssessNonMembers()) {
 			baseGroups.add(repositoryService.getDefaultGroup(courseEntry));
 		}
-		if(assessmentCallback.getCoachedGroups() != null && assessmentCallback.getCoachedGroups().size() > 0) {
+		if(assessmentCallback.canAssessBusinessGoupMembers() && assessmentCallback.getCoachedGroups() != null && !assessmentCallback.getCoachedGroups().isEmpty()) {
 			for(BusinessGroup coachedGroup:assessmentCallback.getCoachedGroups()) {
 				baseGroups.add(coachedGroup.getBaseGroup());
 			}
 		}
-		options.setGroups(baseGroups);
+		if(assessmentCallback.canAssessCurriculumMembers()) {
+			List<CurriculumElement> coachedCurriculumElements = coachCourseEnv.getCoachedCurriculumElements();
+			for(CurriculumElement coachedCurriculumElement:coachedCurriculumElements) {
+				baseGroups.add(coachedCurriculumElement.getGroup());
+			}
+		}
+		options.setAlternativeGroupsOfIdentities(baseGroups);
 		options.setNonMembers(params.isNonMembers());
 	}
 
diff --git a/src/main/java/org/olat/ims/qti/statistics/ui/QTI12StatisticsToolController.java b/src/main/java/org/olat/ims/qti/statistics/ui/QTI12StatisticsToolController.java
index 891cc9674ef..3cad1f5cbf6 100644
--- a/src/main/java/org/olat/ims/qti/statistics/ui/QTI12StatisticsToolController.java
+++ b/src/main/java/org/olat/ims/qti/statistics/ui/QTI12StatisticsToolController.java
@@ -80,9 +80,9 @@ public class QTI12StatisticsToolController extends BasicController implements Ac
 		if(asOptions.getGroup() != null) {
 			List<Group> bGroups = Collections.singletonList(asOptions.getGroup().getBaseGroup());
 			searchParams.setLimitToGroups(bGroups);
-		} else if(asOptions.getGroups() != null) {
+		} else if(asOptions.getAlternativeGroupsOfIdentities() != null) {
 			searchParams.setMayViewAllUsersAssessments(asOptions.isNonMembers());
-			searchParams.setLimitToGroups(asOptions.getGroups());
+			searchParams.setLimitToGroups(asOptions.getAlternativeGroupsOfIdentities());
 		}
 		
 		RepositoryEntry testEntry = courseNode.getReferencedRepositoryEntry();
diff --git a/src/main/java/org/olat/ims/qti21/ui/QTI21RuntimeStatisticsController.java b/src/main/java/org/olat/ims/qti21/ui/QTI21RuntimeStatisticsController.java
index 5bd3236f7ff..1cf7334a817 100644
--- a/src/main/java/org/olat/ims/qti21/ui/QTI21RuntimeStatisticsController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/QTI21RuntimeStatisticsController.java
@@ -85,8 +85,8 @@ public class QTI21RuntimeStatisticsController extends BasicController implements
 		if(asOptions.getGroup() != null) {
 			List<Group> bGroups = Collections.singletonList(asOptions.getGroup().getBaseGroup());
 			searchParams.setLimitToGroups(bGroups);
-		} else if(asOptions.getGroups() != null) {
-			searchParams.setLimitToGroups(asOptions.getGroups());
+		} else if(asOptions.getAlternativeGroupsOfIdentities() != null) {
+			searchParams.setLimitToGroups(asOptions.getAlternativeGroupsOfIdentities());
 		}
 		
 		QTI21DeliveryOptions deliveryOptions = qtiService.getDeliveryOptions(testEntry);
diff --git a/src/main/java/org/olat/ims/qti21/ui/statistics/QTI21StatisticsToolController.java b/src/main/java/org/olat/ims/qti21/ui/statistics/QTI21StatisticsToolController.java
index 6dc5d05da72..7cee2feac18 100644
--- a/src/main/java/org/olat/ims/qti21/ui/statistics/QTI21StatisticsToolController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/statistics/QTI21StatisticsToolController.java
@@ -109,8 +109,8 @@ public class QTI21StatisticsToolController extends BasicController implements Ac
 		if(asOptions.getGroup() != null) {// filter by business group
 			List<Group> bGroups = Collections.singletonList(asOptions.getGroup().getBaseGroup());
 			searchParams.setLimitToGroups(bGroups);
-		} else if(asOptions.getGroups() != null) {
-			searchParams.setLimitToGroups(asOptions.getGroups());
+		} else if(asOptions.getAlternativeGroupsOfIdentities() != null) {
+			searchParams.setLimitToGroups(asOptions.getAlternativeGroupsOfIdentities());
 		} else {
 			searchParams.setViewNonMembers(asOptions.isNonMembers());
 		}
diff --git a/src/main/java/org/olat/modules/assessment/AssessmentToolOptions.java b/src/main/java/org/olat/modules/assessment/AssessmentToolOptions.java
index 9b11a2ef87b..c9b9c67e12e 100644
--- a/src/main/java/org/olat/modules/assessment/AssessmentToolOptions.java
+++ b/src/main/java/org/olat/modules/assessment/AssessmentToolOptions.java
@@ -76,11 +76,17 @@ public class AssessmentToolOptions {
 		this.identities = identities;
 	}
 
-	public List<Group> getGroups() {
+	/**
+	 * This is a list of groups which eventually (if set) can
+	 * used instead of the list of identities.
+	 * 
+	 * @return A list of base groups.
+	 */
+	public List<Group> getAlternativeGroupsOfIdentities() {
 		return groups;
 	}
 
-	public void setGroups(List<Group> groups) {
+	public void setAlternativeGroupsOfIdentities(List<Group> groups) {
 		this.groups = groups;
 	}
 	
-- 
GitLab