Moving code around

pull/189/head
Alex Baker 10 years ago
parent 81d95d92b6
commit ec4c92ae2e

@ -649,7 +649,7 @@ public class TaskListFragment extends InjectingListFragment implements OnSortSel
if (taskAdapter != null) {
taskAdapter.flushCaches();
}
taskService.cleanup();
taskDeleter.deleteTasksWithEmptyTitles();
loadTaskListContent(true);
}
@ -999,7 +999,7 @@ public class TaskListFragment extends InjectingListFragment implements OnSortSel
Task task = new Task();
task.setId(itemId);
TimerPlugin.updateTimer(notificationManager, taskService, getActivity(), task, false);
taskService.purge(itemId);
taskDeleter.purge(itemId);
loadTaskListContent(true);
return true;
}

@ -22,6 +22,7 @@ import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.GCalHelper;
import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.service.TaskDeleter;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.utility.TodorooPreferenceActivity;
@ -38,6 +39,7 @@ import javax.inject.Inject;
*/
public class OldTaskPreferences extends TodorooPreferenceActivity {
@Inject TaskDeleter taskDeleter;
@Inject TaskService taskService;
@Inject MetadataService metadataService;
@Inject Database database;
@ -194,11 +196,9 @@ public class OldTaskPreferences extends TodorooPreferenceActivity {
} finally {
cursor.close();
}
int result = taskService.deleteWhere(Task.DELETION_DATE.gt(0));
int result = taskDeleter.purgeDeletedTasks();
metadataService.cleanup();
showResult(
R.string.EPr_manage_purge_deleted_status,
result);
showResult(R.string.EPr_manage_purge_deleted_status, result);
}
});
}

