Remove Date and Calendar usage

pull/322/head
Alex Baker 10 years ago
parent 9321e8262c
commit fdb009528f

@ -198,15 +198,15 @@ public class DateUtilitiesTest extends AndroidTestCase {
} }
public void testAddMonthsToTimestamp() { public void testAddMonthsToTimestamp() {
assertEquals(newDate(2014, 1, 1).getTime(), addCalendarMonthsToUnixtime(newDate(2013, 12, 1).getTime(), 1)); assertEquals(newDate(2014, 1, 1).getMillis(), addCalendarMonthsToUnixtime(newDate(2013, 12, 1).getMillis(), 1));
assertEquals(newDate(2014, 12, 31).getTime(), addCalendarMonthsToUnixtime(newDate(2013, 12, 31).getTime(), 12)); assertEquals(newDate(2014, 12, 31).getMillis(), addCalendarMonthsToUnixtime(newDate(2013, 12, 31).getMillis(), 12));
} }
public void testAddMonthsWithLessDays() { public void testAddMonthsWithLessDays() {
assertEquals(newDate(2014, 3, 3).getTime(), addCalendarMonthsToUnixtime(newDate(2013, 12, 31).getTime(), 2)); assertEquals(newDate(2014, 3, 3).getMillis(), addCalendarMonthsToUnixtime(newDate(2013, 12, 31).getMillis(), 2));
} }
public void testAddMonthsWithMoreDays() { public void testAddMonthsWithMoreDays() {
assertEquals(newDate(2014, 1, 30).getTime(), addCalendarMonthsToUnixtime(newDate(2013, 11, 30).getTime(), 2)); assertEquals(newDate(2014, 1, 30).getMillis(), addCalendarMonthsToUnixtime(newDate(2013, 11, 30).getMillis(), 2));
} }
} }

