X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/b6f773bf8c15ea489a11f7fb6ab564a312d66551..refs/heads/sdcard-save:/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 f3eace9c..dff8aef1 100644 --- a/src/com/owncloud/android/operations/DownloadFileOperation.java +++ b/src/com/owncloud/android/operations/DownloadFileOperation.java @@ -1,5 +1,9 @@ -/* ownCloud Android client application - * Copyright (C) 2012-2013 ownCloud Inc. +/** + * ownCloud Android client application + * + * @author David A. Velasco + * @author masensio + * Copyright (C) 2015 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, @@ -23,7 +27,6 @@ import java.util.Iterator; import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; -import com.owncloud.android.MainApp; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.lib.common.network.OnDatatransferProgressListener; import com.owncloud.android.lib.common.OwnCloudClient; @@ -35,14 +38,10 @@ import com.owncloud.android.lib.resources.files.DownloadRemoteFileOperation; import com.owncloud.android.utils.FileStorageUtils; import android.accounts.Account; -import android.media.MediaScannerConnection; import android.webkit.MimeTypeMap; /** * Remote mDownloadOperation performing the download of a file to an ownCloud server - * - * @author David A. Velasco - * @author masensio */ public class DownloadFileOperation extends RemoteOperation { @@ -52,6 +51,7 @@ public class DownloadFileOperation extends RemoteOperation { private OCFile mFile; private Set mDataTransferListeners = new HashSet(); private long mModificationTimestamp = 0; + private String mEtag = ""; private final AtomicBoolean mCancellationRequested = new AtomicBoolean(false); private DownloadRemoteFileOperation mDownloadOperation; @@ -59,9 +59,11 @@ public class DownloadFileOperation extends RemoteOperation { public DownloadFileOperation(Account account, OCFile file) { if (account == null) - throw new IllegalArgumentException("Illegal null account in DownloadFileOperation creation"); + throw new IllegalArgumentException("Illegal null account in DownloadFileOperation " + + "creation"); if (file == null) - throw new IllegalArgumentException("Illegal null file in DownloadFileOperation creation"); + throw new IllegalArgumentException("Illegal null file in DownloadFileOperation " + + "creation"); mAccount = account; mFile = file; @@ -78,7 +80,7 @@ public class DownloadFileOperation extends RemoteOperation { } public String getSavePath() { - String path = mFile.getStoragePath(); // re-downloads should be done over the original file + String path = mFile.getStoragePath(); // re-downloads should be done over the original file if (path != null && path.length() > 0) { return path; } @@ -103,9 +105,11 @@ public class DownloadFileOperation extends RemoteOperation { try { mimeType = MimeTypeMap.getSingleton() .getMimeTypeFromExtension( - mFile.getRemotePath().substring(mFile.getRemotePath().lastIndexOf('.') + 1)); + mFile.getRemotePath().substring( + mFile.getRemotePath().lastIndexOf('.') + 1)); } catch (IndexOutOfBoundsException e) { - Log_OC.e(TAG, "Trying to find out MIME type of a file without extension: " + mFile.getRemotePath()); + Log_OC.e(TAG, "Trying to find out MIME type of a file without extension: " + + mFile.getRemotePath()); } } if (mimeType == null) { @@ -119,14 +123,19 @@ public class DownloadFileOperation extends RemoteOperation { } public long getModificationTimestamp() { - return (mModificationTimestamp > 0) ? mModificationTimestamp : mFile.getModificationTimestamp(); + return (mModificationTimestamp > 0) ? mModificationTimestamp : + mFile.getModificationTimestamp(); + } + + public String getEtag() { + return mEtag; } @Override protected RemoteOperationResult run(OwnCloudClient client) { - RemoteOperationResult result = null; - File newFile = null; - boolean moved = true; + RemoteOperationResult result; + File newFile; + boolean moved; /// download will be performed to a temporal file, then moved to the final location File tmpFile = new File(getTmpPath()); @@ -149,20 +158,16 @@ public class DownloadFileOperation extends RemoteOperation { if (result.isSuccess()) { mModificationTimestamp = mDownloadOperation.getModificationTimestamp(); + mEtag = mDownloadOperation.getEtag(); newFile = new File(getSavePath()); newFile.getParentFile().mkdirs(); moved = tmpFile.renameTo(newFile); - - Log_OC.d("mediaScan", "mediaScan : " + newFile.getAbsolutePath()); - MediaScannerConnection.scanFile(MainApp.getAppContext(), - new String[]{newFile.getAbsolutePath()}, null, null); - - if (!moved) - result = new RemoteOperationResult(RemoteOperationResult.ResultCode.LOCAL_STORAGE_NOT_MOVED); + result = new RemoteOperationResult( + RemoteOperationResult.ResultCode.LOCAL_STORAGE_NOT_MOVED); } - Log_OC.i(TAG, "Download of " + mFile.getRemotePath() + " to " + getSavePath() + ": " + result.getLogMessage()); - + Log_OC.i(TAG, "Download of " + mFile.getRemotePath() + " to " + getSavePath() + ": " + + result.getLogMessage()); return result; } @@ -186,5 +191,4 @@ public class DownloadFileOperation extends RemoteOperation { mDataTransferListeners.remove(listener); } } - }