From 0f0fcfb9ba4547a8db685cea237f60548e8c7644 Mon Sep 17 00:00:00 2001 From: Tim Su Date: Thu, 10 Jun 2010 23:47:18 -0700 Subject: [PATCH] Temporary commit with add --- .../todoroo/andlib/data/AbstractDatabase.java | 8 + .../service/DependencyInjectionService.java | 6 + .../service/Astrid2To3UpgradeHelper.java | 296 ++++++++++++++++++ .../astrid/service/UpgradeService.java | 286 ----------------- .../upgrade/Astrid2To3UpgradeTests.java | 4 +- 5 files changed, 312 insertions(+), 288 deletions(-) create mode 100644 astrid/src/com/todoroo/astrid/service/Astrid2To3UpgradeHelper.java diff --git a/astrid/common-src/com/todoroo/andlib/data/AbstractDatabase.java b/astrid/common-src/com/todoroo/andlib/data/AbstractDatabase.java index ac68b5e5c..bbdc05b8d 100644 --- a/astrid/common-src/com/todoroo/andlib/data/AbstractDatabase.java +++ b/astrid/common-src/com/todoroo/andlib/data/AbstractDatabase.java @@ -155,6 +155,14 @@ abstract public class AbstractDatabase { return database; } + /** + * @return human-readable database name for debugging + */ + @Override + public String toString() { + return "DB:" + getName(); + } + // --- helper classes /** diff --git a/astrid/common-src/com/todoroo/andlib/service/DependencyInjectionService.java b/astrid/common-src/com/todoroo/andlib/service/DependencyInjectionService.java index feaa2a4c8..2d0094a10 100644 --- a/astrid/common-src/com/todoroo/andlib/service/DependencyInjectionService.java +++ b/astrid/common-src/com/todoroo/andlib/service/DependencyInjectionService.java @@ -3,6 +3,8 @@ package com.todoroo.andlib.service; import java.lang.reflect.Field; import java.util.Arrays; +import android.util.Log; + /** * Simple Dependency Injection Service for Android. *

