113 lines
3.5 KiB
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();
|
|
}
|