X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/435b31ba4f3597cc7a43270cd4a54fb0180956c1..fbd720e8874d5adcfd0dcc5aa8c602ecb54ef83c:/src/eu/alefzero/webdav/FileRequestEntity.java diff --git a/src/eu/alefzero/webdav/FileRequestEntity.java b/src/eu/alefzero/webdav/FileRequestEntity.java index 3fc0ab03..2a3ba025 100644 --- a/src/eu/alefzero/webdav/FileRequestEntity.java +++ b/src/eu/alefzero/webdav/FileRequestEntity.java @@ -8,6 +8,11 @@ import java.io.OutputStream; import org.apache.commons.httpclient.methods.RequestEntity; +import eu.alefzero.webdav.OnDatatransferProgressListener; + +import android.util.Log; + + /** * A RequestEntity that represents a File. * @@ -16,6 +21,7 @@ public class FileRequestEntity implements RequestEntity { final File file; final String contentType; + OnDatatransferProgressListener listener; public FileRequestEntity(final File file, final String contentType) { super(); @@ -25,7 +31,7 @@ public class FileRequestEntity implements RequestEntity { this.file = file; this.contentType = contentType; } - + public long getContentLength() { return this.file.length(); } @@ -37,6 +43,10 @@ public class FileRequestEntity implements RequestEntity { public boolean isRepeatable() { return true; } + + public void setOnDatatransferProgressListener(OnDatatransferProgressListener listener) { + this.listener = listener; + } public void writeRequest(final OutputStream out) throws IOException { byte[] tmp = new byte[4096]; @@ -45,7 +55,13 @@ public class FileRequestEntity implements RequestEntity { try { while ((i = instream.read(tmp)) >= 0) { out.write(tmp, 0, i); + if (listener != null) + listener.transferProgress(i); } + } catch (IOException io) { + Log.e("FileRequestException", io.getMessage()); + throw new RuntimeException("Ugly solution to workaround the default policy of retries when the server falls while uploading ; temporal fix; really", io); + } finally { instream.close(); }