diff --git a/app/src/androidTest/java/org/tasks/injection/TestModule.java b/app/src/androidTest/java/org/tasks/injection/TestModule.java index 5213ef1bb..688109caf 100644 --- a/app/src/androidTest/java/org/tasks/injection/TestModule.java +++ b/app/src/androidTest/java/org/tasks/injection/TestModule.java @@ -4,7 +4,9 @@ import android.arch.persistence.room.Room; import android.content.Context; import com.todoroo.astrid.dao.Database; +import com.todoroo.astrid.dao.TaskDao; +import org.tasks.LocalBroadcastManager; import org.tasks.data.GoogleTaskListDao; import org.tasks.data.TagDataDao; import org.tasks.data.TaskListMetadataDao; @@ -17,6 +19,7 @@ import org.tasks.data.TagDao; import org.tasks.notifications.NotificationDao; import org.tasks.preferences.PermissionChecker; import org.tasks.preferences.PermissivePermissionChecker; +import org.tasks.preferences.Preferences; import dagger.Module; import dagger.Provides; @@ -82,6 +85,15 @@ public class TestModule { return database.getLocationDao(); } + @Provides + public TaskDao getTaskDao(Database database, Preferences preferences, LocalBroadcastManager localBroadcastManager, + AlarmDao alarmDao, TagDao tagDao, LocationDao locationDao, GoogleTaskDao googleTaskDao) { + TaskDao taskDao = database.getTaskDao(); + taskDao.initialize(context, preferences, localBroadcastManager, alarmDao, tagDao, + locationDao, googleTaskDao); + return taskDao; + } + @ApplicationScope @Provides @ForApplication diff --git a/app/src/main/java/com/todoroo/astrid/dao/Database.java b/app/src/main/java/com/todoroo/astrid/dao/Database.java index 8b5b04a76..38030975e 100644 --- a/app/src/main/java/com/todoroo/astrid/dao/Database.java +++ b/app/src/main/java/com/todoroo/astrid/dao/Database.java @@ -76,6 +76,7 @@ public abstract class Database extends RoomDatabase { public abstract GoogleTaskDao getGoogleTaskDao(); public abstract FilterDao getFilterDao(); public abstract GoogleTaskListDao getGoogleTaskListDao(); + public abstract TaskDao getTaskDao(); public static final String NAME = "database"; diff --git a/app/src/main/java/com/todoroo/astrid/dao/TaskDao.java b/app/src/main/java/com/todoroo/astrid/dao/TaskDao.java index 6abc6e6e1..6bccb7282 100644 --- a/app/src/main/java/com/todoroo/astrid/dao/TaskDao.java +++ b/app/src/main/java/com/todoroo/astrid/dao/TaskDao.java @@ -5,6 +5,7 @@ */ package com.todoroo.astrid.dao; +import android.arch.persistence.room.Dao; import android.content.ContentValues; import android.content.Context; import android.database.sqlite.SQLiteConstraintException; @@ -29,16 +30,12 @@ import org.tasks.data.AlarmDao; import org.tasks.data.GoogleTaskDao; import org.tasks.data.LocationDao; import org.tasks.data.TagDao; -import org.tasks.injection.ApplicationScope; -import org.tasks.injection.ForApplication; import org.tasks.jobs.AfterSaveIntentService; import org.tasks.preferences.Preferences; import org.tasks.receivers.PushReceiver; import java.util.List; -import javax.inject.Inject; - import timber.log.Timber; /** @@ -47,33 +44,34 @@ import timber.log.Timber; * @author Tim Su * */ -@ApplicationScope -public class TaskDao { +@Dao +public abstract class TaskDao { public static final String TRANS_SUPPRESS_REFRESH = "suppress-refresh"; private final RemoteModelDao dao; - private final LocalBroadcastManager localBroadcastManager; - - private final Preferences preferences; - private final AlarmDao alarmDao; - private final TagDao tagDao; - private final LocationDao locationDao; - private final GoogleTaskDao googleTaskDao; - private final Context context; - - @Inject - public TaskDao(@ForApplication Context context, Database database, - Preferences preferences, LocalBroadcastManager localBroadcastManager, - AlarmDao alarmDao, TagDao tagDao, LocationDao locationDao, GoogleTaskDao googleTaskDao) { + + private LocalBroadcastManager localBroadcastManager; + private Preferences preferences; + private AlarmDao alarmDao; + private TagDao tagDao; + private LocationDao locationDao; + private GoogleTaskDao googleTaskDao; + private Context context; + + public TaskDao(Database database) { + dao = new RemoteModelDao(database); + } + + public void initialize(Context context, Preferences preferences, LocalBroadcastManager localBroadcastManager, + AlarmDao alarmDao, TagDao tagDao, LocationDao locationDao, GoogleTaskDao googleTaskDao) { this.context = context; this.preferences = preferences; + this.localBroadcastManager = localBroadcastManager; this.alarmDao = alarmDao; this.tagDao = tagDao; this.locationDao = locationDao; this.googleTaskDao = googleTaskDao; - this.localBroadcastManager = localBroadcastManager; - dao = new RemoteModelDao(database); } public TodorooCursor query(Query query) { diff --git a/app/src/main/java/org/tasks/injection/ApplicationModule.java b/app/src/main/java/org/tasks/injection/ApplicationModule.java index 633e5c778..76acea58a 100644 --- a/app/src/main/java/org/tasks/injection/ApplicationModule.java +++ b/app/src/main/java/org/tasks/injection/ApplicationModule.java @@ -5,12 +5,15 @@ import android.content.Context; import com.todoroo.astrid.dao.Database; +import org.tasks.LocalBroadcastManager; import org.tasks.data.FilterDao; import org.tasks.data.GoogleTaskListDao; import org.tasks.data.TagDataDao; import org.tasks.data.TaskAttachmentDao; import org.tasks.data.TaskListMetadataDao; import org.tasks.data.UserActivityDao; + +import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.provider.Astrid2TaskProvider; import org.tasks.ErrorReportingSingleThreadExecutor; @@ -22,10 +25,12 @@ import org.tasks.data.TagDao; import org.tasks.db.Migrations; import org.tasks.locale.Locale; import org.tasks.notifications.NotificationDao; +import org.tasks.preferences.Preferences; import java.util.concurrent.Executor; import javax.inject.Named; +import javax.inject.Singleton; import dagger.Module; import dagger.Provides; @@ -68,57 +73,78 @@ public class ApplicationModule { } @Provides + @ApplicationScope public NotificationDao getNotificationDao(Database database) { return database.notificationDao(); } @Provides + @ApplicationScope public TagDataDao getTagDataDao(Database database) { return database.getTagDataDao(); } @Provides + @ApplicationScope public UserActivityDao getUserActivityDao(Database database) { return database.getUserActivityDao(); } @Provides + @ApplicationScope public TaskAttachmentDao getTaskAttachmentDao(Database database) { return database.getTaskAttachmentDao(); } @Provides + @ApplicationScope public TaskListMetadataDao getTaskListMetadataDao(Database database) { return database.getTaskListMetadataDao(); } @Provides + @ApplicationScope public GoogleTaskDao getGoogleTaskDao(Database database) { return database.getGoogleTaskDao(); } @Provides + @ApplicationScope public AlarmDao getAlarmDao(Database database) { return database.getAlarmDao(); } @Provides + @ApplicationScope public LocationDao getGeofenceDao(Database database) { return database.getLocationDao(); } @Provides + @ApplicationScope public TagDao getTagDao(Database database) { return database.getTagDao(); } @Provides + @ApplicationScope public FilterDao getFilterDao(Database database) { return database.getFilterDao(); } @Provides + @ApplicationScope public GoogleTaskListDao getGoogleTaskListDao(Database database) { return database.getGoogleTaskListDao(); } + + @Provides + @ApplicationScope + public TaskDao getTaskDao(Database database, Preferences preferences, LocalBroadcastManager localBroadcastManager, + AlarmDao alarmDao, TagDao tagDao, LocationDao locationDao, GoogleTaskDao googleTaskDao) { + TaskDao taskDao = database.getTaskDao(); + taskDao.initialize(context, preferences, localBroadcastManager, alarmDao, tagDao, + locationDao, googleTaskDao); + return taskDao; + } }