package com.photoviewer.data.db; import android.content.Context; import android.util.Log; import com.j256.ormlite.dao.Dao; import com.j256.ormlite.dao.DaoManager; import com.j256.ormlite.support.ConnectionSource; import com.photoviewer.data.entity.PhotoEntity; import java.sql.SQLException; import javax.inject.Inject; public class DatabaseManager { public static final String LOG_TAG_DB = "Photos:Database"; public static final String DEFAULT_DATABASE_NAME = "photo_viewer"; private final ConnectionSource mConnectionSource; //DAOs private Dao<PhotoEntity, Integer> mPhotosDao; @Inject public DatabaseManager(Context context) { this(context, DEFAULT_DATABASE_NAME); } public DatabaseManager(Context context, String databaseName) { DatabaseHelper databaseHelper = new DatabaseHelper(context, databaseName); mConnectionSource = databaseHelper.getConnectionSource(); // force database creation/upgrade eagerly } public Dao<PhotoEntity, Integer> getPhotosDao() { if (mPhotosDao == null) { createPhotoEntityDao(); } return mPhotosDao; } private void createPhotoEntityDao() { try { mPhotosDao = DaoManager.createDao(mConnectionSource, PhotoEntity.class); mPhotosDao.setObjectCache(true); } catch (SQLException e) { Log.wtf(LOG_TAG_DB, "Creation of Dao<" + PhotoEntity.class + "> failed", e); } } }