diff options
2 files changed, 33 insertions, 8 deletions
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/externalization/DelegatingTaskExternalizer.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/externalization/DelegatingTaskExternalizer.java index 707610c77..c2c023c37 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/externalization/DelegatingTaskExternalizer.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/externalization/DelegatingTaskExternalizer.java @@ -53,9 +53,9 @@ import org.eclipse.mylyn.tasks.core.IAttributeContainer; import org.eclipse.mylyn.tasks.core.IRepositoryManager; import org.eclipse.mylyn.tasks.core.IRepositoryQuery; import org.eclipse.mylyn.tasks.core.ITask; -import org.eclipse.mylyn.tasks.core.TaskRepository; import org.eclipse.mylyn.tasks.core.ITask.PriorityLevel; import org.eclipse.mylyn.tasks.core.ITask.SynchronizationState; +import org.eclipse.mylyn.tasks.core.TaskRepository; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -70,12 +70,15 @@ import org.w3c.dom.NodeList; * * @author Mik Kersten * @author Steffen Pingel + * @author Mike Wu */ public final class DelegatingTaskExternalizer { static final String DEFAULT_PRIORITY = PriorityLevel.P3.toString(); - static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss.S z"; //$NON-NLS-1$ + static final String OUT_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss.S Z"; //$NON-NLS-1$ + + static final String IN_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss.S z"; //$NON-NLS-1$ static final String KEY_NOTIFIED_INCOMING = "NotifiedIncoming"; //$NON-NLS-1$ @@ -347,8 +350,7 @@ public final class DelegatingTaskExternalizer { if (date == null) { return ""; //$NON-NLS-1$ } - String f = DATE_FORMAT; - SimpleDateFormat format = new SimpleDateFormat(f, Locale.ENGLISH); + SimpleDateFormat format = new SimpleDateFormat(OUT_DATE_FORMAT, Locale.ENGLISH); return format.format(date); } @@ -356,8 +358,7 @@ public final class DelegatingTaskExternalizer { if (date == null) { return ""; //$NON-NLS-1$ } - String f = DATE_FORMAT; - SimpleDateFormat format = new SimpleDateFormat(f, Locale.ENGLISH); + SimpleDateFormat format = new SimpleDateFormat(OUT_DATE_FORMAT, Locale.ENGLISH); return format.format(date.getTime()); } @@ -638,8 +639,7 @@ public final class DelegatingTaskExternalizer { if ("".equals(dateString)) { //$NON-NLS-1$ return null; } - String formatString = DATE_FORMAT; - SimpleDateFormat format = new SimpleDateFormat(formatString, Locale.ENGLISH); + SimpleDateFormat format = new SimpleDateFormat(IN_DATE_FORMAT, Locale.ENGLISH); try { date = format.parse(dateString); } catch (ParseException e) { diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListExternalizationTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListExternalizationTest.java index 64f0b716a..df5de0c2a 100644 --- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListExternalizationTest.java +++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListExternalizationTest.java @@ -17,6 +17,7 @@ import java.util.Date; import java.util.HashSet; import java.util.Iterator; import java.util.Set; +import java.util.TimeZone; import junit.framework.TestCase; @@ -44,6 +45,7 @@ import org.eclipse.mylyn.tasks.ui.TasksUi; /** * @author Robert Elves * @author Steffen Pingel + * @author Mike Wu */ public class TaskListExternalizationTest extends TestCase { @@ -583,6 +585,29 @@ public class TaskListExternalizationTest extends TestCase { assertEquals(task.getScheduledForDate(), readTask.getScheduledForDate()); } + // test case for bug 342086 + public void testDatesTimeZone() throws Exception { + TaskTestUtil.resetTaskListAndRepositories(); + + TimeZone.setDefault(TimeZone.getTimeZone("PRC")); + AbstractTask task = new LocalTask("1", "task 1"); + Date creationDate = new Date(); + task.setCreationDate(creationDate); + TasksUiPlugin.getTaskList().addTask(task); + assertEquals(1, TasksUiPlugin.getTaskList().getAllTasks().size()); + + TaskTestUtil.saveNow(); + TimeZone.setDefault(TimeZone.getTimeZone("CST")); + TaskTestUtil.resetTaskList(); + TasksUiPlugin.getDefault().initializeDataSources(); + + assertEquals(1, TasksUiPlugin.getTaskList().getAllTasks().size()); + Collection<ITask> readList = TasksUiPlugin.getTaskList().getDefaultCategory().getChildren(); + ITask readTask = readList.iterator().next(); + assertTrue(readTask.getSummary().equals("task 1")); + assertTrue(readTask.getCreationDate().compareTo(creationDate) == 0); + } + // Task retention when connector missing upon startup public void testOrphanedTasks() throws Exception { // make some tasks |