summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
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();
+ }
}