OC-2164: Isolate code from RemoveFileOperation. Include new RemoveRemoteFileOperation...
authormasensio <masensio@solidgear.es>
Fri, 22 Nov 2013 12:30:09 +0000 (13:30 +0100)
committermasensio <masensio@solidgear.es>
Fri, 22 Nov 2013 12:30:09 +0000 (13:30 +0100)
oc_framework/.classpath
oc_framework/src/com/owncloud/android/oc_framework/operations/remote/RemoveRemoteFileOperation.java [new file with mode: 0644]
src/com/owncloud/android/operations/RemoveFileOperation.java
src/com/owncloud/android/operations/RenameFileOperation.java
tests/src/com/owncloud/android/test/AccountUtilsTest.java

index 5176974..72e286b 100644 (file)
@@ -5,5 +5,6 @@
        <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
        <classpathentry kind="src" path="src"/>
        <classpathentry kind="src" path="gen"/>
        <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
        <classpathentry kind="src" path="src"/>
        <classpathentry kind="src" path="gen"/>
+       <classpathentry exported="true" kind="lib" path="D:/solidgear/OwnCloud/android/libs/jackrabbit-webdav-2.2.5-jar-with-dependencies.jar"/>
        <classpathentry kind="output" path="bin/classes"/>
 </classpath>
        <classpathentry kind="output" path="bin/classes"/>
 </classpath>
diff --git a/oc_framework/src/com/owncloud/android/oc_framework/operations/remote/RemoveRemoteFileOperation.java b/oc_framework/src/com/owncloud/android/oc_framework/operations/remote/RemoveRemoteFileOperation.java
new file mode 100644 (file)
index 0000000..baf2423
--- /dev/null
@@ -0,0 +1,66 @@
+package com.owncloud.android.oc_framework.operations.remote;
+
+import org.apache.commons.httpclient.HttpStatus;
+import org.apache.jackrabbit.webdav.client.methods.DeleteMethod;
+
+import android.util.Log;
+
+import com.owncloud.android.oc_framework.network.webdav.WebdavClient;
+import com.owncloud.android.oc_framework.network.webdav.WebdavUtils;
+import com.owncloud.android.oc_framework.operations.RemoteOperation;
+import com.owncloud.android.oc_framework.operations.RemoteOperationResult;
+
+/**
+ * Remote operation performing the removal of a remote file or folder in the ownCloud server.
+ * 
+ * @author David A. Velasco
+ * @author masensio
+ */
+public class RemoveRemoteFileOperation extends RemoteOperation {
+    private static final String TAG = RemoveRemoteFileOperation.class.getSimpleName();
+
+    private static final int REMOVE_READ_TIMEOUT = 10000;
+    private static final int REMOVE_CONNECTION_TIMEOUT = 5000;
+
+       private String mRemotePath;
+
+    /**
+     * Constructor
+     * 
+     * @param remotePath       RemotePath of the remote file or folder to remove from the server
+     */
+       public RemoveRemoteFileOperation(String remotePath) {
+               mRemotePath = remotePath;
+       }
+
+       /**
+        * Performs the rename operation.
+        * 
+        * @param client        Client object to communicate with the remote ownCloud server.
+        */
+       @Override
+       protected RemoteOperationResult run(WebdavClient client) {
+               RemoteOperationResult result = null;
+        DeleteMethod delete = null;
+        
+        try {
+               delete = new DeleteMethod(client.getBaseUri() + WebdavUtils.encodePath(mRemotePath));
+               int status = client.executeMethod(delete, REMOVE_READ_TIMEOUT, REMOVE_CONNECTION_TIMEOUT);
+               
+               delete.getResponseBodyAsString();   // exhaust the response, although not interesting
+               result = new RemoteOperationResult((delete.succeeded() || status == HttpStatus.SC_NOT_FOUND), status, delete.getResponseHeaders());
+               Log.i(TAG, "Remove " + mRemotePath + ": " + result.getLogMessage());
+
+        } catch (Exception e) {
+               result = new RemoteOperationResult(e);
+               Log.e(TAG, "Remove " + mRemotePath + ": " + result.getLogMessage(), e);
+
+        } finally {
+               if (delete != null)
+                       delete.releaseConnection();
+        }
+        
+               return result;
+       }
+
+}
index 34926af..77c00f3 100644 (file)
 
 package com.owncloud.android.operations;
 
 
 package com.owncloud.android.operations;
 
-import org.apache.commons.httpclient.HttpStatus;
-import org.apache.jackrabbit.webdav.client.methods.DeleteMethod;
-
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.oc_framework.network.webdav.WebdavClient;
 import com.owncloud.android.oc_framework.operations.RemoteOperation;
 import com.owncloud.android.oc_framework.operations.RemoteOperationResult;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.oc_framework.network.webdav.WebdavClient;
 import com.owncloud.android.oc_framework.operations.RemoteOperation;
 import com.owncloud.android.oc_framework.operations.RemoteOperationResult;