@ -33,6 +33,7 @@ import com.todoroo.astrid.gtasks.api.GtasksApiUtilities;
import com.todoroo.astrid.gtasks.api.GtasksInvoker;
import com.todoroo.astrid.gtasks.auth.GtasksTokenValidator;
import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.service.TaskDeleter;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.sync.SyncResultCallback;
import com.todoroo.astrid.sync.SyncV2Provider;
@ -74,12 +75,13 @@ public class GtasksSyncV2Provider extends SyncV2Provider {
private final GtasksTokenValidator gtasksTokenValidator;
private final GtasksMetadata gtasksMetadataFactory;
private final SyncExecutor executor;
private final TaskDeleter taskDeleter;
@Inject
public GtasksSyncV2Provider(TaskService taskService, MetadataService metadataService, StoreObjectDao storeObjectDao, GtasksPreferenceService gtasksPreferenceService,
GtasksSyncService gtasksSyncService, GtasksListService gtasksListService, GtasksMetadataService gtasksMetadataService,
GtasksTaskListUpdater gtasksTaskListUpdater, @ForApplication Context context, Preferences preferences,
GtasksTokenValidator gtasksTokenValidator, GtasksMetadata gtasksMetadata, SyncExecutor executor) {
GtasksTokenValidator gtasksTokenValidator, GtasksMetadata gtasksMetadata, SyncExecutor executor, TaskDeleter taskDeleter) {
this.taskService = taskService;
this.metadataService = metadataService;
this.storeObjectDao = storeObjectDao;
@ -93,6 +95,7 @@ public class GtasksSyncV2Provider extends SyncV2Provider {
this.gtasksTokenValidator = gtasksTokenValidator;
this.gtasksMetadataFactory = gtasksMetadata;
this.executor = executor;
this.taskDeleter = taskDeleter;
}
@Override
@ -280,7 +283,7 @@ public class GtasksSyncV2Provider extends SyncV2Provider {
Criterion delete = Criterion.and(Metadata.KEY.eq(GtasksMetadata.METADATA_KEY),
GtasksMetadata.LIST_ID.eq(listId),
Criterion.not(Metadata.TASK.in(localIdArray)));
taskService.deleteWhere(
taskDeleter.deleteWhere(
Task.ID.in(Query.select(Metadata.TASK).from(Metadata.TABLE).
where(delete)));
metadataService.deleteWhere(delete);

@ -31,8 +31,12 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Order;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.actfm.ActFmCameraModule;
import com.todoroo.astrid.actfm.ActFmCameraModule.CameraResultCallback;
@ -67,7 +71,22 @@ import static org.tasks.files.ImageHelper.sampleBitmap;
public class EditNoteActivity extends LinearLayout implements TimerActionListener {
private static final int TYPE_PROPERTY_INDEX = TaskService.USER_ACTIVITY_PROPERTIES.length - 1;
private static final Property.StringProperty ACTIVITY_TYPE_PROPERTY = new Property.StringProperty(null, "'" + NameMaps.TABLE_ID_USER_ACTIVITY + "' as type"); //$NON-NLS-1$//$NON-NLS-2$
private static final Property<?>[] USER_ACTIVITY_PROPERTIES = {
UserActivity.CREATED_AT,
UserActivity.UUID,
UserActivity.ACTION,
UserActivity.MESSAGE,
UserActivity.TARGET_ID,
UserActivity.TARGET_NAME,
UserActivity.PICTURE,
UserActivity.USER_UUID,
UserActivity.ID,
ACTIVITY_TYPE_PROPERTY,
};
private static final int TYPE_PROPERTY_INDEX = USER_ACTIVITY_PROPERTIES.length - 1;
private Task task;
@ -275,7 +294,7 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene
notes.close();
}
TodorooCursor<UserActivity> updates = taskService.getActivityForTask(task);
TodorooCursor<UserActivity> updates = getActivityForTask(task);
try {
UserActivity update = new UserActivity();
for(updates.moveToFirst(); !updates.isAfterLast(); updates.moveToNext()) {
@ -334,6 +353,15 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene
}
}
public TodorooCursor<UserActivity> getActivityForTask(Task task) {
Query taskQuery = Query.select(AndroidUtilities.addToArray(Property.class, USER_ACTIVITY_PROPERTIES))
.where(Criterion.and(UserActivity.ACTION.eq(UserActivity.ACTION_TASK_COMMENT), UserActivity.TARGET_ID.eq(task.getUuid()), UserActivity.DELETED_AT.eq(0)));
Query resultQuery = taskQuery.orderBy(Order.desc("1")); //$NON-NLS-1$
return userActivityDao.query(resultQuery);
}
private static void readUserActivityProperties(TodorooCursor<UserActivity> unionCursor, UserActivity activity) {
activity.setCreatedAt(unionCursor.getLong(0));
activity.setUUID(unionCursor.getString(1));

@ -78,6 +78,7 @@ public class StartupService {
private final Preferences preferences;
private final TasksXmlImporter xmlImporter;
private final CalendarAlarmScheduler calendarAlarmScheduler;
private final TaskDeleter taskDeleter;
@Inject
public StartupService(UpgradeService upgradeService, TaskService taskService,
@ -85,7 +86,7 @@ public class StartupService {
GtasksPreferenceService gtasksPreferenceService,
GtasksSyncService gtasksSyncService, MetadataService metadataService,
Preferences preferences, TasksXmlImporter xmlImporter,
CalendarAlarmScheduler calendarAlarmScheduler) {
CalendarAlarmScheduler calendarAlarmScheduler, TaskDeleter taskDeleter) {
this.upgradeService = upgradeService;
this.taskService = taskService;
this.tagDataDao = tagDataDao;
@ -96,6 +97,7 @@ public class StartupService {
this.preferences = preferences;
this.xmlImporter = xmlImporter;
this.calendarAlarmScheduler = calendarAlarmScheduler;
this.taskDeleter = taskDeleter;
}
/**
@ -178,7 +180,7 @@ public class StartupService {
new Thread(new Runnable() {
@Override
public void run() {
taskService.cleanup();
taskDeleter.deleteTasksWithEmptyTitles();
// if sync ongoing flag was set, clear it
gtasksPreferenceService.stopOngoing();

@ -1,5 +1,8 @@
package com.todoroo.astrid.service;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.data.Task;
@ -20,6 +23,44 @@ public class TaskDeleter {
this.taskDao = taskDao;
}
/**
* Clean up tasks. Typically called on startup
*/
public void deleteTasksWithEmptyTitles() {
TodorooCursor<Task> cursor = taskDao.query(
Query.select(Task.ID).where(TaskDao.TaskCriteria.hasNoTitle()));
try {
if(cursor.getCount() == 0) {
return;
}
for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
long id = cursor.getLong(0);
taskDao.delete(id);
}
} finally {
cursor.close();
}
}
public int purgeDeletedTasks() {
return deleteWhere(Task.DELETION_DATE.gt(0));
}
/**
* Delete all tasks matching a given criterion
*/
public int deleteWhere(Criterion criteria) {
return taskDao.deleteWhere(criteria);
}
/**
* Permanently delete the given task.
*/
public void purge(long taskId) {
taskDao.delete(taskId);
}
public void delete(Task item) {
if(!item.isSaved()) {
return;

@ -12,20 +12,15 @@ import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Functions;
import com.todoroo.andlib.sql.Order;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.actfm.sync.messages.NameMaps;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.PermaSql;
import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.dao.UserActivityDao;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.UserActivity;
import com.todoroo.astrid.tags.TagService;
import com.todoroo.astrid.tags.TaskToTagMetadata;
import com.todoroo.astrid.utility.TitleParser;
@ -53,21 +48,6 @@ import javax.inject.Singleton;
@Singleton
public class TaskService {
private static final Property.StringProperty ACTIVITY_TYPE_PROPERTY = new Property.StringProperty(null, "'" + NameMaps.TABLE_ID_USER_ACTIVITY + "' as type"); //$NON-NLS-1$//$NON-NLS-2$
public static final Property<?>[] USER_ACTIVITY_PROPERTIES = {
UserActivity.CREATED_AT,
UserActivity.UUID,
UserActivity.ACTION,
UserActivity.MESSAGE,
UserActivity.TARGET_ID,
UserActivity.TARGET_NAME,
UserActivity.PICTURE,
UserActivity.USER_UUID,
UserActivity.ID,
ACTIVITY_TYPE_PROPERTY,
};
private static final Logger log = LoggerFactory.getLogger(TaskService.class);
public static final String TRANS_QUICK_ADD_MARKUP = "markup"; //$NON-NLS-1$
@ -81,18 +61,15 @@ public class TaskService {
public static final String TRANS_REPEAT_COMPLETE = "repeat-complete"; //$NON-NLS-1$
private final TaskDao taskDao;
private final UserActivityDao userActivityDao;
private final Broadcaster broadcaster;
private final FilterCounter filterCounter;
private final RefreshScheduler refreshScheduler;
private final TagService tagService;
@Inject
public TaskService(TaskDao taskDao, UserActivityDao userActivityDao,
Broadcaster broadcaster, FilterCounter filterCounter,
public TaskService(TaskDao taskDao, Broadcaster broadcaster, FilterCounter filterCounter,
RefreshScheduler refreshScheduler, TagService tagService) {
this.taskDao = taskDao;
this.userActivityDao = userActivityDao;
this.broadcaster = broadcaster;
this.filterCounter = filterCounter;
this.refreshScheduler = refreshScheduler;
@ -141,33 +118,6 @@ public class TaskService {
taskDao.save(item);
}
/**
* Permanently delete the given task.
*/
public void purge(long taskId) {
taskDao.delete(taskId);
}
/**
* Clean up tasks. Typically called on startup
*/
public void cleanup() {
TodorooCursor<Task> cursor = taskDao.query(
Query.select(Task.ID).where(TaskCriteria.hasNoTitle()));
try {
if(cursor.getCount() == 0) {
return;
}
for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
long id = cursor.getLong(0);
taskDao.delete(id);
}
} finally {
cursor.close();
}
}
/**
* Fetch tasks for the given filter
* @param constraint text constraint, or null
@ -267,13 +217,6 @@ public class TaskService {
}
}
/**
* Delete all tasks matching a given criterion
*/
public int deleteWhere(Criterion criteria) {
return taskDao.deleteWhere(criteria);
}
/**
* Save task, parsing quick-add mark-up:
* <ul>
@ -379,17 +322,4 @@ public class TaskService {
return task;
}
public TodorooCursor<UserActivity> getActivityForTask(Task task) {
Query taskQuery = queryForTask(task, USER_ACTIVITY_PROPERTIES);
Query resultQuery = taskQuery.orderBy(Order.desc("1")); //$NON-NLS-1$
return userActivityDao.query(resultQuery);
}
private static Query queryForTask(Task task, Property<?>[] activityProperties) {
return Query.select(AndroidUtilities.addToArray(Property.class, activityProperties))
.where(Criterion.and(UserActivity.ACTION.eq(UserActivity.ACTION_TASK_COMMENT), UserActivity.TARGET_ID.eq(task.getUuid()), UserActivity.DELETED_AT.eq(0)));
}
}

Loading…
Cancel
Save