package org.sorz.lab.smallcloudemoji.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import org.sorz.lab.smallcloudemoji.R; /** * A singleton class to open database. */ public class DatabaseHelper { private static DatabaseHelper ourInstance; private static int userCounter = 0; private final DaoMaster daoMaster; private final DaoSession daoSession; public static DatabaseHelper getInstance(Context context) { return getInstance(context, false); } public static synchronized DatabaseHelper getInstance(Context context, Boolean iWillCloseIt) { if (iWillCloseIt) userCounter += 1; if (ourInstance == null) ourInstance = new DatabaseHelper(context); return ourInstance; } private DatabaseHelper(Context context) { DaoMaster.OpenHelper helper = new ReleaseOpenHelper(context, "repo.db", null); SQLiteDatabase db = helper.getWritableDatabase(); daoMaster = new DaoMaster(db); daoSession = daoMaster.newSession(); if (daoSession.getRepositoryDao().queryBuilder().count() == 0) { String sourceUrl = context.getString(R.string.pref_source_address_default); Repository repository = new Repository(null, sourceUrl, "Default", false, 100, null); daoSession.getRepositoryDao().insert(repository); } } public DaoSession getDaoSession() { return daoSession; } public void close() { userCounter -= 1; if (userCounter <= 0) { daoMaster.getDatabase().close(); ourInstance = null; } } }