X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/52bd01bcedf1b8f13c49b67ee40a848bae1a9d40..e1245bbda7894e1a3028d2b54a6918e4bdd46ae2:/src/com/owncloud/android/operations/DownloadFileOperation.java diff --git a/src/com/owncloud/android/operations/DownloadFileOperation.java b/src/com/owncloud/android/operations/DownloadFileOperation.java index 5745b973..eb45d4ba 100644 --- a/src/com/owncloud/android/operations/DownloadFileOperation.java +++ b/src/com/owncloud/android/operations/DownloadFileOperation.java @@ -32,15 +32,16 @@ import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.http.HttpStatus; -import com.owncloud.android.Log_OC; import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.operations.RemoteOperation; -import com.owncloud.android.operations.RemoteOperationResult; +import com.owncloud.android.oc_framework.network.webdav.OnDatatransferProgressListener; +import com.owncloud.android.oc_framework.network.webdav.WebdavClient; +import com.owncloud.android.oc_framework.network.webdav.WebdavUtils; +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.utils.FileStorageUtils; +import com.owncloud.android.utils.Log_OC; -import eu.alefzero.webdav.OnDatatransferProgressListener; -import eu.alefzero.webdav.WebdavClient; -import eu.alefzero.webdav.WebdavUtils; import android.accounts.Account; import android.webkit.MimeTypeMap; @@ -58,6 +59,7 @@ public class DownloadFileOperation extends RemoteOperation { private Set mDataTransferListeners = new HashSet(); private final AtomicBoolean mCancellationRequested = new AtomicBoolean(false); private long mModificationTimestamp = 0; + private GetMethod mGet; public DownloadFileOperation(Account account, OCFile file) { @@ -154,7 +156,7 @@ public class DownloadFileOperation extends RemoteOperation { if (!moved) result = new RemoteOperationResult(RemoteOperationResult.ResultCode.LOCAL_STORAGE_NOT_MOVED); else - result = new RemoteOperationResult(isSuccess(status), status); + result = new RemoteOperationResult(isSuccess(status), status, (mGet != null ? mGet.getResponseHeaders() : null)); Log_OC.i(TAG, "Download of " + mFile.getRemotePath() + " to " + getSavePath() + ": " + result.getLogMessage()); } catch (Exception e) { @@ -174,15 +176,15 @@ public class DownloadFileOperation extends RemoteOperation { protected int downloadFile(WebdavClient client, File targetFile) throws HttpException, IOException, OperationCancelledException { int status = -1; boolean savedFile = false; - GetMethod get = new GetMethod(client.getBaseUri() + WebdavUtils.encodePath(mFile.getRemotePath())); + mGet = new GetMethod(client.getBaseUri() + WebdavUtils.encodePath(mFile.getRemotePath())); Iterator it = null; FileOutputStream fos = null; try { - status = client.executeMethod(get); + status = client.executeMethod(mGet); if (isSuccess(status)) { targetFile.createNewFile(); - BufferedInputStream bis = new BufferedInputStream(get.getResponseBodyAsStream()); + BufferedInputStream bis = new BufferedInputStream(mGet.getResponseBodyAsStream()); fos = new FileOutputStream(targetFile); long transferred = 0; @@ -191,7 +193,7 @@ public class DownloadFileOperation extends RemoteOperation { while ((readResult = bis.read(bytes)) != -1) { synchronized(mCancellationRequested) { if (mCancellationRequested.get()) { - get.abort(); + mGet.abort(); throw new OperationCancelledException(); } } @@ -205,14 +207,14 @@ public class DownloadFileOperation extends RemoteOperation { } } savedFile = true; - Header modificationTime = get.getResponseHeader("Last-Modified"); + Header modificationTime = mGet.getResponseHeader("Last-Modified"); if (modificationTime != null) { Date d = WebdavUtils.parseResponseDate((String) modificationTime.getValue()); mModificationTimestamp = (d != null) ? d.getTime() : 0; } } else { - client.exhaustResponse(get.getResponseBodyAsStream()); + client.exhaustResponse(mGet.getResponseBodyAsStream()); } } finally { @@ -220,7 +222,7 @@ public class DownloadFileOperation extends RemoteOperation { if (!savedFile && targetFile.exists()) { targetFile.delete(); } - get.releaseConnection(); // let the connection available for other methods + mGet.releaseConnection(); // let the connection available for other methods } return status; }