X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/a7b6204f9dbb388478f4fb49b5976909fa235710..32dadbcc6ca0de9924f216f81c6a124862ab3136:/src/com/owncloud/android/ui/activity/StorageMigrationActivity.java diff --git a/src/com/owncloud/android/ui/activity/StorageMigrationActivity.java b/src/com/owncloud/android/ui/activity/StorageMigrationActivity.java index dc73fcc6..c0b45228 100644 --- a/src/com/owncloud/android/ui/activity/StorageMigrationActivity.java +++ b/src/com/owncloud/android/ui/activity/StorageMigrationActivity.java @@ -37,13 +37,9 @@ import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.lib.common.utils.Log_OC; +import com.owncloud.android.utils.FileStorageUtils; import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; /** * Created by Bartosz Przybylski on 07.11.2015. @@ -110,10 +106,6 @@ public class StorageMigrationActivity extends AppCompatActivity { int getResId() { return mResId; } } - private class MigrationCleanupException extends Exception { - MigrationCleanupException() {} - } - @Override protected Integer doInBackground(String... args) { @@ -129,6 +121,8 @@ public class StorageMigrationActivity extends AppCompatActivity { Account[] ocAccounts = AccountManager.get(context).getAccountsByType(MainApp.getAccountType()); boolean[] oldAutoSync = new boolean[ocAccounts.length]; + Log_OC.stopLogging(); + try { publishProgress(mProgress++, R.string.file_migration_checking_destination); @@ -152,15 +146,14 @@ public class StorageMigrationActivity extends AppCompatActivity { } catch (MigrationException e) { rollback(); + Log_OC.startLogging(mStorageSource); return e.getResId(); - } catch (MigrationCleanupException e) { - Log_OC.w(TAG, "Migration mleanup step failed"); - return 0; } finally { publishProgress(mProgress++, R.string.file_migration_restoring_accounts_configuration); restoreAccountsSyncStatus(ocAuthority, ocAccounts, oldAutoSync); } + Log_OC.startLogging(mStorageTarget); publishProgress(mProgress++, R.string.file_migration_ok_finished); return 0; @@ -205,7 +198,7 @@ public class StorageMigrationActivity extends AppCompatActivity { if (new File(dstFile, MainApp.getDataFolder()).exists()) throw new MigrationException(R.string.file_migration_failed_dir_already_exists); - if (dstFile.getFreeSpace() < calculateUsedSpace(new File(srcFile, MainApp.getDataFolder()))) + if (dstFile.getFreeSpace() < FileStorageUtils.getFolderSize(new File(srcFile, MainApp.getDataFolder()))) throw new MigrationException(R.string.file_migration_failed_not_enough_space); } @@ -218,38 +211,6 @@ public class StorageMigrationActivity extends AppCompatActivity { publishProgress(mProgress); } - private boolean copyFile(File src, File target) { - boolean ret = true; - - InputStream in = null; - OutputStream out = null; - - try { - in = new FileInputStream(src); - out = new FileOutputStream(target); - byte[] buf = new byte[1024]; - int len; - while ((len = in.read(buf)) > 0) { - out.write(buf, 0, len); - } - } catch (IOException ex) { - ret = false; - } finally { - if (in != null) try { - in.close(); - } catch (IOException e) { - e.printStackTrace(System.err); - } - if (out != null) try { - out.close(); - } catch (IOException e) { - e.printStackTrace(System.err); - } - } - - return ret; - } - void copyDirs(File src, File dst) throws MigrationException { if (!dst.mkdirs()) throw new MigrationException(R.string.file_migration_failed_while_coping); @@ -261,7 +222,7 @@ public class StorageMigrationActivity extends AppCompatActivity { if (f.isDirectory()) copyDirs(f, new File(dst, f.getName())); - else if (!copyFile(f, new File(dst, f.getName()))) + else if (!FileStorageUtils.copyFile(f, new File(dst, f.getName()))) throw new MigrationException(R.string.file_migration_failed_while_coping); } @@ -277,10 +238,10 @@ public class StorageMigrationActivity extends AppCompatActivity { } } - void cleanup() throws MigrationCleanupException { + void cleanup() { File srcFile = new File(mStorageSource + File.separator + MainApp.getDataFolder()); if (!srcFile.delete()) - throw new MigrationCleanupException(); + Log_OC.w(TAG, "Migration cleanup step failed"); } void rollback() { @@ -290,19 +251,6 @@ public class StorageMigrationActivity extends AppCompatActivity { Log_OC.w(TAG, "Rollback step failed"); } - long calculateUsedSpace(File dir) { - long result = 0; - - for (File f : dir.listFiles()) { - if (f.isDirectory()) - result += calculateUsedSpace(f); - else - result += f.length(); - } - - return result; - } - void saveAccountsSyncStatus(String authority, Account accounts[], boolean syncs[]) { for (int i = 0; i < accounts.length; ++i) syncs[i] = ContentResolver.getSyncAutomatically(accounts[i], authority);