diff options
Diffstat (limited to 'android')
-rw-r--r-- | android/source/src/java/org/libreoffice/storage/owncloud/OwnCloudFile.java | 11 | ||||
-rw-r--r-- | android/source/src/java/org/libreoffice/storage/owncloud/OwnCloudProvider.java | 32 |
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(); + } } |