@ -25,7 +25,7 @@ public class NotifyAtDeadlineTest extends AndroidTestCase {
private static final int MILLIS_PER_HOUR = (int) TimeUnit.HOURS.toMillis(1); private static final int MILLIS_PER_HOUR = (int) TimeUnit.HOURS.toMillis(1);
private final Task dueAtNoon = new Task() {{ private final Task dueAtNoon = new Task() {{
setDueDate(Task.URGENCY_SPECIFIC_DAY, newDate(2014, 1, 27).getTime()); setDueDate(Task.URGENCY_SPECIFIC_DAY, newDate(2014, 1, 27).getMillis());
setReminderFlags(Task.NOTIFY_AT_DEADLINE); setReminderFlags(Task.NOTIFY_AT_DEADLINE);
}}; }};
@ -69,7 +69,7 @@ public class NotifyAtDeadlineTest extends AndroidTestCase {
public void testDontNotifyMoreThanOncePerDay() { public void testDontNotifyMoreThanOncePerDay() {
Task task = new Task() {{ Task task = new Task() {{
setDueDate(newDate(2014, 1, 23).getTime()); setDueDate(newDate(2014, 1, 23).getMillis());
setReminderFlags(Task.NOTIFY_AT_DEADLINE); setReminderFlags(Task.NOTIFY_AT_DEADLINE);
setReminderLast(new DateTime(2014, 1, 23, 17, 23, 37).getMillis()); setReminderLast(new DateTime(2014, 1, 23, 17, 23, 37).getMillis());
}}; }};
@ -93,7 +93,7 @@ public class NotifyAtDeadlineTest extends AndroidTestCase {
Freeze.freezeAt(new DateTime(2014, 1, 27, 9, 13, 37, 501)); Freeze.freezeAt(new DateTime(2014, 1, 27, 9, 13, 37, 501));
preferences.setInt(R.string.p_rmd_time, 8 * MILLIS_PER_HOUR); preferences.setInt(R.string.p_rmd_time, 8 * MILLIS_PER_HOUR);
Task task = new Task() {{ Task task = new Task() {{
setDueDate(Task.URGENCY_SPECIFIC_DAY, newDate(2014, 1, 27).getTime()); setDueDate(Task.URGENCY_SPECIFIC_DAY, newDate(2014, 1, 27).getMillis());
setReminderFlags(Task.NOTIFY_AT_DEADLINE); setReminderFlags(Task.NOTIFY_AT_DEADLINE);
}}; }};
assertEquals( assertEquals(
@ -106,7 +106,7 @@ public class NotifyAtDeadlineTest extends AndroidTestCase {
Freeze.freezeAt(new DateTime(2014, 1, 27, 11, 13, 37, 501)); Freeze.freezeAt(new DateTime(2014, 1, 27, 11, 13, 37, 501));
preferences.setInt(R.string.p_rmd_time, 8 * MILLIS_PER_HOUR); preferences.setInt(R.string.p_rmd_time, 8 * MILLIS_PER_HOUR);
Task task = new Task() {{ Task task = new Task() {{
setDueDate(Task.URGENCY_SPECIFIC_DAY, newDate(2014, 1, 27).getTime()); setDueDate(Task.URGENCY_SPECIFIC_DAY, newDate(2014, 1, 27).getMillis());
setReminderFlags(Task.NOTIFY_AT_DEADLINE); setReminderFlags(Task.NOTIFY_AT_DEADLINE);
}}; }};
assertEquals( assertEquals(
@ -119,7 +119,7 @@ public class NotifyAtDeadlineTest extends AndroidTestCase {
Freeze.freezeAt(new DateTime(2014, 1, 27, 1, 53, 37, 509)); Freeze.freezeAt(new DateTime(2014, 1, 27, 1, 53, 37, 509));
preferences.setInt(R.string.p_rmd_time, MILLIS_PER_HOUR); preferences.setInt(R.string.p_rmd_time, MILLIS_PER_HOUR);
Task task = new Task() {{ Task task = new Task() {{
setDueDate(Task.URGENCY_SPECIFIC_DAY, newDate(2014, 1, 27).getTime()); setDueDate(Task.URGENCY_SPECIFIC_DAY, newDate(2014, 1, 27).getMillis());
setReminderFlags(Task.NOTIFY_AT_DEADLINE); setReminderFlags(Task.NOTIFY_AT_DEADLINE);
}}; }};
assertEquals( assertEquals(

@ -18,7 +18,7 @@ import javax.inject.Inject;
import static org.tasks.Freeze.freezeClock; import static org.tasks.Freeze.freezeClock;
import static org.tasks.Freeze.thaw; import static org.tasks.Freeze.thaw;
import static org.tasks.date.DateTimeUtils.newDate; import static org.tasks.date.DateTimeUtils.newDateTime;
public class ReminderServiceTest extends InjectingTestCase { public class ReminderServiceTest extends InjectingTestCase {
@ -233,7 +233,7 @@ public class ReminderServiceTest extends InjectingTestCase {
public void createAlarm(Context context, Task task, long time, int type) { public void createAlarm(Context context, Task task, long time, int type) {
if(time == 0 || time == Long.MAX_VALUE) if(time == 0 || time == Long.MAX_VALUE)
return; return;
fail("created alarm, no alarm expected (" + type + ": " + newDate(time)); fail("created alarm, no alarm expected (" + type + ": " + newDateTime(time));
} }
} }

@ -20,7 +20,6 @@ import java.text.ParseException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import static org.tasks.date.DateTimeUtils.newDate;
import static org.tasks.date.DateTimeUtils.newDateTime; import static org.tasks.date.DateTimeUtils.newDateTime;
public class AdvancedRepeatTest extends AndroidTestCase { public class AdvancedRepeatTest extends AndroidTestCase {
@ -227,7 +226,7 @@ public class AdvancedRepeatTest extends AndroidTestCase {
} }
public static void assertDateTimeEquals(long date, long other) { public static void assertDateTimeEquals(long date, long other) {
assertEquals("Expected: " + newDate(date) + ", Actual: " + newDate(other), assertEquals("Expected: " + newDateTime(date) + ", Actual: " + newDateTime(other),
date, other); date, other);
} }

@ -23,15 +23,15 @@ import com.todoroo.astrid.test.DatabaseTestCase;
import org.tasks.R; import org.tasks.R;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import org.tasks.time.DateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import static org.tasks.date.DateTimeUtils.newDate; import static org.tasks.date.DateTimeUtils.newDateTime;
public class NewRepeatTests extends DatabaseTestCase { public class NewRepeatTests extends DatabaseTestCase {
@ -73,12 +73,12 @@ public class NewRepeatTests extends DatabaseTestCase {
} }
protected void assertTimesMatch(long expectedTime, long newDueDate) { protected void assertTimesMatch(long expectedTime, long newDueDate) {
assertTrue(String.format("Expected %s, was %s", newDate(expectedTime), newDate(newDueDate)), assertTrue(String.format("Expected %s, was %s", newDateTime(expectedTime), newDateTime(newDueDate)),
Math.abs(expectedTime - newDueDate) < 5000); Math.abs(expectedTime - newDueDate) < 5000);
} }
protected void assertTimesWithinOneHour(long expectedTime, long newDueDate) { protected void assertTimesWithinOneHour(long expectedTime, long newDueDate) {
assertTrue(String.format("Expected %s, was %s", newDate(expectedTime), newDate(newDueDate)), assertTrue(String.format("Expected %s, was %s", newDateTime(expectedTime), newDateTime(newDueDate)),
Math.abs(expectedTime - newDueDate) <= DateUtilities.ONE_HOUR); Math.abs(expectedTime - newDueDate) <= DateUtilities.ONE_HOUR);
} }
@ -102,9 +102,8 @@ public class NewRepeatTests extends DatabaseTestCase {
Task t = new Task(); Task t = new Task();
t.setTitle(title); t.setTitle(title);
long dueDate = DateUtilities.now() + DateUtilities.ONE_DAY * 3; long dueDate = DateUtilities.now() + DateUtilities.ONE_DAY * 3;
Date adjustDate = newDate(dueDate); DateTime adjustDate = newDateTime(dueDate).withSecondOfMinute(1);
adjustDate.setSeconds(1); dueDate = adjustDate.getMillis();
dueDate = adjustDate.getTime();
dueDate = (dueDate / 1000L) * 1000L; // Strip milliseconds dueDate = (dueDate / 1000L) * 1000L; // Strip milliseconds
t.setDueDate(dueDate); t.setDueDate(dueDate);
@ -126,7 +125,7 @@ public class NewRepeatTests extends DatabaseTestCase {
t = taskDao.fetch(t.getId(), Task.PROPERTIES); // Refetch t = taskDao.fetch(t.getId(), Task.PROPERTIES); // Refetch
long completionDate = setCompletionDate(completeBefore, t, dueDate); long completionDate = setCompletionDate(completeBefore, t, dueDate);
System.err.println("Completion date: " + newDate(completionDate)); System.err.println("Completion date: " + newDateTime(completionDate));
waitAndSync(); waitAndSync();
@ -163,8 +162,8 @@ public class NewRepeatTests extends DatabaseTestCase {
} }
Weekday[] allWeekdays = Weekday.values(); Weekday[] allWeekdays = Weekday.values();
Date date = newDate(result); DateTime date = newDateTime(result);
Weekday start = allWeekdays[date.getDay()]; Weekday start = allWeekdays[date.getDayOfWeek()];
int i; int i;
for (i = 0; i < allWeekdays.length; i++) { for (i = 0; i < allWeekdays.length; i++) {
if (start == allWeekdays[i]) break; if (start == allWeekdays[i]) break;
@ -213,21 +212,22 @@ public class NewRepeatTests extends DatabaseTestCase {
} else if (frequency.equals(Frequency.WEEKLY)) { } else if (frequency.equals(Frequency.WEEKLY)) {
expectedTime = computeWeeklyCaseDueDate(fromDate, rrule, fromCompletion); expectedTime = computeWeeklyCaseDueDate(fromDate, rrule, fromCompletion);
} else if (frequency.equals(Frequency.MONTHLY)) { } else if (frequency.equals(Frequency.MONTHLY)) {
Date originalDate = newDate(expectedTime); DateTime originalDate = newDateTime(expectedTime);
for (int i = 0; i < interval; i++) { for (int i = 0; i < interval; i++) {
int month = originalDate.getMonth(); int month = originalDate.getMonthOfYear();
if (month == 11) { // Roll over the year and set the month to January if (month == 11) { // Roll over the year and set the month to January
originalDate.setYear(originalDate.getYear() + 1); originalDate = originalDate
originalDate.setMonth(0); .withYear(originalDate.getYear() + 1)
.withMonthOfYear(1);
} else { } else {
originalDate.setMonth(originalDate.getMonth() + 1); originalDate = originalDate.withMonthOfYear(originalDate.getMonthOfYear() + 1);
} }
} }
expectedTime = originalDate.getTime(); expectedTime = originalDate.getMillis();
} else if (frequency.equals(Frequency.YEARLY)) { } else if (frequency.equals(Frequency.YEARLY)) {
Date originalCompleteDate = newDate(expectedTime); DateTime originalCompleteDate = newDateTime(expectedTime);
originalCompleteDate.setYear(originalCompleteDate.getYear() + interval); originalCompleteDate = originalCompleteDate.withYear(originalCompleteDate.getYear() + interval);
expectedTime = originalCompleteDate.getTime(); expectedTime = originalCompleteDate.getMillis();
} }
return expectedTime; return expectedTime;
} }

@ -14,14 +14,14 @@ import com.todoroo.astrid.utility.TitleParser;
import org.tasks.R; import org.tasks.R;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import org.tasks.time.DateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date;
import javax.inject.Inject; import javax.inject.Inject;
import static org.tasks.date.DateTimeUtils.newDate; import static org.tasks.date.DateTimeUtils.newDateTime;
public class TitleParserTest extends DatabaseTestCase { public class TitleParserTest extends DatabaseTestCase {
@ -66,9 +66,9 @@ public class TitleParserTest extends DatabaseTestCase {
for (int i = 0; i < 23; i++) { for (int i = 0; i < 23; i++) {
String testTitle = "Jog on " + titleMonthStrings[i] + " 12."; String testTitle = "Jog on " + titleMonthStrings[i] + " 12.";
insertTitleAddTask(testTitle, task); insertTitleAddTask(testTitle, task);
Date date = newDate(task.getDueDate()); DateTime date = newDateTime(task.getDueDate());
assertEquals(date.getMonth(), i/2); assertEquals(date.getMonthOfYear(), i/2 + 1);
assertEquals(date.getDate(), 12); assertEquals(date.getDayOfMonth(), 12);
} }
} }
@ -77,10 +77,10 @@ public class TitleParserTest extends DatabaseTestCase {
for (int i = 1; i < 13; i++) { for (int i = 1; i < 13; i++) {
String testTitle = "Jog on " + i + "/12/13"; String testTitle = "Jog on " + i + "/12/13";
insertTitleAddTask(testTitle, task); insertTitleAddTask(testTitle, task);
Date date = newDate(task.getDueDate()); DateTime date = newDateTime(task.getDueDate());
assertEquals(date.getMonth(), i-1); assertEquals(date.getMonthOfYear(), i);
assertEquals(date.getDate(), 12); assertEquals(date.getDayOfMonth(), 12);
assertEquals(date.getYear(), 113); assertEquals(date.getYear(), 2013);
} }
} }
@ -88,36 +88,36 @@ public class TitleParserTest extends DatabaseTestCase {
Task task = new Task(); Task task = new Task();
String testTitle = "Jog on 23:21."; String testTitle = "Jog on 23:21.";
insertTitleAddTask(testTitle, task); insertTitleAddTask(testTitle, task);
Date date = newDate(task.getDueDate()); DateTime date = newDateTime(task.getDueDate());
assertEquals(date.getMinutes(), 21); assertEquals(date.getHourOfDay(), 23);
assertEquals(date.getHours(), 23); assertEquals(date.getMinuteOfHour(), 21);
} }
public void test_AM_PM() { public void test_AM_PM() {
Task task = new Task(); Task task = new Task();
String testTitle = "Jog at 8:33 PM."; String testTitle = "Jog at 8:33 PM.";
insertTitleAddTask(testTitle, task); insertTitleAddTask(testTitle, task);
Date date = newDate(task.getDueDate()); DateTime date = newDateTime(task.getDueDate());
assertEquals(date.getMinutes(), 33); assertEquals(date.getHourOfDay(), 20);
assertEquals(date.getHours(), 20); assertEquals(date.getMinuteOfHour(), 33);
} }
public void test_at_hour() { public void test_at_hour() {
Task task = new Task(); Task task = new Task();
String testTitle = "Jog at 8 PM."; String testTitle = "Jog at 8 PM.";
insertTitleAddTask(testTitle, task); insertTitleAddTask(testTitle, task);
Date date = newDate(task.getDueDate()); DateTime date = newDateTime(task.getDueDate());
assertEquals(date.getMinutes(), 0); assertEquals(date.getHourOfDay(), 20);
assertEquals(date.getHours(), 20); assertEquals(date.getMinuteOfHour(), 0);
} }
public void test_oclock_AM() { public void test_oclock_AM() {
Task task = new Task(); Task task = new Task();
String testTitle = "Jog at 8 o'clock AM."; String testTitle = "Jog at 8 o'clock AM.";
insertTitleAddTask(testTitle, task); insertTitleAddTask(testTitle, task);
Date date = newDate(task.getDueDate()); DateTime date = newDateTime(task.getDueDate());
assertEquals(date.getMinutes(), 0); assertEquals(date.getHourOfDay(), 8);
assertEquals(date.getHours(), 8); assertEquals(date.getMinuteOfHour(), 0);
} }
public void test_several_forms_of_eight() { public void test_several_forms_of_eight() {
@ -129,9 +129,9 @@ public class TitleParserTest extends DatabaseTestCase {
}; };
for (String testTitle: testTitles) { for (String testTitle: testTitles) {
insertTitleAddTask(testTitle, task); insertTitleAddTask(testTitle, task);
Date date = newDate(task.getDueDate()); DateTime date = newDateTime(task.getDueDate());
assertEquals(date.getMinutes(), 0); assertEquals(date.getHourOfDay(), 8);
assertEquals(date.getHours(), 8); assertEquals(date.getMinuteOfHour(), 0);
} }
} }
@ -146,9 +146,9 @@ public class TitleParserTest extends DatabaseTestCase {
}; };
for (String testTitle: testTitles) { for (String testTitle: testTitles) {
insertTitleAddTask(testTitle, task); insertTitleAddTask(testTitle, task);
Date date = newDate(task.getDueDate()); DateTime date = newDateTime(task.getDueDate());
assertEquals(date.getMinutes(), 30); assertEquals(date.getHourOfDay(), 12);
assertEquals(date.getHours(), 12); assertEquals(date.getMinuteOfHour(), 30);
} }
} }
@ -167,16 +167,16 @@ public class TitleParserTest extends DatabaseTestCase {
String title = "Jog today"; String title = "Jog today";
task.setTitle(title); task.setTitle(title);
taskService.createWithValues(task, null, title); taskService.createWithValues(task, null, title);
Date date = newDate(task.getDueDate()); DateTime date = newDateTime(task.getDueDate());
assertEquals(date.getDay()+1, today.get(Calendar.DAY_OF_WEEK)); assertEquals(date.getDayOfMonth(), today.get(Calendar.DAY_OF_WEEK));
//Calendar starts 1-6, date.getDay() starts at 0 //Calendar starts 1-6, date.getDay() starts at 0
task = new Task(); task = new Task();
title = "Jog tomorrow"; title = "Jog tomorrow";
task.setTitle(title); task.setTitle(title);
taskService.createWithValues(task, null, title); taskService.createWithValues(task, null, title);
date = newDate(task.getDueDate()); date = newDateTime(task.getDueDate());
assertEquals((date.getDay()+1) % 7, (today.get(Calendar.DAY_OF_WEEK)+1) % 7); assertEquals((date.getDayOfWeek()) % 7, (today.get(Calendar.DAY_OF_WEEK)+1) % 7);
String[] days = { String[] days = {
"sunday", "sunday",
@ -202,15 +202,15 @@ public class TitleParserTest extends DatabaseTestCase {
title = "Jog "+ days[i]; title = "Jog "+ days[i];
task.setTitle(title); task.setTitle(title);
taskService.createWithValues(task, null, title); taskService.createWithValues(task, null, title);
date = newDate(task.getDueDate()); date = newDateTime(task.getDueDate());
assertEquals(date.getDay(), i); assertEquals(date.getDayOfWeek(), i);
task = new Task(); task = new Task();
title = "Jog "+ abrevDays[i]; title = "Jog "+ abrevDays[i];
task.setTitle(title); task.setTitle(title);
taskService.createWithValues(task, null, title); taskService.createWithValues(task, null, title);
date = newDate(task.getDueDate()); date = newDateTime(task.getDueDate());
assertEquals(date.getDay(), i); assertEquals(date.getDayOfWeek(), i);
} }
} }

@ -3,8 +3,6 @@ package org.tasks;
import org.tasks.time.DateTime; import org.tasks.time.DateTime;
import org.tasks.time.DateTimeUtils; import org.tasks.time.DateTimeUtils;
import java.util.Date;
import static org.tasks.time.DateTimeUtils.currentTimeMillis; import static org.tasks.time.DateTimeUtils.currentTimeMillis;
public class Freeze { public class Freeze {
@ -13,10 +11,6 @@ public class Freeze {
return freezeAt(currentTimeMillis()); return freezeAt(currentTimeMillis());
} }
public static Freeze freezeAt(Date date) {
return freezeAt(date.getTime());
}
public static Freeze freezeAt(DateTime dateTime) { public static Freeze freezeAt(DateTime dateTime) {
return freezeAt(dateTime.getMillis()); return freezeAt(dateTime.getMillis());
} }

@ -2,8 +2,6 @@ package org.tasks;
import android.content.Context; import android.content.Context;
import java.util.Date;
public class TestUtilities { public class TestUtilities {
private static boolean mockitoInitialized; private static boolean mockitoInitialized;

@ -5,11 +5,9 @@ import android.test.AndroidTestCase;
import org.tasks.Snippet; import org.tasks.Snippet;
import org.tasks.time.DateTime; import org.tasks.time.DateTime;
import java.util.Date;
import java.util.TimeZone; import java.util.TimeZone;
import static org.tasks.Freeze.freezeAt; import static org.tasks.Freeze.freezeAt;
import static org.tasks.date.DateTimeUtils.newDate;
import static org.tasks.date.DateTimeUtils.newDateUtc; import static org.tasks.date.DateTimeUtils.newDateUtc;
import static org.tasks.time.DateTimeUtils.currentTimeMillis; import static org.tasks.time.DateTimeUtils.currentTimeMillis;
@ -23,10 +21,6 @@ public class DateTimeUtilsTest extends AndroidTestCase {
}}); }});
} }
public void testCreateNewDate() {
assertEquals(new Date(114, 0, 1), newDate(2014, 1, 1));
}
public void testCreateNewUtcDate() { public void testCreateNewUtcDate() {
DateTime utc = now.toUTC(); DateTime utc = now.toUTC();
DateTime actual = newDateUtc(utc.getYear(), utc.getMonthOfYear(), utc.getDayOfMonth(), utc.getHourOfDay(), utc.getMinuteOfHour(), utc.getSecondOfMinute()); DateTime actual = newDateUtc(utc.getYear(), utc.getMonthOfYear(), utc.getDayOfMonth(), utc.getHourOfDay(), utc.getMinuteOfHour(), utc.getSecondOfMinute());

@ -20,6 +20,7 @@ import java.io.IOException;
import javax.inject.Inject; import javax.inject.Inject;
import static org.tasks.date.DateTimeUtils.newDateTime; import static org.tasks.date.DateTimeUtils.newDateTime;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
public class BackupServiceTests extends DatabaseTestCase { public class BackupServiceTests extends DatabaseTestCase {
@ -102,7 +103,7 @@ public class BackupServiceTests extends DatabaseTestCase {
// make one really old // make one really old
File[] files = temporaryDirectory.listFiles(); File[] files = temporaryDirectory.listFiles();
files[4].setLastModified(System.currentTimeMillis() - 20000); files[4].setLastModified(currentTimeMillis() - 20000);
// assert files created // assert files created
assertEquals(11, files.length); assertEquals(11, files.length);

@ -8,17 +8,14 @@ package com.todoroo.andlib.utility;
import android.content.Context; import android.content.Context;
import android.text.format.DateFormat; import android.text.format.DateFormat;
import org.tasks.time.DateTime;
import org.tasks.R; import org.tasks.R;
import org.tasks.time.DateTime;
import java.text.SimpleDateFormat;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date;
import java.util.Locale; import java.util.Locale;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
import static org.tasks.date.DateTimeUtils.newDate;
import static org.tasks.date.DateTimeUtils.newDateTime; import static org.tasks.date.DateTimeUtils.newDateTime;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
public class DateUtilities { public class DateUtilities {
@ -177,15 +174,15 @@ public class DateUtilities {
/** /**
* @return weekday * @return weekday
*/ */
public static String getWeekday(Date date) { public static String getWeekday(DateTime date) {
return new SimpleDateFormat("EEEE").format(date); return date.toString("EEEE");
} }
/** /**
* @return weekday * @return weekday
*/ */
public static String getWeekdayShort(Date date) { public static String getWeekdayShort(DateTime date) {
return new SimpleDateFormat("EEE").format(date); return date.toString("EEE");
} }
public static String getDateStringWithTime(Context context, long timestamp) { public static String getDateStringWithTime(Context context, long timestamp) {
@ -216,7 +213,7 @@ public class DateUtilities {
} }
if(today + abbreviationLimit >= input && today - abbreviationLimit <= input) { if(today + abbreviationLimit >= input && today - abbreviationLimit <= input) {
return abbreviated ? DateUtilities.getWeekdayShort(newDate(date)) : DateUtilities.getWeekday(newDate(date)); return abbreviated ? DateUtilities.getWeekdayShort(newDateTime(date)) : DateUtilities.getWeekday(newDateTime(date));
} }
return DateUtilities.getDateStringHideYear(newDateTime(date)); return DateUtilities.getDateStringHideYear(newDateTime(date));

@ -18,13 +18,10 @@ import com.todoroo.andlib.data.Table;
import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import org.tasks.time.DateTime;
import org.tasks.BuildConfig; import org.tasks.BuildConfig;
import org.tasks.R; import org.tasks.R;
import org.tasks.time.DateTime;
import java.util.Date;
import static org.tasks.date.DateTimeUtils.newDate;
import static org.tasks.date.DateTimeUtils.newDateTime; import static org.tasks.date.DateTimeUtils.newDateTime;
/** /**
@ -364,15 +361,16 @@ public class Task extends RemoteModel {
return date; return date;
} }
Date hideUntil = newDate(date / 1000L * 1000L); // get rid of millis DateTime hideUntil = newDateTime(date).withMillisOfSecond(0); // get rid of millis
if(setting != HIDE_UNTIL_SPECIFIC_DAY_TIME && setting != HIDE_UNTIL_DUE_TIME) { if(setting != HIDE_UNTIL_SPECIFIC_DAY_TIME && setting != HIDE_UNTIL_DUE_TIME) {
hideUntil.setHours(0); hideUntil = hideUntil
hideUntil.setMinutes(0); .withHourOfDay(0)
hideUntil.setSeconds(0); .withMinuteOfHour(0)
.withSecondOfMinute(0);
} else { } else {
hideUntil.setSeconds(1); hideUntil = hideUntil.withSecondOfMinute(1);
} }
return hideUntil.getTime(); return hideUntil.getMillis();
} }
/** /**

@ -13,8 +13,6 @@ import org.slf4j.LoggerFactory;
import java.util.Date; import java.util.Date;
import java.util.TimeZone; import java.util.TimeZone;
import static org.tasks.date.DateTimeUtils.newDate;
public class GtasksApiUtilities { public class GtasksApiUtilities {
private static final Logger log = LoggerFactory.getLogger(GtasksApiUtilities.class); private static final Logger log = LoggerFactory.getLogger(GtasksApiUtilities.class);
@ -23,7 +21,7 @@ public class GtasksApiUtilities {
if (time < 0) { if (time < 0) {
return null; return null;
} }
return new DateTime(newDate(time), TimeZone.getDefault()); return new DateTime(new Date(time), TimeZone.getDefault());
} }
public static long gtasksCompletedTimeToUnixTime(DateTime gtasksCompletedTime) { public static long gtasksCompletedTimeToUnixTime(DateTime gtasksCompletedTime) {
@ -43,7 +41,7 @@ public class GtasksApiUtilities {
if (time < 0) { if (time < 0) {
return null; return null;
} }
Date date = newDate(time / 1000 * 1000); Date date = new Date(time / 1000 * 1000);
date.setHours(0); date.setHours(0);
date.setMinutes(0); date.setMinutes(0);
date.setSeconds(0); date.setSeconds(0);
@ -58,8 +56,8 @@ public class GtasksApiUtilities {
} }
try { try {
long utcTime = gtasksDueTime.getValue(); //DateTime.parseRfc3339(gtasksDueTime).value; long utcTime = gtasksDueTime.getValue(); //DateTime.parseRfc3339(gtasksDueTime).value;
Date date = newDate(utcTime); Date date = new Date(utcTime);
Date returnDate = newDate(date.getTime() + date.getTimezoneOffset() * 60000); Date returnDate = new Date(date.getTime() + date.getTimezoneOffset() * 60000);
return returnDate.getTime(); return returnDate.getTime();
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);

@ -40,16 +40,16 @@ import org.tasks.R;
import org.tasks.injection.ForApplication; import org.tasks.injection.ForApplication;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import org.tasks.sync.SyncExecutor; import org.tasks.sync.SyncExecutor;
import org.tasks.time.DateTime;
import java.io.IOException; import java.io.IOException;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import static org.tasks.date.DateTimeUtils.newDate; import static org.tasks.date.DateTimeUtils.newDateTime;
@Singleton @Singleton
public class GtasksSyncV2Provider { public class GtasksSyncV2Provider {
@ -297,13 +297,12 @@ public class GtasksSyncV2Provider {
private void mergeDates(Task remote, Task local) { private void mergeDates(Task remote, Task local) {
if(remote.hasDueDate() && local.hasDueTime()) { if(remote.hasDueDate() && local.hasDueTime()) {
Date newDate = newDate(remote.getDueDate()); DateTime oldDate = newDateTime(local.getDueDate());
Date oldDate = newDate(local.getDueDate()); DateTime newDate = newDateTime(remote.getDueDate())
newDate.setHours(oldDate.getHours()); .withHourOfDay(oldDate.getHourOfDay())
newDate.setMinutes(oldDate.getMinutes()); .withMinuteOfHour(oldDate.getMinuteOfHour())
newDate.setSeconds(oldDate.getSeconds()); .withSecondOfMinute(oldDate.getSecondOfMinute());
long setDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, long setDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, newDate.getMillis());
newDate.getTime());
remote.setDueDate(setDate); remote.setDueDate(setDate);
} }
} }

@ -33,22 +33,20 @@ import com.todoroo.astrid.ui.NumberPickerDialog;
import com.todoroo.astrid.ui.NumberPickerDialog.OnNumberPickedListener; import com.todoroo.astrid.ui.NumberPickerDialog.OnNumberPickedListener;
import com.todoroo.astrid.ui.PopupControlSet; import com.todoroo.astrid.ui.PopupControlSet;
import org.tasks.time.DateTime;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder; import org.tasks.dialogs.DialogBuilder;
import org.tasks.dialogs.MyDatePickerDialog; import org.tasks.dialogs.MyDatePickerDialog;
import org.tasks.preferences.ActivityPreferences; import org.tasks.preferences.ActivityPreferences;
import org.tasks.time.DateTime;
import java.text.DateFormatSymbols; import java.text.DateFormatSymbols;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import static org.tasks.date.DateTimeUtils.newDate;
import static org.tasks.date.DateTimeUtils.newDateTime; import static org.tasks.date.DateTimeUtils.newDateTime;
/** /**
@ -206,11 +204,11 @@ public class RepeatControlSet extends PopupControlSet {
@Override @Override
protected void readFromTaskOnInitialize() { protected void readFromTaskOnInitialize() {
Date date; DateTime date;
if(model.getDueDate() != 0) { if(model.getDueDate() != 0) {
date = newDate(model.getDueDate()); date = newDateTime(model.getDueDate());
int dayOfWeek = date.getDay(); int dayOfWeek = date.getDayOfWeek();
for(int i = 0; i < 7; i++) { for(int i = 0; i < 7; i++) {
daysOfWeek[i].setChecked(i == dayOfWeek); daysOfWeek[i].setChecked(i == dayOfWeek);
} }

@ -30,7 +30,6 @@ import org.tasks.injection.InjectingBroadcastReceiver;
import org.tasks.time.DateTime; import org.tasks.time.DateTime;
import java.text.ParseException; import java.text.ParseException;
import java.util.Calendar;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
@ -142,17 +141,16 @@ public class RepeatTaskCompleteListener extends InjectingBroadcastReceiver {
List<WeekdayNum> byDay = rrule.getByDay(); List<WeekdayNum> byDay = rrule.getByDay();
long newDate = original.getMillis(); long newDate = original.getMillis();
newDate += DateUtilities.ONE_WEEK * (rrule.getInterval() - 1); newDate += DateUtilities.ONE_WEEK * (rrule.getInterval() - 1);
Calendar date = Calendar.getInstance(); DateTime date = new DateTime(newDate);
date.setTimeInMillis(newDate);
Collections.sort(byDay, weekdayCompare); Collections.sort(byDay, weekdayCompare);
WeekdayNum next = findNextWeekday(byDay, date); WeekdayNum next = findNextWeekday(byDay, date);
do { do {
date.add(Calendar.DATE, 1); date = date.plusDays(1);
} while (date.get(Calendar.DAY_OF_WEEK) != next.wday.javaDayNum); } while (date.getDayOfWeek() != next.wday.javaDayNum);
long time = date.getTimeInMillis(); long time = date.getMillis();
if(hasDueTime) { if(hasDueTime) {
return Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, time); return Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, time);
} else { } else {
@ -162,14 +160,12 @@ public class RepeatTaskCompleteListener extends InjectingBroadcastReceiver {
private static long handleMonthlyRepeat(DateTime original, DateValue startDateAsDV, boolean hasDueTime, RRule rrule) { private static long handleMonthlyRepeat(DateTime original, DateValue startDateAsDV, boolean hasDueTime, RRule rrule) {
if (original.isLastDayOfMonth()) { if (original.isLastDayOfMonth()) {
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(original.getMillis());
int interval = rrule.getInterval(); int interval = rrule.getInterval();
cal.add(Calendar.MONTH, interval); DateTime newDateTime = original.plusMonths(interval);
cal.set(Calendar.DATE, cal.getActualMaximum(Calendar.DATE)); long time = newDateTime
long time = cal.getTimeInMillis(); .withDayOfMonth(newDateTime.getNumberOfDaysInMonth())
.getMillis();
if (hasDueTime) { if (hasDueTime) {
return Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, time); return Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, time);
} else { } else {
@ -188,10 +184,10 @@ public class RepeatTaskCompleteListener extends InjectingBroadcastReceiver {
}; };
private static WeekdayNum findNextWeekday(List<WeekdayNum> byDay, Calendar date) { private static WeekdayNum findNextWeekday(List<WeekdayNum> byDay, DateTime date) {
WeekdayNum next = byDay.get(0); WeekdayNum next = byDay.get(0);
for (WeekdayNum weekday : byDay) { for (WeekdayNum weekday : byDay) {
if (weekday.wday.javaDayNum > date.get(Calendar.DAY_OF_WEEK)) { if (weekday.wday.javaDayNum > date.getDayOfWeek()) {
return weekday; return weekday;
} }
} }
@ -240,7 +236,7 @@ public class RepeatTaskCompleteListener extends InjectingBroadcastReceiver {
newDueDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, date.getMillis()); newDueDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, date.getMillis());
} else { } else {
newDueDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY, newDueDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY,
newDate(nextDate.year(), nextDate.month(), nextDate.day()).getTime()); newDate(nextDate.year(), nextDate.month(), nextDate.day()).getMillis());
} }
return newDueDate; return newDueDate;
} }

@ -23,6 +23,8 @@ import com.todoroo.astrid.utility.Constants;
import org.tasks.R; import org.tasks.R;
import org.tasks.notifications.NotificationManager; import org.tasks.notifications.NotificationManager;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
public class TimerPlugin { public class TimerPlugin {
/** /**
@ -77,7 +79,7 @@ public class TimerPlugin {
.setContentIntent(pendingIntent) .setContentIntent(pendingIntent)
.setContentTitle(appName) .setContentTitle(appName)
.setContentText(text) .setContentText(text)
.setWhen(System.currentTimeMillis()) .setWhen(currentTimeMillis())
.setSmallIcon(R.drawable.timers_notification) .setSmallIcon(R.drawable.timers_notification)
.setAutoCancel(false) .setAutoCancel(false)
.setOngoing(true) .setOngoing(true)

@ -19,13 +19,10 @@ import com.todoroo.astrid.activity.TaskEditFragment;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.helper.TaskEditControlSetBase; import com.todoroo.astrid.helper.TaskEditControlSetBase;
import org.tasks.time.DateTime;
import org.tasks.R; import org.tasks.R;
import org.tasks.activities.DateAndTimePickerActivity; import org.tasks.activities.DateAndTimePickerActivity;
import org.tasks.time.DateTime;
import java.util.Date;
import static org.tasks.date.DateTimeUtils.newDate;
import static org.tasks.date.DateTimeUtils.newDateTime; import static org.tasks.date.DateTimeUtils.newDateTime;
/** /**
@ -99,8 +96,8 @@ public class HideUntilControlSet extends TaskEditControlSetBase implements OnIte
if(specificDate > 0) { if(specificDate > 0) {
HideUntilValue[] updated = new HideUntilValue[values.length + 1]; HideUntilValue[] updated = new HideUntilValue[values.length + 1];
System.arraycopy(values, 0, updated, 1, values.length); System.arraycopy(values, 0, updated, 1, values.length);
Date hideUntilAsDate = newDate(specificDate); DateTime hideUntilAsDate = newDateTime(specificDate);
if(hideUntilAsDate.getHours() == 0 && hideUntilAsDate.getMinutes() == 0 && hideUntilAsDate.getSeconds() == 0) { if(hideUntilAsDate.getHourOfDay() == 0 && hideUntilAsDate.getMinuteOfHour() == 0 && hideUntilAsDate.getSecondOfMinute() == 0) {
updated[0] = new HideUntilValue(DateUtilities.getDateString(newDateTime(specificDate)), updated[0] = new HideUntilValue(DateUtilities.getDateString(newDateTime(specificDate)),
Task.HIDE_UNTIL_SPECIFIC_DAY, specificDate); Task.HIDE_UNTIL_SPECIFIC_DAY, specificDate);
existingDate = specificDate; existingDate = specificDate;
@ -198,11 +195,11 @@ public class HideUntilControlSet extends TaskEditControlSetBase implements OnIte
public void readFromTask(Task task) { public void readFromTask(Task task) {
long date = task.getHideUntil(); long date = task.getHideUntil();
Date dueDay = newDate(task.getDueDate()/1000L*1000L); DateTime dueDay = newDateTime(task.getDueDate())
.withHourOfDay(0)
dueDay.setHours(0); .withMinuteOfHour(0)
dueDay.setMinutes(0); .withSecondOfMinute(0)
dueDay.setSeconds(0); .withMillisOfSecond(0);
// For the hide until due case, we need the time component // For the hide until due case, we need the time component
long dueTime = task.getDueDate()/1000L*1000L; long dueTime = task.getDueDate()/1000L*1000L;
@ -210,16 +207,16 @@ public class HideUntilControlSet extends TaskEditControlSetBase implements OnIte
if(date == 0) { if(date == 0) {
selection = 0; selection = 0;
date = 0; date = 0;
} else if(date == dueDay.getTime()) { } else if(date == dueDay.getMillis()) {
selection = 1; selection = 1;
date = 0; date = 0;
} else if (date == dueTime){ } else if (date == dueTime){
selection = 2; selection = 2;
date = 0; date = 0;
} else if(date + DateUtilities.ONE_DAY == dueDay.getTime()) { } else if(date + DateUtilities.ONE_DAY == dueDay.getMillis()) {
selection = 3; selection = 3;
date = 0; date = 0;
} else if(date + DateUtilities.ONE_WEEK == dueDay.getTime()) { } else if(date + DateUtilities.ONE_WEEK == dueDay.getMillis()) {
selection = 4; selection = 4;
date = 0; date = 0;
} }

@ -25,7 +25,6 @@ import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.utility.Flags; import com.todoroo.astrid.utility.Flags;
import com.todoroo.astrid.voice.VoiceOutputAssistant; import com.todoroo.astrid.voice.VoiceOutputAssistant;
import org.tasks.time.DateTime;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.tasks.injection.ForApplication; import org.tasks.injection.ForApplication;
@ -37,6 +36,7 @@ import org.tasks.receivers.CompleteTaskReceiver;
import org.tasks.reminders.MissedCallActivity; import org.tasks.reminders.MissedCallActivity;
import org.tasks.reminders.NotificationActivity; import org.tasks.reminders.NotificationActivity;
import org.tasks.reminders.SnoozeActivity; import org.tasks.reminders.SnoozeActivity;
import org.tasks.time.DateTime;
import java.io.InputStream; import java.io.InputStream;
@ -90,7 +90,7 @@ public class Notifier {
.setTicker(title) .setTicker(title)
.setContentTitle(title) .setContentTitle(title)
.setContentText(context.getString(R.string.app_name)) .setContentText(context.getString(R.string.app_name))
.setWhen(System.currentTimeMillis()) .setWhen(currentTimeMillis())
.setContentIntent(PendingIntent.getActivity(context, missedCallDialog.hashCode(), missedCallDialog, PendingIntent.FLAG_UPDATE_CURRENT)); .setContentIntent(PendingIntent.getActivity(context, missedCallDialog.hashCode(), missedCallDialog, PendingIntent.FLAG_UPDATE_CURRENT));
Bitmap contactImage = getContactImage(contactId); Bitmap contactImage = getContactImage(contactId);
@ -166,7 +166,7 @@ public class Notifier {
Notification notification = new NotificationCompat.Builder(context) Notification notification = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.notif_astrid) .setSmallIcon(R.drawable.notif_astrid)
.setTicker(title) .setTicker(title)
.setWhen(System.currentTimeMillis()) .setWhen(currentTimeMillis())
.setContentTitle(title) .setContentTitle(title)
.setContentText(subtitle) .setContentText(subtitle)
.setContentIntent(pendingIntent) .setContentIntent(pendingIntent)
@ -246,7 +246,7 @@ public class Notifier {
NotificationCompat.Builder builder = new NotificationCompat.Builder(context) NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.notif_astrid) .setSmallIcon(R.drawable.notif_astrid)
.setTicker(taskTitle) .setTicker(taskTitle)
.setWhen(System.currentTimeMillis()) .setWhen(currentTimeMillis())
.setContentTitle(taskTitle) .setContentTitle(taskTitle)
.setContentText(text) .setContentText(text)
.setContentIntent(PendingIntent.getActivity(context, (int) id, intent, PendingIntent.FLAG_UPDATE_CURRENT)); .setContentIntent(PendingIntent.getActivity(context, (int) id, intent, PendingIntent.FLAG_UPDATE_CURRENT));

@ -2,17 +2,12 @@ package org.tasks.date;
import org.tasks.time.DateTime; import org.tasks.time.DateTime;
import java.util.Date;
import java.util.TimeZone; import java.util.TimeZone;
public class DateTimeUtils { public class DateTimeUtils {
public static Date newDate(long date) { public static DateTime newDate(int year, int month, int day) {
return new Date(date); return new DateTime(year, month, day, 0, 0, 0);
}
public static Date newDate(int year, int month, int day) {
return new Date(year - 1900, month - 1, day);
} }
public static DateTime newDateUtc(int year, int month, int day, int hour, int minute, int second) { public static DateTime newDateUtc(int year, int month, int day, int hour, int minute, int second) {
@ -23,10 +18,6 @@ public class DateTimeUtils {
return new DateTime(); return new DateTime();
} }
public static DateTime newDateTime(Date date) {
return newDateTime(date.getTime());
}
public static DateTime newDateTime(long timestamp) { public static DateTime newDateTime(long timestamp) {
return new DateTime(timestamp); return new DateTime(timestamp);
} }

@ -80,6 +80,10 @@ public class DateTime {
return getCalendar().get(Calendar.DATE); return getCalendar().get(Calendar.DATE);
} }
public int getDayOfWeek() {
return getCalendar().get(Calendar.DAY_OF_WEEK);
}
public DateTime plusDays(int interval) { public DateTime plusDays(int interval) {
return add(Calendar.DATE, interval); return add(Calendar.DATE, interval);
} }
@ -169,7 +173,7 @@ public class DateTime {
} }
public DateTime minusMillis(int millis) { public DateTime minusMillis(int millis) {
return subtract(Calendar.MILLISECOND, millis); return new DateTime(timestamp - millis, timeZone);
} }
public DateTime minusDays(int days) { public DateTime minusDays(int days) {
@ -247,4 +251,12 @@ public class DateTime {
public String toString() { public String toString() {
return toString("yyyy-MM-dd HH:mm:ss.SSSZ"); return toString("yyyy-MM-dd HH:mm:ss.SSSZ");
} }
public int getTimezoneOffset() {
return timeZone.getOffset(timestamp);
}
public DateTime plusMillis(int millis) {
return new DateTime(timestamp + millis, timeZone);
}
} }

Loading…
Cancel
Save