--- /dev/null
+package com.owncloud.android.oc_framework_test_project.test;
+
+import com.owncloud.android.oc_framework.operations.RemoteOperationResult;
+import com.owncloud.android.oc_framework.operations.RemoteOperationResult.ResultCode;
+import com.owncloud.android.oc_framework_test_project.TestActivity;
+
+import android.test.ActivityInstrumentationTestCase2;
+
+public class DeleteFileTest extends ActivityInstrumentationTestCase2<TestActivity> {
+
+ /* Folder data to delete. */
+ private final String mFolderPath = "/folderToDelete";
+
+ /* File to delete. */
+ private final String mFilePath = "fileToDelete.png";
+
+ private TestActivity mActivity;
+
+ public DeleteFileTest() {
+ super(TestActivity.class);
+
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ setActivityInitialTouchMode(false);
+ mActivity = getActivity();
+ }
+
+ /**
+ * Test Remove Folder
+ */
+ public void testRemoveFolder() {
+
+ RemoteOperationResult result = mActivity.removeFile(mFolderPath);
+ assertTrue(result.isSuccess() || result.getCode() == ResultCode.FILE_NOT_FOUND);
+ }
+
+ /**
+ * Test Remove File
+ */
+ public void testRemoveFile() {
+
+ RemoteOperationResult result = mActivity.removeFile(mFilePath);
+ assertTrue(result.isSuccess() || result.getCode() == ResultCode.FILE_NOT_FOUND);
+ }
+
+ /**
+ * Restore initial conditions
+ */
+ public void testRestoreInitialConditions() {
+ RemoteOperationResult result = mActivity.createFolder(mFolderPath, true);
+ assertTrue(result.isSuccess());
+
+ }
+}
import com.owncloud.android.oc_framework.operations.RemoteOperationResult;
import com.owncloud.android.oc_framework.operations.remote.CreateRemoteFolderOperation;
import com.owncloud.android.oc_framework.operations.remote.ReadRemoteFileOperation;
+import com.owncloud.android.oc_framework.operations.remote.RemoveRemoteFileOperation;
import com.owncloud.android.oc_framework.operations.remote.RenameRemoteFileOperation;
import android.net.Uri;
/**
* Access to the library method to Create a Folder
- * @param remotePath
- * @param createFullPath
+ * @param remotePath Full path to the new directory to create in the remote server.
+ * @param createFullPath 'True' means that all the ancestor folders should be created if don't exist yet.
*
* @return
*/
return result;
}
+ /**
+ * Access to the library method to Remove a File or Folder
+ *
+ * @param remotePath Remote path of the file or folder in the server.
+ * @return
+ */
+ public RemoteOperationResult removeFile(String remotePath) {
+
+ RemoveRemoteFileOperation removeOperation = new RemoveRemoteFileOperation(remotePath);
+ RemoteOperationResult result = removeOperation.execute(mClient);
+
+ return result;
+ }
+
/**
* Access to the library method to Read a File or Folder (PROPFIND DEPTH 1)
* @param remotePath
ReadRemoteFileOperation readOperation= new ReadRemoteFileOperation(remotePath);
RemoteOperationResult result = readOperation.execute(mClient);
-
+
return result;
}
--- /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;
+ }
+
+}
}
updateFolderSize(file.getParentId());
}
- if (removeLocalCopy && file.isDown()) {
+ if (removeLocalCopy && file.isDown() && file.getStoragePath() != null) {
boolean success = new File(file.getStoragePath()).delete();
if (!removeDBData && success) {
// maybe unnecessary, but should be checked TODO remove if unnecessary
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);
}
+
return result;
}
@Override
public void onNeutral(String callerTag) {
- File f = null;
OCFile file = getFile();
- if (file.isDown() && (f = new File(file.getStoragePath())).exists()) {
- f.delete();
+ mStorageManager.removeFile(file, false, true); // TODO perform in background task / new thread
+ if (file.getStoragePath() != null) {
file.setStoragePath(null);
- mStorageManager.saveFile(file);
updateFileDetails(file, mAccount);
}
}
*/
package com.owncloud.android.ui.preview;
-import java.io.File;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
*/
@Override
public void onNeutral(String callerTag) {
- // TODO this code should be made in a secondary thread,
OCFile file = getFile();
- if (file.isDown()) { // checks it is still there
- File f = new File(file.getStoragePath());
- f.delete();
- file.setStoragePath(null);
- mStorageManager.saveFile(file);
- finish();
- }
+ mStorageManager.removeFile(file, false, true); // TODO perform in background task / new thread
+ finish();
}
/**
*/
package com.owncloud.android.ui.preview;
-import java.io.File;
import java.util.ArrayList;
import java.util.List;
*/
@Override
public void onNeutral(String callerTag) {
- // TODO this code should be made in a secondary thread,
OCFile file = getFile();
- if (file.isDown()) { // checks it is still there
- stopPreview(true);
- File f = new File(file.getStoragePath());
- f.delete();
- file.setStoragePath(null);
- mStorageManager.saveFile(file);
- finish();
- }
+ stopPreview(true);
+ mStorageManager.removeFile(file, false, true); // TODO perform in background task / new thread
+ finish();
}
/**
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() {