diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/RemoveRemoteFileOperation.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/RemoveRemoteFileOperation.kt index 4789d015..23b16e7e 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/RemoveRemoteFileOperation.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/RemoveRemoteFileOperation.kt @@ -24,19 +24,18 @@ package com.owncloud.android.lib.resources.files; -import android.net.Uri; - -import com.owncloud.android.lib.common.OwnCloudClient; -import com.owncloud.android.lib.common.http.HttpConstants; -import com.owncloud.android.lib.common.http.methods.nonwebdav.DeleteMethod; -import com.owncloud.android.lib.common.network.WebdavUtils; -import com.owncloud.android.lib.common.operations.RemoteOperation; -import com.owncloud.android.lib.common.operations.RemoteOperationResult; -import timber.log.Timber; - -import java.net.URL; - -import static com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode.OK; +import android.net.Uri +import com.owncloud.android.lib.common.OwnCloudClient +import com.owncloud.android.lib.common.http.HttpConstants.HTTP_NO_CONTENT +import com.owncloud.android.lib.common.http.HttpConstants.HTTP_OK +import com.owncloud.android.lib.common.http.methods.nonwebdav.DeleteMethod +import com.owncloud.android.lib.common.network.WebdavUtils +import com.owncloud.android.lib.common.operations.RemoteOperation +import com.owncloud.android.lib.common.operations.RemoteOperationResult +import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode +import com.owncloud.android.lib.common.utils.isOneOf +import timber.log.Timber +import java.net.URL /** * Remote operation performing the removal of a remote file or folder in the ownCloud server. @@ -44,53 +43,34 @@ import static com.owncloud.android.lib.common.operations.RemoteOperationResult.R * @author David A. Velasco * @author masensio * @author David González Verdugo + * @author Abel García de Prada */ -public class RemoveRemoteFileOperation extends RemoteOperation { - private String mRemotePath; - - protected boolean removeChunksFolder = false; - - /** - * 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(OwnCloudClient client) { - RemoteOperationResult result; +open class RemoveRemoteFileOperation( + private val mRemotePath: String +) : RemoteOperation() { + override fun run(client: OwnCloudClient): RemoteOperationResult { + var result: RemoteOperationResult try { - Uri srcWebDavUri = removeChunksFolder ? client.getUploadsWebDavUri() : client.getUserFilesWebDavUri(); - - DeleteMethod deleteMethod = new DeleteMethod( - new URL(srcWebDavUri + WebdavUtils.encodePath(mRemotePath))); - - int status = client.executeHttpMethod(deleteMethod); - - result = isSuccess(status) ? - new RemoteOperationResult<>(OK) : - new RemoteOperationResult<>(deleteMethod); - - Timber.i("Remove " + mRemotePath + ": " + result.getLogMessage()); - - } catch (Exception e) { - result = new RemoteOperationResult<>(e); - Timber.e(e, "Remove " + mRemotePath + ": " + result.getLogMessage()); + val srcWebDavUri = getSrcWebDavUriForClient(client) + val deleteMethod = DeleteMethod( + URL(srcWebDavUri.toString() + WebdavUtils.encodePath(mRemotePath)) + ) + val status = client.executeHttpMethod(deleteMethod) + result = if (isSuccess(status)) RemoteOperationResult(ResultCode.OK) else RemoteOperationResult(deleteMethod) + Timber.i("Remove $mRemotePath: ${result.logMessage}") + } catch (e: Exception) { + result = RemoteOperationResult(e) + Timber.e(e, "Remove $mRemotePath: ${result.logMessage}") } - - return result; + return result } - private boolean isSuccess(int status) { - return status == HttpConstants.HTTP_OK || status == HttpConstants.HTTP_NO_CONTENT; - } -} \ No newline at end of file + /** + * For standard removals, we will use [OwnCloudClient.getUserFilesWebDavUri]. + * In case we need a different source Uri, override this method. + */ + open fun getSrcWebDavUriForClient(client: OwnCloudClient): Uri = client.userFilesWebDavUri + + private fun isSuccess(status: Int) = status.isOneOf(HTTP_OK, HTTP_NO_CONTENT) +} diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/chunks/RemoveRemoteChunksFolderOperation.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/chunks/RemoveRemoteChunksFolderOperation.kt index 16d2b8bd..150a4dd1 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/chunks/RemoveRemoteChunksFolderOperation.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/chunks/RemoveRemoteChunksFolderOperation.kt @@ -22,20 +22,12 @@ * THE SOFTWARE. * */ +package com.owncloud.android.lib.resources.files.chunks -package com.owncloud.android.lib.resources.files.chunks; +import android.net.Uri +import com.owncloud.android.lib.common.OwnCloudClient +import com.owncloud.android.lib.resources.files.RemoveRemoteFileOperation -import com.owncloud.android.lib.resources.files.RemoveRemoteFileOperation; - -public class RemoveRemoteChunksFolderOperation extends RemoveRemoteFileOperation { - - /** - * Constructor - * - * @param remotePath RemotePath of the remote file or folder to remove from the server - */ - public RemoveRemoteChunksFolderOperation(String remotePath) { - super(remotePath); - removeChunksFolder = true; - } -} \ No newline at end of file +class RemoveRemoteChunksFolderOperation(remotePath: String) : RemoveRemoteFileOperation(remotePath) { + override fun getSrcWebDavUriForClient(client: OwnCloudClient): Uri = client.uploadsWebDavUri +}