From: masensio Date: Thu, 8 May 2014 08:39:55 +0000 (+0200) Subject: Add RenameOperation to OperationsService X-Git-Tag: oc-android-1.7.0_signed~309^2~44 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/ffb5702b2d4160aaa9b5216f24b50a240b2a0130 Add RenameOperation to OperationsService --- diff --git a/src/com/owncloud/android/files/FileOperationsHelper.java b/src/com/owncloud/android/files/FileOperationsHelper.java index b7dc67f0..96c8c95f 100644 --- a/src/com/owncloud/android/files/FileOperationsHelper.java +++ b/src/com/owncloud/android/files/FileOperationsHelper.java @@ -35,7 +35,6 @@ import com.owncloud.android.lib.common.network.WebdavUtils; import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.resources.status.OwnCloudVersion; import com.owncloud.android.operations.RemoveFileOperation; -import com.owncloud.android.operations.RenameFileOperation; import com.owncloud.android.operations.SynchronizeFileOperation; import com.owncloud.android.services.OperationsService; import com.owncloud.android.ui.activity.FileActivity; @@ -209,20 +208,14 @@ public class FileOperationsHelper { } - public void renameFile(OCFile file, String newFilename) { - Account account = mFileActivity.getAccount(); - RemoteOperation operation = new RenameFileOperation( - file, - account, - newFilename, - mFileActivity.getStorageManager()); - - operation.execute( - account, - mFileActivity, - mFileActivity, - mFileActivity.getHandler(), - mFileActivity); + public void renameFile(OCFile file, String newFilename) { + // RenameFile + Intent service = new Intent(mFileActivity, OperationsService.class); + service.setAction(OperationsService.ACTION_RENAME); + service.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount()); + service.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath()); + service.putExtra(OperationsService.EXTRA_NEWNAME, newFilename); + mFileActivity.getOperationsServiceBinder().newOperation(service); mFileActivity.showLoadingDialog(); } diff --git a/src/com/owncloud/android/operations/RenameFileOperation.java b/src/com/owncloud/android/operations/RenameFileOperation.java index a007af2b..20ba041c 100644 --- a/src/com/owncloud/android/operations/RenameFileOperation.java +++ b/src/com/owncloud/android/operations/RenameFileOperation.java @@ -1,5 +1,5 @@ /* ownCloud Android client application - * Copyright (C) 2012-2013 ownCloud Inc. + * Copyright (C) 2012-2014 ownCloud Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2, @@ -20,13 +20,12 @@ package com.owncloud.android.operations; import java.io.File; import java.io.IOException; -import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.lib.common.OwnCloudClient; -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.resources.files.RenameRemoteFileOperation; +import com.owncloud.android.operations.common.SyncOperation; import com.owncloud.android.utils.FileStorageUtils; import com.owncloud.android.utils.Log_OC; @@ -37,33 +36,33 @@ import android.accounts.Account; * Remote operation performing the rename of a remote file (or folder?) in the ownCloud server. * * @author David A. Velasco + * @author masensio */ -public class RenameFileOperation extends RemoteOperation { +public class RenameFileOperation extends SyncOperation { private static final String TAG = RenameFileOperation.class.getSimpleName(); - private OCFile mFile; + private String mRemotePath; private Account mAccount; private String mNewName; private String mNewRemotePath; - private FileDataStorageManager mStorageManager; + /** * Constructor * - * @param file OCFile instance describing the remote file or folder to rename + * @param remotePath RemotePath of the OCFile instance describing the remote file or folder to rename * @param account OwnCloud account containing the remote file * @param newName New name to set as the name of file. * @param storageManager Reference to the local database corresponding to the account where the file is contained. */ - public RenameFileOperation(OCFile file, Account account, String newName, FileDataStorageManager storageManager) { - mFile = file; + public RenameFileOperation(String remotePath, Account account, String newName) { + mRemotePath = remotePath; mAccount = account; mNewName = newName; mNewRemotePath = null; - mStorageManager = storageManager; } public OCFile getFile() { @@ -80,6 +79,8 @@ public class RenameFileOperation extends RemoteOperation { protected RemoteOperationResult run(OwnCloudClient client) { RemoteOperationResult result = null; + mFile = getStorageManager().getFileByPath(mRemotePath); + // check if the new name is valid in the local file system try { if (!isValidNewName()) { @@ -92,8 +93,8 @@ public class RenameFileOperation extends RemoteOperation { mNewRemotePath += OCFile.PATH_SEPARATOR; } - // ckeck local overwrite - if (mStorageManager.getFileByPath(mNewRemotePath) != null) { + // check local overwrite + if (getStorageManager().getFileByPath(mNewRemotePath) != null) { return new RemoteOperationResult(ResultCode.INVALID_OVERWRITE); } @@ -120,7 +121,7 @@ public class RenameFileOperation extends RemoteOperation { private void saveLocalDirectory() { - mStorageManager.moveFolder(mFile, mNewRemotePath); + getStorageManager().moveFolder(mFile, mNewRemotePath); String localPath = FileStorageUtils.getDefaultSavePathFor(mAccount.name, mFile); File localDir = new File(localPath); if (localDir.exists()) { @@ -145,7 +146,7 @@ public class RenameFileOperation extends RemoteOperation { // TODO - study conditions when this could be a problem } - mStorageManager.saveFile(mFile); + getStorageManager().saveFile(mFile); } /** diff --git a/src/com/owncloud/android/services/OperationsService.java b/src/com/owncloud/android/services/OperationsService.java index 75363051..59fc1ba1 100644 --- a/src/com/owncloud/android/services/OperationsService.java +++ b/src/com/owncloud/android/services/OperationsService.java @@ -37,6 +37,7 @@ import com.owncloud.android.operations.common.SyncOperation; import com.owncloud.android.operations.CreateShareOperation; import com.owncloud.android.operations.GetServerInfoOperation; import com.owncloud.android.operations.OAuth2GetAccessToken; +import com.owncloud.android.operations.RenameFileOperation; import com.owncloud.android.operations.UnshareLinkOperation; import com.owncloud.android.utils.Log_OC; @@ -64,6 +65,7 @@ public class OperationsService extends Service { public static final String EXTRA_OAUTH2_QUERY_PARAMETERS = "OAUTH2_QUERY_PARAMETERS"; public static final String EXTRA_REMOTE_PATH = "REMOTE_PATH"; public static final String EXTRA_SEND_INTENT = "SEND_INTENT"; + public static final String EXTRA_NEWNAME = "NEWNAME"; public static final String EXTRA_RESULT = "RESULT"; // TODO review if ALL OF THEM are necessary @@ -81,6 +83,7 @@ public class OperationsService extends Service { public static final String ACTION_OAUTH2_GET_ACCESS_TOKEN = "OAUTH2_GET_ACCESS_TOKEN"; public static final String ACTION_EXISTENCE_CHECK = "EXISTENCE_CHECK"; public static final String ACTION_GET_USER_NAME = "GET_USER_NAME"; + public static final String ACTION_RENAME = "RENAME"; public static final String ACTION_OPERATION_ADDED = OperationsService.class.getName() + ".OPERATION_ADDED"; public static final String ACTION_OPERATION_FINISHED = OperationsService.class.getName() + ".OPERATION_FINISHED"; @@ -335,6 +338,12 @@ public class OperationsService extends Service { } else if (action.equals(ACTION_GET_USER_NAME)) { // Get User Name operation = new GetRemoteUserNameOperation(); + + } else if (action.equals(ACTION_RENAME)) { + // Rename file or folder + String remotePath = operationIntent.getStringExtra(EXTRA_REMOTE_PATH); + String newName = operationIntent.getStringExtra(EXTRA_NEWNAME); + operation = new RenameFileOperation(remotePath, account, newName); } }