package by.istin.android.xcore.provider.impl;
import android.content.Context;
import java.util.HashMap;
import java.util.Map;
import by.istin.android.xcore.db.impl.sqlite.SQLiteSupport;
import by.istin.android.xcore.provider.IDBContentProviderSupport;
/**
* Created with IntelliJ IDEA.
* User: IstiN
* Date: 15.10.13
*/
public class DBContentProviderFactory {
private DBContentProviderFactory() {}
private static class DBContentProviderFactoryHolder {
private static final DBContentProviderFactory INSTANCE = new DBContentProviderFactory();
}
public static DBContentProviderFactory getInstance() {
return DBContentProviderFactoryHolder.INSTANCE;
}
public static IDBContentProviderSupport getDefaultDBContentProvider(Context context, Class<?> ... entities) {
DBContentProviderFactory dbContentProviderFactory = getInstance();
return dbContentProviderFactory.getDbContentProvider(context, DBContentProviderFactory.Type.SQLite, entities);
}
public static enum Type {
SQLite
//in future add more db types
}
private final Object mLock = new Object();
private final Map<Type, IDBContentProviderSupport> mProviders = new HashMap<Type, IDBContentProviderSupport>();
public IDBContentProviderSupport getDbContentProvider(Context context, Type type, Class<?> ... entities) {
if (mProviders.containsKey(type)) {
return mProviders.get(type);
}
synchronized (mLock) {
if (mProviders.containsKey(type)) {
return mProviders.get(type);
}
DBContentProviderSupport dbContentProviderSupport = null;
if (type == Type.SQLite) {
dbContentProviderSupport = new DBContentProviderSupport(context, new SQLiteSupport(), entities);
mProviders.put(type, dbContentProviderSupport);
}
return dbContentProviderSupport;
}
}
}