projects
/
pub
/
Android
/
ownCloud.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
3bed5fe
)
Cancel the current upload when it hasn't started yet
author
masensio
<masensio@solidgear.es>
Mon, 16 Feb 2015 12:56:37 +0000
(13:56 +0100)
committer
masensio
<masensio@solidgear.es>
Mon, 16 Feb 2015 12:56:37 +0000
(13:56 +0100)
src/com/owncloud/android/files/services/FileUploader.java
patch
|
blob
|
blame
|
history
src/com/owncloud/android/operations/UploadFileOperation.java
patch
|
blob
|
blame
|
history
src/com/owncloud/android/ui/activity/FileActivity.java
patch
|
blob
|
blame
|
history
src/com/owncloud/android/ui/activity/FileDisplayActivity.java
patch
|
blob
|
blame
|
history
src/com/owncloud/android/ui/activity/Preferences.java
patch
|
blob
|
blame
|
history
diff --git
a/src/com/owncloud/android/files/services/FileUploader.java
b/src/com/owncloud/android/files/services/FileUploader.java
index
0859cf9
..
c5b9217
100644
(file)
--- a/
src/com/owncloud/android/files/services/FileUploader.java
+++ b/
src/com/owncloud/android/files/services/FileUploader.java
@@
-1,6
+1,6
@@
/* ownCloud Android client application
* Copyright (C) 2012 Bartek Przybylski
/* ownCloud Android client application
* Copyright (C) 2012 Bartek Przybylski
- * Copyright (C) 2012-201
3
ownCloud Inc.
+ * Copyright (C) 2012-201
5
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,
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2,
@@
-56,6
+56,7
@@
import com.owncloud.android.lib.common.OwnCloudClient;
import com.owncloud.android.lib.common.OwnCloudClientManagerFactory;
import com.owncloud.android.lib.common.accounts.AccountUtils.Constants;
import com.owncloud.android.lib.common.network.OnDatatransferProgressListener;
import com.owncloud.android.lib.common.OwnCloudClientManagerFactory;
import com.owncloud.android.lib.common.accounts.AccountUtils.Constants;
import com.owncloud.android.lib.common.network.OnDatatransferProgressListener;
+import com.owncloud.android.lib.common.operations.OperationCancelledException;
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.operations.RemoteOperation;
import com.owncloud.android.lib.common.operations.RemoteOperationResult;
import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;
@@
-211,11
+212,11
@@
public class FileUploader extends Service implements OnDatatransferProgressListe
if (intent.hasExtra(KEY_FILE)) {
files = (OCFile[]) intent.getParcelableArrayExtra(KEY_FILE); // TODO
if (intent.hasExtra(KEY_FILE)) {
files = (OCFile[]) intent.getParcelableArrayExtra(KEY_FILE); // TODO
- // will
- // this
- // casting
- // work
- // fine?
+
// will
+
// this
+
// casting
+
// work
+
// fine?
} else {
localPaths = intent.getStringArrayExtra(KEY_LOCAL_FILE);
} else {
localPaths = intent.getStringArrayExtra(KEY_LOCAL_FILE);
@@
-352,7
+353,7
@@
public class FileUploader extends Service implements OnDatatransferProgressListe
upload = mPendingUploads.remove(buildRemoteName(account, file));
}
if (upload != null) {
upload = mPendingUploads.remove(buildRemoteName(account, file));
}
if (upload != null) {
-
u
pload.cancel();
+
mCurrentU
pload.cancel();
}
}
}
}
@@
-382,7
+383,7
@@
public class FileUploader extends Service implements OnDatatransferProgressListe
upload = mPendingUploads.remove(key);
}
if (upload != null) {
upload = mPendingUploads.remove(key);
}
if (upload != null) {
-
u
pload.cancel();
+
mCurrentU
pload.cancel();
}
}
}
}
}
}
@@
-594,7
+595,8
@@
public class FileUploader extends Service implements OnDatatransferProgressListe
private RemoteOperationResult grantFolderExistence(String pathToGrant) {
RemoteOperation operation = new ExistenceCheckRemoteOperation(pathToGrant, this, false);
RemoteOperationResult result = operation.execute(mUploadClient);
private RemoteOperationResult grantFolderExistence(String pathToGrant) {
RemoteOperation operation = new ExistenceCheckRemoteOperation(pathToGrant, this, false);
RemoteOperationResult result = operation.execute(mUploadClient);
- if (!result.isSuccess() && result.getCode() == ResultCode.FILE_NOT_FOUND && mCurrentUpload.isRemoteFolderToBeCreated()) {
+ if (!result.isSuccess() && result.getCode() == ResultCode.FILE_NOT_FOUND &&
+ mCurrentUpload.isRemoteFolderToBeCreated()) {
SyncOperation syncOp = new CreateFolderOperation( pathToGrant, true);
result = syncOp.execute(mUploadClient, mStorageManager);
}
SyncOperation syncOp = new CreateFolderOperation( pathToGrant, true);
result = syncOp.execute(mUploadClient, mStorageManager);
}
@@
-615,7
+617,8
@@
public class FileUploader extends Service implements OnDatatransferProgressListe
private OCFile createLocalFolder(String remotePath) {
String parentPath = new File(remotePath).getParent();
private OCFile createLocalFolder(String remotePath) {
String parentPath = new File(remotePath).getParent();
- parentPath = parentPath.endsWith(OCFile.PATH_SEPARATOR) ? parentPath : parentPath + OCFile.PATH_SEPARATOR;
+ parentPath = parentPath.endsWith(OCFile.PATH_SEPARATOR) ?
+ parentPath : parentPath + OCFile.PATH_SEPARATOR;
OCFile parent = mStorageManager.getFileByPath(parentPath);
if (parent == null) {
parent = createLocalFolder(parentPath);
OCFile parent = mStorageManager.getFileByPath(parentPath);
if (parent == null) {
parent = createLocalFolder(parentPath);
diff --git
a/src/com/owncloud/android/operations/UploadFileOperation.java
b/src/com/owncloud/android/operations/UploadFileOperation.java
index
82ad333
..
42ca738
100644
(file)
--- a/
src/com/owncloud/android/operations/UploadFileOperation.java
+++ b/
src/com/owncloud/android/operations/UploadFileOperation.java
@@
-1,5
+1,5
@@
/* ownCloud Android client application
/* ownCloud Android client application
- * Copyright (C) 2012-201
3
ownCloud Inc.
+ * Copyright (C) 2012-201
5
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,
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2,
@@
-26,6
+26,7
@@
import java.io.OutputStream;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
+import java.util.concurrent.CancellationException;
import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.commons.httpclient.methods.PutMethod;
import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.commons.httpclient.methods.PutMethod;
@@
-212,7
+213,8
@@
public class UploadFileOperation extends RemoteOperation {
// check location of local file; if not the expected, copy to a
// temporal file before upload (if COPY is the expected behaviour)
// 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) {
+ if (!mOriginalStoragePath.equals(expectedPath) &&
+ mLocalBehaviour == FileUploader.LOCAL_BEHAVIOUR_COPY) {
if (FileStorageUtils.getUsableSpace(mAccount.name) < originalFile.length()) {
result = new RemoteOperationResult(ResultCode.LOCAL_STORAGE_FULL);
if (FileStorageUtils.getUsableSpace(mAccount.name) < originalFile.length()) {
result = new RemoteOperationResult(ResultCode.LOCAL_STORAGE_FULL);
@@
-221,7
+223,8
@@
public class UploadFileOperation extends RemoteOperation {
} else {
} else {
- String temporalPath = FileStorageUtils.getTemporalPath(mAccount.name) + mFile.getRemotePath();
+ String temporalPath = FileStorageUtils.getTemporalPath(mAccount.name) +
+ mFile.getRemotePath();
mFile.setStoragePath(temporalPath);
temporalFile = new File(temporalPath);
mFile.setStoragePath(temporalPath);
temporalFile = new File(temporalPath);
@@
-251,7
+254,8
@@
public class UploadFileOperation extends RemoteOperation {
int nRead;
byte[] data = new byte[16384];
int nRead;
byte[] data = new byte[16384];
- while ((nRead = in.read(data, 0, data.length)) != -1) {
+ while (!mCancellationRequested.get() &&
+ (nRead = in.read(data, 0, data.length)) != -1) {
out.write(data, 0, nRead);
}
out.write(data, 0, nRead);
}
@@
-268,7
+272,7
@@
public class UploadFileOperation extends RemoteOperation {
out = new FileOutputStream(temporalFile);
byte[] buf = new byte[1024];
int len;
out = new FileOutputStream(temporalFile);
byte[] buf = new byte[1024];
int len;
- while ((len = in.read(buf)) > 0) {
+ while (
!mCancellationRequested.get() &&
(len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
}
out.write(buf, 0, len);
}
}
@@
-283,13
+287,15
@@
public class UploadFileOperation extends RemoteOperation {
if (in != null)
in.close();
} catch (Exception e) {
if (in != null)
in.close();
} catch (Exception e) {
- Log_OC.d(TAG, "Weird exception while closing input stream for " + mOriginalStoragePath + " (ignoring)", e);
+ Log_OC.d(TAG, "Weird exception while closing input stream for " +
+ mOriginalStoragePath + " (ignoring)", e);
}
try {
if (out != null)
out.close();
} catch (Exception e) {
}
try {
if (out != null)
out.close();
} catch (Exception e) {
- Log_OC.d(TAG, "Weird exception while closing output stream for " + expectedPath + " (ignoring)", e);
+ Log_OC.d(TAG, "Weird exception while closing output stream for " +
+ expectedPath + " (ignoring)", e);
}
}
}
}
}
}
@@
-297,19
+303,22
@@
public class UploadFileOperation extends RemoteOperation {
localCopyPassed = true;
/// perform the upload
localCopyPassed = true;
/// perform the upload
- if ( mChunked && (new File(mFile.getStoragePath())).length() > ChunkedUploadRemoteFileOperation.CHUNK_SIZE ) {
- mUploadOperation = new ChunkedUploadRemoteFileOperation(mFile.getStoragePath(), mFile.getRemotePath(),
- mFile.getMimetype());
+ if ( mChunked &&
+ (new File(mFile.getStoragePath())).length() >
+ ChunkedUploadRemoteFileOperation.CHUNK_SIZE ) {
+ mUploadOperation = new ChunkedUploadRemoteFileOperation(mFile.getStoragePath(),
+ mFile.getRemotePath(), mFile.getMimetype());
} else {
} else {
- mUploadOperation = new UploadRemoteFileOperation(mFile.getStoragePath(),
mFile.getRemotePath(),
- mFile.getMimetype());
+ mUploadOperation = new UploadRemoteFileOperation(mFile.getStoragePath(),
+ mFile.get
RemotePath(), mFile.get
Mimetype());
}
Iterator <OnDatatransferProgressListener> listener = mDataTransferListeners.iterator();
while (listener.hasNext()) {
mUploadOperation.addDatatransferProgressListener(listener.next());
}
}
Iterator <OnDatatransferProgressListener> listener = mDataTransferListeners.iterator();
while (listener.hasNext()) {
mUploadOperation.addDatatransferProgressListener(listener.next());
}
- result = mUploadOperation.execute(client);
-
+ if (!mCancellationRequested.get()) {
+ result = mUploadOperation.execute(client);
+ }
/// move local temporal file or original file to its corresponding
// location in the ownCloud local folder
if (result.isSuccess()) {
/// move local temporal file or original file to its corresponding
// location in the ownCloud local folder
if (result.isSuccess()) {
@@
-348,6
+357,7
@@
public class UploadFileOperation extends RemoteOperation {
} catch (Exception e) {
// TODO something cleaner with cancellations
if (mCancellationRequested.get()) {
} catch (Exception e) {
// TODO something cleaner with cancellations
if (mCancellationRequested.get()) {
+ mUploadOperation.cancel();
result = new RemoteOperationResult(new OperationCancelledException());
} else {
result = new RemoteOperationResult(e);
result = new RemoteOperationResult(new OperationCancelledException());
} else {
result = new RemoteOperationResult(e);
@@
-358,19
+368,23
@@
public class UploadFileOperation extends RemoteOperation {
temporalFile.delete();
}
if (result.isSuccess()) {
temporalFile.delete();
}
if (result.isSuccess()) {
- Log_OC.i(TAG, "Upload of " + mOriginalStoragePath + " to " + mRemotePath + ": " + result.getLogMessage());
+ Log_OC.i(TAG, "Upload of " + mOriginalStoragePath + " to " + mRemotePath + ": " +
+ result.getLogMessage());
} else {
if (result.getException() != null) {
String complement = "";
if (!nameCheckPassed) {
complement = " (while checking file existence in server)";
} else if (!localCopyPassed) {
} else {
if (result.getException() != null) {
String complement = "";
if (!nameCheckPassed) {
complement = " (while checking file existence in server)";
} else if (!localCopyPassed) {
- complement = " (while copying local file to " + FileStorageUtils.getSavePath(mAccount.name)
+ complement = " (while copying local file to " +
+ FileStorageUtils.getSavePath(mAccount.name)
+ ")";
}
+ ")";
}
- Log_OC.e(TAG, "Upload of " + mOriginalStoragePath + " to " + mRemotePath + ": " + result.getLogMessage() + complement, result.getException());
+ Log_OC.e(TAG, "Upload of " + mOriginalStoragePath + " to " + mRemotePath +
+ ": " + result.getLogMessage() + complement, result.getException());
} else {
} else {
- Log_OC.e(TAG, "Upload of " + mOriginalStoragePath + " to " + mRemotePath + ": " + result.getLogMessage());
+ Log_OC.e(TAG, "Upload of " + mOriginalStoragePath + " to " + mRemotePath +
+ ": " + result.getLogMessage());
}
}
}
}
}
}
@@
-385,7
+399,8
@@
public class UploadFileOperation extends RemoteOperation {
newFile.setFileLength(mFile.getFileLength());
newFile.setMimetype(mFile.getMimetype());
newFile.setModificationTimestamp(mFile.getModificationTimestamp());
newFile.setFileLength(mFile.getFileLength());
newFile.setMimetype(mFile.getMimetype());
newFile.setModificationTimestamp(mFile.getModificationTimestamp());
- newFile.setModificationTimestampAtLastSyncForData(mFile.getModificationTimestampAtLastSyncForData());
+ newFile.setModificationTimestampAtLastSyncForData(
+ mFile.getModificationTimestampAtLastSyncForData());
// newFile.setEtag(mFile.getEtag())
newFile.setKeepInSync(mFile.keepInSync());
newFile.setLastSyncDateForProperties(mFile.getLastSyncDateForProperties());
// newFile.setEtag(mFile.getEtag())
newFile.setKeepInSync(mFile.keepInSync());
newFile.setLastSyncDateForProperties(mFile.getLastSyncDateForProperties());
@@
-437,7
+452,8
@@
public class UploadFileOperation extends RemoteOperation {
}
private boolean existsFile(OwnCloudClient client, String remotePath){
}
private boolean existsFile(OwnCloudClient client, String remotePath){
- ExistenceCheckRemoteOperation existsOperation = new ExistenceCheckRemoteOperation(remotePath, mContext, false);
+ ExistenceCheckRemoteOperation existsOperation =
+ new ExistenceCheckRemoteOperation(remotePath, mContext, false);
RemoteOperationResult result = existsOperation.execute(client);
return result.isSuccess();
}
RemoteOperationResult result = existsOperation.execute(client);
return result.isSuccess();
}
diff --git
a/src/com/owncloud/android/ui/activity/FileActivity.java
b/src/com/owncloud/android/ui/activity/FileActivity.java
index
b36943f
..
4f0e5bc
100644
(file)
--- a/
src/com/owncloud/android/ui/activity/FileActivity.java
+++ b/
src/com/owncloud/android/ui/activity/FileActivity.java
@@
-1,6
+1,6
@@
/* ownCloud Android client application
* Copyright (C) 2011 Bartek Przybylski
/* ownCloud Android client application
* Copyright (C) 2011 Bartek Przybylski
- * Copyright (C) 2012-201
4
ownCloud Inc.
+ * Copyright (C) 2012-201
5
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,
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2,
diff --git
a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java
b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java
index
a573a3c
..
086e10a
100644
(file)
--- a/
src/com/owncloud/android/ui/activity/FileDisplayActivity.java
+++ b/
src/com/owncloud/android/ui/activity/FileDisplayActivity.java
@@
-1,6
+1,6
@@
/* ownCloud Android client application
* Copyright (C) 2011 Bartek Przybylski
/* ownCloud Android client application
* Copyright (C) 2011 Bartek Przybylski
- * Copyright (C) 2012-201
4
ownCloud Inc.
+ * Copyright (C) 2012-201
5
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,
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2,
@@
-96,7
+96,6
@@
import com.owncloud.android.operations.RefreshFolderOperation;
import com.owncloud.android.operations.UnshareLinkOperation;
import com.owncloud.android.services.observer.FileObserverService;
import com.owncloud.android.syncadapter.FileSyncAdapter;
import com.owncloud.android.operations.UnshareLinkOperation;
import com.owncloud.android.services.observer.FileObserverService;
import com.owncloud.android.syncadapter.FileSyncAdapter;
-import com.owncloud.android.ui.adapter.FileListListAdapter;
import com.owncloud.android.ui.dialog.CreateFolderDialogFragment;
import com.owncloud.android.ui.dialog.SslUntrustedCertDialog;
import com.owncloud.android.ui.dialog.SslUntrustedCertDialog.OnSslUntrustedCertListener;
import com.owncloud.android.ui.dialog.CreateFolderDialogFragment;
import com.owncloud.android.ui.dialog.SslUntrustedCertDialog;
import com.owncloud.android.ui.dialog.SslUntrustedCertDialog.OnSslUntrustedCertListener;
diff --git
a/src/com/owncloud/android/ui/activity/Preferences.java
b/src/com/owncloud/android/ui/activity/Preferences.java
index
701520c
..
b03cd96
100644
(file)
--- a/
src/com/owncloud/android/ui/activity/Preferences.java
+++ b/
src/com/owncloud/android/ui/activity/Preferences.java
@@
-1,6
+1,6
@@
/* ownCloud Android client application
* Copyright (C) 2011 Bartek Przybylski
/* ownCloud Android client application
* Copyright (C) 2011 Bartek Przybylski
- * Copyright (C) 2012-201
3
ownCloud Inc.
+ * Copyright (C) 2012-201
5
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,
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2,