Kaydet (Commit) 6d102eb2 authored tarafından Jacobo Aragunde Pérez's avatar Jacobo Aragunde Pérez Kaydeden (comit) Tomaž Vajngerl

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/16192Reviewed-by: 's avatarJacobo Aragunde Pérez <jaragunde@igalia.com>
Tested-by: 's avatarJacobo Aragunde Pérez <jaragunde@igalia.com>
(cherry picked from commit d6f9e415)
üst a1366fa2
...@@ -10,6 +10,7 @@ import java.util.List; ...@@ -10,6 +10,7 @@ import java.util.List;
import org.libreoffice.storage.IFile; import org.libreoffice.storage.IFile;
import com.owncloud.android.lib.common.operations.RemoteOperationResult; 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.ReadRemoteFolderOperation;
import com.owncloud.android.lib.resources.files.RemoteFile; import com.owncloud.android.lib.resources.files.RemoteFile;
...@@ -97,8 +98,14 @@ public class OwnCloudFile implements IFile { ...@@ -97,8 +98,14 @@ public class OwnCloudFile implements IFile {
@Override @Override
public File getDocument() { public File getDocument() {
// TODO Auto-generated method stub if (isDirectory()) {
return null; 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 @Override
......
package org.libreoffice.storage.owncloud; package org.libreoffice.storage.owncloud;
import java.io.File;
import java.net.URI; import java.net.URI;
import org.libreoffice.R; import org.libreoffice.R;
...@@ -23,6 +24,7 @@ import com.owncloud.android.lib.resources.files.RemoteFile; ...@@ -23,6 +24,7 @@ import com.owncloud.android.lib.resources.files.RemoteFile;
public class OwnCloudProvider implements IDocumentProvider { public class OwnCloudProvider implements IDocumentProvider {
private OwnCloudClient client; private OwnCloudClient client;
private File cacheDir;
// TODO: these must be configurable // TODO: these must be configurable
final private String serverUrl = "http://10.0.2.2/owncloud"; //emulator host machine final private String serverUrl = "http://10.0.2.2/owncloud"; //emulator host machine
...@@ -36,6 +38,13 @@ public class OwnCloudProvider implements IDocumentProvider { ...@@ -36,6 +38,13 @@ public class OwnCloudProvider implements IDocumentProvider {
client.setCredentials(OwnCloudCredentialsFactory.newBasicCredentials( client.setCredentials(OwnCloudCredentialsFactory.newBasicCredentials(
userName, password)); 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 @Override
...@@ -73,4 +82,27 @@ public class OwnCloudProvider implements IDocumentProvider { ...@@ -73,4 +82,27 @@ public class OwnCloudProvider implements IDocumentProvider {
return client; 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();
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment