Mercury-IM/persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/AppDatabase.java

113 lines
3.5 KiB
Java

package org.mercury_im.messenger.persistence.room;
import android.content.Context;
import androidx.room.Database;
import androidx.room.Room;
import androidx.room.RoomDatabase;
import org.mercury_im.messenger.persistence.room.dao.AccountDao;
import org.mercury_im.messenger.persistence.room.dao.AvatarDao;
import org.mercury_im.messenger.persistence.room.dao.ChatDao;
import org.mercury_im.messenger.persistence.room.dao.ContactDao;
import org.mercury_im.messenger.persistence.room.dao.EntityCapsDao;
import org.mercury_im.messenger.persistence.room.dao.EntityDao;
import org.mercury_im.messenger.persistence.room.dao.MessageDao;
import org.mercury_im.messenger.persistence.room.dao.RosterInformationDao;
import org.mercury_im.messenger.persistence.room.model.RoomAccountModel;
import org.mercury_im.messenger.persistence.room.model.RoomAvatarModel;
import org.mercury_im.messenger.persistence.room.model.RoomChatModel;
import org.mercury_im.messenger.persistence.room.model.RoomContactModel;
import org.mercury_im.messenger.persistence.room.model.RoomEntityCapsModel;
import org.mercury_im.messenger.persistence.room.model.RoomEntityModel;
import org.mercury_im.messenger.persistence.room.model.RoomMessageModel;
import org.mercury_im.messenger.persistence.room.model.RoomRosterInformationModel;
import java.util.logging.Level;
import java.util.logging.Logger;
@Database(version = 1,
entities = {
RoomAccountModel.class,
RoomEntityModel.class,
RoomContactModel.class,
RoomRosterInformationModel.class,
RoomChatModel.class,
RoomMessageModel.class,
RoomAvatarModel.class,
RoomEntityCapsModel.class
})
public abstract class AppDatabase extends RoomDatabase {
private static final String DB_NAME = "mercury_db";
private static AppDatabase INSTANCE;
public static final String TAG = "PERSISTENCE_ROOM";
public static synchronized AppDatabase getDatabase(final Context context) {
if (INSTANCE == null) {
Logger.getLogger("DATABASE").log(Level.INFO, context.getApplicationContext().getDatabasePath(DB_NAME).getAbsolutePath());
INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
AppDatabase.class, DB_NAME)
.build();
}
return INSTANCE;
}
/**
* Return an instance of {@link AccountDao}.
*
* @return accountDao
*/
public abstract AccountDao accountDao();
/**
* Return an instance of {@link EntityDao}.
*
* @return entityDao
*/
public abstract EntityDao entityDao();
/**
* Return an instance of {@link ContactDao}.
*
* @return contactDao
*/
public abstract ContactDao contactDao();
/**
* Return an instance of {@link RosterInformationDao}.
*
* @return rosterInformationDao
*/
public abstract RosterInformationDao rosterInformationDao();
/**
* Return an instance of {@link ChatDao}.
*
* @return chatDao
*/
public abstract ChatDao chatDao();
/**
* Return an instance of {@link MessageDao}.
*
* @return messageDao
*/
public abstract MessageDao messageDao();
/**
* Return an instance of {@link AvatarDao}.
*
* @return avatarDao
*/
public abstract AvatarDao avatarDao();
/**
* Return an instance of {@link EntityCapsDao}.
*
* @return entityCapsDao
*/
public abstract EntityCapsDao entityCapsDao();
}