/*
* Copyright 2012 The Stanford MobiSocial Laboratory
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package mobisocial.musubi.model.helpers;
import mobisocial.musubi.App;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
* Access a collection of database access managers. All managers are
* lazy-loaded and stored in an instance of this class.
*/
public class DatabaseManager {
private final SQLiteOpenHelper mSqliteOpenHelper;
private IdentitiesManager mIdentitiesManager;
private EncodedMessageManager mEncodedMessageManager;
private AppManager mAppManager;
private ObjectManager mObjectManager;
private FeedManager mFeedManager;
private MyAccountManager mMyAccountManager;
private DeviceManager mDeviceManager;
private ContactDataVersionManager mContactDataVersionManager;
public DatabaseManager(Context context) {
mSqliteOpenHelper = App.getDatabaseSource(context);
}
public DatabaseManager(SQLiteOpenHelper dbHelper) {
mSqliteOpenHelper = dbHelper;
}
public IdentitiesManager getIdentitiesManager() {
if (mIdentitiesManager == null) {
mIdentitiesManager = new IdentitiesManager(mSqliteOpenHelper);
}
return mIdentitiesManager;
}
public EncodedMessageManager getEncodedMessageManager() {
if (mEncodedMessageManager == null) {
mEncodedMessageManager = new EncodedMessageManager(mSqliteOpenHelper);
}
return mEncodedMessageManager;
}
public AppManager getAppManager() {
if (mAppManager == null) {
mAppManager = new AppManager(mSqliteOpenHelper);
}
return mAppManager;
}
public ObjectManager getObjectManager() {
if (mObjectManager == null) {
mObjectManager = new ObjectManager(mSqliteOpenHelper);
}
return mObjectManager;
}
public FeedManager getFeedManager() {
if (mFeedManager == null) {
mFeedManager = new FeedManager(mSqliteOpenHelper);
}
return mFeedManager;
}
public MyAccountManager getMyAccountManager() {
if (mMyAccountManager == null) {
mMyAccountManager = new MyAccountManager(mSqliteOpenHelper);
}
return mMyAccountManager;
}
public DeviceManager getDeviceManager() {
if (mDeviceManager == null) {
mDeviceManager = new DeviceManager(mSqliteOpenHelper);
}
return mDeviceManager;
}
public ContactDataVersionManager getContactDataVersionManager() {
if (mContactDataVersionManager == null) {
mContactDataVersionManager = new ContactDataVersionManager(mSqliteOpenHelper);
}
return mContactDataVersionManager;
}
public SQLiteDatabase getDatabase() {
return mSqliteOpenHelper.getWritableDatabase();
}
public synchronized void close() {
if (mIdentitiesManager != null) {
mIdentitiesManager.close();
mIdentitiesManager = null;
}
if (mEncodedMessageManager != null) {
mEncodedMessageManager.close();
mEncodedMessageManager = null;
}
if (mAppManager != null) {
mAppManager.close();
mAppManager = null;
}
if (mObjectManager != null) {
mObjectManager.close();
mObjectManager = null;
}
if (mFeedManager != null) {
mFeedManager.close();
mFeedManager = null;
}
if (mMyAccountManager != null) {
mMyAccountManager.close();
mMyAccountManager = null;
}
if (mDeviceManager != null) {
mDeviceManager.close();
mDeviceManager = null;
}
if (mContactDataVersionManager != null) {
mContactDataVersionManager.close();
mContactDataVersionManager = null;
}
}
}