More dagger injections

pull/143/head
Alex Baker 10 years ago
parent d6ca32fdd5
commit 255093d50b

@ -8,6 +8,7 @@ package com.todoroo.astrid.service;
import com.google.ical.values.Frequency;
import com.google.ical.values.RRule;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.test.DatabaseTestCase;
@ -23,17 +24,17 @@ import static org.tasks.date.DateTimeUtils.newDate;
public class TitleParserTest extends DatabaseTestCase {
@Autowired
TaskService taskService;
@Override
protected void setUp() throws Exception {
super.setUp();
Preferences.setStringFromInteger(R.string.p_default_urgency_key, 0);
}
/** test that completing a task w/ no regular expressions creates a simple task with no date, no repeat, no lists*/
public void testNoRegexes() throws Exception{
TaskService taskService = new TaskService();
Task task = new Task();
Task nothing = new Task();
task.setTitle("Jog");
@ -45,7 +46,6 @@ public class TitleParserTest extends DatabaseTestCase {
/** Tests correct date is parsed **/
public void testMonthDate() {
new TaskService();
Task task = new Task();
String[] titleMonthStrings = {
"Jan.", "January",
@ -71,7 +71,6 @@ public class TitleParserTest extends DatabaseTestCase {
}
public void testMonthSlashDay() {
new TaskService();
Task task = new Task();
for (int i = 1; i < 13; i++) {
String testTitle = "Jog on " + i + "/12/13";
@ -84,7 +83,6 @@ public class TitleParserTest extends DatabaseTestCase {
}
public void testArmyTime() {
new TaskService();
Task task = new Task();
String testTitle = "Jog on 23:21.";
insertTitleAddTask(testTitle, task);
@ -94,7 +92,6 @@ public class TitleParserTest extends DatabaseTestCase {
}
public void test_AM_PM() {
new TaskService();
Task task = new Task();
String testTitle = "Jog at 8:33 PM.";
insertTitleAddTask(testTitle, task);
@ -104,7 +101,6 @@ public class TitleParserTest extends DatabaseTestCase {
}
public void test_at_hour() {
new TaskService();
Task task = new Task();
String testTitle = "Jog at 8 PM.";
insertTitleAddTask(testTitle, task);
@ -114,7 +110,6 @@ public class TitleParserTest extends DatabaseTestCase {
}
public void test_oclock_AM() {
new TaskService();
Task task = new Task();
String testTitle = "Jog at 8 o'clock AM.";
insertTitleAddTask(testTitle, task);
@ -124,7 +119,6 @@ public class TitleParserTest extends DatabaseTestCase {
}
public void test_several_forms_of_eight() {
new TaskService();
Task task = new Task();
String[] testTitles = {
"Jog 8 AM",
@ -140,7 +134,6 @@ public class TitleParserTest extends DatabaseTestCase {
}
public void test_several_forms_of_1230PM() {
new TaskService();
Task task = new Task();
String[] testTitles = {
"Jog 12:30 PM",
@ -167,7 +160,6 @@ public class TitleParserTest extends DatabaseTestCase {
// ----------------Days begin----------------//
public void testDays() throws Exception{
Calendar today = Calendar.getInstance();
new TaskService();
Task task = new Task();
String title = "Jog today";
@ -261,7 +253,6 @@ public class TitleParserTest extends DatabaseTestCase {
"!1",
"!"
};
TaskService taskService = new TaskService();
Task task;
for (String acceptedStringAtEnd:acceptedStringsAtEnd){
task = new Task();
@ -298,7 +289,6 @@ public class TitleParserTest extends DatabaseTestCase {
"!2",
"!!"
};
new TaskService();
Task task;
for (String acceptedStringAtEnd:acceptedStringsAtEnd){
task = new Task();
@ -341,7 +331,6 @@ public class TitleParserTest extends DatabaseTestCase {
"!6",
"!!!!!!!!!!!!!"
};
new TaskService();
Task task;
for (String acceptedStringAtEnd:acceptedStringsAtEnd){
task = new Task();
@ -411,7 +400,6 @@ public class TitleParserTest extends DatabaseTestCase {
/** test weekly repeat from due date, with no due date & time set */
public void testWeeklyWithNoDueDate() throws Exception {
new TaskService();
Task task = new Task();
String title = "Jog weekly";
task.setTitle(title);

@ -11,8 +11,6 @@ import android.database.Cursor;
import com.todoroo.andlib.data.DatabaseDao;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Join;
import com.todoroo.andlib.sql.Query;
@ -27,20 +25,24 @@ import com.todoroo.astrid.utility.AstridPreferences;
import java.util.ArrayList;
import java.util.HashSet;
import javax.inject.Inject;
import javax.inject.Singleton;
/**
* Data Access layer for {@link Metadata}-related operations.
*
* @author Tim Su <tim@todoroo.com>
*
*/
@Singleton
public class MetadataDao extends DatabaseDao<Metadata> {
@Autowired
private Database database;
private final Database database;
public MetadataDao() {
@Inject
public MetadataDao(Database database) {
super(Metadata.class);
DependencyInjectionService.getInstance().inject(this);
this.database = database;
setDatabase(database);
}

@ -6,25 +6,24 @@
package com.todoroo.astrid.dao;
import com.todoroo.andlib.data.DatabaseDao;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.astrid.data.StoreObject;
import javax.inject.Inject;
import javax.inject.Singleton;
/**
* Data Access layer for {@link StoreObject}-related operations.
*
* @author Tim Su <tim@todoroo.com>
*
*/
@Singleton
public class StoreObjectDao extends DatabaseDao<StoreObject> {
@Autowired
private Database database;
public StoreObjectDao() {
@Inject
public StoreObjectDao(Database database) {
super(StoreObject.class);
DependencyInjectionService.getInstance().inject(this);
setDatabase(database);
}

@ -5,23 +5,22 @@
*/
package com.todoroo.astrid.dao;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.astrid.data.TagData;
import javax.inject.Inject;
import javax.inject.Singleton;
/**
* Data Access layer for {@link TagData}-related operations.
*
* @author Tim Su <tim@todoroo.com>
*
*/
@Singleton
public class TagDataDao extends RemoteModelDao<TagData> {
@Autowired Database database;
public TagDataDao() {
@Inject
public TagDataDao(Database database) {
super(TagData.class);
DependencyInjectionService.getInstance().inject(this);
setDatabase(database);
}
}

@ -9,8 +9,6 @@ import android.text.TextUtils;
import com.todoroo.andlib.data.DatabaseDao;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DateUtilities;
@ -27,23 +25,24 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
import javax.inject.Inject;
import javax.inject.Singleton;
/**
* Data Access layer for {@link Metadata}-related operations.
*
* @author Tim Su <tim@todoroo.com>
*
*/
@Singleton
public class TagMetadataDao extends DatabaseDao<TagMetadata> {
@Autowired
private Database database;
@Autowired
TagDataDao tagDataDao;
private final TagDataDao tagDataDao;
public TagMetadataDao() {
@Inject
public TagMetadataDao(Database database, TagDataDao tagDataDao) {
super(TagMetadata.class);
DependencyInjectionService.getInstance().inject(this);
this.tagDataDao = tagDataDao;
setDatabase(database);
}

@ -6,26 +6,26 @@
package com.todoroo.astrid.dao;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.TaskAttachment;
import javax.inject.Inject;
import javax.inject.Singleton;
/**
* Data Access layer for {@link TagData}-related operations.
*
* @author Tim Su <tim@todoroo.com>
*
*/
@Singleton
public class TaskAttachmentDao extends RemoteModelDao<TaskAttachment> {
@Autowired Database database;
public TaskAttachmentDao() {
@Inject
public TaskAttachmentDao(Database database) {
super(TaskAttachment.class);
DependencyInjectionService.getInstance().inject(this);
setDatabase(database);
}

@ -11,8 +11,6 @@ import android.database.sqlite.SQLiteConstraintException;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Functions;
import com.todoroo.andlib.sql.Query;
@ -28,27 +26,27 @@ import com.todoroo.astrid.reminders.ReminderService;
import org.tasks.Broadcaster;
import org.tasks.R;
import javax.inject.Inject;
import javax.inject.Singleton;
/**
* Data Access layer for {@link Task}-related operations.
*
* @author Tim Su <tim@todoroo.com>
*
*/
@Singleton
public class TaskDao extends RemoteModelDao<Task> {
@Autowired
private MetadataDao metadataDao;
@Autowired
private Database database;
private final MetadataDao metadataDao;
private final Broadcaster broadcaster;
@Autowired
private Broadcaster broadcaster;
public TaskDao() {
@Inject
public TaskDao(Database database, MetadataDao metadataDao, Broadcaster broadcaster) {
super(Task.class);
DependencyInjectionService.getInstance().inject(this);
setDatabase(database);
this.metadataDao = metadataDao;
this.broadcaster = broadcaster;
}
// --- SQL clause generators
@ -387,6 +385,5 @@ public class TaskDao extends RemoteModelDao<Task> {
private static void afterComplete(Task task) {
Notifications.cancelNotifications(task.getId());
}
}

@ -7,35 +7,33 @@ package com.todoroo.astrid.dao;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.TaskListMetadata;
import javax.inject.Inject;
import javax.inject.Singleton;
/**
* Data Access layer for {@link TagData}-related operations.
*
* @author Tim Su <tim@todoroo.com>
*
*/
@Singleton
public class TaskListMetadataDao extends RemoteModelDao<TaskListMetadata> {
@Autowired Database database;
public TaskListMetadataDao() {
@Inject
public TaskListMetadataDao(Database database) {
super(TaskListMetadata.class);
DependencyInjectionService.getInstance().inject(this);
setDatabase(database);
}
public TaskListMetadata fetchByTagId(String tagUuid, Property<?>...properties) {
public TaskListMetadata fetchByTagId(String tagUuid, Property<?>... properties) {
TodorooCursor<TaskListMetadata> taskListMetadata = query(Query.select(properties).where(Criterion.or(TaskListMetadata.TAG_UUID.eq(tagUuid),
TaskListMetadata.FILTER.eq(tagUuid))));
taskListMetadata.moveToFirst();
return returnFetchResult(taskListMetadata);
}
}

@ -2,19 +2,18 @@ package com.todoroo.astrid.dao;
import android.content.ContentValues;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.data.UserActivity;
public class UserActivityDao extends RemoteModelDao<UserActivity> {
import javax.inject.Inject;
import javax.inject.Singleton;
@Autowired
private Database database;
@Singleton
public class UserActivityDao extends RemoteModelDao<UserActivity> {
public UserActivityDao() {
@Inject
public UserActivityDao(Database database) {
super(UserActivity.class);
DependencyInjectionService.getInstance().inject(this);
setDatabase(database);
}

@ -47,6 +47,21 @@ public class AstridDependencyInjector extends AbstractDependencyInjector {
private static AstridDependencyInjector instance = null;
@Inject Database database;
@Inject MetadataDao metadataDao;
@Inject TagDataDao tagDataDao;
@Inject Broadcaster broadcaster;
@Inject TaskDao taskDao;
@Inject TagMetadataDao tagMetadataDao;
@Inject StoreObjectDao storeObjectDao;
@Inject UserActivityDao userActivityDao;
@Inject TaskAttachmentDao taskAttachmentDao;
@Inject TaskListMetadataDao taskListMetadataDao;
@Inject TagDataService tagDataService;
@Inject MetadataService metadataService;
@Inject SyncV2Service syncV2Service;
@Inject FilterCounter filterCounter;
@Inject RefreshScheduler refreshScheduler;
@Inject TaskService taskService;
/**
* Initialize list of injectables. Special care must used when
@ -58,21 +73,21 @@ public class AstridDependencyInjector extends AbstractDependencyInjector {
// com.todoroo.astrid.dao
injectables.put("database", database);
injectables.put("taskDao", TaskDao.class);
injectables.put("metadataDao", MetadataDao.class);
injectables.put("tagMetadataDao", TagMetadataDao.class);
injectables.put("tagDataDao", TagDataDao.class);
injectables.put("storeObjectDao", StoreObjectDao.class);
injectables.put("userActivityDao", UserActivityDao.class);
injectables.put("taskAttachmentDao", TaskAttachmentDao.class);
injectables.put("taskListMetadataDao", TaskListMetadataDao.class);
injectables.put("taskDao", taskDao);
injectables.put("metadataDao", metadataDao);
injectables.put("tagMetadataDao", tagMetadataDao);
injectables.put("tagDataDao", tagDataDao);
injectables.put("storeObjectDao", storeObjectDao);
injectables.put("userActivityDao", userActivityDao);
injectables.put("taskAttachmentDao", taskAttachmentDao);
injectables.put("taskListMetadataDao", taskListMetadataDao);
// com.todoroo.astrid.service
injectables.put("taskService", TaskService.class);
injectables.put("metadataService", MetadataService.class);
injectables.put("tagDataService", TagDataService.class);
injectables.put("taskService", taskService);
injectables.put("metadataService", metadataService);
injectables.put("tagDataService", tagDataService);
injectables.put("upgradeService", UpgradeService.class);
injectables.put("syncService", SyncV2Service.class);
injectables.put("syncService", syncV2Service);
// com.todoroo.astrid.gtasks
injectables.put("gtasksPreferenceService", GtasksPreferenceService.class);
@ -84,10 +99,10 @@ public class AstridDependencyInjector extends AbstractDependencyInjector {
// com.todoroo.astrid.tags
injectables.put("tagService", TagService.class);
injectables.put("broadcaster", Broadcaster.class);
injectables.put("broadcaster", broadcaster);
injectables.put("filterCounter", FilterCounter.class);
injectables.put("refreshScheduler", RefreshScheduler.class);
injectables.put("filterCounter", filterCounter);
injectables.put("refreshScheduler", refreshScheduler);
}
/**

@ -8,8 +8,6 @@ package com.todoroo.astrid.service;
import android.content.ContentValues;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DateUtilities;
@ -21,23 +19,27 @@ import java.util.ArrayList;
import java.util.HashSet;
import java.util.Map.Entry;
import javax.inject.Inject;
import javax.inject.Singleton;
/**
* Service layer for {@link Metadata}-centered activities.
*
* @author Tim Su <tim@todoroo.com>
*
*/
@Singleton
public class MetadataService {
public static interface SynchronizeMetadataCallback {
public void beforeDeleteMetadata(Metadata m);
}
@Autowired
private MetadataDao metadataDao;
private final MetadataDao metadataDao;
public MetadataService() {
DependencyInjectionService.getInstance().inject(this);
@Inject
public MetadataService(MetadataDao metadataDao) {
this.metadataDao = metadataDao;
}
// --- service layer

@ -14,6 +14,9 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
/**
* SyncV2Service is a simplified synchronization interface for supporting
* next-generation sync interfaces such as Google Tasks and Astrid.com
@ -21,6 +24,7 @@ import java.util.List;
* @author Tim Su <tim@astrid.com>
*
*/
@Singleton
public class SyncV2Service {
/*
@ -32,6 +36,10 @@ public class SyncV2Service {
GtasksSyncV2Provider.getInstance()
};
@Inject
public SyncV2Service() {
}
/**
* Returns active sync providers
*/
@ -82,5 +90,4 @@ public class SyncV2Service {
}
}
}
}

@ -9,8 +9,6 @@ import android.database.Cursor;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Order;
import com.todoroo.andlib.sql.Query;
@ -24,19 +22,25 @@ import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.UserActivity;
import com.todoroo.astrid.tags.TaskToTagMetadata;
import javax.inject.Inject;
import javax.inject.Singleton;
/**
* Service layer for {@link TagData}-centered activities.
*
* @author Tim Su <tim@todoroo.com>
*
*/
@Singleton
public class TagDataService {
@Autowired TagDataDao tagDataDao;
@Autowired UserActivityDao userActivityDao;
private final TagDataDao tagDataDao;
private final UserActivityDao userActivityDao;
public TagDataService() {
DependencyInjectionService.getInstance().inject(this);
@Inject
public TagDataService(TagDataDao tagDataDao, UserActivityDao userActivityDao) {
this.tagDataDao = tagDataDao;
this.userActivityDao = userActivityDao;
}
// --- service layer

@ -11,8 +11,6 @@ import android.util.Log;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Functions;
import com.todoroo.andlib.sql.Order;
@ -48,6 +46,9 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map.Entry;
import javax.inject.Inject;
import javax.inject.Singleton;
/**
* Service layer for {@link Task}-centered activities.
@ -55,6 +56,7 @@ import java.util.Map.Entry;
* @author Tim Su <tim@todoroo.com>
*
*/
@Singleton
public class TaskService {
private static final String TAG = "TaskService";
@ -71,26 +73,21 @@ public class TaskService {
public static final String TRANS_REPEAT_COMPLETE = "repeat-complete"; //$NON-NLS-1$
@Autowired
private TaskDao taskDao;
@Autowired
private MetadataDao metadataDao;
@Autowired
private UserActivityDao userActivityDao;
@Autowired
private Broadcaster broadcaster;
@Autowired
private FilterCounter filterCounter;
@Autowired
private RefreshScheduler refreshScheduler;
public TaskService() {
DependencyInjectionService.getInstance().inject(this);
private final TaskDao taskDao;
private final MetadataDao metadataDao;
private final UserActivityDao userActivityDao;
private final Broadcaster broadcaster;
private final FilterCounter filterCounter;
private final RefreshScheduler refreshScheduler;
@Inject
public TaskService(TaskDao taskDao, MetadataDao metadataDao, UserActivityDao userActivityDao, Broadcaster broadcaster, FilterCounter filterCounter, RefreshScheduler refreshScheduler) {
this.taskDao = taskDao;
this.metadataDao = metadataDao;
this.userActivityDao = userActivityDao;
this.broadcaster = broadcaster;
this.filterCounter = filterCounter;
this.refreshScheduler = refreshScheduler;
}
// --- service layer

@ -5,8 +5,16 @@ import android.content.Intent;
import com.todoroo.andlib.service.ContextManager;
import javax.inject.Inject;
import javax.inject.Singleton;
@Singleton
public class Broadcaster {
@Inject
public Broadcaster() {
}
public void sendOrderedBroadcast(Intent intent) {
Context context = ContextManager.getContext();
if (context != null) {

@ -1,7 +1,6 @@
package org.tasks.filters;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Query;
import com.todoroo.astrid.api.Filter;
@ -17,6 +16,10 @@ import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import javax.inject.Inject;
import javax.inject.Singleton;
@Singleton
public class FilterCounter {
// Previous solution involved a queue of filters and a filterSizeLoadingThread. The filterSizeLoadingThread had
// a few problems: how to make sure that the thread is resumed when the controlling activity is resumed, and
@ -29,14 +32,15 @@ public class FilterCounter {
private final Map<Filter, Integer> filterCounts = new ConcurrentHashMap<>();
@Autowired
private TaskDao taskDao;
private final TaskDao taskDao;
public FilterCounter() {
this(new ThreadPoolExecutor(0, 1, 1, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>()));
@Inject
public FilterCounter(TaskDao taskDao) {
this(taskDao, new ThreadPoolExecutor(0, 1, 1, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>()));
}
FilterCounter(ExecutorService executorService) {
FilterCounter(TaskDao taskDao, ExecutorService executorService) {
this.taskDao = taskDao;
this.executorService = executorService;
DependencyInjectionService.getInstance().inject(this);
}

@ -8,9 +8,7 @@ import android.content.Intent;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query;
import com.todoroo.astrid.api.AstridApiConstants;
@ -19,27 +17,28 @@ import com.todoroo.astrid.data.Task;
import org.tasks.Broadcaster;
import javax.inject.Inject;
import javax.inject.Singleton;
import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;
import static com.todoroo.andlib.utility.DateUtilities.ONE_MINUTE;
import static org.tasks.date.DateTimeUtils.currentTimeMillis;
@Singleton
public class RefreshScheduler extends BroadcastReceiver {
private static final String TAG = "RefreshScheduler";
@Autowired
private TaskDao taskDao;
@Autowired
private Broadcaster broadcaster;
private final TaskDao taskDao;
private final Broadcaster broadcaster;
private static final Property<?>[] REFRESH_PROPERTIES = new Property<?>[]{
Task.DUE_DATE,
Task.HIDE_UNTIL
};
public RefreshScheduler() {
DependencyInjectionService.getInstance().inject(this);
@Inject
public RefreshScheduler(TaskDao taskDao, Broadcaster broadcaster) {
this.taskDao = taskDao;
this.broadcaster = broadcaster;
}
@Override

Loading…
Cancel
Save