X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/6846e7691214ce291db982670f002a22ec214cbe..e280f5e6181e8a991c201ef8b99bccfaa89b3204:/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 fbd9f66d..c672d572 100644 --- a/src/com/owncloud/android/operations/DownloadFileOperation.java +++ b/src/com/owncloud/android/operations/DownloadFileOperation.java @@ -18,14 +18,16 @@ package com.owncloud.android.operations; import java.io.File; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Set; import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.oc_framework.network.webdav.OnDatatransferProgressListener; -import com.owncloud.android.oc_framework.network.webdav.WebdavClient; -import com.owncloud.android.oc_framework.operations.RemoteFile; -import com.owncloud.android.oc_framework.operations.RemoteOperation; -import com.owncloud.android.oc_framework.operations.RemoteOperationResult; -import com.owncloud.android.oc_framework.operations.remote.DownloadRemoteFileOperation; +import com.owncloud.android.lib.common.network.OnDatatransferProgressListener; +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.resources.files.DownloadRemoteFileOperation; import com.owncloud.android.utils.FileStorageUtils; import com.owncloud.android.utils.Log_OC; @@ -44,13 +46,13 @@ public class DownloadFileOperation extends RemoteOperation { private Account mAccount; private OCFile mFile; - private OnDatatransferProgressListener mDatatransferProgressListener; + private Set mDataTransferListeners = new HashSet(); private long mModificationTimestamp = 0; private DownloadRemoteFileOperation mDownloadOperation; - public DownloadFileOperation(Account account, OCFile file, OnDatatransferProgressListener listener) { + public DownloadFileOperation(Account account, OCFile file) { if (account == null) throw new IllegalArgumentException("Illegal null account in DownloadFileOperation creation"); if (file == null) @@ -59,7 +61,6 @@ public class DownloadFileOperation extends RemoteOperation { mAccount = account; mFile = file; - mDatatransferProgressListener = listener; } @@ -117,7 +118,7 @@ public class DownloadFileOperation extends RemoteOperation { } @Override - protected RemoteOperationResult run(WebdavClient client) { + protected RemoteOperationResult run(OwnCloudClient client) { RemoteOperationResult result = null; File newFile = null; boolean moved = true; @@ -126,14 +127,17 @@ public class DownloadFileOperation extends RemoteOperation { File tmpFile = new File(getTmpPath()); String tmpFolder = getTmpFolder(); - RemoteFile remoteFile = FileStorageUtils.fillRemoteFile(mFile); /// perform the download - mDownloadOperation = new DownloadRemoteFileOperation(remoteFile, tmpFolder); - mDownloadOperation.addDatatransferProgressListener(mDatatransferProgressListener); + mDownloadOperation = new DownloadRemoteFileOperation(mFile.getRemotePath(), tmpFolder); + Iterator listener = mDataTransferListeners.iterator(); + while (listener.hasNext()) { + mDownloadOperation.addDatatransferProgressListener(listener.next()); + } result = mDownloadOperation.execute(client); if (result.isSuccess()) { + mModificationTimestamp = mDownloadOperation.getModificationTimestamp(); newFile = new File(getSavePath()); newFile.getParentFile().mkdirs(); moved = tmpFile.renameTo(newFile); @@ -152,4 +156,16 @@ public class DownloadFileOperation extends RemoteOperation { } + public void addDatatransferProgressListener (OnDatatransferProgressListener listener) { + synchronized (mDataTransferListeners) { + mDataTransferListeners.add(listener); + } + } + + public void removeDatatransferProgressListener(OnDatatransferProgressListener listener) { + synchronized (mDataTransferListeners) { + mDataTransferListeners.remove(listener); + } + } + }