From: masensio Date: Fri, 22 Nov 2013 12:30:09 +0000 (+0100) Subject: OC-2164: Isolate code from RemoveFileOperation. Include new RemoveRemoteFileOperation... X-Git-Tag: oc-android-1.5.5~118^2~4 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/9809c0d3db2a5fc876d966ba057f0ff25fce008a?ds=inline;hp=-c OC-2164: Isolate code from RemoveFileOperation. Include new RemoveRemoteFileOperation in library --- 9809c0d3db2a5fc876d966ba057f0ff25fce008a diff --git a/oc_framework/.classpath b/oc_framework/.classpath index 51769745..72e286b9 100644 --- a/oc_framework/.classpath +++ b/oc_framework/.classpath @@ -5,5 +5,6 @@ + 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 index 00000000..baf24234 --- /dev/null +++ b/oc_framework/src/com/owncloud/android/oc_framework/operations/remote/RemoveRemoteFileOperation.java @@ -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; + } + +} diff --git a/src/com/owncloud/android/operations/RemoveFileOperation.java b/src/com/owncloud/android/operations/RemoveFileOperation.java index 34926afb..77c00f31 100644 --- a/src/com/owncloud/android/operations/RemoveFileOperation.java +++ b/src/com/owncloud/android/operations/RemoveFileOperation.java @@ -17,16 +17,13 @@ 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; /** @@ -36,10 +33,7 @@ import com.owncloud.android.utils.Log_OC; */ 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; @@ -69,7 +63,6 @@ public class RemoveFileOperation extends RemoteOperation { return mFileToRemove; } - /** * Performs the remove operation * @@ -78,25 +71,32 @@ public class RemoveFileOperation extends RemoteOperation { @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; } diff --git a/src/com/owncloud/android/operations/RenameFileOperation.java b/src/com/owncloud/android/operations/RenameFileOperation.java index 9aa573ab..be6cdcce 100644 --- a/src/com/owncloud/android/operations/RenameFileOperation.java +++ b/src/com/owncloud/android/operations/RenameFileOperation.java @@ -20,7 +20,6 @@ package com.owncloud.android.operations; 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; diff --git a/tests/src/com/owncloud/android/test/AccountUtilsTest.java b/tests/src/com/owncloud/android/test/AccountUtilsTest.java index 1524d3b2..03667ff7 100644 --- a/tests/src/com/owncloud/android/test/AccountUtilsTest.java +++ b/tests/src/com/owncloud/android/test/AccountUtilsTest.java @@ -18,11 +18,12 @@ 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 android.test.AndroidTestCase; + + public class AccountUtilsTest extends AndroidTestCase { public void testGetWebdavPathAndOCVersion() {