Skip to content

Commit

Permalink
Add TeammatesDateTimeFormatter
Browse files Browse the repository at this point in the history
  • Loading branch information
tshradheya committed Jul 20, 2018
1 parent bfe1c69 commit 078889a
Show file tree
Hide file tree
Showing 8 changed files with 41 additions and 24 deletions.
3 changes: 1 addition & 2 deletions src/main/java/teammates/common/util/LogMessageGenerator.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import java.time.Instant;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
Expand All @@ -21,7 +20,7 @@ public class LogMessageGenerator {
public static final String PATTERN_ACTION_NAME_GROUP = "actionName";

private static final DateTimeFormatter FORMATTER =
DateTimeFormatter.ofPattern(Const.ActivityLog.TIME_FORMAT_LOGID, Locale.US);
TeammatesDateTimeFormatter.ofPattern(Const.ActivityLog.TIME_FORMAT_LOGID);

/**
* Generates the log message for an *Action.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package teammates.common.util;

import java.time.format.DateTimeFormatter;
import java.util.Locale;

/**
* DateTimeFormatter for TEAMMATES with default Locale.US settings.
*/
public class TeammatesDateTimeFormatter {

private TeammatesDateTimeFormatter() {
// Utility class
}

/**
* Returns DateTimeFormatter instance with Locale.US as default locale.
*/
public static DateTimeFormatter ofPattern(String pattern) {
return DateTimeFormatter.ofPattern(pattern, Locale.US);
}
}
11 changes: 5 additions & 6 deletions src/main/java/teammates/common/util/TimeHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;

import teammates.common.exception.TeammatesException;
Expand Down Expand Up @@ -230,7 +229,7 @@ private static String formatLocalDateTime(LocalDateTime localDateTime, String pa
if (localDateTime.getHour() == 12 && localDateTime.getMinute() == 0) {
processedPattern = pattern.replace("a", "'NOON'");
}
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(processedPattern, Locale.US);
DateTimeFormatter formatter = TeammatesDateTimeFormatter.ofPattern(processedPattern);
return localDateTime.format(formatter);
}

Expand Down Expand Up @@ -339,7 +338,7 @@ private static String formatInstant(Instant instant, ZoneId timeZone, String pat
if (zonedDateTime.getHour() == 12 && zonedDateTime.getMinute() == 0) {
processedPattern = pattern.replace("a", "'NOON'");
}
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(processedPattern, Locale.US);
DateTimeFormatter formatter = TeammatesDateTimeFormatter.ofPattern(processedPattern);
return zonedDateTime.format(formatter);
}

Expand Down Expand Up @@ -488,7 +487,7 @@ public static String convertToStandardDuration(Long timeInMilliseconds) {
* @throws AssertionError if there is a parsing error
*/
public static Instant parseInstant(String dateTimeString) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(SystemParams.DEFAULT_DATE_TIME_FORMAT, Locale.US);
DateTimeFormatter formatter = TeammatesDateTimeFormatter.ofPattern(SystemParams.DEFAULT_DATE_TIME_FORMAT);
try {
return ZonedDateTime.parse(dateTimeString, formatter).toInstant();
} catch (DateTimeParseException e) {
Expand All @@ -509,7 +508,7 @@ public static LocalDateTime parseLocalDateTime(String dateTimeString, String pat
return null;
}

DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern, Locale.US);
DateTimeFormatter formatter = TeammatesDateTimeFormatter.ofPattern(pattern);
try {
return LocalDateTime.parse(dateTimeString, formatter);
} catch (DateTimeParseException e) {
Expand All @@ -529,7 +528,7 @@ public static LocalDate parseLocalDate(String dateString, String pattern) {
return null;
}

DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern, Locale.US);
DateTimeFormatter formatter = TeammatesDateTimeFormatter.ofPattern(pattern);
try {
return LocalDate.parse(dateString, formatter);
} catch (DateTimeParseException e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,16 @@
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

import teammates.common.datatransfer.attributes.AccountAttributes;
import teammates.common.exception.InvalidParametersException;
import teammates.common.util.ActivityLogEntry;
import teammates.common.util.Assumption;
import teammates.common.util.Const;
import teammates.common.util.StringHelper;
import teammates.common.util.TeammatesDateTimeFormatter;
import teammates.common.util.TimeHelper;
import teammates.ui.template.AdminActivityLogTableRow;

Expand Down Expand Up @@ -262,12 +261,12 @@ private QueryParameters parseQuery(String query) throws ParseException, InvalidP
}

} else if ("from".equals(label)) {
fromDateValue = LocalDate.parse(values[0], DateTimeFormatter.ofPattern("dd/MM/yy", Locale.US))
fromDateValue = LocalDate.parse(values[0], TeammatesDateTimeFormatter.ofPattern("dd/MM/yy"))
.atStartOfDay(Const.SystemParams.ADMIN_TIME_ZONE).toInstant().toEpochMilli();
isFromDateSpecifiedInQuery = true;

} else if ("to".equals(label)) {
toDateValue = LocalDate.parse(values[0], DateTimeFormatter.ofPattern("dd/MM/yy", Locale.US))
toDateValue = LocalDate.parse(values[0], TeammatesDateTimeFormatter.ofPattern("dd/MM/yy"))
.atTime(LocalTime.MAX).atZone(Const.SystemParams.ADMIN_TIME_ZONE).toInstant().toEpochMilli();
} else {
q.add(label, values);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,8 @@
import java.lang.reflect.Type;
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

import org.testng.annotations.BeforeGroups;
import org.testng.annotations.Test;
Expand All @@ -17,6 +15,7 @@
import teammates.common.util.ActivityLogEntry;
import teammates.common.util.Const;
import teammates.common.util.JsonUtils;
import teammates.common.util.TeammatesDateTimeFormatter;
import teammates.common.util.TimeHelper;
import teammates.test.driver.FileHelper;
import teammates.test.driver.TestProperties;
Expand Down Expand Up @@ -85,13 +84,13 @@ private void loadLogMessages() {

private String formatAdminDate(Instant instant) {
return instant.atZone(Const.SystemParams.ADMIN_TIME_ZONE).toLocalDate()
.format(DateTimeFormatter.ofPattern("dd/MM/yy", Locale.US));
.format(TeammatesDateTimeFormatter.ofPattern("dd/MM/yy"));
}

private String formatActivityLogTimeTruncated(Instant instant, ZoneId zoneId) {
// Some timings are adjusted slightly in the tests. Hence instead of testing for exact match,
// we test matching up to the hour.
return DateTimeFormatter.ofPattern("dd/MM/yyyy HH", Locale.US).format(instant.atZone(zoneId));
return TeammatesDateTimeFormatter.ofPattern("dd/MM/yyyy HH").format(instant.atZone(zoneId));
}

private String getExpectedAjaxTimeString(Instant instant, ZoneId zoneId) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

import org.testng.annotations.BeforeGroups;
import org.testng.annotations.Test;
Expand All @@ -16,6 +15,7 @@
import teammates.common.util.Const;
import teammates.common.util.EmailLogEntry;
import teammates.common.util.JsonUtils;
import teammates.common.util.TeammatesDateTimeFormatter;
import teammates.common.util.TimeHelper;
import teammates.test.driver.FileHelper;
import teammates.test.driver.TestProperties;
Expand Down Expand Up @@ -52,7 +52,7 @@ public class AdminEmailLogPageActionTest extends BaseActionTest {
// 130 seconds is chosen so that it will be around 50 logs within 2 hours before now.
private static final int LOG_MESSAGE_INTERVAL_MANY_LOGS = 130;

private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("dd/MM/yyyy", Locale.US);
private static final DateTimeFormatter DATE_FORMATTER = TeammatesDateTimeFormatter.ofPattern("dd/MM/yyyy");

private static final Instant TODAY = Instant.now();
private static final Instant YESTERDAY = TimeHelper.getInstantDaysOffsetFromNow(-1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

import org.openqa.selenium.By;
import org.testng.annotations.BeforeMethod;
Expand All @@ -20,6 +19,7 @@
import teammates.common.util.AppUrl;
import teammates.common.util.Const;
import teammates.common.util.FieldValidator;
import teammates.common.util.TeammatesDateTimeFormatter;
import teammates.common.util.TimeHelper;
import teammates.test.driver.AssertHelper;
import teammates.test.driver.BackDoor;
Expand Down Expand Up @@ -722,7 +722,7 @@ private void testDatePickerScripts(LocalDate defaultStartDate) {
feedbackPage.clickCustomVisibleTimeButton();
feedbackPage.clickCustomPublishTimeButton();

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE MMM dd yyyy", Locale.US);
DateTimeFormatter formatter = TeammatesDateTimeFormatter.ofPattern("EEE MMM dd yyyy");

______TS("validate visible date range before editing start date");

Expand Down
8 changes: 4 additions & 4 deletions src/test/java/teammates/test/driver/HtmlHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import java.time.Instant;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

import org.jsoup.Jsoup;
import org.jsoup.helper.W3CDom;
Expand All @@ -17,6 +16,7 @@
import teammates.common.util.Const;
import teammates.common.util.SanitizationHelper;
import teammates.common.util.StringHelper;
import teammates.common.util.TeammatesDateTimeFormatter;
import teammates.common.util.TimeHelper;

/**
Expand Down Expand Up @@ -412,12 +412,12 @@ private static String suppressVariationsInInjectedValues(String content) {
*/
private static String replaceUnpredictableValuesWithPlaceholders(String content) {
LocalDate today = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE, dd MMM yyyy, ", Locale.US);
DateTimeFormatter formatter = TeammatesDateTimeFormatter.ofPattern("EEE, dd MMM yyyy, ");
String dateToday = formatter.format(today);
String dateYesterday = formatter.format(today.minusDays(1));
String dateTomorrow = formatter.format(today.plusDays(1));
String dateTodayInIso8601 = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'", Locale.US).format(today);
String dateTodayInCoursesPageFormat = DateTimeFormatter.ofPattern("d MMM yyyy", Locale.US).format(today);
String dateTodayInIso8601 = TeammatesDateTimeFormatter.ofPattern("yyyy-MM-dd'T'").format(today);
String dateTodayInCoursesPageFormat = TeammatesDateTimeFormatter.ofPattern("d MMM yyyy").format(today);
return content // dev server admin absolute URLs (${teammates.url}/_ah/...)
.replace("\"" + TestProperties.TEAMMATES_URL + "/_ah", "\"/_ah")
// logout URL generated by Google
Expand Down

0 comments on commit 078889a

Please sign in to comment.