Advertisement
Guest User

Untitled

a guest
Mar 30th, 2014
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.33 KB | None | 0 0
  1. public abstract class AbstractDatabaseManager extends OrmLiteSqliteOpenHelper {
  2.    
  3.     private static final Map<Class<? extends AbstractDatabaseManager>, AtomicInteger> sUsageCounters = new HashMap<Class<? extends AbstractDatabaseManager>, AtomicInteger>();
  4.     private static final Map<Class<? extends AbstractDatabaseManager>, AbstractDatabaseManager> sInstances = new HashMap<Class<? extends AbstractDatabaseManager>, AbstractDatabaseManager>();
  5.    
  6.     protected Context mContext;
  7.    
  8.     public static <T extends AbstractDatabaseManager> T getHelper(Class<T> clazz, Context context) {
  9.         synchronized (clazz) {
  10.             if (!sInstances.containsKey(clazz)) {
  11.                 try {
  12.                     Constructor<T> constructor = clazz.getConstructor(Context.class);
  13.                     T instance = constructor.newInstance(context);
  14.                     sInstances.put(clazz, instance);
  15.                 } catch (ReflectiveOperationException e) {
  16.                     return null;
  17.                 } catch (IllegalArgumentException e) {
  18.                     return null;
  19.                 }
  20.             }
  21.             if (!sUsageCounters.containsKey(clazz)) {
  22.                 sUsageCounters.put(clazz, new AtomicInteger(0));
  23.             }
  24.             sUsageCounters.get(clazz).incrementAndGet();
  25.             return cast(sInstances.get(clazz));
  26.         }
  27.     }
  28.    
  29.     @Override
  30.     public void close() {
  31.         if (sUsageCounters.get(getClass()).decrementAndGet() == 0) {
  32.             super.close();
  33.             sInstances.remove(getClass());
  34.             mContext = null;
  35.         }
  36.     }
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement