summaryrefslogtreecommitdiff
path: root/android/source/src/java/org/libreoffice/storage/owncloud/OwnCloudProvider.java
diff options
context:
space:
mode:
Diffstat (limited to 'android/source/src/java/org/libreoffice/storage/owncloud/OwnCloudProvider.java')
-rw-r--r--android/source/src/java/org/libreoffice/storage/owncloud/OwnCloudProvider.java76
1 files changed, 76 insertions, 0 deletions
diff --git a/android/source/src/java/org/libreoffice/storage/owncloud/OwnCloudProvider.java b/android/source/src/java/org/libreoffice/storage/owncloud/OwnCloudProvider.java
new file mode 100644
index 000000000000..7bd78e3550e5
--- /dev/null
+++ b/android/source/src/java/org/libreoffice/storage/owncloud/OwnCloudProvider.java
@@ -0,0 +1,76 @@
+package org.libreoffice.storage.owncloud;
+
+import java.net.URI;
+
+import org.libreoffice.R;
+import org.libreoffice.storage.IDocumentProvider;
+import org.libreoffice.storage.IFile;
+
+import android.content.Context;
+import android.net.Uri;
+
+import com.owncloud.android.lib.common.OwnCloudClient;
+import com.owncloud.android.lib.common.OwnCloudClientFactory;
+import com.owncloud.android.lib.common.OwnCloudCredentialsFactory;
+import com.owncloud.android.lib.common.operations.RemoteOperationResult;
+import com.owncloud.android.lib.resources.files.FileUtils;
+import com.owncloud.android.lib.resources.files.ReadRemoteFileOperation;
+import com.owncloud.android.lib.resources.files.RemoteFile;
+
+/**
+ * Implementation of IDocumentProvider for ownCloud servers.
+ */
+public class OwnCloudProvider implements IDocumentProvider {
+
+ private OwnCloudClient client;
+
+ // TODO: these must be configurable
+ final private String serverUrl = "http://10.0.2.2/owncloud"; //emulator host machine
+ final private String userName = "admin";
+ final private String password = "admin";
+
+ public OwnCloudProvider(Context context) {
+ Uri serverUri = Uri.parse(serverUrl);
+ client = OwnCloudClientFactory.createOwnCloudClient(serverUri,
+ context, true);
+ client.setCredentials(OwnCloudCredentialsFactory.newBasicCredentials(
+ userName, password));
+
+ }
+
+ @Override
+ public IFile getRootDirectory() {
+ return createFromUri(URI.create(FileUtils.PATH_SEPARATOR));
+ }
+
+ @Override
+ public IFile createFromUri(URI uri) {
+ ReadRemoteFileOperation refreshOperation = new ReadRemoteFileOperation(
+ uri.getPath());
+ RemoteOperationResult result = refreshOperation.execute(client);
+ if (!result.isSuccess()) {
+ throw new RuntimeException(result.getLogMessage(),
+ result.getException());
+ }
+ if (result.getData().size() > 0) {
+ return new OwnCloudFile(this, (RemoteFile) result.getData().get(0));
+ }
+ return null;
+ }
+
+ @Override
+ public int getNameResource() {
+ return R.string.owncloud;
+ }
+
+ /**
+ * Used by OwnCloudFiles to get a configured client to run their own
+ * operations.
+ *
+ * @return configured OwnCloudClient.
+ */
+ protected OwnCloudClient getClient() {
+ return client;
+ }
+
+}