Sfoglia il codice sorgente

Adapt to chanegd ezvCard implementation

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
Andy Scherzinger 2 anni fa
parent
commit
f525affb13

+ 6 - 2
app/src/androidTest/java/com/nextcloud/client/jobs/ContactsBackupIT.kt

@@ -36,7 +36,9 @@ import junit.framework.Assert.assertEquals
 import junit.framework.Assert.assertTrue
 import org.junit.Rule
 import org.junit.Test
+import java.io.BufferedInputStream
 import java.io.File
+import java.io.FileInputStream
 
 class ContactsBackupIT : AbstractOnServerIT() {
     val workmanager = WorkManager.getInstance(targetContext)
@@ -82,13 +84,15 @@ class ContactsBackupIT : AbstractOnServerIT() {
         assertTrue(DownloadFileOperation(user, backupOCFile, AbstractIT.targetContext).execute(client).isSuccess)
 
         val backupFile = File(backupOCFile.storagePath)
+        val vcardInputStream = BufferedInputStream(FileInputStream(getFile(vcard)))
+        val backupFileInputStream = BufferedInputStream(FileInputStream(backupFile))
 
         // verify same
         val originalCards: ArrayList<VCard> = ArrayList()
-        originalCards.addAll(Ezvcard.parse(getFile(vcard)).all())
+        originalCards.addAll(Ezvcard.parse(vcardInputStream).all())
 
         val backupCards: ArrayList<VCard> = ArrayList()
-        backupCards.addAll(Ezvcard.parse(backupFile).all())
+        backupCards.addAll(Ezvcard.parse(backupFileInputStream).all())
 
         assertEquals(originalCards.size, backupCards.size)
         assertEquals(originalCards[0].formattedName.toString(), backupCards[0].formattedName.toString())

+ 10 - 4
app/src/main/java/com/nextcloud/client/jobs/ContactsImportWork.kt

@@ -34,9 +34,9 @@ import com.owncloud.android.ui.fragment.contactsbackup.VCardComparator
 import ezvcard.Ezvcard
 import ezvcard.VCard
 import third_parties.ezvcard_android.ContactOperations
-import java.io.File
+import java.io.BufferedInputStream
+import java.io.FileInputStream
 import java.io.IOException
-import java.util.ArrayList
 import java.util.Collections
 import java.util.TreeMap
 
@@ -62,14 +62,14 @@ class ContactsImportWork(
         val contactsAccountType = inputData.getString(ACCOUNT_TYPE)
         val selectedContactsIndices = inputData.getIntArray(SELECTED_CONTACTS_INDICES) ?: IntArray(0)
 
-        val file = File(vCardFilePath)
+        val inputStream = BufferedInputStream(FileInputStream(vCardFilePath))
         val vCards = ArrayList<VCard>()
 
         var cursor: Cursor? = null
         @Suppress("TooGenericExceptionCaught") // legacy code
         try {
             val operations = ContactOperations(applicationContext, contactsAccountName, contactsAccountType)
-            vCards.addAll(Ezvcard.parse(file).all())
+            vCards.addAll(Ezvcard.parse(inputStream).all())
             Collections.sort(
                 vCards,
                 VCardComparator()
@@ -110,6 +110,12 @@ class ContactsImportWork(
             cursor?.close()
         }
 
+        try {
+            inputStream.close()
+        } catch (e: IOException) {
+            logger.e(TAG, "Error closing vCard stream", e)
+        }
+
         return Result.success()
     }
 

+ 3 - 1
app/src/main/java/com/owncloud/android/ui/asynctasks/LoadContactsTask.java

@@ -29,7 +29,9 @@ import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.ui.fragment.contactsbackup.BackupListFragment;
 import com.owncloud.android.ui.fragment.contactsbackup.VCardComparator;
 
+import java.io.BufferedInputStream;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
@@ -61,7 +63,7 @@ public class LoadContactsTask extends AsyncTask<Void, Void, Boolean> {
         if (!isCancelled()) {
             File file = new File(ocFile.getStoragePath());
             try {
-                vCards.addAll(Ezvcard.parse(file).all());
+                vCards.addAll(Ezvcard.parse(new BufferedInputStream(new FileInputStream((file)))).all());
                 Collections.sort(vCards, new VCardComparator());
             } catch (IOException e) {
                 Log_OC.e(this, "IO Exception: " + file.getAbsolutePath());

+ 2 - 2
app/src/main/java/third_parties/ezvcard_android/ContactOperations.java

@@ -14,8 +14,8 @@ import com.owncloud.android.utils.DisplayUtils;
 import java.io.ByteArrayOutputStream;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
+import java.time.temporal.Temporal;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -478,7 +478,7 @@ public class ContactOperations {
         @SuppressLint("SimpleDateFormat")
         DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
         for (Birthday birthday : vcard.getBirthdays()) {
-            Date date = birthday.getDate();
+            Temporal date = birthday.getDate();
             if (date == null) {
                 continue;
             }