X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/5042fe42caaf7af53b5852646495dfb3f5be40b8..6f1fe5ad6d8b6f49275a8e44c9631cc65b1bafc8:/src/com/owncloud/android/operations/SynchronizeFolderOperation.java diff --git a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java index 420adcab..e80b42fa 100644 --- a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java +++ b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java @@ -1,5 +1,8 @@ -/* ownCloud Android client application - * Copyright (C) 2012-2014 ownCloud Inc. +/** + * ownCloud Android client application + * + * @author David A. Velasco + * Copyright (C) 2015 ownCloud Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2, @@ -56,8 +59,6 @@ import java.util.concurrent.atomic.AtomicBoolean; * properties, and updates the local database with them. * * Does NOT enter in the child folders to synchronize their contents also. - * - * @author David A. Velasco */ public class SynchronizeFolderOperation extends SyncOperation { @@ -159,9 +160,6 @@ public class SynchronizeFolderOperation extends SyncOperation { syncContents(client); } - if (mFilesForDirectDownload.isEmpty()) { - sendBroadcastForNotifyingUIUpdate(result.isSuccess()); - } } if (mCancellationRequested.get()) { @@ -170,16 +168,6 @@ public class SynchronizeFolderOperation extends SyncOperation { } catch (OperationCancelledException e) { result = new RemoteOperationResult(e); - - // Needed in case that cancellation occurs before starting any download. - // If not, yellow arrow continues being shown. - sendBroadcastForNotifyingUIUpdate(false); - - Intent intent = new Intent(mContext, FileDownloader.class); - intent.setAction(FileDownloader.ACTION_CANCEL_FILE_DOWNLOAD); - intent.putExtra(FileDownloader.EXTRA_ACCOUNT, mAccount); - intent.putExtra(FileDownloader.EXTRA_FILE, mLocalFolder); - mContext.startService(intent); } return result; @@ -224,7 +212,6 @@ public class SynchronizeFolderOperation extends SyncOperation { result.getLogMessage()); } - sendBroadcastForNotifyingUIUpdate(result.isSuccess()); } return result; @@ -358,10 +345,11 @@ public class SynchronizeFolderOperation extends SyncOperation { /// classify file to sync/download contents later if (remoteFile.isFolder()) { /// to download children files recursively - startSyncFolderOperation(remoteFile.getRemotePath()); - - if (mCancellationRequested.get()) { - throw new OperationCancelledException(); + synchronized(mCancellationRequested) { + if (mCancellationRequested.get()) { + throw new OperationCancelledException(); + } + startSyncFolderOperation(remoteFile.getRemotePath()); } } else if (remoteFile.keepInSync()) { @@ -403,9 +391,11 @@ public class SynchronizeFolderOperation extends SyncOperation { /// classify file to sync/download contents later if (child.isFolder()) { /// to download children files recursively - startSyncFolderOperation(child.getRemotePath()); - if (mCancellationRequested.get()) { - throw new OperationCancelledException(); + synchronized(mCancellationRequested) { + if (mCancellationRequested.get()) { + throw new OperationCancelledException(); + } + startSyncFolderOperation(child.getRemotePath()); } } else { @@ -427,13 +417,15 @@ public class SynchronizeFolderOperation extends SyncOperation { private void startDirectDownloads() throws OperationCancelledException { for (OCFile file : mFilesForDirectDownload) { - if (mCancellationRequested.get()) { - throw new OperationCancelledException(); + synchronized(mCancellationRequested) { + if (mCancellationRequested.get()) { + throw new OperationCancelledException(); + } + Intent i = new Intent(mContext, FileDownloader.class); + i.putExtra(FileDownloader.EXTRA_ACCOUNT, mAccount); + i.putExtra(FileDownloader.EXTRA_FILE, file); + mContext.startService(i); } - Intent i = new Intent(mContext, FileDownloader.class); - i.putExtra(FileDownloader.EXTRA_ACCOUNT, mAccount); - i.putExtra(FileDownloader.EXTRA_FILE, file); - mContext.startService(i); } } @@ -449,7 +441,8 @@ public class SynchronizeFolderOperation extends SyncOperation { */ private void startContentSynchronizations(List filesToSyncContents, OwnCloudClient client) throws OperationCancelledException { - + + Log_OC.v(TAG, "Starting content synchronization... "); RemoteOperationResult contentsResult = null; for (SyncOperation op: filesToSyncContents) { if (mCancellationRequested.get()) { @@ -511,16 +504,6 @@ public class SynchronizeFolderOperation extends SyncOperation { } } - private void sendBroadcastForNotifyingUIUpdate(boolean result) { - // Send a broadcast message for notifying UI update - Intent uiUpdate = new Intent(FileDownloader.getDownloadFinishMessage()); - uiUpdate.putExtra(FileDownloader.EXTRA_DOWNLOAD_RESULT, result); - uiUpdate.putExtra(FileDownloader.ACCOUNT_NAME, mAccount.name); - uiUpdate.putExtra(FileDownloader.EXTRA_REMOTE_PATH, mRemotePath); - uiUpdate.putExtra(FileDownloader.EXTRA_FILE_PATH, mLocalFolder.getRemotePath()); - mContext.sendStickyBroadcast(uiUpdate); - } - /** * Cancel operation @@ -544,4 +527,8 @@ public class SynchronizeFolderOperation extends SyncOperation { intent.putExtra(OperationsService.EXTRA_REMOTE_PATH, path); mContext.startService(intent); } + + public String getRemotePath() { + return mRemotePath; + } }