Browse Source

Add RemoveOperation to OperationsService

masensio 11 years ago
parent
commit
92f403494b

+ 8 - 14
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.network.WebdavUtils;
 import com.owncloud.android.lib.common.operations.RemoteOperation;
 import com.owncloud.android.lib.common.operations.RemoteOperation;
 import com.owncloud.android.lib.resources.status.OwnCloudVersion;
 import com.owncloud.android.lib.resources.status.OwnCloudVersion;
-import com.owncloud.android.operations.RemoveFileOperation;
 import com.owncloud.android.operations.SynchronizeFileOperation;
 import com.owncloud.android.operations.SynchronizeFileOperation;
 import com.owncloud.android.services.OperationsService;
 import com.owncloud.android.services.OperationsService;
 import com.owncloud.android.ui.activity.FileActivity;
 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
         // RenameFile
         Intent service = new Intent(mFileActivity, OperationsService.class);
         Intent service = new Intent(mFileActivity, OperationsService.class);
         service.setAction(OperationsService.ACTION_RENAME);
         service.setAction(OperationsService.ACTION_RENAME);
@@ -222,18 +221,13 @@ public class FileOperationsHelper {
 
 
 
 
     public void removeFile(OCFile file, boolean removeLocalCopy) {
     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();
         mFileActivity.showLoadingDialog();
     }
     }

+ 12 - 12
src/com/owncloud/android/operations/RemoveFileOperation.java

@@ -1,5 +1,5 @@
 /* ownCloud Android client application
 /* 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
  *   This program is free software: you can redistribute it and/or modify
  *   it under the terms of the GNU General Public License version 2,
  *   it under the terms of the GNU General Public License version 2,
@@ -17,40 +17,38 @@
 
 
 package com.owncloud.android.operations;
 package com.owncloud.android.operations;
 
 
-import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.common.OwnCloudClient;
 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;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;
 import com.owncloud.android.lib.resources.files.RemoveRemoteFileOperation;
 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.
  * Remote operation performing the removal of a remote file or folder in the ownCloud server.
  * 
  * 
  * @author David A. Velasco
  * @author David A. Velasco
+ * @author masensio
  */
  */
-public class RemoveFileOperation extends RemoteOperation {
+public class RemoveFileOperation extends SyncOperation {
     
     
     // private static final String TAG = RemoveFileOperation.class.getSimpleName();
     // private static final String TAG = RemoveFileOperation.class.getSimpleName();
     
     
     OCFile mFileToRemove;
     OCFile mFileToRemove;
+    String mRemotePath;
     boolean mDeleteLocalCopy;
     boolean mDeleteLocalCopy;
-    FileDataStorageManager mDataStorageManager;
     
     
     
     
     /**
     /**
      * Constructor
      * 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 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;
         mDeleteLocalCopy = deleteLocalCopy;
-        mDataStorageManager = storageManager;
     }
     }
     
     
     
     
@@ -72,11 +70,13 @@ public class RemoveFileOperation extends RemoteOperation {
     protected RemoteOperationResult run(OwnCloudClient client) {
     protected RemoteOperationResult run(OwnCloudClient client) {
         RemoteOperationResult result = null;
         RemoteOperationResult result = null;
         
         
-        RemoveRemoteFileOperation operation = new RemoveRemoteFileOperation(mFileToRemove.getRemotePath());
+        RemoveRemoteFileOperation operation = new RemoveRemoteFileOperation(mRemotePath);
         result = operation.execute(client);
         result = operation.execute(client);
         
         
+        mFileToRemove = getStorageManager().getFileByPath(mRemotePath);
+        
         if (result.isSuccess() || result.getCode() == ResultCode.FILE_NOT_FOUND) {
         if (result.isSuccess() || result.getCode() == ResultCode.FILE_NOT_FOUND) {
-            mDataStorageManager.removeFile(mFileToRemove, true, mDeleteLocalCopy);
+            getStorageManager().removeFile(mFileToRemove, true, mDeleteLocalCopy);
         }
         }
         
         
         return result;
         return result;

+ 0 - 1
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 remotePath            RemotePath of the OCFile instance describing the remote file or folder to rename
      * @param account               OwnCloud account containing the remote file 
      * @param account               OwnCloud account containing the remote file 
      * @param newName               New name to set as the name of 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) {
     public RenameFileOperation(String remotePath, Account account, String newName) {
         mRemotePath = remotePath;
         mRemotePath = remotePath;

+ 9 - 0
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.CreateShareOperation;
 import com.owncloud.android.operations.GetServerInfoOperation;
 import com.owncloud.android.operations.GetServerInfoOperation;
 import com.owncloud.android.operations.OAuth2GetAccessToken;
 import com.owncloud.android.operations.OAuth2GetAccessToken;
+import com.owncloud.android.operations.RemoveFileOperation;
 import com.owncloud.android.operations.RenameFileOperation;
 import com.owncloud.android.operations.RenameFileOperation;
 import com.owncloud.android.operations.UnshareLinkOperation;
 import com.owncloud.android.operations.UnshareLinkOperation;
 import com.owncloud.android.utils.Log_OC;
 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_REMOTE_PATH = "REMOTE_PATH";
     public static final String EXTRA_SEND_INTENT = "SEND_INTENT";
     public static final String EXTRA_SEND_INTENT = "SEND_INTENT";
     public static final String EXTRA_NEWNAME = "NEWNAME";
     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";
     public static final String EXTRA_RESULT = "RESULT";
     
     
     // TODO review if ALL OF THEM are necessary
     // 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_EXISTENCE_CHECK = "EXISTENCE_CHECK";
     public static final String ACTION_GET_USER_NAME = "GET_USER_NAME";
     public static final String ACTION_GET_USER_NAME = "GET_USER_NAME";
     public static final String ACTION_RENAME = "RENAME";
     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_ADDED = OperationsService.class.getName() + ".OPERATION_ADDED";
     public static final String ACTION_OPERATION_FINISHED = OperationsService.class.getName() + ".OPERATION_FINISHED";
     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 remotePath = operationIntent.getStringExtra(EXTRA_REMOTE_PATH);
                         String newName = operationIntent.getStringExtra(EXTRA_NEWNAME);
                         String newName = operationIntent.getStringExtra(EXTRA_NEWNAME);
                         operation = new RenameFileOperation(remotePath, account, 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);
                     }
                     }
                 }
                 }
                     
                     

+ 1 - 1
src/com/owncloud/android/ui/activity/FileActivity.java

@@ -1,6 +1,6 @@
 /* ownCloud Android client application
 /* ownCloud Android client application
  *   Copyright (C) 2011  Bartek Przybylski
  *   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
  *   This program is free software: you can redistribute it and/or modify
  *   it under the terms of the GNU General Public License version 2,
  *   it under the terms of the GNU General Public License version 2,