From: masensio Date: Thu, 12 Dec 2013 11:37:36 +0000 (+0100) Subject: OC-2332: rewrite getAvailableRemotePath from UpdateFileOperation, using ExistenceCehe... X-Git-Tag: oc-android-1.5.5~101^2~5 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/d38a69abc1ba78df70fee65fc2434fc80b6be93b?ds=sidebyside;hp=-c OC-2332: rewrite getAvailableRemotePath from UpdateFileOperation, using ExistenceCeheckRemoteOperation instead of WebClient#existsFile --- d38a69abc1ba78df70fee65fc2434fc80b6be93b diff --git a/src/com/owncloud/android/files/services/FileUploader.java b/src/com/owncloud/android/files/services/FileUploader.java index c7d0d204..1ea347ff 100644 --- a/src/com/owncloud/android/files/services/FileUploader.java +++ b/src/com/owncloud/android/files/services/FileUploader.java @@ -267,9 +267,10 @@ public class FileUploader extends Service implements OnDatatransferProgressListe uploadKey = buildRemoteName(account, files[i].getRemotePath()); if (chunked) { newUpload = new ChunkedUploadFileOperation(account, files[i], isInstant, forceOverwrite, - localAction); + localAction, getApplicationContext()); } else { - newUpload = new UploadFileOperation(account, files[i], isInstant, forceOverwrite, localAction); + newUpload = new UploadFileOperation(account, files[i], isInstant, forceOverwrite, localAction, + getApplicationContext()); } if (isInstant) { newUpload.setRemoteFolderToBeCreated(); diff --git a/src/com/owncloud/android/operations/ChunkedUploadFileOperation.java b/src/com/owncloud/android/operations/ChunkedUploadFileOperation.java index fd8a5a6d..f48e8dde 100644 --- a/src/com/owncloud/android/operations/ChunkedUploadFileOperation.java +++ b/src/com/owncloud/android/operations/ChunkedUploadFileOperation.java @@ -36,6 +36,7 @@ import com.owncloud.android.utils.Log_OC; import android.accounts.Account; +import android.content.Context; public class ChunkedUploadFileOperation extends UploadFileOperation { @@ -48,9 +49,9 @@ public class ChunkedUploadFileOperation extends UploadFileOperation { OCFile file, boolean isInstant, boolean forceOverwrite, - int localBehaviour) { + int localBehaviour, Context context) { - super(account, file, isInstant, forceOverwrite, localBehaviour); + super(account, file, isInstant, forceOverwrite, localBehaviour, context); } @Override diff --git a/src/com/owncloud/android/operations/UploadFileOperation.java b/src/com/owncloud/android/operations/UploadFileOperation.java index 80a3463b..f34871cf 100644 --- a/src/com/owncloud/android/operations/UploadFileOperation.java +++ b/src/com/owncloud/android/operations/UploadFileOperation.java @@ -43,10 +43,12 @@ import com.owncloud.android.oc_framework.operations.OperationCancelledException; import com.owncloud.android.oc_framework.operations.RemoteOperation; import com.owncloud.android.oc_framework.operations.RemoteOperationResult; import com.owncloud.android.oc_framework.operations.RemoteOperationResult.ResultCode; +import com.owncloud.android.oc_framework.operations.remote.ExistenceCheckRemoteOperation; import com.owncloud.android.utils.FileStorageUtils; import com.owncloud.android.utils.Log_OC; import android.accounts.Account; +import android.content.Context; /** @@ -72,6 +74,7 @@ public class UploadFileOperation extends RemoteOperation { PutMethod mPutMethod = null; private Set mDataTransferListeners = new HashSet(); private final AtomicBoolean mCancellationRequested = new AtomicBoolean(false); + private Context mContext; protected RequestEntity mEntity = null; @@ -80,7 +83,8 @@ public class UploadFileOperation extends RemoteOperation { OCFile file, boolean isInstant, boolean forceOverwrite, - int localBehaviour) { + int localBehaviour, + Context context) { if (account == null) throw new IllegalArgumentException("Illegal NULL account in UploadFileOperation creation"); if (file == null) @@ -100,6 +104,7 @@ public class UploadFileOperation extends RemoteOperation { mLocalBehaviour = localBehaviour; mOriginalStoragePath = mFile.getStoragePath(); mOriginalFileName = mFile.getFileName(); + mContext = context; } public Account getAccount() { @@ -199,7 +204,7 @@ public class UploadFileOperation extends RemoteOperation { // !!! expectedFile = new File(expectedPath); - // / check location of local file; if not the expected, copy to a + // check location of local file; if not the expected, copy to a // temporal file before upload (if COPY is the expected behaviour) if (!mOriginalStoragePath.equals(expectedPath) && mLocalBehaviour == FileUploader.LOCAL_BEHAVIOUR_COPY) { @@ -389,7 +394,7 @@ public class UploadFileOperation extends RemoteOperation { * @return */ private String getAvailableRemotePath(WebdavClient wc, String remotePath) throws Exception { - boolean check = wc.existsFile(remotePath); + boolean check = existsFile(wc, remotePath); if (!check) { return remotePath; } @@ -404,10 +409,12 @@ public class UploadFileOperation extends RemoteOperation { int count = 2; do { suffix = " (" + count + ")"; - if (pos >= 0) - check = wc.existsFile(remotePath + suffix + "." + extension); - else - check = wc.existsFile(remotePath + suffix); + if (pos >= 0) { + check = existsFile(wc, remotePath + suffix + "." + extension); + } + else { + check = existsFile(wc, remotePath + suffix); + } count++; } while (check); @@ -418,6 +425,12 @@ public class UploadFileOperation extends RemoteOperation { } } + private boolean existsFile(WebdavClient client, String remotePath){ + ExistenceCheckRemoteOperation existsOperation = new ExistenceCheckRemoteOperation(remotePath, mContext, false); + RemoteOperationResult result = existsOperation.execute(client); + return result.isSuccess(); + } + public void cancel() { synchronized (mCancellationRequested) { mCancellationRequested.set(true);