From 77cc1eebf09a0eff3f2a456c084a7cc14fee1fcd Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Thu, 10 Sep 2015 10:23:06 +0200
Subject: [PATCH] OO-1681: rename the file if it already exists

---
 src/main/java/org/olat/core/util/ExportUtil.java           | 7 ++++---
 .../course/archiver/ScoreAccountingArchiveController.java  | 2 +-
 .../java/org/olat/ims/qti/export/QTIExportManager.java     | 4 ++--
 3 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/main/java/org/olat/core/util/ExportUtil.java b/src/main/java/org/olat/core/util/ExportUtil.java
index 6583716688e..9262bac3798 100644
--- a/src/main/java/org/olat/core/util/ExportUtil.java
+++ b/src/main/java/org/olat/core/util/ExportUtil.java
@@ -31,8 +31,6 @@ import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
-import org.olat.core.logging.AssertException;
-
 /**
  * Initial Date:  Jul 20, 2004
  *     
@@ -54,7 +52,10 @@ public class ExportUtil {
 
 	public static File writeContentToFile(String fileName, String content, File exportDirectory, String enc) {
 		File f = new File(exportDirectory, fileName);
-		if (f.exists()) { throw new AssertException("File " + fileName + " already exists!"); }
+		if (f.exists()) {
+			String newFileName = FileUtils.rename(f);
+			f = new File(exportDirectory, newFileName);
+		}
 		FileUtils.save(f, content, enc);
 		return f;
 	}
diff --git a/src/main/java/org/olat/course/archiver/ScoreAccountingArchiveController.java b/src/main/java/org/olat/course/archiver/ScoreAccountingArchiveController.java
index b31ece1de3c..08bac267451 100644
--- a/src/main/java/org/olat/course/archiver/ScoreAccountingArchiveController.java
+++ b/src/main/java/org/olat/course/archiver/ScoreAccountingArchiveController.java
@@ -111,7 +111,7 @@ public class ScoreAccountingArchiveController extends BasicController {
 		File downloadFile = ExportUtil.writeContentToFile(fileName, result, exportDirectory, charset);
 
 		vcFeedback = createVelocityContainer("feedback");
-		vcFeedback.contextPut("body", translate("course.res.feedback", new String[] { fileName }));
+		vcFeedback.contextPut("body", translate("course.res.feedback", new String[] { downloadFile.getName() }));
 		downloadButton = LinkFactory.createButtonSmall("cmd.download", vcFeedback, this);
 		downloadButton.setUserObject(downloadFile);
 		myPanel.setContent(vcFeedback);
diff --git a/src/main/java/org/olat/ims/qti/export/QTIExportManager.java b/src/main/java/org/olat/ims/qti/export/QTIExportManager.java
index 7faf3e6d8e4..3f7766eb1fd 100644
--- a/src/main/java/org/olat/ims/qti/export/QTIExportManager.java
+++ b/src/main/java/org/olat/ims/qti/export/QTIExportManager.java
@@ -192,8 +192,8 @@ public class QTIExportManager extends BasicManager{
 	private String writeContentToFile(String shortTitle, File exportDirectory, String charset, QTIExportFormatter qef, String fileNameSuffix) {
 		// defining target filename
 		String targetFileName = getFilename(shortTitle, qef, fileNameSuffix);
-		ExportUtil.writeContentToFile(targetFileName, qef.getReport(), exportDirectory, charset);
-		return targetFileName;
+		File savedFile = ExportUtil.writeContentToFile(targetFileName, qef.getReport(), exportDirectory, charset);
+		return savedFile.getName();
 	}
 	
 	private String getFilename(String shortTitle, QTIExportFormatter qef, String fileNameSuffix) {
-- 
GitLab