diff --git a/astrid/plugin-src/com/todoroo/astrid/backup/BackupActivity.java b/astrid/plugin-src/com/todoroo/astrid/backup/BackupActivity.java index 940db6227..90cc90e52 100644 --- a/astrid/plugin-src/com/todoroo/astrid/backup/BackupActivity.java +++ b/astrid/plugin-src/com/todoroo/astrid/backup/BackupActivity.java @@ -35,13 +35,14 @@ public class BackupActivity extends Activity { FilePickerBuilder.OnFilePickedListener listener = new FilePickerBuilder.OnFilePickedListener() { @Override public void onFilePicked(String filePath) { - TasksXmlImporter.importTasks(filePath, null); + TasksXmlImporter.importTasks(BackupActivity.this, filePath, null); + finish(); } }; new FilePickerBuilder(this, getString(R.string.import_file_prompt), BackupConstants.getExportDirectory(), - listener); + listener).show(); } private void exportTasks() { diff --git a/astrid/plugin-src/com/todoroo/astrid/backup/TasksXmlImporter.java b/astrid/plugin-src/com/todoroo/astrid/backup/TasksXmlImporter.java index 329f7db3f..01ebb728e 100644 --- a/astrid/plugin-src/com/todoroo/astrid/backup/TasksXmlImporter.java +++ b/astrid/plugin-src/com/todoroo/astrid/backup/TasksXmlImporter.java @@ -48,8 +48,8 @@ public class TasksXmlImporter { * @param input * @param runAfterImport */ - public static void importTasks(String input, Runnable runAfterImport) { - new TasksXmlImporter(input, runAfterImport); + public static void importTasks(Context context, String input, Runnable runAfterImport) { + new TasksXmlImporter(context, input, runAfterImport); } // --- implementation @@ -60,7 +60,7 @@ public class TasksXmlImporter { private int skipCount; private final String input; - private final Context context = ContextManager.getContext(); + private final Context context; private final TaskService taskService = PluginServices.getTaskService(); private final MetadataService metadataService = PluginServices.getMetadataService(); private final ExceptionService exceptionService = PluginServices.getExceptionService(); @@ -78,8 +78,9 @@ public class TasksXmlImporter { * Import tasks. * @param runAfterImport optional runnable after import */ - private TasksXmlImporter(String input, final Runnable runAfterImport) { + private TasksXmlImporter(final Context context, String input, final Runnable runAfterImport) { this.input = input; + this.context = context; importHandler = new Handler(); importHandler.post(new Runnable() { @@ -199,12 +200,12 @@ public class TasksXmlImporter { while (xpp.next() != XmlPullParser.END_DOCUMENT) { String tag = xpp.getName(); - if (tag == null || xpp.getEventType() == XmlPullParser.END_TAG) { + + if(BackupConstants.TASK_TAG.equals(tag) && xpp.getEventType() == XmlPullParser.END_TAG) saveTags(); + else if (tag == null || xpp.getEventType() == XmlPullParser.END_TAG) continue; - } - - if (tag.equals(BackupConstants.TASK_TAG)) { + else if (tag.equals(BackupConstants.TASK_TAG)) { // Parse currentTask = parseTask(); } else if (currentTask != null) { @@ -324,7 +325,10 @@ public class TasksXmlImporter { /** helper method to set field on a task */ @SuppressWarnings("nls") private final boolean setTaskField(Task task, String field, String value) { - if(field.equals(LegacyTaskModel.NAME)) { + if(field.equals(LegacyTaskModel.ID)) { + // ignore + } + else if(field.equals(LegacyTaskModel.NAME)) { task.setValue(Task.TITLE, value); } else if(field.equals(LegacyTaskModel.NOTES)) { diff --git a/astrid/src/com/todoroo/astrid/legacy/LegacyTaskModel.java b/astrid/src/com/todoroo/astrid/legacy/LegacyTaskModel.java index 7d3b210ed..a121d7f97 100644 --- a/astrid/src/com/todoroo/astrid/legacy/LegacyTaskModel.java +++ b/astrid/src/com/todoroo/astrid/legacy/LegacyTaskModel.java @@ -4,6 +4,7 @@ package com.todoroo.astrid.legacy; @SuppressWarnings("nls") abstract public class LegacyTaskModel { + public static final String ID = "_id"; public static final String NAME = "name"; public static final String NOTES = "notes"; public static final String PROGRESS_PERCENTAGE = "progressPercentage";