include date in backup file name

Daniel Gultsch created

since `account.ceb` might have previously been created by a different application
(for example f-droid and user is on play now) or copied over via the file
manager Conversations might not have permission to write over an existing file.

we include the date so we always get a new file

fixes #105

Change summary

src/main/java/eu/siacs/conversations/services/ExportBackupService.java | 14 
1 file changed, 13 insertions(+), 1 deletion(-)

Detailed changes

src/main/java/eu/siacs/conversations/services/ExportBackupService.java 🔗

@@ -27,10 +27,13 @@ import java.io.PrintWriter;
 import java.security.NoSuchAlgorithmException;
 import java.security.SecureRandom;
 import java.security.spec.InvalidKeySpecException;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.Date;
 import java.util.List;
+import java.util.Locale;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.zip.GZIPOutputStream;
 
@@ -54,6 +57,8 @@ import eu.siacs.conversations.utils.Compatibility;
 
 public class ExportBackupService extends Service {
 
+    private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
+
     public static final String KEYTYPE = "AES";
     public static final String CIPHERMODE = "AES/GCM/NoPadding";
     public static final String PROVIDER = "BC";
@@ -340,7 +345,14 @@ public class ExportBackupService extends Service {
             secureRandom.nextBytes(salt);
             final BackupFileHeader backupFileHeader = new BackupFileHeader(getString(R.string.app_name), account.getJid(), System.currentTimeMillis(), IV, salt);
             final Progress progress = new Progress(mBuilder, max, count);
-            final File file = new File(FileBackend.getBackupDirectory(this), account.getJid().asBareJid().toEscapedString() + ".ceb");
+            final String filename =
+                    String.format(
+                            "%s.%s.ceb",
+                            account.getJid().asBareJid().toEscapedString(),
+                            DATE_FORMAT.format(new Date()));
+            final File file =
+                    new File(
+                            FileBackend.getBackupDirectory(this), filename);
             files.add(file);
             final File directory = file.getParentFile();
             if (directory != null && directory.mkdirs()) {