Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public abstract class AbstractDatabaseManager extends OrmLiteSqliteOpenHelper {
- private static final Map<Class<? extends AbstractDatabaseManager>, AtomicInteger> sUsageCounters = new HashMap<Class<? extends AbstractDatabaseManager>, AtomicInteger>();
- private static final Map<Class<? extends AbstractDatabaseManager>, AbstractDatabaseManager> sInstances = new HashMap<Class<? extends AbstractDatabaseManager>, AbstractDatabaseManager>();
- protected Context mContext;
- public static <T extends AbstractDatabaseManager> T getHelper(Class<T> clazz, Context context) {
- synchronized (clazz) {
- if (!sInstances.containsKey(clazz)) {
- try {
- Constructor<T> constructor = clazz.getConstructor(Context.class);
- T instance = constructor.newInstance(context);
- sInstances.put(clazz, instance);
- } catch (ReflectiveOperationException e) {
- return null;
- } catch (IllegalArgumentException e) {
- return null;
- }
- }
- if (!sUsageCounters.containsKey(clazz)) {
- sUsageCounters.put(clazz, new AtomicInteger(0));
- }
- sUsageCounters.get(clazz).incrementAndGet();
- return cast(sInstances.get(clazz));
- }
- }
- @Override
- public void close() {
- if (sUsageCounters.get(getClass()).decrementAndGet() == 0) {
- super.close();
- sInstances.remove(getClass());
- mContext = null;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement