From 5ebc9acafb5bdaf01ab1af9370a60537106a9e69 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Fri, 8 Dec 2017 09:58:30 +0100
Subject: [PATCH] OO-3193: render the date of the certificate in the excel
 download of the list of assessed identities

---
 .../IdentityListCourseNodeController.java     |  2 +-
 ...eAndEfficiencyStatementListController.java |  2 +-
 .../ui/DownloadCertificateCellRenderer.java   | 41 +++++++++----------
 .../modules/coach/ui/CourseController.java    |  2 +-
 .../modules/coach/ui/GroupController.java     |  2 +-
 .../coach/ui/StudentCoursesController.java    |  2 +-
 6 files changed, 24 insertions(+), 27 deletions(-)

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 d5c96424fef..961ff36e528 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
@@ -261,7 +261,7 @@ public class IdentityListCourseNodeController extends FormBasicController implem
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, IdentityCourseElementCols.lastCoachModified, select));
 		
 		if(course.getCourseConfig().isCertificateEnabled()) {
-			columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(IdentityCourseElementCols.certificate, new DownloadCertificateCellRenderer()));
+			columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(IdentityCourseElementCols.certificate, new DownloadCertificateCellRenderer(getLocale())));
 			if(course.getCourseConfig().isRecertificationEnabled()) {
 				columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(IdentityCourseElementCols.recertification, new DateFlexiCellRenderer(getLocale())));
 			}
diff --git a/src/main/java/org/olat/course/certificate/ui/CertificateAndEfficiencyStatementListController.java b/src/main/java/org/olat/course/certificate/ui/CertificateAndEfficiencyStatementListController.java
index d3770934a1a..c3212552e9a 100644
--- a/src/main/java/org/olat/course/certificate/ui/CertificateAndEfficiencyStatementListController.java
+++ b/src/main/java/org/olat/course/certificate/ui/CertificateAndEfficiencyStatementListController.java
@@ -191,7 +191,7 @@ public class CertificateAndEfficiencyStatementListController extends FormBasicCo
 		tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("table.header.show",
 				translate("table.header.show"), CMD_SHOW));
 		tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.lastModified));
-		tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.certificate, new DownloadCertificateCellRenderer(assessedIdentity)));
+		tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.certificate, new DownloadCertificateCellRenderer(assessedIdentity, getLocale())));
 		tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.recertification, new DateFlexiCellRenderer(getLocale())));
 		tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("table.header.launchcourse",
 				translate("table.header.launchcourse"), CMD_LAUNCH_COURSE));
diff --git a/src/main/java/org/olat/course/certificate/ui/DownloadCertificateCellRenderer.java b/src/main/java/org/olat/course/certificate/ui/DownloadCertificateCellRenderer.java
index 928bf73395a..ac7ccb7efd6 100644
--- a/src/main/java/org/olat/course/certificate/ui/DownloadCertificateCellRenderer.java
+++ b/src/main/java/org/olat/course/certificate/ui/DownloadCertificateCellRenderer.java
@@ -27,7 +27,6 @@ import org.olat.basesecurity.model.IdentityRefImpl;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiCellRenderer;
 import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableComponent;
-import org.olat.core.gui.components.table.CustomCellRenderer;
 import org.olat.core.gui.render.Renderer;
 import org.olat.core.gui.render.StringOutput;
 import org.olat.core.gui.render.URLBuilder;
@@ -48,38 +47,31 @@ import org.olat.user.UserManager;
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  *
  */