@@ -93,6 +95,9 @@ public class DependencyInjectionService { Object injection = injector.getInjection(caller, field); if (injection != null) { field.set(caller, injection); + Log.e("INJECTION", "injected " + caller.getClass().getSimpleName() + + "." + field.getName() + " -> " + + injection.toString()); // (debug) return; } } @@ -136,5 +141,6 @@ public class DependencyInjectionService { */ public synchronized void setInjectors(AbstractDependencyInjector[] injectors) { this.injectors = injectors; + Log.e("INJECTION SETTING", "Set Injector List to: " + Arrays.asList(injectors)); // (debug) } } diff --git a/astrid/src/com/todoroo/astrid/service/Astrid2To3UpgradeHelper.java b/astrid/src/com/todoroo/astrid/service/Astrid2To3UpgradeHelper.java new file mode 100644 index 000000000..f914b5e66 --- /dev/null +++ b/astrid/src/com/todoroo/astrid/service/Astrid2To3UpgradeHelper.java @@ -0,0 +1,296 @@ +package com.todoroo.astrid.service; + +import java.util.HashMap; +import java.util.Map.Entry; + +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import com.timsu.astrid.data.AbstractController; +import com.timsu.astrid.data.alerts.Alert; +import com.timsu.astrid.data.task.AbstractTaskModel; +import com.todoroo.andlib.data.AbstractModel; +import com.todoroo.andlib.data.GenericDao; +import com.todoroo.andlib.data.Property; +import com.todoroo.andlib.data.Property.PropertyVisitor; +import com.todoroo.andlib.service.Autowired; +import com.todoroo.andlib.service.ContextManager; +import com.todoroo.andlib.service.DependencyInjectionService; +import com.todoroo.astrid.alarms.Alarm; +import com.todoroo.astrid.alarms.AlarmsDatabase; +import com.todoroo.astrid.dao.Database; +import com.todoroo.astrid.dao.MetadataDao; +import com.todoroo.astrid.dao.TaskDao; +import com.todoroo.astrid.model.Metadata; +import com.todoroo.astrid.model.Task; +import com.todoroo.astrid.tags.DataService; + +public class Astrid2To3UpgradeHelper { + + @Autowired + private TaskDao taskDao; + + @Autowired + private MetadataDao metadataDao; + + @Autowired + private Database database; + + @Autowired + private String tasksTable; + + @Autowired + private String tagsTable; + + @Autowired + private String tagTaskTable; + + @Autowired + private String alertsTable; + + // --- implementation + + public Astrid2To3UpgradeHelper() { + DependencyInjectionService.getInstance().inject(this); + } + + + /** + * Upgrade helper class that reads a database + */ + private static class Astrid2UpgradeHelper extends SQLiteOpenHelper { + + public Astrid2UpgradeHelper(Context context, String name, + CursorFactory factory, int version) { + super(context, name, factory, version); + } + + @Override + public void onCreate(SQLiteDatabase db) { + // do nothing + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + // do nothing + } + + } + + /** + * Perform the upgrade from Astrid 2 to Astrid 3 + */ + public void upgrade2To3() { + Context context = ContextManager.getContext(); + + database.openForWriting(); + + // --- upgrade tasks table + HashMap> propertyMap = + new HashMap>(); + propertyMap.put(AbstractController.KEY_ROWID, Task.ID); + propertyMap.put(AbstractTaskModel.NAME, Task.TITLE); + propertyMap.put(AbstractTaskModel.NOTES, Task.NOTES); + // don't update progress percentage, we don't use this anymore + propertyMap.put(AbstractTaskModel.IMPORTANCE, Task.IMPORTANCE); + propertyMap.put(AbstractTaskModel.ESTIMATED_SECONDS, Task.ESTIMATED_SECONDS); + propertyMap.put(AbstractTaskModel.ELAPSED_SECONDS, Task.ELAPSED_SECONDS); + propertyMap.put(AbstractTaskModel.TIMER_START, Task.TIMER_START); + propertyMap.put(AbstractTaskModel.DEFINITE_DUE_DATE, Task.DUE_DATE); + propertyMap.put(AbstractTaskModel.PREFERRED_DUE_DATE, Task.PREFERRED_DUE_DATE); + propertyMap.put(AbstractTaskModel.HIDDEN_UNTIL, Task.HIDDEN_UNTIL); + propertyMap.put(AbstractTaskModel.POSTPONE_COUNT, Task.POSTPONE_COUNT); + propertyMap.put(AbstractTaskModel.NOTIFICATIONS, Task.NOTIFICATIONS); + propertyMap.put(AbstractTaskModel.NOTIFICATION_FLAGS, Task.NOTIFICATION_FLAGS); + propertyMap.put(AbstractTaskModel.LAST_NOTIFIED, Task.LAST_NOTIFIED); + propertyMap.put(AbstractTaskModel.REPEAT, Task.REPEAT); + propertyMap.put(AbstractTaskModel.CREATION_DATE, Task.CREATION_DATE); + propertyMap.put(AbstractTaskModel.COMPLETION_DATE, Task.COMPLETION_DATE); + propertyMap.put(AbstractTaskModel.CALENDAR_URI, Task.CALENDAR_URI); + propertyMap.put(AbstractTaskModel.FLAGS, Task.FLAGS); + upgradeTable(context, tasksTable, + propertyMap, new Task(), taskDao); + + // --- upgrade tags tables + migrateTagsToMetadata(); + + // --- upgrade alerts + AlarmsDatabase alarmsDatabase = new AlarmsDatabase(); + alarmsDatabase.openForWriting(); + propertyMap.clear(); + propertyMap.put(AbstractController.KEY_ROWID, Alarm.ID); + propertyMap.put(Alert.TASK, Alarm.TASK); + propertyMap.put(Alert.DATE, Alarm.TIME); + upgradeTable(context, alertsTable, propertyMap, new Alarm(), + alarmsDatabase.getDao()); + alarmsDatabase.close(); + + // --- upgrade RTM sync mappings (?) + + database.close(); + } + + // --- database upgrade helpers + + protected static final class UpgradeVisitorContainer { + public int columnIndex; + public Cursor cursor; + public AbstractModel model; + } + + /** + * Visitor that reads from a visitor container and writes to the model + * @author Tim Su + * + */ + @SuppressWarnings("nls") + protected static final class ColumnUpgradeVisitor implements PropertyVisitor { + @Override + public Void visitDouble(Property property, UpgradeVisitorContainer data) { + double value = data.cursor.getDouble(data.columnIndex); + data.model.setValue(property, value); + Log.d("upgrade", "wrote " + value + " to -> " + property + " of model id " + data.cursor.getLong(1)); + return null; + } + + @Override + public Void visitInteger(Property property, UpgradeVisitorContainer data) { + int value; + + // convert long date -> integer + if(property == Task.COMPLETION_DATE || + property == Task.CREATION_DATE || + property == Task.DELETION_DATE || + property == Task.DUE_DATE || + property == Task.HIDDEN_UNTIL || + property == Task.LAST_NOTIFIED || + property == Task.MODIFICATION_DATE || + property == Task.PREFERRED_DUE_DATE || + property == Alarm.TIME) + value = (int) (data.cursor.getLong(data.columnIndex) / 1000L); + else + value = data.cursor.getInt(data.columnIndex); + + data.model.setValue(property, value); + Log.d("upgrade", "wrote " + value + " to -> " + property + " of model id " + data.cursor.getLong(1)); + return null; + } + + @Override + public Void visitLong(Property property, UpgradeVisitorContainer data) { + long value = data.cursor.getLong(data.columnIndex); + data.model.setValue(property, value); + Log.d("upgrade", "wrote " + value + " to -> " + property + " of model id " + data.cursor.getLong(1)); + return null; + } + + @Override + public Void visitString(Property property, UpgradeVisitorContainer data) { + String value = data.cursor.getString(data.columnIndex); + data.model.setValue(property, value); + Log.d("upgrade", "wrote " + value + " to -> " + property + " of model id " + data.cursor.getLong(1)); + return null; + } + } + + /** + * Helper that reads entries from legacy database and row-by-row + * creates new models and saves them. + * + * @param context + * @param legacyTable + * @param propertyMap + * @param model + * @param dao + */ + @SuppressWarnings("nls") + private static final void upgradeTable(Context context, String legacyTable, + HashMap> propertyMap, TYPE model, + GenericDao dao) { + + if(!checkIfDatabaseExists(context, legacyTable)) + return; + + SQLiteDatabase upgradeDb = new Astrid2UpgradeHelper(context, legacyTable, + null, 1).getReadableDatabase(); + + Cursor cursor = upgradeDb.rawQuery("SELECT * FROM " + legacyTable, null); + UpgradeVisitorContainer container = new UpgradeVisitorContainer(); + container.cursor = cursor; + container.model = model; + ColumnUpgradeVisitor visitor = new ColumnUpgradeVisitor(); + for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { + model.clear(); + for(Entry> entry : propertyMap.entrySet()) { + container.columnIndex = cursor.getColumnIndex(entry.getKey()); + entry.getValue().accept(visitor, container); + } + dao.createItem(container.model); + } + + upgradeDb.close(); + } + + private static boolean checkIfDatabaseExists(Context context, String legacyTable) { + return context.getDatabasePath(legacyTable).exists(); + } + + /** + * Move data from tags tables into metadata table. We do this by looping + * through both the tags and tagTaskMap databases, reading data from + * both and adding to the Metadata table. This way, we are able to + * do everything in one pass without loading too much into memory + */ + @SuppressWarnings("nls") + private void migrateTagsToMetadata() { + Context context = ContextManager.getContext(); + + if(!checkIfDatabaseExists(context, tagsTable) || + !checkIfDatabaseExists(context, tagTaskTable)) + return; + + SQLiteDatabase tagsDb = new Astrid2UpgradeHelper(context, tagsTable, + null, 1).getReadableDatabase(); + SQLiteDatabase tagTaskDb = new Astrid2UpgradeHelper(context, tagTaskTable, + null, 1).getReadableDatabase(); + + Cursor tagCursor = tagsDb.rawQuery("SELECT _id, name FROM " + tagsTable + + " ORDER BY _id ASC", null); + Cursor mapCursor = tagTaskDb.rawQuery("SELECT tag, task FROM " + tagTaskTable + + " ORDER BY tag ASC", null); + + if(tagCursor.getCount() == 0) + return; + + Metadata metadata = new Metadata(); + metadata.setValue(Metadata.KEY, DataService.KEY); + long tagId = -1; + String tag = null; + for(mapCursor.moveToFirst(); !mapCursor.isAfterLast(); mapCursor.moveToNext()) { + long mapTagId = mapCursor.getLong(1); + + while(mapTagId > tagId && !tagCursor.isLast()) { + tagCursor.moveToNext(); + tagId = tagCursor.getLong(1); + } + + if(mapTagId == tagId) { + if(tag == null) + tag = tagCursor.getString(2); + long task = mapCursor.getLong(2); + metadata.setValue(Metadata.TASK, task); + metadata.setValue(Metadata.VALUE, tag); + metadataDao.createItem(metadata); + } + } + + tagCursor.close(); + mapCursor.close(); + } + + +} diff --git a/astrid/src/com/todoroo/astrid/service/UpgradeService.java b/astrid/src/com/todoroo/astrid/service/UpgradeService.java index 5327a624a..30d52d90e 100644 --- a/astrid/src/com/todoroo/astrid/service/UpgradeService.java +++ b/astrid/src/com/todoroo/astrid/service/UpgradeService.java @@ -1,67 +1,14 @@ package com.todoroo.astrid.service; -import java.util.HashMap; -import java.util.Map.Entry; - import android.app.AlertDialog; -import android.content.Context; -import android.database.Cursor; -import android.database.sqlite.SQLiteDatabase; -import android.database.sqlite.SQLiteOpenHelper; -import android.database.sqlite.SQLiteDatabase.CursorFactory; -import android.util.Log; import android.webkit.WebView; import com.timsu.astrid.R; -import com.timsu.astrid.data.AbstractController; -import com.timsu.astrid.data.alerts.Alert; -import com.timsu.astrid.data.task.AbstractTaskModel; -import com.todoroo.andlib.data.AbstractModel; -import com.todoroo.andlib.data.GenericDao; -import com.todoroo.andlib.data.Property; -import com.todoroo.andlib.data.Property.PropertyVisitor; -import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.ContextManager; -import com.todoroo.andlib.service.DependencyInjectionService; -import com.todoroo.astrid.alarms.Alarm; -import com.todoroo.astrid.alarms.AlarmsDatabase; -import com.todoroo.astrid.dao.Database; -import com.todoroo.astrid.dao.MetadataDao; -import com.todoroo.astrid.dao.TaskDao; -import com.todoroo.astrid.model.Metadata; -import com.todoroo.astrid.model.Task; -import com.todoroo.astrid.tags.DataService; public final class UpgradeService { - @Autowired - private TaskDao taskDao; - - @Autowired - private MetadataDao metadataDao; - - @Autowired - private Database database; - - @Autowired - private String tasksTable; - - @Autowired - private String tagsTable; - - @Autowired - private String tagTaskTable; - - @Autowired - private String alertsTable; - - // --- implementation - - public UpgradeService() { - DependencyInjectionService.getInstance().inject(this); - } - /** * Perform upgrade from one version to the next. Needs to be called * on the UI thread so it can display a progress bar and then @@ -144,237 +91,4 @@ public final class UpgradeService { // --- database upgrade logic - /** - * Upgrade helper class that reads a database - */ - private static class Astrid2UpgradeHelper extends SQLiteOpenHelper { - - public Astrid2UpgradeHelper(Context context, String name, - CursorFactory factory, int version) { - super(context, name, factory, version); - } - - @Override - public void onCreate(SQLiteDatabase db) { - // do nothing - } - - @Override - public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { - // do nothing - } - - } - - /** - * Perform the upgrade from Astrid 2 to Astrid 3 - */ - public void upgrade2To3() { - Context context = ContextManager.getContext(); - - database.openForWriting(); - - // --- upgrade tasks table - HashMap> propertyMap = - new HashMap>(); - propertyMap.put(AbstractController.KEY_ROWID, Task.ID); - propertyMap.put(AbstractTaskModel.NAME, Task.TITLE); - propertyMap.put(AbstractTaskModel.NOTES, Task.NOTES); - // don't update progress percentage, we don't use this anymore - propertyMap.put(AbstractTaskModel.IMPORTANCE, Task.IMPORTANCE); - propertyMap.put(AbstractTaskModel.ESTIMATED_SECONDS, Task.ESTIMATED_SECONDS); - propertyMap.put(AbstractTaskModel.ELAPSED_SECONDS, Task.ELAPSED_SECONDS); - propertyMap.put(AbstractTaskModel.TIMER_START, Task.TIMER_START); - propertyMap.put(AbstractTaskModel.DEFINITE_DUE_DATE, Task.DUE_DATE); - propertyMap.put(AbstractTaskModel.PREFERRED_DUE_DATE, Task.PREFERRED_DUE_DATE); - propertyMap.put(AbstractTaskModel.HIDDEN_UNTIL, Task.HIDDEN_UNTIL); - propertyMap.put(AbstractTaskModel.POSTPONE_COUNT, Task.POSTPONE_COUNT); - propertyMap.put(AbstractTaskModel.NOTIFICATIONS, Task.NOTIFICATIONS); - propertyMap.put(AbstractTaskModel.NOTIFICATION_FLAGS, Task.NOTIFICATION_FLAGS); - propertyMap.put(AbstractTaskModel.LAST_NOTIFIED, Task.LAST_NOTIFIED); - propertyMap.put(AbstractTaskModel.REPEAT, Task.REPEAT); - propertyMap.put(AbstractTaskModel.CREATION_DATE, Task.CREATION_DATE); - propertyMap.put(AbstractTaskModel.COMPLETION_DATE, Task.COMPLETION_DATE); - propertyMap.put(AbstractTaskModel.CALENDAR_URI, Task.CALENDAR_URI); - propertyMap.put(AbstractTaskModel.FLAGS, Task.FLAGS); - upgradeTable(context, tasksTable, - propertyMap, new Task(), taskDao); - - // --- upgrade tags tables - migrateTagsToMetadata(); - - // --- upgrade alerts - AlarmsDatabase alarmsDatabase = new AlarmsDatabase(); - alarmsDatabase.openForWriting(); - propertyMap.clear(); - propertyMap.put(AbstractController.KEY_ROWID, Alarm.ID); - propertyMap.put(Alert.TASK, Alarm.TASK); - propertyMap.put(Alert.DATE, Alarm.TIME); - upgradeTable(context, alertsTable, propertyMap, new Alarm(), - alarmsDatabase.getDao()); - alarmsDatabase.close(); - - // --- upgrade RTM sync mappings (?) - - database.close(); - } - - // --- database upgrade helpers - - protected static final class UpgradeVisitorContainer { - public int columnIndex; - public Cursor cursor; - public AbstractModel model; - } - - /** - * Visitor that reads from a visitor container and writes to the model - * @author Tim Su - * - */ - @SuppressWarnings("nls") - protected static final class ColumnUpgradeVisitor implements PropertyVisitor { - @Override - public Void visitDouble(Property property, UpgradeVisitorContainer data) { - double value = data.cursor.getDouble(data.columnIndex); - data.model.setValue(property, value); - Log.d("upgrade", "wrote " + value + " to -> " + property + " of model id " + data.cursor.getLong(1)); - return null; - } - - @Override - public Void visitInteger(Property property, UpgradeVisitorContainer data) { - int value; - - // convert long date -> integer - if(property == Task.COMPLETION_DATE || - property == Task.CREATION_DATE || - property == Task.DELETION_DATE || - property == Task.DUE_DATE || - property == Task.HIDDEN_UNTIL || - property == Task.LAST_NOTIFIED || - property == Task.MODIFICATION_DATE || - property == Task.PREFERRED_DUE_DATE || - property == Alarm.TIME) - value = (int) (data.cursor.getLong(data.columnIndex) / 1000L); - else - value = data.cursor.getInt(data.columnIndex); - - data.model.setValue(property, value); - Log.d("upgrade", "wrote " + value + " to -> " + property + " of model id " + data.cursor.getLong(1)); - return null; - } - - @Override - public Void visitLong(Property property, UpgradeVisitorContainer data) { - long value = data.cursor.getLong(data.columnIndex); - data.model.setValue(property, value); - Log.d("upgrade", "wrote " + value + " to -> " + property + " of model id " + data.cursor.getLong(1)); - return null; - } - - @Override - public Void visitString(Property property, UpgradeVisitorContainer data) { - String value = data.cursor.getString(data.columnIndex); - data.model.setValue(property, value); - Log.d("upgrade", "wrote " + value + " to -> " + property + " of model id " + data.cursor.getLong(1)); - return null; - } - } - - /** - * Helper that reads entries from legacy database and row-by-row - * creates new models and saves them. - * - * @param context - * @param legacyTable - * @param propertyMap - * @param model - * @param dao - */ - @SuppressWarnings("nls") - private static final void upgradeTable(Context context, String legacyTable, - HashMap> propertyMap, TYPE model, - GenericDao dao) { - - if(!checkIfDatabaseExists(context, legacyTable)) - return; - - SQLiteDatabase upgradeDb = new Astrid2UpgradeHelper(context, legacyTable, - null, 1).getReadableDatabase(); - - Cursor cursor = upgradeDb.rawQuery("SELECT * FROM " + legacyTable, null); - UpgradeVisitorContainer container = new UpgradeVisitorContainer(); - container.cursor = cursor; - container.model = model; - ColumnUpgradeVisitor visitor = new ColumnUpgradeVisitor(); - for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { - model.clear(); - for(Entry> entry : propertyMap.entrySet()) { - container.columnIndex = cursor.getColumnIndex(entry.getKey()); - entry.getValue().accept(visitor, container); - } - dao.createItem(container.model); - } - - upgradeDb.close(); - } - - private static boolean checkIfDatabaseExists(Context context, String legacyTable) { - return context.getDatabasePath(legacyTable).exists(); - } - - /** - * Move data from tags tables into metadata table. We do this by looping - * through both the tags and tagTaskMap databases, reading data from - * both and adding to the Metadata table. This way, we are able to - * do everything in one pass without loading too much into memory - */ - @SuppressWarnings("nls") - private void migrateTagsToMetadata() { - Context context = ContextManager.getContext(); - - if(!checkIfDatabaseExists(context, tagsTable) || - !checkIfDatabaseExists(context, tagTaskTable)) - return; - - SQLiteDatabase tagsDb = new Astrid2UpgradeHelper(context, tagsTable, - null, 1).getReadableDatabase(); - SQLiteDatabase tagTaskDb = new Astrid2UpgradeHelper(context, tagTaskTable, - null, 1).getReadableDatabase(); - - Cursor tagCursor = tagsDb.rawQuery("SELECT _id, name FROM " + tagsTable + - " ORDER BY _id ASC", null); - Cursor mapCursor = tagTaskDb.rawQuery("SELECT tag, task FROM " + tagTaskTable + - " ORDER BY tag ASC", null); - - if(tagCursor.getCount() == 0) - return; - - Metadata metadata = new Metadata(); - metadata.setValue(Metadata.KEY, DataService.KEY); - long tagId = -1; - String tag = null; - for(mapCursor.moveToFirst(); !mapCursor.isAfterLast(); mapCursor.moveToNext()) { - long mapTagId = mapCursor.getLong(1); - - while(mapTagId > tagId && !tagCursor.isLast()) { - tagCursor.moveToNext(); - tagId = tagCursor.getLong(1); - } - - if(mapTagId == tagId) { - if(tag == null) - tag = tagCursor.getString(2); - long task = mapCursor.getLong(2); - metadata.setValue(Metadata.TASK, task); - metadata.setValue(Metadata.VALUE, tag); - metadataDao.createItem(metadata); - } - } - - tagCursor.close(); - mapCursor.close(); - } - } diff --git a/tests/src/com/todoroo/astrid/upgrade/Astrid2To3UpgradeTests.java b/tests/src/com/todoroo/astrid/upgrade/Astrid2To3UpgradeTests.java index 39b0a1bc4..cde6a612a 100644 --- a/tests/src/com/todoroo/astrid/upgrade/Astrid2To3UpgradeTests.java +++ b/tests/src/com/todoroo/astrid/upgrade/Astrid2To3UpgradeTests.java @@ -17,7 +17,7 @@ import com.todoroo.astrid.legacy.data.task.TaskIdentifier; import com.todoroo.astrid.legacy.data.task.TaskModelForEdit; import com.todoroo.astrid.legacy.data.task.AbstractTaskModel.RepeatInfo; import com.todoroo.astrid.model.Task; -import com.todoroo.astrid.service.UpgradeService; +import com.todoroo.astrid.service.Astrid2To3UpgradeHelper; import com.todoroo.astrid.tags.DataService; import com.todoroo.astrid.tags.DataService.Tag; import com.todoroo.astrid.test.DatabaseTestCase; @@ -28,7 +28,7 @@ public class Astrid2To3UpgradeTests extends DatabaseTestCase { TaskDao taskDao; public void upgrade2To3() { - new UpgradeService().upgrade2To3(); + new Astrid2To3UpgradeHelper().upgrade2To3(); } public static void assertDatesEqual(Date old, int newDate) {