summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorJacobo Aragunde Pérez <jaragunde@igalia.com>2015-01-27 12:44:42 +0000
committerJacobo Aragunde Pérez <jaragunde@igalia.com>2015-06-10 17:10:38 +0000
commitd6f9e415375f53eba7c5e147c7ff30c03a6db731 (patch)
treeb45615cd5ab51948165e6fb93a47a908af8cbf33 /android
parent69773f54bbac08953f0fbce16eecea0816e04338 (diff)
Android: download documents from ownCloud.
Documents are downloaded to the private cache directory of the app, and opened from there. That directory is cleared and created again every time the application starts up. Change-Id: I5c05c8ae750b6ced3b419c67d84063e8ee3d84aa Reviewed-on: https://gerrit.libreoffice.org/16192 Reviewed-by: Jacobo Aragunde Pérez <jaragunde@igalia.com> Tested-by: Jacobo Aragunde Pérez <jaragunde@igalia.com>
Diffstat (limited to 'android')
-rw-r--r--android/source/src/java/org/libreoffice/storage/owncloud/OwnCloudFile.java11
-rw-r--r--android/source/src/java/org/libreoffice/storage/owncloud/OwnCloudProvider.java32
2 files changed, 41 insertions, 2 deletions
diff --git a/android/source/src/java/org/libreoffice/storage/owncloud/OwnCloudFile.java b/android/source/src/java/org/libreoffice/storage/owncloud/OwnCloudFile.java
index 8e6d6cf136ff..a8d1a06e3092 100644
--- a/android/source/src/java/org/libreoffice/storage/owncloud/OwnCloudFile.java
+++ b/android/source/src/java/org/libreoffice/storage/owncloud/OwnCloudFile.java
@@ -10,6 +10,7 @@ import java.util.List;
import org.libreoffice.storage.IFile;
import com.owncloud.android.lib.common.operations.RemoteOperationResult;
+import com.owncloud.android.lib.resources.files.DownloadRemoteFileOperation;
import com.owncloud.android.lib.resources.files.ReadRemoteFolderOperation;
import com.owncloud.android.lib.resources.files.RemoteFile;
@@ -97,8 +98,14 @@ public class OwnCloudFile implements IFile {
@Override
public File getDocument() {
- // TODO Auto-generated method stub
- return null;
+ if (isDirectory()) {
+ return null;
+ }
+ File downFolder = provider.getCacheDir();
+ DownloadRemoteFileOperation operation = new DownloadRemoteFileOperation(
+ file.getRemotePath(), downFolder.getAbsolutePath());
+ operation.execute(provider.getClient());
+ return new File(downFolder.getAbsolutePath() + file.getRemotePath());
}
@Override
diff --git a/android/source/src/java/org/libreoffice/storage/owncloud/OwnCloudProvider.java b/android/source/src/java/org/libreoffice/storage/owncloud/OwnCloudProvider.java
index 7bd78e3550e5..db2b69825c6a 100644
--- a/android/source/src/java/org/libreoffice/storage/owncloud/OwnCloudProvider.java
+++ b/android/source/src/java/org/libreoffice/storage/owncloud/OwnCloudProvider.java
@@ -1,5 +1,6 @@
package org.libreoffice.storage.owncloud;
+import java.io.File;
import java.net.URI;
import org.libreoffice.R;
@@ -23,6 +24,7 @@ import com.owncloud.android.lib.resources.files.RemoteFile;
public class OwnCloudProvider implements IDocumentProvider {
private OwnCloudClient client;
+ private File cacheDir;
// TODO: these must be configurable
final private String serverUrl = "http://10.0.2.2/owncloud"; //emulator host machine
@@ -36,6 +38,13 @@ public class OwnCloudProvider implements IDocumentProvider {
client.setCredentials(OwnCloudCredentialsFactory.newBasicCredentials(
userName, password));
+ // make sure cache directory exists, and clear it
+ // TODO: probably we should do smarter cache management
+ cacheDir = new File(context.getCacheDir(), "ownCloud");
+ if (cacheDir.exists()) {
+ deleteRecursive(cacheDir);
+ }
+ cacheDir.mkdirs();
}
@Override
@@ -73,4 +82,27 @@ public class OwnCloudProvider implements IDocumentProvider {
return client;
}
+ /**
+ * Used by OwnCloudFiles to get the cache directory they should download
+ * files to.
+ *
+ * @return cache directory.
+ */
+ protected File getCacheDir() {
+ return cacheDir;
+ }
+
+ /**
+ * Deletes files and recursively deletes directories.
+ *
+ * @param file
+ * File or directory to be deleted.
+ */
+ private void deleteRecursive(File file) {
+ if (file.isDirectory()) {
+ for (File child : file.listFiles())
+ deleteRecursive(child);
+ }
+ file.delete();
+ }
}