diff --git a/src/com/owncloud/android/files/FileOperationsHelper.java b/src/com/owncloud/android/files/FileOperationsHelper.java index 96c8c95f03..406635a2a3 100644 --- a/src/com/owncloud/android/files/FileOperationsHelper.java +++ b/src/com/owncloud/android/files/FileOperationsHelper.java @@ -34,7 +34,6 @@ import com.owncloud.android.lib.common.accounts.AccountUtils.Constants; import com.owncloud.android.lib.common.network.WebdavUtils; import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.resources.status.OwnCloudVersion; -import com.owncloud.android.operations.RemoveFileOperation; import com.owncloud.android.operations.SynchronizeFileOperation; import com.owncloud.android.services.OperationsService; import com.owncloud.android.ui.activity.FileActivity; @@ -208,7 +207,7 @@ public class FileOperationsHelper { } - public void renameFile(OCFile file, String newFilename) { + public void renameFile(OCFile file, String newFilename) { // RenameFile Intent service = new Intent(mFileActivity, OperationsService.class); service.setAction(OperationsService.ACTION_RENAME); @@ -222,18 +221,13 @@ public class FileOperationsHelper { public void removeFile(OCFile file, boolean removeLocalCopy) { - Account account = mFileActivity.getAccount(); - RemoteOperation operation = new RemoveFileOperation( - file, - removeLocalCopy, - mFileActivity.getStorageManager()); - - operation.execute( - account, - mFileActivity, - mFileActivity, - mFileActivity.getHandler(), - mFileActivity); + // RemoveFile + Intent service = new Intent(mFileActivity, OperationsService.class); + service.setAction(OperationsService.ACTION_REMOVE); + service.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount()); + service.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath()); + service.putExtra(OperationsService.EXTRA_REMOVE_LOCAL_COPY, removeLocalCopy); + mFileActivity.getOperationsServiceBinder().newOperation(service); mFileActivity.showLoadingDialog(); } diff --git a/src/com/owncloud/android/operations/RemoveFileOperation.java b/src/com/owncloud/android/operations/RemoveFileOperation.java index ff673cade8..c5883b1c9e 100644 --- a/src/com/owncloud/android/operations/RemoveFileOperation.java +++ b/src/com/owncloud/android/operations/RemoveFileOperation.java @@ -1,5 +1,5 @@ /* ownCloud Android client application - * Copyright (C) 2012-2013 ownCloud Inc. + * Copyright (C) 2012-2014 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, @@ -17,40 +17,38 @@ package com.owncloud.android.operations; -import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.lib.common.OwnCloudClient; -import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; import com.owncloud.android.lib.resources.files.RemoveRemoteFileOperation; +import com.owncloud.android.operations.common.SyncOperation; /** * Remote operation performing the removal of a remote file or folder in the ownCloud server. * * @author David A. Velasco + * @author masensio */ -public class RemoveFileOperation extends RemoteOperation { +public class RemoveFileOperation extends SyncOperation { // private static final String TAG = RemoveFileOperation.class.getSimpleName(); OCFile mFileToRemove; + String mRemotePath; boolean mDeleteLocalCopy; - FileDataStorageManager mDataStorageManager; /** * Constructor * - * @param fileToRemove OCFile instance describing the remote file or folder to remove from the server + * @param remotePath RemotePath of the OCFile instance describing the remote file or folder to remove from the server * @param deleteLocalCopy When 'true', and a local copy of the file exists, it is also removed. - * @param storageManager Reference to the local database corresponding to the account where the file is contained. */ - public RemoveFileOperation(OCFile fileToRemove, boolean deleteLocalCopy, FileDataStorageManager storageManager) { - mFileToRemove = fileToRemove; + public RemoveFileOperation(String remotePath, boolean deleteLocalCopy) { + mRemotePath = remotePath; mDeleteLocalCopy = deleteLocalCopy; - mDataStorageManager = storageManager; } @@ -72,11 +70,13 @@ public class RemoveFileOperation extends RemoteOperation { protected RemoteOperationResult run(OwnCloudClient client) { RemoteOperationResult result = null; - RemoveRemoteFileOperation operation = new RemoveRemoteFileOperation(mFileToRemove.getRemotePath()); + RemoveRemoteFileOperation operation = new RemoveRemoteFileOperation(mRemotePath); result = operation.execute(client); + mFileToRemove = getStorageManager().getFileByPath(mRemotePath); + if (result.isSuccess() || result.getCode() == ResultCode.FILE_NOT_FOUND) { - mDataStorageManager.removeFile(mFileToRemove, true, mDeleteLocalCopy); + getStorageManager().removeFile(mFileToRemove, true, mDeleteLocalCopy); } return result; diff --git a/src/com/owncloud/android/operations/RenameFileOperation.java b/src/com/owncloud/android/operations/RenameFileOperation.java index 20ba041c05..b251d383d5 100644 --- a/src/com/owncloud/android/operations/RenameFileOperation.java +++ b/src/com/owncloud/android/operations/RenameFileOperation.java @@ -56,7 +56,6 @@ public class RenameFileOperation extends SyncOperation { * @param remotePath RemotePath of the OCFile instance describing the remote file or folder to rename * @param account OwnCloud account containing the remote file * @param newName New name to set as the name of file. - * @param storageManager Reference to the local database corresponding to the account where the file is contained. */ public RenameFileOperation(String remotePath, Account account, String newName) { mRemotePath = remotePath; diff --git a/src/com/owncloud/android/services/OperationsService.java b/src/com/owncloud/android/services/OperationsService.java index 59fc1ba160..3a9b348491 100644 --- a/src/com/owncloud/android/services/OperationsService.java +++ b/src/com/owncloud/android/services/OperationsService.java @@ -37,6 +37,7 @@ import com.owncloud.android.operations.common.SyncOperation; import com.owncloud.android.operations.CreateShareOperation; import com.owncloud.android.operations.GetServerInfoOperation; import com.owncloud.android.operations.OAuth2GetAccessToken; +import com.owncloud.android.operations.RemoveFileOperation; import com.owncloud.android.operations.RenameFileOperation; import com.owncloud.android.operations.UnshareLinkOperation; import com.owncloud.android.utils.Log_OC; @@ -66,6 +67,7 @@ public class OperationsService extends Service { public static final String EXTRA_REMOTE_PATH = "REMOTE_PATH"; public static final String EXTRA_SEND_INTENT = "SEND_INTENT"; public static final String EXTRA_NEWNAME = "NEWNAME"; + public static final String EXTRA_REMOVE_LOCAL_COPY = "REMOVE_LOCAL_COPY"; public static final String EXTRA_RESULT = "RESULT"; // TODO review if ALL OF THEM are necessary @@ -84,6 +86,7 @@ public class OperationsService extends Service { public static final String ACTION_EXISTENCE_CHECK = "EXISTENCE_CHECK"; public static final String ACTION_GET_USER_NAME = "GET_USER_NAME"; public static final String ACTION_RENAME = "RENAME"; + public static final String ACTION_REMOVE = "REMOVE"; public static final String ACTION_OPERATION_ADDED = OperationsService.class.getName() + ".OPERATION_ADDED"; public static final String ACTION_OPERATION_FINISHED = OperationsService.class.getName() + ".OPERATION_FINISHED"; @@ -344,6 +347,12 @@ public class OperationsService extends Service { String remotePath = operationIntent.getStringExtra(EXTRA_REMOTE_PATH); String newName = operationIntent.getStringExtra(EXTRA_NEWNAME); operation = new RenameFileOperation(remotePath, account, newName); + + } else if (action.equals(ACTION_REMOVE)) { + // Remove file or folder + String remotePath = operationIntent.getStringExtra(EXTRA_REMOTE_PATH); + boolean removeLocalCopy = operationIntent.getBooleanExtra(EXTRA_REMOVE_LOCAL_COPY, true); + operation = new RemoveFileOperation(remotePath, removeLocalCopy); } } diff --git a/src/com/owncloud/android/ui/activity/FileActivity.java b/src/com/owncloud/android/ui/activity/FileActivity.java index a19a362b4e..55fbe5f431 100644 --- a/src/com/owncloud/android/ui/activity/FileActivity.java +++ b/src/com/owncloud/android/ui/activity/FileActivity.java @@ -1,6 +1,6 @@ /* ownCloud Android client application * Copyright (C) 2011 Bartek Przybylski - * Copyright (C) 2012-2013 ownCloud Inc. + * Copyright (C) 2012-2014 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,