--- /dev/null
+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;
+ }
+
+}
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.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;
/**
*/
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;
return mFileToRemove;
}
-
/**
* Performs the remove operation
*
@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;
}