From b0aaceb952ac95e00c97136e78b8d11171c6b824 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Tue, 15 Jul 2014 17:18:38 -0500 Subject: [PATCH] Remove MetadataService --- .../todoroo/astrid/dao/MetadataDaoTests.java | 50 +++++- .../astrid/gtasks/GtasksIndentActionTest.java | 6 +- .../gtasks/GtasksMetadataServiceTest.java | 6 +- .../gtasks/GtasksTaskListUpdaterTest.java | 6 +- .../astrid/gtasks/GtasksTaskMovingTest.java | 6 +- .../astrid/service/MetadataServiceTest.java | 61 -------- .../java/org/tasks/injection/TestModule.java | 4 +- .../astrid/activity/TaskEditFragment.java | 6 +- .../todoroo/astrid/alarms/AlarmService.java | 82 ++++++++-- .../astrid/backup/TasksXmlExporter.java | 10 +- .../astrid/backup/TasksXmlImporter.java | 10 +- .../astrid/core/OldTaskPreferences.java | 6 +- .../com/todoroo/astrid/dao/MetadataDao.java | 13 ++ .../astrid/gtasks/GtasksListFragment.java | 8 +- .../astrid/gtasks/GtasksMetadataService.java | 8 +- .../astrid/gtasks/GtasksTaskListUpdater.java | 10 +- .../astrid/gtasks/sync/GtasksSyncService.java | 10 +- .../astrid/notes/EditNoteActivity.java | 10 +- .../astrid/service/MetadataService.java | 148 ------------------ .../astrid/service/StartupService.java | 9 +- .../service/SynchronizeMetadataCallback.java | 7 + .../todoroo/astrid/service/TaskService.java | 9 +- .../OrderedMetadataListFragmentHelper.java | 10 +- .../subtasks/OrderedMetadataListUpdater.java | 10 +- .../com/todoroo/astrid/tags/TagService.java | 7 +- astrid/src/main/java/org/tasks/Tasks.java | 2 - 26 files changed, 209 insertions(+), 305 deletions(-) delete mode 100644 astrid/src/androidTest/java/com/todoroo/astrid/service/MetadataServiceTest.java delete mode 100644 astrid/src/main/java/com/todoroo/astrid/service/MetadataService.java create mode 100644 astrid/src/main/java/com/todoroo/astrid/service/SynchronizeMetadataCallback.java diff --git a/astrid/src/androidTest/java/com/todoroo/astrid/dao/MetadataDaoTests.java b/astrid/src/androidTest/java/com/todoroo/astrid/dao/MetadataDaoTests.java index dfe0408bf..87c4c29b2 100644 --- a/astrid/src/androidTest/java/com/todoroo/astrid/dao/MetadataDaoTests.java +++ b/astrid/src/androidTest/java/com/todoroo/astrid/dao/MetadataDaoTests.java @@ -10,6 +10,7 @@ import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.sql.Query; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.data.Metadata; +import com.todoroo.astrid.data.Task; import com.todoroo.astrid.test.DatabaseTestCase; import javax.inject.Inject; @@ -19,8 +20,15 @@ public class MetadataDaoTests extends DatabaseTestCase { @Inject MetadataDao metadataDao; @Inject TaskDao taskDao; - public static Property[] KEYS = new Property[] { Metadata.ID, - Metadata.KEY }; + private Metadata metadata; + + public static Property[] KEYS = new Property[] { Metadata.ID, Metadata.KEY }; + + @Override + public void setUp() { + super.setUp(); + metadata = new Metadata(); + } /** * Test basic creation, fetch, and save @@ -33,6 +41,7 @@ public class MetadataDaoTests extends DatabaseTestCase { // create "happy" Metadata metadata = new Metadata(); + metadata.setTask(1L); metadata.setKey("happy"); assertTrue(metadataDao.persist(metadata)); cursor = metadataDao.query( @@ -46,6 +55,7 @@ public class MetadataDaoTests extends DatabaseTestCase { // create "sad" metadata = new Metadata(); + metadata.setTask(1L); metadata.setKey("sad"); assertTrue(metadataDao.persist(metadata)); cursor = metadataDao.query(Query.select(Metadata.ID)); @@ -123,4 +133,40 @@ public class MetadataDaoTests extends DatabaseTestCase { assertEquals(1, cursor.getCount()); cursor.close(); } + + public void testDontSaveMetadataWithoutTaskId() { + try { + metadataDao.persist(metadata); + fail("expected exception"); + } catch(IllegalArgumentException e) { + assertTrue(e.getMessage().startsWith("metadata needs to be attached to a task")); + } + } + + public void testSaveMetadata() { + metadata.setTask(1L); + metadataDao.persist(metadata); + + assertNotNull(metadataDao.fetch(metadata.getId())); + } + + public void testDontDeleteValidMetadata() { + final Task task = new Task(); + taskDao.save(task); + metadata.setTask(task.getId()); + metadataDao.persist(metadata); + + metadataDao.removeDanglingMetadata(); + + assertNotNull(metadataDao.fetch(metadata.getId())); + } + + public void testDeleteDangling() { + metadata.setTask(1L); + metadataDao.persist(metadata); + + metadataDao.removeDanglingMetadata(); + + assertNull(metadataDao.fetch(1)); + } } diff --git a/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksIndentActionTest.java b/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksIndentActionTest.java index 2e384e5a0..4a0ab8453 100644 --- a/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksIndentActionTest.java +++ b/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksIndentActionTest.java @@ -7,10 +7,10 @@ package com.todoroo.astrid.gtasks; import com.google.api.services.tasks.model.TaskList; import com.google.api.services.tasks.model.TaskLists; +import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.StoreObject; import com.todoroo.astrid.data.Task; -import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.test.DatabaseTestCase; @@ -25,7 +25,7 @@ public class GtasksIndentActionTest extends DatabaseTestCase { @Inject GtasksMetadataService gtasksMetadataService; @Inject GtasksListService gtasksListService; @Inject GtasksTaskListUpdater gtasksTaskListUpdater; - @Inject MetadataService metadataService; + @Inject MetadataDao metadataDao; @Inject TaskService taskService; @Inject GtasksMetadata gtasksMetadata; @@ -161,7 +161,7 @@ public class GtasksIndentActionTest extends DatabaseTestCase { metadata.setValue(GtasksMetadata.ORDER, order); metadata.setValue(GtasksMetadata.LIST_ID, "list"); metadata.setTask(newTask.getId()); - metadataService.save(metadata); + metadataDao.persist(metadata); return newTask; } diff --git a/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksMetadataServiceTest.java b/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksMetadataServiceTest.java index 88ac47949..0bb3985ed 100644 --- a/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksMetadataServiceTest.java +++ b/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksMetadataServiceTest.java @@ -7,9 +7,9 @@ package com.todoroo.astrid.gtasks; import android.content.Context; +import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Task; -import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.test.DatabaseTestCase; @@ -45,7 +45,7 @@ public class GtasksMetadataServiceTest extends DatabaseTestCase { @Inject GtasksTestPreferenceService preferences; @Inject GtasksMetadataService gtasksMetadataService; - @Inject MetadataService metadataService; + @Inject MetadataDao metadataDao; @Inject TaskService taskService; @Inject GtasksMetadata gtasksMetadata; @@ -99,7 +99,7 @@ public class GtasksMetadataServiceTest extends DatabaseTestCase { if (id != null) metadata.setValue(GtasksMetadata.ID, id); metadata.setTask(task.getId()); - metadataService.save(metadata); + metadataDao.persist(metadata); return task; } diff --git a/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdaterTest.java b/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdaterTest.java index eae85780b..a4ead121a 100644 --- a/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdaterTest.java +++ b/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdaterTest.java @@ -7,10 +7,10 @@ package com.todoroo.astrid.gtasks; import com.google.api.services.tasks.model.TaskList; import com.google.api.services.tasks.model.TaskLists; +import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.StoreObject; import com.todoroo.astrid.data.Task; -import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.test.DatabaseTestCase; @@ -27,7 +27,7 @@ public class GtasksTaskListUpdaterTest extends DatabaseTestCase { @Inject GtasksTaskListUpdater gtasksTaskListUpdater; @Inject GtasksListService gtasksListService; @Inject GtasksMetadataService gtasksMetadataService; - @Inject MetadataService metadataService; + @Inject MetadataDao metadataDao; @Inject TaskService taskService; @Inject GtasksMetadata gtasksMetadata; @@ -184,7 +184,7 @@ public class GtasksTaskListUpdaterTest extends DatabaseTestCase { metadata.setValue(GtasksMetadata.ORDER, order); if(indent != VALUE_UNSET) metadata.setValue(GtasksMetadata.INDENT, indent); - metadataService.save(metadata); + metadataDao.persist(metadata); return task; } diff --git a/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksTaskMovingTest.java b/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksTaskMovingTest.java index ff2524187..34a75507e 100644 --- a/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksTaskMovingTest.java +++ b/astrid/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksTaskMovingTest.java @@ -7,10 +7,10 @@ package com.todoroo.astrid.gtasks; import com.google.api.services.tasks.model.TaskList; import com.google.api.services.tasks.model.TaskLists; +import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.StoreObject; import com.todoroo.astrid.data.Task; -import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.test.DatabaseTestCase; @@ -27,7 +27,7 @@ public class GtasksTaskMovingTest extends DatabaseTestCase { @Inject GtasksListService gtasksListService; @Inject GtasksMetadataService gtasksMetadataService; @Inject GtasksTaskListUpdater gtasksTaskListUpdater; - @Inject MetadataService metadataService; + @Inject MetadataDao metadataDao; @Inject TaskService taskService; @Inject GtasksMetadata gtasksMetadata; @@ -287,7 +287,7 @@ public class GtasksTaskMovingTest extends DatabaseTestCase { metadata.setValue(GtasksMetadata.ORDER, order); if(indent != VALUE_UNSET) metadata.setValue(GtasksMetadata.INDENT, indent); - metadataService.save(metadata); + metadataDao.persist(metadata); return task; } diff --git a/astrid/src/androidTest/java/com/todoroo/astrid/service/MetadataServiceTest.java b/astrid/src/androidTest/java/com/todoroo/astrid/service/MetadataServiceTest.java deleted file mode 100644 index 5ff236c0e..000000000 --- a/astrid/src/androidTest/java/com/todoroo/astrid/service/MetadataServiceTest.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.todoroo.astrid.service; - -import com.todoroo.astrid.dao.MetadataDao; -import com.todoroo.astrid.dao.TaskDao; -import com.todoroo.astrid.data.Metadata; -import com.todoroo.astrid.data.Task; - -import org.tasks.injection.InjectingTestCase; - -import javax.inject.Inject; - -public class MetadataServiceTest extends InjectingTestCase { - - @Inject MetadataService metadataService; - @Inject MetadataDao metadataDao; - @Inject TaskDao taskDao; - - Metadata metadata; - - @Override - public void setUp() { - super.setUp(); - metadata = new Metadata(); - } - - public void testDontSaveMetadataWithoutTaskId() { - try { - metadataService.save(metadata); - fail("expected exception"); - } catch(IllegalArgumentException e) { - assertTrue(e.getMessage().startsWith("metadata needs to be attached to a task")); - } - } - - public void testSaveMetadata() { - metadata.setTask(1L); - metadataService.save(metadata); - - assertNotNull(metadataDao.fetch(metadata.getId())); - } - - public void testDontDeleteValidMetadata() { - final Task task = new Task(); - taskDao.save(task); - metadata.setTask(task.getId()); - metadataService.save(metadata); - - metadataService.removeDanglingMetadata(); - - assertNotNull(metadataDao.fetch(metadata.getId())); - } - - public void testDeleteDangling() { - metadata.setTask(1L); - metadataService.save(metadata); - - metadataService.removeDanglingMetadata(); - - assertNull(metadataDao.fetch(1)); - } -} diff --git a/astrid/src/androidTest/java/org/tasks/injection/TestModule.java b/astrid/src/androidTest/java/org/tasks/injection/TestModule.java index cb7023054..6f761c6f2 100644 --- a/astrid/src/androidTest/java/org/tasks/injection/TestModule.java +++ b/astrid/src/androidTest/java/org/tasks/injection/TestModule.java @@ -13,7 +13,6 @@ import com.todoroo.astrid.model.TaskTest; import com.todoroo.astrid.provider.Astrid3ProviderTests; import com.todoroo.astrid.reminders.ReminderServiceTest; import com.todoroo.astrid.repeats.NewRepeatTests; -import com.todoroo.astrid.service.MetadataServiceTest; import com.todoroo.astrid.service.QuickAddMarkupTest; import com.todoroo.astrid.service.TitleParserTest; import com.todoroo.astrid.subtasks.SubtasksHelperTest; @@ -44,8 +43,7 @@ import dagger.Provides; ReminderServiceTest.class, SubtasksHelperTest.class, SubtasksMovingTest.class, - SyncModelTest.class, - MetadataServiceTest.class + SyncModelTest.class }) public class TestModule { private Context context; diff --git a/astrid/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java b/astrid/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java index da6bac275..509df5f52 100755 --- a/astrid/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java +++ b/astrid/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java @@ -48,6 +48,7 @@ import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.actfm.ActFmCameraModule; import com.todoroo.astrid.actfm.ActFmCameraModule.CameraResultCallback; import com.todoroo.astrid.alarms.AlarmService; +import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.TaskAttachmentDao; import com.todoroo.astrid.dao.UserActivityDao; import com.todoroo.astrid.data.RemoteModel; @@ -62,7 +63,6 @@ import com.todoroo.astrid.gcal.GCalHelper; import com.todoroo.astrid.helper.TaskEditControlSet; import com.todoroo.astrid.notes.EditNoteActivity; import com.todoroo.astrid.repeats.RepeatControlSet; -import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.TaskDeleter; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.tags.TagService; @@ -167,7 +167,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener { @Inject TaskService taskService; @Inject TaskAttachmentDao taskAttachmentDao; @Inject TagService tagService; - @Inject MetadataService metadataService; + @Inject MetadataDao metadataDao; @Inject UserActivityDao userActivityDao; @Inject TaskDeleter taskDeleter; @Inject NotificationManager notificationManager; @@ -276,7 +276,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener { private void instantiateEditNotes() { if (showEditComments) { long idParam = getActivity().getIntent().getLongExtra(TOKEN_ID, -1L); - editNotes = new EditNoteActivity(preferences, metadataService, userActivityDao, + editNotes = new EditNoteActivity(preferences, metadataDao, userActivityDao, taskService, this, getView(), idParam); editNotes.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); diff --git a/astrid/src/main/java/com/todoroo/astrid/alarms/AlarmService.java b/astrid/src/main/java/com/todoroo/astrid/alarms/AlarmService.java index f4fae71c0..00d68a46a 100644 --- a/astrid/src/main/java/com/todoroo/astrid/alarms/AlarmService.java +++ b/astrid/src/main/java/com/todoroo/astrid/alarms/AlarmService.java @@ -7,6 +7,7 @@ package com.todoroo.astrid.alarms; import android.app.AlarmManager; import android.app.PendingIntent; +import android.content.ContentValues; import android.content.Context; import android.content.Intent; @@ -16,21 +17,23 @@ import com.todoroo.andlib.sql.Join; import com.todoroo.andlib.sql.Order; import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.utility.DateUtilities; +import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.dao.TaskDao.TaskCriteria; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.reminders.Notifications; import com.todoroo.astrid.reminders.ReminderService; -import com.todoroo.astrid.service.MetadataService; -import com.todoroo.astrid.service.MetadataService.SynchronizeMetadataCallback; +import com.todoroo.astrid.service.SynchronizeMetadataCallback; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.tasks.injection.ForApplication; import java.util.ArrayList; +import java.util.HashSet; import java.util.LinkedHashSet; +import java.util.Map; import javax.inject.Inject; import javax.inject.Singleton; @@ -48,12 +51,12 @@ public class AlarmService { // --- data retrieval - private final MetadataService metadataService; + private MetadataDao metadataDao; private final Context context; @Inject - public AlarmService(MetadataService metadataService, @ForApplication Context context) { - this.metadataService = metadataService; + public AlarmService(MetadataDao metadataDao, @ForApplication Context context) { + this.metadataDao = metadataDao; this.context = context; } @@ -61,7 +64,7 @@ public class AlarmService { * Return alarms for the given task. PLEASE CLOSE THE CURSOR! */ public TodorooCursor getAlarms(long taskId) { - return metadataService.query(Query.select( + return metadataDao.query(Query.select( Metadata.PROPERTIES).where(MetadataCriteria.byTaskAndwithKey( taskId, AlarmFields.METADATA_KEY)).orderBy(Order.asc(AlarmFields.TIME))); } @@ -82,7 +85,7 @@ public class AlarmService { final AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); - boolean changed = metadataService.synchronizeMetadata(taskId, metadata, Metadata.KEY.eq(AlarmFields.METADATA_KEY), new SynchronizeMetadataCallback() { + boolean changed = synchronizeMetadata(taskId, metadata, Metadata.KEY.eq(AlarmFields.METADATA_KEY), new SynchronizeMetadataCallback() { @Override public void beforeDeleteMetadata(Metadata m) { // Cancel the alarm before the metadata is deleted @@ -104,7 +107,7 @@ public class AlarmService { * @return todoroo cursor. PLEASE CLOSE THIS CURSOR! */ private TodorooCursor getActiveAlarms() { - return metadataService.query(Query.select(Metadata.ID, Metadata.TASK, AlarmFields.TIME). + return metadataDao.query(Query.select(Metadata.ID, Metadata.TASK, AlarmFields.TIME). join(Join.inner(Task.TABLE, Metadata.TASK.eq(Task.ID))). where(Criterion.and(TaskCriteria.isActive(), MetadataCriteria.withKey(AlarmFields.METADATA_KEY)))); } @@ -114,7 +117,7 @@ public class AlarmService { * @return todoroo cursor. PLEASE CLOSE THIS CURSOR! */ private TodorooCursor getActiveAlarmsForTask(long taskId) { - return metadataService.query(Query.select(Metadata.ID, Metadata.TASK, AlarmFields.TIME). + return metadataDao.query(Query.select(Metadata.ID, Metadata.TASK, AlarmFields.TIME). join(Join.inner(Task.TABLE, Metadata.TASK.eq(Task.ID))). where(Criterion.and(TaskCriteria.isActive(), MetadataCriteria.byTaskAndwithKey(taskId, AlarmFields.METADATA_KEY)))); @@ -187,4 +190,65 @@ public class AlarmService { am.set(AlarmManager.RTC_WAKEUP, time, pendingIntent); } } + + private boolean synchronizeMetadata(long taskId, ArrayList metadata, + Criterion metadataCriterion, SynchronizeMetadataCallback callback) { + boolean dirty = false; + HashSet newMetadataValues = new HashSet<>(); + for(Metadata metadatum : metadata) { + metadatum.setTask(taskId); + metadatum.clearValue(Metadata.CREATION_DATE); + metadatum.clearValue(Metadata.ID); + + ContentValues values = metadatum.getMergedValues(); + for(Map.Entry entry : values.valueSet()) { + if(entry.getKey().startsWith("value")) //$NON-NLS-1$ + { + values.put(entry.getKey(), entry.getValue().toString()); + } + } + newMetadataValues.add(values); + } + + TodorooCursor cursor = metadataDao.query(Query.select(Metadata.PROPERTIES).where(Criterion.and(MetadataCriteria.byTask(taskId), + metadataCriterion))); + try { + // try to find matches within our metadata list + for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { + Metadata item = new Metadata(cursor); + long id = item.getId(); + + // clear item id when matching with incoming values + item.clearValue(Metadata.ID); + item.clearValue(Metadata.CREATION_DATE); + ContentValues itemMergedValues = item.getMergedValues(); + + if(newMetadataValues.contains(itemMergedValues)) { + newMetadataValues.remove(itemMergedValues); + continue; + } + + // not matched. cut it + item.setId(id); + if (callback != null) { + callback.beforeDeleteMetadata(item); + } + metadataDao.delete(id); + dirty = true; + } + } finally { + cursor.close(); + } + + // everything that remains shall be written + for(ContentValues values : newMetadataValues) { + Metadata item = new Metadata(); + item.setCreationDate(DateUtilities.now()); + item.mergeWith(values); + metadataDao.persist(item); + dirty = true; + } + + return dirty; + } } diff --git a/astrid/src/main/java/com/todoroo/astrid/backup/TasksXmlExporter.java b/astrid/src/main/java/com/todoroo/astrid/backup/TasksXmlExporter.java index 4f58276f7..4d69a4a76 100644 --- a/astrid/src/main/java/com/todoroo/astrid/backup/TasksXmlExporter.java +++ b/astrid/src/main/java/com/todoroo/astrid/backup/TasksXmlExporter.java @@ -21,12 +21,12 @@ import com.todoroo.andlib.sql.Order; import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DialogUtilities; +import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.dao.TagDataDao; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; -import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.TaskService; import org.slf4j.Logger; @@ -60,7 +60,7 @@ public class TasksXmlExporter { // --- implementation private final TagDataDao tagDataDao; - private final MetadataService metadataService; + private final MetadataDao metadataDao; private final TaskService taskService; private final Preferences preferences; @@ -86,9 +86,9 @@ public class TasksXmlExporter { } @Inject - public TasksXmlExporter(TagDataDao tagDataDao, MetadataService metadataService, TaskService taskService, Preferences preferences) { + public TasksXmlExporter(TagDataDao tagDataDao, MetadataDao metadataDao, TaskService taskService, Preferences preferences) { this.tagDataDao = tagDataDao; - this.metadataService = metadataService; + this.metadataDao = metadataDao; this.taskService = taskService; this.preferences = preferences; } @@ -214,7 +214,7 @@ public class TasksXmlExporter { } private synchronized void serializeMetadata(Task task) throws IOException { - TodorooCursor cursor = metadataService.query(Query.select( + TodorooCursor cursor = metadataDao.query(Query.select( Metadata.PROPERTIES).where(MetadataCriteria.byTask(task.getId()))); try { for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { diff --git a/astrid/src/main/java/com/todoroo/astrid/backup/TasksXmlImporter.java b/astrid/src/main/java/com/todoroo/astrid/backup/TasksXmlImporter.java index 153aeb38a..79bd16b30 100644 --- a/astrid/src/main/java/com/todoroo/astrid/backup/TasksXmlImporter.java +++ b/astrid/src/main/java/com/todoroo/astrid/backup/TasksXmlImporter.java @@ -24,11 +24,11 @@ import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.api.AstridApiConstants; +import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.TagDataDao; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; -import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.tags.TaskToTagMetadata; @@ -49,7 +49,7 @@ public class TasksXmlImporter { private static final Logger log = LoggerFactory.getLogger(TasksXmlImporter.class); private final TagDataDao tagDataDao; - private final MetadataService metadataService; + private final MetadataDao metadataDao; private final TaskService taskService; private Context context; @@ -72,9 +72,9 @@ public class TasksXmlImporter { } @Inject - public TasksXmlImporter(TagDataDao tagDataDao, MetadataService metadataService, TaskService taskService) { + public TasksXmlImporter(TagDataDao tagDataDao, MetadataDao metadataDao, TaskService taskService) { this.tagDataDao = tagDataDao; - this.metadataService = metadataService; + this.metadataDao = metadataDao; this.taskService = taskService; } @@ -276,7 +276,7 @@ public class TasksXmlImporter { deserializeModel(metadata, Metadata.PROPERTIES); metadata.setId(Metadata.NO_ID); metadata.setTask(currentTask.getId()); - metadataService.save(metadata); + metadataDao.persist(metadata); // Construct the TagData from Metadata // Fix for failed backup, Version before 4.6.10 diff --git a/astrid/src/main/java/com/todoroo/astrid/core/OldTaskPreferences.java b/astrid/src/main/java/com/todoroo/astrid/core/OldTaskPreferences.java index b54cbd902..03ad41cdb 100644 --- a/astrid/src/main/java/com/todoroo/astrid/core/OldTaskPreferences.java +++ b/astrid/src/main/java/com/todoroo/astrid/core/OldTaskPreferences.java @@ -19,9 +19,9 @@ import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.dao.Database; +import com.todoroo.astrid.dao.MetadataDao; 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; @@ -41,7 +41,7 @@ public class OldTaskPreferences extends TodorooPreferenceActivity { @Inject TaskDeleter taskDeleter; @Inject TaskService taskService; - @Inject MetadataService metadataService; + @Inject MetadataDao metadataDao; @Inject Database database; @Inject GCalHelper gcalHelper; @Inject Preferences preferences; @@ -195,7 +195,7 @@ public class OldTaskPreferences extends TodorooPreferenceActivity { cursor.close(); } int result = taskDeleter.purgeDeletedTasks(); - metadataService.removeDanglingMetadata(); + metadataDao.removeDanglingMetadata(); showResult(R.string.EPr_manage_purge_deleted_status, result); } }); diff --git a/astrid/src/main/java/com/todoroo/astrid/dao/MetadataDao.java b/astrid/src/main/java/com/todoroo/astrid/dao/MetadataDao.java index 848a9b891..1c4ff5702 100644 --- a/astrid/src/main/java/com/todoroo/astrid/dao/MetadataDao.java +++ b/astrid/src/main/java/com/todoroo/astrid/dao/MetadataDao.java @@ -10,9 +10,11 @@ import android.content.ContentValues; import com.todoroo.andlib.data.DatabaseDao; import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.sql.Criterion; +import com.todoroo.andlib.sql.Join; import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.astrid.data.Metadata; +import com.todoroo.astrid.data.Task; import java.util.ArrayList; import java.util.HashSet; @@ -109,11 +111,22 @@ public class MetadataDao extends DatabaseDao { @Override public boolean persist(Metadata item) { + if(!item.containsNonNullValue(Metadata.TASK)) { + throw new IllegalArgumentException("metadata needs to be attached to a task: " + item.getMergedValues()); //$NON-NLS-1$ + } if(!item.containsValue(Metadata.CREATION_DATE)) { item.setCreationDate(DateUtilities.now()); } return super.persist(item); } + + /** + * Clean up metadata. Typically called on startup + */ + public void removeDanglingMetadata() { + deleteWhere(Metadata.ID.in(Query.select(Metadata.ID).from(Metadata.TABLE).join(Join.left(Task.TABLE, + Metadata.TASK.eq(Task.ID))).where(Task.TITLE.isNull()))); + } } diff --git a/astrid/src/main/java/com/todoroo/astrid/gtasks/GtasksListFragment.java b/astrid/src/main/java/com/todoroo/astrid/gtasks/GtasksListFragment.java index a19496f74..1e7440164 100644 --- a/astrid/src/main/java/com/todoroo/astrid/gtasks/GtasksListFragment.java +++ b/astrid/src/main/java/com/todoroo/astrid/gtasks/GtasksListFragment.java @@ -18,12 +18,11 @@ import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.api.AstridApiConstants; +import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.StoreObjectDao; import com.todoroo.astrid.dao.TaskAttachmentDao; import com.todoroo.astrid.data.StoreObject; import com.todoroo.astrid.data.Task; -import com.todoroo.astrid.service.MetadataService; -import org.tasks.sync.SyncThrottle; import com.todoroo.astrid.service.SyncV2Service; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.subtasks.OrderedListFragmentHelperInterface; @@ -34,6 +33,7 @@ import org.tasks.R; import org.tasks.injection.ForActivity; import org.tasks.preferences.ActivityPreferences; import org.tasks.sync.IndeterminateProgressBarSyncResultCallback; +import org.tasks.sync.SyncThrottle; import javax.inject.Inject; @@ -42,7 +42,7 @@ public class GtasksListFragment extends SubtasksListFragment { public static final String TOKEN_STORE_ID = "storeId"; //$NON-NLS-1$ @Inject TaskService taskService; - @Inject MetadataService metadataService; + @Inject MetadataDao metadataDao; @Inject StoreObjectDao storeObjectDao; @Inject GtasksTaskListUpdater gtasksTaskListUpdater; @Inject GtasksMetadataService gtasksMetadataService; @@ -66,7 +66,7 @@ public class GtasksListFragment extends SubtasksListFragment { @Override protected OrderedListFragmentHelperInterface createFragmentHelper() { - return new OrderedMetadataListFragmentHelper<>(preferences, taskAttachmentDao, taskService, metadataService, this, gtasksTaskListUpdater); + return new OrderedMetadataListFragmentHelper<>(preferences, taskAttachmentDao, taskService, metadataDao, this, gtasksTaskListUpdater); } @Override diff --git a/astrid/src/main/java/com/todoroo/astrid/gtasks/GtasksMetadataService.java b/astrid/src/main/java/com/todoroo/astrid/gtasks/GtasksMetadataService.java index cca9630dd..70dc7511a 100644 --- a/astrid/src/main/java/com/todoroo/astrid/gtasks/GtasksMetadataService.java +++ b/astrid/src/main/java/com/todoroo/astrid/gtasks/GtasksMetadataService.java @@ -21,7 +21,6 @@ import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.StoreObject; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.gtasks.sync.GtasksTaskContainer; -import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.subtasks.OrderedMetadataListUpdater.OrderedListIterator; import com.todoroo.astrid.utility.SyncMetadataService; @@ -41,12 +40,9 @@ import javax.inject.Singleton; @Singleton public final class GtasksMetadataService extends SyncMetadataService { - private MetadataService metadataService; - @Inject - public GtasksMetadataService(TaskDao taskDao, MetadataDao metadataDao, MetadataService metadataService) { + public GtasksMetadataService(TaskDao taskDao, MetadataDao metadataDao) { super(taskDao, metadataDao); - this.metadataService = metadataService; } public Criterion getLocalMatchCriteria(GtasksTaskContainer remoteTask) { @@ -111,7 +107,7 @@ public final class GtasksMetadataService extends SyncMetadataService cursor = metadataService.query(query); + TodorooCursor cursor = metadataDao.query(query); try { for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { long taskId = cursor.get(Metadata.TASK); diff --git a/astrid/src/main/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java b/astrid/src/main/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java index 8d8205317..0004cabbd 100644 --- a/astrid/src/main/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java +++ b/astrid/src/main/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java @@ -19,7 +19,6 @@ import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.StoreObject; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.gtasks.sync.GtasksSyncService; -import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.subtasks.OrderedMetadataListUpdater; import org.slf4j.Logger; @@ -51,19 +50,16 @@ public class GtasksTaskListUpdater extends OrderedMetadataListUpdater items = new ArrayList<>(); @@ -100,7 +100,7 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene public EditNoteActivity( Preferences preferences, - MetadataService metadataService, + MetadataDao metadataDao, UserActivityDao userActivityDao, TaskService taskService, Fragment fragment, @@ -108,7 +108,7 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene long t) { super(fragment.getActivity()); this.preferences = preferences; - this.metadataService = metadataService; + this.metadataDao = metadataDao; this.userActivityDao = userActivityDao; this.taskService = taskService; @@ -260,7 +260,7 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene private void setUpListAdapter() { items.clear(); this.removeAllViews(); - TodorooCursor notes = metadataService.query( + TodorooCursor notes = metadataDao.query( Query.select(Metadata.PROPERTIES).where( MetadataCriteria.byTaskAndwithKey(task.getId(), NoteMetadata.METADATA_KEY))); diff --git a/astrid/src/main/java/com/todoroo/astrid/service/MetadataService.java b/astrid/src/main/java/com/todoroo/astrid/service/MetadataService.java deleted file mode 100644 index cc5d220e5..000000000 --- a/astrid/src/main/java/com/todoroo/astrid/service/MetadataService.java +++ /dev/null @@ -1,148 +0,0 @@ -/** - * Copyright (c) 2012 Todoroo Inc - * - * See the file "LICENSE" for the full license governing this code. - */ -package com.todoroo.astrid.service; - -import android.content.ContentValues; - -import com.todoroo.andlib.data.TodorooCursor; -import com.todoroo.andlib.sql.Criterion; -import com.todoroo.andlib.sql.Join; -import com.todoroo.andlib.sql.Query; -import com.todoroo.andlib.utility.DateUtilities; -import com.todoroo.astrid.dao.MetadataDao; -import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; -import com.todoroo.astrid.data.Metadata; -import com.todoroo.astrid.data.Task; - -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 - * - */ -@Singleton -public class MetadataService { - - public static interface SynchronizeMetadataCallback { - public void beforeDeleteMetadata(Metadata m); - } - - private final MetadataDao metadataDao; - - @Inject - public MetadataService(MetadataDao metadataDao) { - this.metadataDao = metadataDao; - } - - // --- service layer - - /** - * Clean up metadata. Typically called on startup - */ - public void removeDanglingMetadata() { - metadataDao.deleteWhere(Metadata.ID.in(Query.select(Metadata.ID).from(Metadata.TABLE).join(Join.left(Task.TABLE, - Metadata.TASK.eq(Task.ID))).where(Task.TITLE.isNull()))); - } - - /** - * Query underlying database - */ - public TodorooCursor query(Query query) { - return metadataDao.query(query); - } - - /** - * Delete from metadata table where rows match a certain condition - * @param where predicate for which rows to update - * @param metadata values to set - */ - public void update(Criterion where, Metadata metadata) { - metadataDao.update(where, metadata); - } - - /** - * Save a single piece of metadata - */ - public void save(Metadata metadata) { - if(!metadata.containsNonNullValue(Metadata.TASK)) { - throw new IllegalArgumentException("metadata needs to be attached to a task: " + metadata.getMergedValues()); //$NON-NLS-1$ - } - - metadataDao.persist(metadata); - } - - /** - * Synchronize metadata for given task id - * @return true if there were changes - */ - public boolean synchronizeMetadata(long taskId, ArrayList metadata, - Criterion metadataCriterion, SynchronizeMetadataCallback callback) { - boolean dirty = false; - HashSet newMetadataValues = new HashSet<>(); - for(Metadata metadatum : metadata) { - metadatum.setTask(taskId); - metadatum.clearValue(Metadata.CREATION_DATE); - metadatum.clearValue(Metadata.ID); - - ContentValues values = metadatum.getMergedValues(); - for(Entry entry : values.valueSet()) { - if(entry.getKey().startsWith("value")) //$NON-NLS-1$ - { - values.put(entry.getKey(), entry.getValue().toString()); - } - } - newMetadataValues.add(values); - } - - TodorooCursor cursor = metadataDao.query(Query.select(Metadata.PROPERTIES).where(Criterion.and(MetadataCriteria.byTask(taskId), - metadataCriterion))); - try { - // try to find matches within our metadata list - for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { - Metadata item = new Metadata(cursor); - long id = item.getId(); - - // clear item id when matching with incoming values - item.clearValue(Metadata.ID); - item.clearValue(Metadata.CREATION_DATE); - ContentValues itemMergedValues = item.getMergedValues(); - - if(newMetadataValues.contains(itemMergedValues)) { - newMetadataValues.remove(itemMergedValues); - continue; - } - - // not matched. cut it - item.setId(id); - if (callback != null) { - callback.beforeDeleteMetadata(item); - } - metadataDao.delete(id); - dirty = true; - } - } finally { - cursor.close(); - } - - // everything that remains shall be written - for(ContentValues values : newMetadataValues) { - Metadata item = new Metadata(); - item.setCreationDate(DateUtilities.now()); - item.mergeWith(values); - metadataDao.persist(item); - dirty = true; - } - - return dirty; - } -} diff --git a/astrid/src/main/java/com/todoroo/astrid/service/StartupService.java b/astrid/src/main/java/com/todoroo/astrid/service/StartupService.java index 5194b3493..f7a48f325 100644 --- a/astrid/src/main/java/com/todoroo/astrid/service/StartupService.java +++ b/astrid/src/main/java/com/todoroo/astrid/service/StartupService.java @@ -30,6 +30,7 @@ import com.todoroo.astrid.backup.BackupConstants; import com.todoroo.astrid.backup.BackupService; import com.todoroo.astrid.backup.TasksXmlImporter; import com.todoroo.astrid.dao.Database; +import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.dao.TagDataDao; import com.todoroo.astrid.data.Metadata; @@ -73,7 +74,7 @@ public class StartupService { private final Database database; private final GtasksPreferenceService gtasksPreferenceService; private final GtasksSyncService gtasksSyncService; - private final MetadataService metadataService; + private final MetadataDao metadataDao; private final Preferences preferences; private final TasksXmlImporter xmlImporter; private final CalendarAlarmScheduler calendarAlarmScheduler; @@ -83,7 +84,7 @@ public class StartupService { public StartupService(UpgradeService upgradeService, TaskService taskService, TagDataDao tagDataDao, Database database, GtasksPreferenceService gtasksPreferenceService, - GtasksSyncService gtasksSyncService, MetadataService metadataService, + GtasksSyncService gtasksSyncService, MetadataDao metadataDao, Preferences preferences, TasksXmlImporter xmlImporter, CalendarAlarmScheduler calendarAlarmScheduler, TaskDeleter taskDeleter) { this.upgradeService = upgradeService; @@ -92,7 +93,7 @@ public class StartupService { this.database = database; this.gtasksPreferenceService = gtasksPreferenceService; this.gtasksSyncService = gtasksSyncService; - this.metadataService = metadataService; + this.metadataDao = metadataDao; this.preferences = preferences; this.xmlImporter = xmlImporter; this.calendarAlarmScheduler = calendarAlarmScheduler; @@ -216,7 +217,7 @@ public class StartupService { if (values != null) { if (values.containsKey(TagData.NAME.name)) { m.setValue(TaskToTagMetadata.TAG_NAME, model.getName()); - metadataService.update(Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY), + metadataDao.update(Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY), TaskToTagMetadata.TAG_UUID.eq(model.getUUID())), m); } } diff --git a/astrid/src/main/java/com/todoroo/astrid/service/SynchronizeMetadataCallback.java b/astrid/src/main/java/com/todoroo/astrid/service/SynchronizeMetadataCallback.java new file mode 100644 index 000000000..ce0ece695 --- /dev/null +++ b/astrid/src/main/java/com/todoroo/astrid/service/SynchronizeMetadataCallback.java @@ -0,0 +1,7 @@ +package com.todoroo.astrid.service; + +import com.todoroo.astrid.data.Metadata; + +public interface SynchronizeMetadataCallback { + public void beforeDeleteMetadata(Metadata m); +} diff --git a/astrid/src/main/java/com/todoroo/astrid/service/TaskService.java b/astrid/src/main/java/com/todoroo/astrid/service/TaskService.java index e5e5aba9b..3a35138c8 100644 --- a/astrid/src/main/java/com/todoroo/astrid/service/TaskService.java +++ b/astrid/src/main/java/com/todoroo/astrid/service/TaskService.java @@ -15,6 +15,7 @@ import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.astrid.api.PermaSql; +import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.RemoteModel; @@ -63,17 +64,17 @@ public class TaskService { private final FilterCounter filterCounter; private final RefreshScheduler refreshScheduler; private final TagService tagService; - private final MetadataService metadataService; + private final MetadataDao metadataDao; @Inject public TaskService(TaskDao taskDao, Broadcaster broadcaster, FilterCounter filterCounter, - RefreshScheduler refreshScheduler, TagService tagService, MetadataService metadataService) { + RefreshScheduler refreshScheduler, TagService tagService, MetadataDao metadataDao) { this.taskDao = taskDao; this.broadcaster = broadcaster; this.filterCounter = filterCounter; this.refreshScheduler = refreshScheduler; this.tagService = tagService; - this.metadataService = metadataService; + this.metadataDao = metadataDao; } // --- service layer @@ -289,7 +290,7 @@ public class TaskService { tagService.createLink(task, metadata.getValue(TaskToTagMetadata.TAG_NAME)); } } else { - metadataService.save(metadata); + metadataDao.persist(metadata); } } diff --git a/astrid/src/main/java/com/todoroo/astrid/subtasks/OrderedMetadataListFragmentHelper.java b/astrid/src/main/java/com/todoroo/astrid/subtasks/OrderedMetadataListFragmentHelper.java index 10ec6643b..e6a4f7f63 100644 --- a/astrid/src/main/java/com/todoroo/astrid/subtasks/OrderedMetadataListFragmentHelper.java +++ b/astrid/src/main/java/com/todoroo/astrid/subtasks/OrderedMetadataListFragmentHelper.java @@ -23,10 +23,10 @@ import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.adapter.TaskAdapter; import com.todoroo.astrid.adapter.TaskAdapter.OnCompletedTaskListener; import com.todoroo.astrid.api.Filter; +import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.TaskAttachmentDao; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Task; -import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.subtasks.OrderedMetadataListUpdater.Node; import com.todoroo.astrid.subtasks.OrderedMetadataListUpdater.OrderedListNodeVisitor; @@ -55,17 +55,17 @@ public class OrderedMetadataListFragmentHelper implements OrderedListFragm private final ActivityPreferences preferences; private final TaskAttachmentDao taskAttachmentDao; private final TaskService taskService; - private final MetadataService metadataService; + private final MetadataDao metadataDao; private DraggableTaskAdapter taskAdapter; private LIST list; - public OrderedMetadataListFragmentHelper(ActivityPreferences preferences, TaskAttachmentDao taskAttachmentDao, TaskService taskService, MetadataService metadataService, TaskListFragment fragment, OrderedMetadataListUpdater updater) { + public OrderedMetadataListFragmentHelper(ActivityPreferences preferences, TaskAttachmentDao taskAttachmentDao, TaskService taskService, MetadataDao metadataDao, TaskListFragment fragment, OrderedMetadataListUpdater updater) { this.preferences = preferences; this.taskAttachmentDao = taskAttachmentDao; this.taskService = taskService; - this.metadataService = metadataService; + this.metadataDao = metadataDao; this.fragment = fragment; this.updater = updater; } @@ -245,7 +245,7 @@ public class OrderedMetadataListFragmentHelper implements OrderedListFragm if(!TextUtils.isEmpty(childTask.getRecurrence())) { Metadata metadata = updater.getTaskMetadata(node.taskId); metadata.setValue(updater.indentProperty(), parentIndent); - metadataService.save(metadata); + metadataDao.persist(metadata); } model.setId(node.taskId); diff --git a/astrid/src/main/java/com/todoroo/astrid/subtasks/OrderedMetadataListUpdater.java b/astrid/src/main/java/com/todoroo/astrid/subtasks/OrderedMetadataListUpdater.java index 50a7028fa..bbbcbc6ab 100644 --- a/astrid/src/main/java/com/todoroo/astrid/subtasks/OrderedMetadataListUpdater.java +++ b/astrid/src/main/java/com/todoroo/astrid/subtasks/OrderedMetadataListUpdater.java @@ -7,9 +7,9 @@ package com.todoroo.astrid.subtasks; import com.todoroo.andlib.data.Property.IntegerProperty; import com.todoroo.andlib.data.Property.LongProperty; +import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Task; -import com.todoroo.astrid.service.MetadataService; import java.util.ArrayList; import java.util.concurrent.atomic.AtomicBoolean; @@ -19,7 +19,7 @@ import java.util.concurrent.atomic.AtomicReference; abstract public class OrderedMetadataListUpdater { - private MetadataService metadataService; + private MetadataDao metadataDao; public interface OrderedListIterator { public void processTask(long taskId, Metadata metadata); @@ -39,8 +39,8 @@ abstract public class OrderedMetadataListUpdater { abstract protected Metadata createEmptyMetadata(LIST list, long taskId); - public OrderedMetadataListUpdater(MetadataService metadataService) { - this.metadataService = metadataService; + public OrderedMetadataListUpdater(MetadataDao metadataDao) { + this.metadataDao = metadataDao; } protected void beforeIndent(LIST list) { @@ -291,7 +291,7 @@ abstract public class OrderedMetadataListUpdater { if(metadata.getSetValues().size() == 0) { return; } - metadataService.save(metadata); + metadataDao.persist(metadata); } // --- task cascading operations diff --git a/astrid/src/main/java/com/todoroo/astrid/tags/TagService.java b/astrid/src/main/java/com/todoroo/astrid/tags/TagService.java index 2d5b9d632..4a35c40ee 100644 --- a/astrid/src/main/java/com/todoroo/astrid/tags/TagService.java +++ b/astrid/src/main/java/com/todoroo/astrid/tags/TagService.java @@ -26,7 +26,6 @@ import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.RemoteModel; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; -import com.todoroo.astrid.service.MetadataService; import org.tasks.R; @@ -55,13 +54,11 @@ public final class TagService { }; private final MetadataDao metadataDao; - private final MetadataService metadataService; private final TagDataDao tagDataDao; @Inject - public TagService(MetadataDao metadataDao, MetadataService metadataService, TagDataDao tagDataDao) { + public TagService(MetadataDao metadataDao, TagDataDao tagDataDao) { this.metadataDao = metadataDao; - this.metadataService = metadataService; this.tagDataDao = tagDataDao; } @@ -259,7 +256,7 @@ public final class TagService { */ public String getTagWithCase(String tag) { String tagWithCase = tag; - TodorooCursor tagMetadata = metadataService.query(Query.select(TaskToTagMetadata.TAG_NAME).where(TagService.tagEqIgnoreCase(tag, Criterion.all)).limit(1)); + TodorooCursor tagMetadata = metadataDao.query(Query.select(TaskToTagMetadata.TAG_NAME).where(TagService.tagEqIgnoreCase(tag, Criterion.all)).limit(1)); try { if (tagMetadata.getCount() > 0) { tagMetadata.moveToFirst(); diff --git a/astrid/src/main/java/org/tasks/Tasks.java b/astrid/src/main/java/org/tasks/Tasks.java index 15e5d10e5..e678fe5e9 100644 --- a/astrid/src/main/java/org/tasks/Tasks.java +++ b/astrid/src/main/java/org/tasks/Tasks.java @@ -14,7 +14,6 @@ import com.todoroo.astrid.gtasks.GtasksMetadataService; import com.todoroo.astrid.gtasks.GtasksPreferenceService; import com.todoroo.astrid.gtasks.GtasksTaskListUpdater; import com.todoroo.astrid.gtasks.sync.GtasksSyncService; -import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.SyncV2Service; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.UpgradeService; @@ -40,7 +39,6 @@ public class Tasks extends InjectingApplication { @Inject TaskAttachmentDao taskAttachmentDao; @Inject TaskListMetadataDao taskListMetadataDao; @Inject TaskService taskService; - @Inject MetadataService metadataService; @Inject UpgradeService upgradeService; @Inject SyncV2Service syncV2Service; @Inject GtasksPreferenceService gtasksPreferenceService;