-import com.owncloud.android.oc_framework.network.webdav.WebdavUtils;
-import com.owncloud.android.utils.Log_OC;
+import com.owncloud.android.oc_framework.operations.RemoteOperationResult.ResultCode;
+import com.owncloud.android.oc_framework.operations.remote.RemoveRemoteFileOperation;
 
 
 /**
 
 
 /**
@@ -36,10 +33,7 @@ import com.owncloud.android.utils.Log_OC;
  */
 public class RemoveFileOperation extends RemoteOperation {
     
  */
 public class RemoveFileOperation extends RemoteOperation {
     
-    private static final String TAG = RemoveFileOperation.class.getSimpleName();
-
-    private static final int REMOVE_READ_TIMEOUT = 10000;
-    private static final int REMOVE_CONNECTION_TIMEOUT = 5000;
+    // private static final String TAG = RemoveFileOperation.class.getSimpleName();
     
     OCFile mFileToRemove;
     boolean mDeleteLocalCopy;
     
     OCFile mFileToRemove;
     boolean mDeleteLocalCopy;
@@ -69,7 +63,6 @@ public class RemoveFileOperation extends RemoteOperation {
         return mFileToRemove;
     }
     
         return mFileToRemove;
     }
     
-    
     /**
      * Performs the remove operation
      * 
     /**
      * Performs the remove operation
      * 
@@ -78,25 +71,32 @@ public class RemoveFileOperation extends RemoteOperation {
     @Override
     protected RemoteOperationResult run(WebdavClient client) {
         RemoteOperationResult result = null;
     @Override
     protected RemoteOperationResult run(WebdavClient client) {
         RemoteOperationResult result = null;
-        DeleteMethod delete = null;
-        try {
-            delete = new DeleteMethod(client.getBaseUri() + WebdavUtils.encodePath(mFileToRemove.getRemotePath()));
-            int status = client.executeMethod(delete, REMOVE_READ_TIMEOUT, REMOVE_CONNECTION_TIMEOUT);
-            if (delete.succeeded() || status == HttpStatus.SC_NOT_FOUND) {
-                mDataStorageManager.removeFile(mFileToRemove, true, mDeleteLocalCopy);
-            }
-            delete.getResponseBodyAsString();   // exhaust the response, although not interesting
-            result = new RemoteOperationResult((delete.succeeded() || status == HttpStatus.SC_NOT_FOUND), status, delete.getResponseHeaders());
-            Log_OC.i(TAG, "Remove " + mFileToRemove.getRemotePath() + ": " + result.getLogMessage());
-            
-        } catch (Exception e) {
-            result = new RemoteOperationResult(e);
-            Log_OC.e(TAG, "Remove " + mFileToRemove.getRemotePath() + ": " + result.getLogMessage(), e);
-            
-        } finally {
-            if (delete != null)
-                delete.releaseConnection();
+        
+        RemoveRemoteFileOperation operation = new RemoveRemoteFileOperation(mFileToRemove.getRemotePath());
+        result = operation.execute(client);
+        
+        if (result.isSuccess() || result.getCode() == ResultCode.FILE_NOT_FOUND) {
+            mDataStorageManager.removeFile(mFileToRemove, true, mDeleteLocalCopy);
         }
         }
+        
+//        try {
+//            delete = new DeleteMethod(client.getBaseUri() + WebdavUtils.encodePath(mFileToRemove.getRemotePath()));
+//            int status = client.executeMethod(delete, REMOVE_READ_TIMEOUT, REMOVE_CONNECTION_TIMEOUT);
+//            if (delete.succeeded() || status == HttpStatus.SC_NOT_FOUND) {
+//                mDataStorageManager.removeFile(mFileToRemove, true, mDeleteLocalCopy);
+//            }
+//            delete.getResponseBodyAsString();   // exhaust the response, although not interesting
+//            result = new RemoteOperationResult((delete.succeeded() || status == HttpStatus.SC_NOT_FOUND), status, delete.getResponseHeaders());
+//            Log_OC.i(TAG, "Remove " + mFileToRemove.getRemotePath() + ": " + result.getLogMessage());
+//            
+//        } catch (Exception e) {
+//            result = new RemoteOperationResult(e);
+//            Log_OC.e(TAG, "Remove " + mFileToRemove.getRemotePath() + ": " + result.getLogMessage(), e);
+//            
+//        } finally {
+//            if (delete != null)
+//                delete.releaseConnection();
+//        }
         return result;
     }
     
         return result;
     }
     
index 9aa573a..be6cdcc 100644 (file)
@@ -20,7 +20,6 @@ package com.owncloud.android.operations;
 import java.io.File;
 import java.io.IOException;
 
 import java.io.File;
 import java.io.IOException;
 
-import org.apache.commons.httpclient.HttpException;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.oc_framework.network.webdav.WebdavClient;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.oc_framework.network.webdav.WebdavClient;
index 1524d3b..03667ff 100644 (file)
 
 package com.owncloud.android.test;
 
 
 package com.owncloud.android.test;
 
-import android.test.AndroidTestCase;
-
 import com.owncloud.android.oc_framework.accounts.AccountUtils;
 import com.owncloud.android.oc_framework.utils.OwnCloudVersion;
 
 import com.owncloud.android.oc_framework.accounts.AccountUtils;
 import com.owncloud.android.oc_framework.utils.OwnCloudVersion;
 
+import android.test.AndroidTestCase;
+
+
 public class AccountUtilsTest extends AndroidTestCase {
     
     public void testGetWebdavPathAndOCVersion() {
 public class AccountUtilsTest extends AndroidTestCase {
     
     public void testGetWebdavPathAndOCVersion() {