Add newDate helper methods

pull/73/head
Alex Baker 12 years ago
parent b8ca9c34ed
commit 32309bb88b

@ -19,6 +19,7 @@ import java.util.Date;
import java.util.Locale; import java.util.Locale;
import static org.tasks.date.DateTimeUtils.currentTimeMillis; import static org.tasks.date.DateTimeUtils.currentTimeMillis;
import static org.tasks.date.DateTimeUtils.newDate;
public class DateUtilities { public class DateUtilities {
@ -57,7 +58,7 @@ public class DateUtilities {
/** Returns unixtime one month from now */ /** Returns unixtime one month from now */
public static long oneMonthFromNow() { public static long oneMonthFromNow() {
Date date = new Date(now()); Date date = newDate();
date.setMonth(date.getMonth() + 1); date.setMonth(date.getMonth() + 1);
return date.getTime(); return date.getTime();
} }

@ -9,6 +9,8 @@ import com.todoroo.andlib.utility.DateUtilities;
import java.util.Date; import java.util.Date;
import static org.tasks.date.DateTimeUtils.newDate;
/** /**
* PermaSql allows for creating SQL statements that can be saved and used * PermaSql allows for creating SQL statements that can be saved and used
* later without dates getting stale. It also allows these values to be * later without dates getting stale. It also allows these values to be

@ -23,7 +23,8 @@ import org.json.JSONObject;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.util.Date;
import static org.tasks.date.DateTimeUtils.newDate;
/** /**
* A model that is synchronized to a remote server and has a remote id * A model that is synchronized to a remote server and has a remote id

@ -23,6 +23,8 @@ import org.tasks.api.R;
import java.util.Date; import java.util.Date;
import static org.tasks.date.DateTimeUtils.newDate;
/** /**
* Data Model which represents a task users need to accomplish. * Data Model which represents a task users need to accomplish.
* *

@ -26,10 +26,11 @@ import com.todoroo.andlib.utility.TodorooPreferenceActivity;
import org.tasks.api.R; import org.tasks.api.R;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Set; import java.util.Set;
import static org.tasks.date.DateTimeUtils.newDate;
/** /**
* Utility class for common synchronization action: displaying synchronization * Utility class for common synchronization action: displaying synchronization
* preferences and an action panel so users can initiate actions from the menu. * preferences and an action panel so users can initiate actions from the menu.

@ -1,9 +1,31 @@
package org.tasks.date; package org.tasks.date;
import java.util.Date;
public class DateTimeUtils { public class DateTimeUtils {
public static long currentTimeMillis() { public static long currentTimeMillis() {
return org.joda.time.DateTimeUtils.currentTimeMillis(); return org.joda.time.DateTimeUtils.currentTimeMillis();
} }
public static Date newDate() {
return newDate(currentTimeMillis());
}
public static Date newDate(long date) {
return new Date(date);
}
public static Date newDate(int year, int month, int day) {
return new Date(year - 1900, month - 1, day);
}
public static Date newDate(int year, int month, int day, int hour, int minute, int second) {
return new Date(year - 1900, month - 1, day, hour, minute, second);
}
public static Date newDateUtc(int year, int month, int day, int hour, int minute, int second) {
return newDate(Date.UTC(year - 1900, month - 1, day, hour, minute, second));
}
} }

@ -19,7 +19,8 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date;
import static org.tasks.date.DateTimeUtils.newDate;
public class BackupServiceTests extends DatabaseTestCase { public class BackupServiceTests extends DatabaseTestCase {

@ -18,7 +18,7 @@ import com.todoroo.astrid.test.DatabaseTestCase;
import org.tasks.R; import org.tasks.R;
import java.util.Date; import static org.tasks.date.DateTimeUtils.newDate;
public class NotificationTests extends DatabaseTestCase { public class NotificationTests extends DatabaseTestCase {

@ -13,7 +13,7 @@ import com.todoroo.astrid.reminders.ReminderService.AlarmScheduler;
import com.todoroo.astrid.test.DatabaseTestCase; import com.todoroo.astrid.test.DatabaseTestCase;
import com.todoroo.astrid.utility.AstridPreferences; import com.todoroo.astrid.utility.AstridPreferences;
import java.util.Date; import static org.tasks.date.DateTimeUtils.newDate;
public class ReminderServiceTests extends DatabaseTestCase { public class ReminderServiceTests extends DatabaseTestCase {

@ -31,6 +31,8 @@ import java.util.Date;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import static org.tasks.date.DateTimeUtils.newDate;
public class NewRepeatTests<REMOTE_MODEL> extends DatabaseTestCase { public class NewRepeatTests<REMOTE_MODEL> extends DatabaseTestCase {
@Autowired @Autowired

@ -19,6 +19,8 @@ import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import static org.tasks.date.DateTimeUtils.newDate;
public class TitleParserTest extends DatabaseTestCase { public class TitleParserTest extends DatabaseTestCase {
@Override @Override

@ -75,12 +75,13 @@ import org.tasks.R;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Random; import java.util.Random;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import static org.tasks.date.DateTimeUtils.newDate;
/** /**
* Adapter for displaying a user's tasks as a list * Adapter for displaying a user's tasks as a list
* *

@ -27,6 +27,8 @@ import org.tasks.R;
import java.util.Date; import java.util.Date;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import static org.tasks.date.DateTimeUtils.newDate;
/** /**
* Control set to manage adding and removing tags * Control set to manage adding and removing tags
* *

@ -18,6 +18,8 @@ import com.todoroo.astrid.data.Metadata;
import java.util.Date; import java.util.Date;
import static org.tasks.date.DateTimeUtils.newDate;
/** /**
* Exposes Task Detail for tags, i.e. "Tags: frogs, animals" * Exposes Task Detail for tags, i.e. "Tags: frogs, animals"
* *

@ -30,9 +30,10 @@ import com.todoroo.astrid.service.MetadataService.SynchronizeMetadataCallback;
import com.todoroo.astrid.utility.Constants; import com.todoroo.astrid.utility.Constants;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import static org.tasks.date.DateTimeUtils.newDate;
/** /**
* Provides operations for working with alerts * Provides operations for working with alerts
* *

@ -12,6 +12,8 @@ import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import static org.tasks.date.DateTimeUtils.newDate;
/** /**
* Date Utility functions for backups * Date Utility functions for backups
* *

@ -24,6 +24,8 @@ import org.tasks.R;
import java.util.Date; import java.util.Date;
import static org.tasks.date.DateTimeUtils.newDate;
/** /**
* Displays synchronization preferences and an action panel so users can * Displays synchronization preferences and an action panel so users can
* initiate actions from the menu. * initiate actions from the menu.

@ -24,6 +24,8 @@ import org.tasks.R;
import java.util.Date; import java.util.Date;
import static org.tasks.date.DateTimeUtils.newDate;
public class PhoneStateChangedReceiver extends BroadcastReceiver { public class PhoneStateChangedReceiver extends BroadcastReceiver {
private static final String PREF_LAST_INCOMING_NUMBER = "last_incoming_number"; private static final String PREF_LAST_INCOMING_NUMBER = "last_incoming_number";

@ -19,6 +19,8 @@ import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import static org.tasks.date.DateTimeUtils.newDate;
public class FileUtilities { public class FileUtilities {
/** /**

@ -15,7 +15,7 @@ import com.todoroo.astrid.utility.Constants;
import org.tasks.R; import org.tasks.R;
import java.util.Date; import static org.tasks.date.DateTimeUtils.newDate;
public class CalendarAlarmScheduler { public class CalendarAlarmScheduler {

@ -32,7 +32,7 @@ import com.todoroo.astrid.utility.Constants;
import org.tasks.R; import org.tasks.R;
import java.util.Date; import static org.tasks.date.DateTimeUtils.newDate;
public class CalendarReminderActivity extends Activity { public class CalendarReminderActivity extends Activity {

@ -10,6 +10,8 @@ import com.google.api.client.util.DateTime;
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 {
public static DateTime unixTimeToGtasksCompletionTime(long time) { public static DateTime unixTimeToGtasksCompletionTime(long time) {

@ -51,6 +51,8 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import static org.tasks.date.DateTimeUtils.newDate;
public class GtasksSyncV2Provider extends SyncV2Provider { public class GtasksSyncV2Provider extends SyncV2Provider {
@Autowired TaskService taskService; @Autowired TaskService taskService;

@ -63,10 +63,11 @@ import org.tasks.R;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
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;
public class EditNoteActivity extends LinearLayout implements TimerActionListener { public class EditNoteActivity extends LinearLayout implements TimerActionListener {
private Task task; private Task task;

@ -30,6 +30,8 @@ import org.tasks.R;
import java.util.Date; import java.util.Date;
import static org.tasks.date.DateTimeUtils.newDate;
/** /**
* This activity is launched when a user opens up a notification from the * This activity is launched when a user opens up a notification from the
* tray. It launches the appropriate activity based on the passed in parameters. * tray. It launches the appropriate activity based on the passed in parameters.

@ -44,11 +44,12 @@ import com.todoroo.astrid.voice.VoiceOutputService;
import org.tasks.R; import org.tasks.R;
import java.util.Date;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import static org.tasks.date.DateTimeUtils.newDate;
public class Notifications extends BroadcastReceiver { public class Notifications extends BroadcastReceiver {
// --- constants // --- constants

@ -27,6 +27,8 @@ import org.tasks.R;
import java.util.Date; import java.util.Date;
import static org.tasks.date.DateTimeUtils.newDate;
/** /**
* A dialog that shows your task reminder * A dialog that shows your task reminder
* *

@ -33,6 +33,8 @@ import org.tasks.R;
import java.util.Date; import java.util.Date;
import java.util.Random; import java.util.Random;
import static org.tasks.date.DateTimeUtils.newDate;
/** /**
* Data service for reminders * Data service for reminders

@ -6,7 +6,7 @@ import com.todoroo.andlib.service.ContextManager;
import com.todoroo.astrid.api.TaskContextActionExposer; import com.todoroo.astrid.api.TaskContextActionExposer;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import java.util.Date; import static org.tasks.date.DateTimeUtils.newDate;
public class WhenReminder implements TaskContextActionExposer { public class WhenReminder implements TaskContextActionExposer {

@ -48,6 +48,8 @@ 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;
/** /**
* Control Set for managing repeats * Control Set for managing repeats
* *

@ -36,6 +36,9 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.TimeZone; import java.util.TimeZone;
import static org.tasks.date.DateTimeUtils.newDate;
import static org.tasks.date.DateTimeUtils.newDateUtc;
public class RepeatTaskCompleteListener extends BroadcastReceiver { public class RepeatTaskCompleteListener extends BroadcastReceiver {
@Override @Override
@ -178,8 +181,7 @@ public class RepeatTaskCompleteListener extends BroadcastReceiver {
}; };
private static WeekdayNum findNextWeekday(List<WeekdayNum> byDay, private static WeekdayNum findNextWeekday(List<WeekdayNum> byDay, Calendar date) {
Calendar 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.get(Calendar.DAY_OF_WEEK)) {
@ -220,9 +222,9 @@ public class RepeatTaskCompleteListener extends BroadcastReceiver {
long newDueDate; long newDueDate;
if(nextDate instanceof DateTimeValueImpl) { if(nextDate instanceof DateTimeValueImpl) {
DateTimeValueImpl newDateTime = (DateTimeValueImpl)nextDate; DateTimeValueImpl newDateTime = (DateTimeValueImpl)nextDate;
Date date = new Date(Date.UTC(newDateTime.year() - 1900, newDateTime.month() - 1, Date date = newDateUtc(newDateTime.year(), newDateTime.month(),
newDateTime.day(), newDateTime.hour(), newDateTime.day(), newDateTime.hour(),
newDateTime.minute(), newDateTime.second())); newDateTime.minute(), newDateTime.second());
// time may be inaccurate due to DST, force time to be same // time may be inaccurate due to DST, force time to be same
date.setHours(original.getHours()); date.setHours(original.getHours());
date.setMinutes(original.getMinutes()); date.setMinutes(original.getMinutes());
@ -230,8 +232,7 @@ public class RepeatTaskCompleteListener extends BroadcastReceiver {
date.getTime()); date.getTime());
} else { } else {
newDueDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY, newDueDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY,
new Date(nextDate.year() - 1900, nextDate.month() - 1, newDate(nextDate.year(), nextDate.month(), nextDate.day()).getTime());
nextDate.day()).getTime());
} }
return newDueDate; return newDueDate;
} }

@ -32,6 +32,8 @@ import org.tasks.R;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import static org.tasks.date.DateTimeUtils.newDate;
public class CalendarView extends View { public class CalendarView extends View {
private static final int PADDING = 0; private static final int PADDING = 0;

@ -28,6 +28,8 @@ import org.tasks.R;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import static org.tasks.date.DateTimeUtils.newDate;
public class DateAndTimePicker extends LinearLayout { public class DateAndTimePicker extends LinearLayout {
private static final int SHORTCUT_PADDING = 8; private static final int SHORTCUT_PADDING = 8;

@ -37,7 +37,8 @@ import com.todoroo.astrid.utility.Flags;
import org.tasks.R; import org.tasks.R;
import java.text.ParseException; import java.text.ParseException;
import java.util.Date;
import static org.tasks.date.DateTimeUtils.newDate;
/** /**
* Helper class that creates a dialog to confirm the results of a quick add markup * Helper class that creates a dialog to confirm the results of a quick add markup

@ -25,6 +25,8 @@ import org.tasks.R;
import java.util.Date; import java.util.Date;
import static org.tasks.date.DateTimeUtils.newDate;
/** /**
* Control set for specifying when a task should be hidden * Control set for specifying when a task should be hidden
* *

@ -21,6 +21,7 @@ import java.util.Locale;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.tasks.date.DateTimeUtils.newDate;
/** /**
* Tests translations for consistency with the default values. You must * Tests translations for consistency with the default values. You must

@ -23,6 +23,7 @@ import static com.todoroo.andlib.utility.DateUtilities.oneMonthFromNow;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
import static org.tasks.Freeze.freezeAt; import static org.tasks.Freeze.freezeAt;
import static org.tasks.date.DateTimeUtils.newDate;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class DateUtilitiesTest extends TodorooRobolectricTestCase { public class DateUtilitiesTest extends TodorooRobolectricTestCase {

@ -24,6 +24,7 @@ import java.util.Calendar;
import java.util.Date; import java.util.Date;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.tasks.date.DateTimeUtils.newDate;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class AdvancedRepeatTest extends TodorooRobolectricTestCase { public class AdvancedRepeatTest extends TodorooRobolectricTestCase {
@ -53,7 +54,7 @@ public class AdvancedRepeatTest extends TodorooRobolectricTestCase {
buildRRule(1, Frequency.DAILY); buildRRule(1, Frequency.DAILY);
// test specific day & time // test specific day & time
long dayWithTime = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, new Date(110, 7, 1, 10, 4).getTime()); long dayWithTime = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, newDate(2010, 8, 1, 10, 4, 0).getTime());
task.setValue(Task.DUE_DATE, dayWithTime); task.setValue(Task.DUE_DATE, dayWithTime);
long nextDayWithTime = dayWithTime + DateUtilities.ONE_DAY; long nextDayWithTime = dayWithTime + DateUtilities.ONE_DAY;
@ -66,7 +67,7 @@ public class AdvancedRepeatTest extends TodorooRobolectricTestCase {
buildRRule(1, Frequency.DAILY); buildRRule(1, Frequency.DAILY);
// test specific day & time // test specific day & time
long dayWithTime = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, new Date(110, 7, 1, 10, 4, 0).getTime()); long dayWithTime = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, newDate(2010, 8, 1, 10, 4, 0).getTime());
task.setValue(Task.DUE_DATE, dayWithTime); task.setValue(Task.DUE_DATE, dayWithTime);
Date todayWithTime = newDate(); Date todayWithTime = newDate();

@ -20,12 +20,12 @@ import org.robolectric.RobolectricTestRunner;
import java.text.ParseException; import java.text.ParseException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.TimeZone; import java.util.TimeZone;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.tasks.date.DateTimeUtils.newDate;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class RepeatAfterCompleteTest extends TodorooRobolectricTestCase { public class RepeatAfterCompleteTest extends TodorooRobolectricTestCase {

@ -11,36 +11,37 @@ import java.util.Date;
import static com.todoroo.astrid.repeats.RepeatTaskCompleteListener.handleSubdayRepeat; import static com.todoroo.astrid.repeats.RepeatTaskCompleteListener.handleSubdayRepeat;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.tasks.date.DateTimeUtils.newDate;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class RepeatTaskCompleteListenerTest { public class RepeatTaskCompleteListenerTest {
private static final Date start = new Date(113, 11, 31, 8, 31, 59); private static final Date start = newDate(2013, 12, 31, 8, 31, 59);
@Test @Test
public void repeatEveryMinute() { public void repeatEveryMinute() {
assertEquals( assertEquals(
new Date(113, 11, 31, 8, 32, 1).getTime(), // astrid always sets seconds to one newDate(2013, 12, 31, 8, 32, 1).getTime(), // astrid always sets seconds to one
handleSubdayRepeat(start, newRule(1, Frequency.MINUTELY))); handleSubdayRepeat(start, newRule(1, Frequency.MINUTELY)));
} }
@Test @Test
public void repeatEveryOtherMinute() { public void repeatEveryOtherMinute() {
assertEquals( assertEquals(
new Date(113, 11, 31, 8, 33, 1).getTime(), newDate(2013, 12, 31, 8, 33, 1).getTime(),
handleSubdayRepeat(start, newRule(2, Frequency.MINUTELY))); handleSubdayRepeat(start, newRule(2, Frequency.MINUTELY)));
} }
@Test @Test
public void repeatEveryHour() { public void repeatEveryHour() {
assertEquals( assertEquals(
new Date(113, 11, 31, 9, 31, 1).getTime(), newDate(2013, 12, 31, 9, 31, 1).getTime(),
handleSubdayRepeat(start, newRule(1, Frequency.HOURLY))); handleSubdayRepeat(start, newRule(1, Frequency.HOURLY)));
} }
@Test @Test
public void repeatEveryOtherHour() { public void repeatEveryOtherHour() {
assertEquals( assertEquals(
new Date(113, 11, 31, 10, 31, 1).getTime(), newDate(2013, 12, 31, 10, 31, 1).getTime(),
handleSubdayRepeat(start, newRule(2, Frequency.HOURLY))); handleSubdayRepeat(start, newRule(2, Frequency.HOURLY)));
} }

Loading…
Cancel
Save