X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/dcffd79b60b3cc6faa24b829e20bf8183e0f425e..c0c52fa16a79f6be71ffbe7c7cb587af67335793:/src/com/owncloud/android/services/OperationsService.java diff --git a/src/com/owncloud/android/services/OperationsService.java b/src/com/owncloud/android/services/OperationsService.java index 90fc2f00..0a7efca7 100644 --- a/src/com/owncloud/android/services/OperationsService.java +++ b/src/com/owncloud/android/services/OperationsService.java @@ -53,6 +53,7 @@ import com.owncloud.android.lib.resources.shares.ShareType; import com.owncloud.android.lib.resources.status.OwnCloudVersion; import com.owncloud.android.lib.resources.users.GetRemoteUserNameOperation; import com.owncloud.android.operations.CopyFileOperation; +import com.owncloud.android.operations.DownloadFolderOperation; import com.owncloud.android.operations.CreateFolderOperation; import com.owncloud.android.operations.CreateShareOperation; import com.owncloud.android.operations.GetServerInfoOperation; @@ -100,7 +101,8 @@ public class OperationsService extends Service { public static final String ACTION_REMOVE = "REMOVE"; public static final String ACTION_CREATE_FOLDER = "CREATE_FOLDER"; public static final String ACTION_SYNC_FILE = "SYNC_FILE"; - public static final String ACTION_SYNC_FOLDER = "SYNC_FOLDER";//for the moment, just to download + public static final String ACTION_SYNC_FOLDER = "SYNC_FOLDER"; + public static final String ACTION_DOWNLOAD_FOLDER = "DOWNLOAD_FOLDER" ; public static final String ACTION_MOVE_FILE = "MOVE_FILE"; public static final String ACTION_COPY_FILE = "COPY_FILE"; @@ -256,14 +258,14 @@ public class OperationsService extends Service { */ public class OperationsServiceBinder extends Binder /* implements OnRemoteOperationListener */ { - /** + /** * Map of listeners that will be reported about the end of operations from a * {@link OperationsServiceBinder} instance */ private final ConcurrentMap mBoundListeners = new ConcurrentHashMap(); - private ServiceHandler mServiceHandler = null; + private ServiceHandler mServiceHandler = null; public OperationsServiceBinder(ServiceHandler serviceHandler) { mServiceHandler = serviceHandler; @@ -290,7 +292,7 @@ public class OperationsService extends Service { /** * Adds a listener interested in being reported about the end of operations. * - * @param listener Object to notify about the end of operations. + * @param listener Object to notify about the end of operations. * @param callbackHandler {@link Handler} to access the listener without * breaking Android threading protection. */ @@ -317,7 +319,7 @@ public class OperationsService extends Service { /** * TODO - IMPORTANT: update implementation when more operations are moved into the service - * + * * @return 'True' when an operation that enforces the user to wait for completion is * in process. */ @@ -346,7 +348,7 @@ public class OperationsService extends Service { } } - + public boolean dispatchResultIfFinished(int operationId, OnRemoteOperationListener listener) { Pair undispatched = @@ -381,7 +383,7 @@ public class OperationsService extends Service { /** * Operations worker. Performs the pending operations in the order they were requested. - * + * * Created with the Looper of a new thread, started in {@link OperationsService#onCreate()}. */ private static class ServiceHandler extends Handler { @@ -391,7 +393,7 @@ public class OperationsService extends Service { OperationsService mService; - + private ConcurrentLinkedQueue> mPendingOperations = new ConcurrentLinkedQueue>(); private RemoteOperation mCurrentOperation = null; @@ -477,7 +479,7 @@ public class OperationsService extends Service { } else { result = mCurrentOperation.execute(mOwnCloudClient); } - + } catch (AccountsException e) { if (mLastTarget.mAccount == null) { Log_OC.e(TAG, "Error while trying to get authorization for a NULL account", @@ -615,7 +617,7 @@ public class OperationsService extends Service { ); } else if (action.equals(ACTION_SYNC_FOLDER)) { - // Sync file + // Sync folder (all its descendant files are sync'ed) String remotePath = operationIntent.getStringExtra(EXTRA_REMOTE_PATH); operation = new SynchronizeFolderOperation( this, // TODO remove this dependency from construction time @@ -623,7 +625,17 @@ public class OperationsService extends Service { account, System.currentTimeMillis() // TODO remove this dependency from construction time ); - + + } else if (action.equals(ACTION_DOWNLOAD_FOLDER)) { // TODO remove when sync of folders is good enough + // Download folder (all its descendant files are downloaded) + String remotePath = operationIntent.getStringExtra(EXTRA_REMOTE_PATH); + operation = new DownloadFolderOperation( + this, + remotePath, + account, + System.currentTimeMillis() + ); + } else if (action.equals(ACTION_MOVE_FILE)) { // Move file/folder String remotePath = operationIntent.getStringExtra(EXTRA_REMOTE_PATH);