-public class DownloadCertificateCellRenderer implements CustomCellRenderer, FlexiCellRenderer {
+public class DownloadCertificateCellRenderer implements FlexiCellRenderer {
 	
+	private final Locale locale;
 	private Identity assessedIdentity;
 	
-	public DownloadCertificateCellRenderer() {
-		//
+	public DownloadCertificateCellRenderer(Locale locale) {
+		this.locale = locale;
 	}
 	
-	public DownloadCertificateCellRenderer(Identity assessedIdentity) {
+	public DownloadCertificateCellRenderer(Identity assessedIdentity, Locale locale) {
+		this(locale);
 		this.assessedIdentity = assessedIdentity;
 	}
 
-	@Override
-	public void render(StringOutput sb, Renderer renderer, Object val, Locale locale, int alignment, String action) {
-		if(val instanceof CertificateLight) {
-			CertificateLight certificate = (CertificateLight)val;
-			if(assessedIdentity == null) {
-				IdentityRef idRef = new IdentityRefImpl(certificate.getIdentityKey());
-				render(sb, certificate, idRef, locale);
-			} else {
-				render(sb, certificate, assessedIdentity, locale);
-			}
-		} else if(val instanceof CertificateLightPack) {
-			CertificateLightPack pack = (CertificateLightPack)val;
-			render(sb, pack.getCertificate(), pack.getIdentity(), locale);		
-		}
-	}
-
 	@Override
 	public void render(Renderer renderer, StringOutput target, Object cellValue, int row, FlexiTableComponent source,
 			URLBuilder ubu, Translator translator) {
-		if(cellValue instanceof CertificateLight) {
+		if(renderer == null) {
+			if(cellValue instanceof CertificateLight) {
+				renderExcel(target, (CertificateLight)cellValue);
+			} else if(cellValue instanceof CertificateLightPack) {
+				CertificateLightPack pack = (CertificateLightPack)cellValue;
+				renderExcel(target, pack.getCertificate());
+			}
+		} else if(cellValue instanceof CertificateLight) {
 			CertificateLight certificate = (CertificateLight)cellValue;
 			if(assessedIdentity == null) {
 				IdentityRef idRef = new IdentityRefImpl(certificate.getIdentityKey());
@@ -93,6 +85,11 @@ public class DownloadCertificateCellRenderer implements CustomCellRenderer, Flex
 		}
 	}
 	
+	private void renderExcel(StringOutput sb, CertificateLight certificate) {
+		String date = Formatter.getInstance(locale).formatDate(certificate.getCreationDate());
+		sb.append(date);
+	}
+	
 	private void render(StringOutput sb, CertificateLight certificate, IdentityRef identity, Locale locale) {
 		String name = Formatter.getInstance(locale).formatDate(certificate.getCreationDate());
 		if(CertificateStatus.pending.equals(certificate.getStatus())) {
diff --git a/src/main/java/org/olat/modules/coach/ui/CourseController.java b/src/main/java/org/olat/modules/coach/ui/CourseController.java
index 9b7f5c42294..400e7b821a2 100644
--- a/src/main/java/org/olat/modules/coach/ui/CourseController.java
+++ b/src/main/java/org/olat/modules/coach/ui/CourseController.java
@@ -195,7 +195,7 @@ public class CourseController extends FormBasicController implements Activateabl
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Columns.score, new ScoreCellRenderer()));
 		CourseConfig courseConfig = CourseFactory.loadCourse(course).getCourseConfig();
 		if(courseConfig.isCertificateEnabled()) {
-			columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Columns.certificate, new DownloadCertificateCellRenderer()));
+			columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Columns.certificate, new DownloadCertificateCellRenderer(getLocale())));
 			if(courseConfig.isRecertificationEnabled()) {
 				columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Columns.recertification, new DateFlexiCellRenderer(getLocale())));
 			}
diff --git a/src/main/java/org/olat/modules/coach/ui/GroupController.java b/src/main/java/org/olat/modules/coach/ui/GroupController.java
index 34627732203..b9de74d4b34 100644
--- a/src/main/java/org/olat/modules/coach/ui/GroupController.java
+++ b/src/main/java/org/olat/modules/coach/ui/GroupController.java
@@ -190,7 +190,7 @@ public class GroupController extends FormBasicController implements Activateable
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Columns.repoName));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Columns.passed, new PassedCellRenderer()));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Columns.score, new ScoreCellRenderer()));
-		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Columns.certificate, new DownloadCertificateCellRenderer()));
+		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Columns.certificate, new DownloadCertificateCellRenderer(getLocale())));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Columns.recertification, new DateFlexiCellRenderer(getLocale())));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, Columns.lastModification));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Columns.lastUserModified));
diff --git a/src/main/java/org/olat/modules/coach/ui/StudentCoursesController.java b/src/main/java/org/olat/modules/coach/ui/StudentCoursesController.java
index 43e57f4eec4..e9503014c47 100644
--- a/src/main/java/org/olat/modules/coach/ui/StudentCoursesController.java
+++ b/src/main/java/org/olat/modules/coach/ui/StudentCoursesController.java
@@ -205,7 +205,7 @@ public class StudentCoursesController extends FormBasicController implements Act
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Columns.repoName, "select"));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Columns.passed, new PassedCellRenderer()));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Columns.score, new ScoreCellRenderer()));
-		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Columns.certificate, new DownloadCertificateCellRenderer()));
+		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Columns.certificate, new DownloadCertificateCellRenderer(getLocale())));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Columns.recertification, new DateFlexiCellRenderer(getLocale())));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Columns.progress, new ProgressRenderer(true, getTranslator())));
 		if(lectureModule.isEnabled()) {
-- 
GitLab