projects
/
pub
/
Android
/
ownCloud.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Adding cancellation to uploads (WIP)
[pub/Android/ownCloud.git]
/
src
/
com
/
owncloud
/
android
/
operations
/
ChunkedUploadFileOperation.java
diff --git
a/src/com/owncloud/android/operations/ChunkedUploadFileOperation.java
b/src/com/owncloud/android/operations/ChunkedUploadFileOperation.java
index
97d3eba
..
3e7a29d
100644
(file)
--- a/
src/com/owncloud/android/operations/ChunkedUploadFileOperation.java
+++ b/
src/com/owncloud/android/operations/ChunkedUploadFileOperation.java
@@
-28,10
+28,10
@@
import java.util.Random;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.PutMethod;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.PutMethod;
+import android.accounts.Account;
import android.util.Log;
import eu.alefzero.webdav.ChunkFromFileChannelRequestEntity;
import android.util.Log;
import eu.alefzero.webdav.ChunkFromFileChannelRequestEntity;
-import eu.alefzero.webdav.OnDatatransferProgressListener;
import eu.alefzero.webdav.WebdavClient;
import eu.alefzero.webdav.WebdavUtils;
import eu.alefzero.webdav.WebdavClient;
import eu.alefzero.webdav.WebdavUtils;
@@
-41,14
+41,14
@@
public class ChunkedUploadFileOperation extends UploadFileOperation {
private static final String OC_CHUNKED_HEADER = "OC-Chunked";
private static final String TAG = ChunkedUploadFileOperation.class.getSimpleName();
private static final String OC_CHUNKED_HEADER = "OC-Chunked";
private static final String TAG = ChunkedUploadFileOperation.class.getSimpleName();
- public ChunkedUploadFileOperation( String localPath,
+ public ChunkedUploadFileOperation( Account account,
+ String localPath,
String remotePath,
String mimeType,
boolean isInstant,
String remotePath,
String mimeType,
boolean isInstant,
- boolean forceOverwrite,
- OnDatatransferProgressListener dataTransferProgressListener) {
+ boolean forceOverwrite) {
- super(
localPath, remotePath, mimeType, isInstant, forceOverwrite, dataTransferProgressListener
);
+ super(
account, localPath, remotePath, mimeType, isInstant, forceOverwrite
);
}
@Override
}
@Override
@@
-58,12
+58,14
@@
public class ChunkedUploadFileOperation extends UploadFileOperation {
PutMethod put = null;
FileChannel channel = null;
FileLock lock = null;
PutMethod put = null;
FileChannel channel = null;
FileLock lock = null;
+ RandomAccessFile raf = null;
try {
File file = new File(getLocalPath());
try {
File file = new File(getLocalPath());
- channel = new RandomAccessFile(file, "rw").getChannel();
+ raf = new RandomAccessFile(file, "rw");
+ channel = raf.getChannel();
lock = channel.tryLock();
ChunkFromFileChannelRequestEntity entity = new ChunkFromFileChannelRequestEntity(channel, getMimeType(), CHUNK_SIZE);
lock = channel.tryLock();
ChunkFromFileChannelRequestEntity entity = new ChunkFromFileChannelRequestEntity(channel, getMimeType(), CHUNK_SIZE);
- entity.
setOnDatatransferProgressListener(getDataTransferListener
());
+ entity.
addOnDatatransferProgressListeners(getDataTransferListeners
());
long offset = 0;
String uriPrefix = client.getBaseUri() + WebdavUtils.encodePath(getRemotePath()) + "-chunking-" + Math.abs((new Random()).nextInt(9000)+1000) + "-" ;
long chunkCount = (long) Math.ceil((double)file.length() / CHUNK_SIZE);
long offset = 0;
String uriPrefix = client.getBaseUri() + WebdavUtils.encodePath(getRemotePath()) + "-chunking-" + Math.abs((new Random()).nextInt(9000)+1000) + "-" ;
long chunkCount = (long) Math.ceil((double)file.length() / CHUNK_SIZE);
@@
-84,6
+86,8
@@
public class ChunkedUploadFileOperation extends UploadFileOperation {
lock.release();
if (channel != null)
channel.close();
lock.release();
if (channel != null)
channel.close();
+ if (raf != null)
+ raf.close();
if (put != null)
put.releaseConnection(); // let the connection available for other methods
}
if (put != null)
put.releaseConnection(); // let the connection available for other methods
}