package com.chooloo.www.callmanager.database; import android.os.Process; import androidx.lifecycle.LiveData; import com.chooloo.www.callmanager.database.entity.CGroup; import com.chooloo.www.callmanager.database.entity.CGroupAndItsContacts; import com.chooloo.www.callmanager.database.entity.Contact; import com.chooloo.www.callmanager.util.Utilities; import java.util.List; public class DataRepository { private static DataRepository sInstance; private final AppDatabase mDatabase; public static DataRepository getInstance(final AppDatabase database) { if (sInstance == null) { synchronized (DataRepository.class) { if (sInstance == null) { sInstance = new DataRepository(database); } } } return sInstance; } private DataRepository(final AppDatabase database) { mDatabase = database; } // - Insert - // public long[] insertCGroups(CGroup... cGroup) { if (Utilities.isInUIThread()) { //TODO start in thread return null; } else { return mDatabase.getCGroupDao().insert(cGroup); } } public void insertContacts(List<Contact> contacts) { if (Utilities.isInUIThread()) { //TODO start in thread } else { mDatabase.getContactDao().insert(contacts); } } // - Update - // public void update(Contact... contacts) { Thread thread = new Thread(() -> { Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); mDatabase.getContactDao().update(contacts); }); thread.start(); } // - Delete - // public void deleteContact(long contactId) { Thread thread = new Thread(() -> { Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); mDatabase.getContactDao().deleteById(contactId); }); thread.start(); } public void deleteCGroup(long listId) { Thread thread = new Thread(() -> { Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); mDatabase.getCGroupDao().deleteById(listId); }); thread.start(); } // - Query - // public LiveData<List<Contact>> getAllContacts() { return mDatabase.getContactDao().getAllContacts(); } public LiveData<List<Contact>> getContactsInList(CGroup list) { return mDatabase.getContactDao().getContactsInList(list.getListId()); } public LiveData<List<Contact>> getContactsInList(long listId) { return mDatabase.getContactDao().getContactsInList(listId); } public LiveData<List<CGroup>> getAllCGroups() { return mDatabase.getCGroupDao().getAllCGroups(); } public LiveData<List<CGroup>> getCGroup(long listId) { return mDatabase.getCGroupDao().getCGroupById(listId); } public LiveData<List<CGroupAndItsContacts>> getAllCGroupsAndTheirContacts() { return mDatabase.getCGroupAndItsContactsDao().getAllCGroupsAndTheirContacts(); } }