Android: provide an ID to document providers

This ID will be useful to get an instance of a document provider back
from a different activity.

Change-Id: I9419ea23d51f8e9ffd70252bd8e367cf51bde1ad
This commit is contained in:
Jacobo Aragunde Pérez
2015-09-03 18:23:48 +00:00
parent 04e66812ef
commit a3c3a13e84
5 changed files with 44 additions and 9 deletions

View File

@@ -57,9 +57,9 @@ public final class DocumentProviderFactory {
// initialize document providers list // initialize document providers list
instance.providers = new IDocumentProvider[3]; instance.providers = new IDocumentProvider[3];
instance.providers[0] = new LocalDocumentsDirectoryProvider(); instance.providers[0] = new LocalDocumentsDirectoryProvider(0);
instance.providers[1] = new LocalDocumentsProvider(); instance.providers[1] = new LocalDocumentsProvider(1);
instance.providers[2] = new OwnCloudProvider(context); instance.providers[2] = new OwnCloudProvider(2, context);
// initialize document provider names list // initialize document provider names list
instance.providerNames = new String[instance.providers.length]; instance.providerNames = new String[instance.providers.length];
@@ -80,13 +80,14 @@ public final class DocumentProviderFactory {
} }
/** /**
* Retrieve the provider associated to a certain position. * Retrieve the provider associated to a certain id.
* *
* @param position * @param id
* @return document provider in that position. * @return document provider with that id.
*/ */
public IDocumentProvider getProvider(int position) { public IDocumentProvider getProvider(int id) {
return providers[position]; // as for now, id == position in providers array
return providers[id];
} }
/** /**

View File

@@ -43,4 +43,15 @@ public interface IDocumentProvider {
* @return string resource pointing to the provider name. * @return string resource pointing to the provider name.
*/ */
int getNameResource(); int getNameResource();
/**
* Provides the unique ID for a document provider instance in a program.
*
* This ID should be set when the instance is built. It could be used to
* tell two instances of the same document provider apart, e. g. two
* instances of OwnCloudProvider pointing to different servers.
*
* @return Unique ID for a document provider instance.
*/
int getId();
} }

View File

@@ -25,6 +25,10 @@ import android.os.Environment;
*/ */
public class LocalDocumentsDirectoryProvider extends LocalDocumentsProvider { public class LocalDocumentsDirectoryProvider extends LocalDocumentsProvider {
public LocalDocumentsDirectoryProvider(int id) {
super(id);
}
@Override @Override
public IFile getRootDirectory() { public IFile getRootDirectory() {
File documentsDirectory = new File( File documentsDirectory = new File(

View File

@@ -23,6 +23,12 @@ import android.os.Environment;
*/ */
public class LocalDocumentsProvider implements IDocumentProvider { public class LocalDocumentsProvider implements IDocumentProvider {
private int id;
public LocalDocumentsProvider(int id) {
this.id = id;
}
@Override @Override
public IFile getRootDirectory() { public IFile getRootDirectory() {
return new LocalFile(Environment.getExternalStorageDirectory()); return new LocalFile(Environment.getExternalStorageDirectory());
@@ -37,4 +43,9 @@ public class LocalDocumentsProvider implements IDocumentProvider {
public int getNameResource() { public int getNameResource() {
return R.string.local_file_system; return R.string.local_file_system;
} }
@Override
public int getId() {
return id;
}
} }

View File

@@ -29,6 +29,8 @@ import com.owncloud.android.lib.resources.files.RemoteFile;
public class OwnCloudProvider implements IDocumentProvider, public class OwnCloudProvider implements IDocumentProvider,
OnSharedPreferenceChangeListener { OnSharedPreferenceChangeListener {
private int id;
private Context context; private Context context;
private OwnCloudClient client; private OwnCloudClient client;
private File cacheDir; private File cacheDir;
@@ -37,7 +39,8 @@ public class OwnCloudProvider implements IDocumentProvider,
private String userName; private String userName;
private String password; private String password;
public OwnCloudProvider(Context context) { public OwnCloudProvider(int id, Context context) {
this.id = id;
this.context = context; this.context = context;
// read preferences // read preferences
@@ -169,4 +172,9 @@ public class OwnCloudProvider implements IDocumentProvider,
if (changed) if (changed)
setupClient(); setupClient();
} }
@Override
public int getId() {
return id;
}
} }