Index: lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java =================================================================== diff -u -rb4c7cf180245db7c4d9d5c600eaf294a4c570286 -rc1fdc839165f8b33f051c1688465022f0d85fc92 --- lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java (.../ImportService.java) (revision b4c7cf180245db7c4d9d5c600eaf294a4c570286) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java (.../ImportService.java) (revision c1fdc839165f8b33f051c1688465022f0d85fc92) @@ -707,7 +707,7 @@ String timeZoneColumn = parseStringCell(row.getCell(ImportService.TIME_ZONE)); user.setTimeZone( - TimeZoneUtil.isTimezoneValid(timeZoneColumn) ? timeZoneColumn : TimeZoneUtil.getServerTimezone()); + TimeZoneUtil.isTimeZoneValid(timeZoneColumn) ? timeZoneColumn : TimeZoneUtil.getServerTimeZone()); service.updatePassword(user, password); Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ConfigController.java =================================================================== diff -u -rb4c7cf180245db7c4d9d5c600eaf294a4c570286 -rc1fdc839165f8b33f051c1688465022f0d85fc92 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ConfigController.java (.../ConfigController.java) (revision b4c7cf180245db7c4d9d5c600eaf294a4c570286) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ConfigController.java (.../ConfigController.java) (revision c1fdc839165f8b33f051c1688465022f0d85fc92) @@ -28,6 +28,7 @@ import org.lamsfoundation.lams.logevent.LogEvent; import org.lamsfoundation.lams.logevent.service.ILogEventService; import org.lamsfoundation.lams.security.ISecurityService; +import org.lamsfoundation.lams.timezone.TimeZoneUtil; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.Configuration; import org.lamsfoundation.lams.util.ConfigurationKeys; @@ -45,6 +46,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; +import java.time.ZoneId; import java.util.LinkedHashMap; import java.util.Map; import java.util.TimeZone; @@ -82,7 +84,7 @@ smtpAuthTypes.put("ssl", "SSL"); request.setAttribute("smtpAuthTypes", smtpAuthTypes); - request.setAttribute("timezones", TimeZone.getAvailableIDs()); + request.setAttribute("timezones", TimeZoneUtil.getTimeZones()); return "config/editconfig"; } Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserController.java =================================================================== diff -u -rb4c7cf180245db7c4d9d5c600eaf294a4c570286 -rc1fdc839165f8b33f051c1688465022f0d85fc92 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserController.java (.../UserController.java) (revision b4c7cf180245db7c4d9d5c600eaf294a4c570286) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserController.java (.../UserController.java) (revision c1fdc839165f8b33f051c1688465022f0d85fc92) @@ -58,10 +58,10 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; +import java.time.ZoneId; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.TimeZone; /** * @author Jun-Dir Liew @@ -184,7 +184,7 @@ log.debug(e); } - userForm.setTimeZone(TimeZoneUtil.getServerTimezone()); + userForm.setTimeZone(TimeZoneUtil.getServerTimeZone()); } userForm.setOrgId(org == null ? null : org.getOrganisationId()); @@ -198,7 +198,7 @@ request.setAttribute("canSetTwoFactorAuthentication", true); } - request.setAttribute("timezones", TimeZone.getAvailableIDs()); + request.setAttribute("timezones", TimeZoneUtil.getTimeZones()); // for breadcrumb links if (org != null) { Index: lams_central/src/java/org/lamsfoundation/lams/web/ProfileController.java =================================================================== diff -u -r85e52bd836773ab33bc41ba2ca0ced5a5f4d4fbb -rc1fdc839165f8b33f051c1688465022f0d85fc92 --- lams_central/src/java/org/lamsfoundation/lams/web/ProfileController.java (.../ProfileController.java) (revision 85e52bd836773ab33bc41ba2ca0ced5a5f4d4fbb) +++ lams_central/src/java/org/lamsfoundation/lams/web/ProfileController.java (.../ProfileController.java) (revision c1fdc839165f8b33f051c1688465022f0d85fc92) @@ -34,6 +34,7 @@ import org.lamsfoundation.lams.policies.service.IPolicyService; import org.lamsfoundation.lams.themes.Theme; import org.lamsfoundation.lams.themes.service.IThemeService; +import org.lamsfoundation.lams.timezone.TimeZoneUtil; import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.OrganisationType; import org.lamsfoundation.lams.usermanagement.SupportedLocale; @@ -57,6 +58,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpServletRequest; +import java.time.ZoneId; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -256,7 +258,7 @@ } userForm.setUserTheme(userSelectedTheme); - request.setAttribute("timezones", TimeZone.getAvailableIDs()); + request.setAttribute("timezones", TimeZoneUtil.getTimeZones()); return "profile/editprofile"; } Index: lams_central/src/java/org/lamsfoundation/lams/web/controller/SignupController.java =================================================================== diff -u -rb4c7cf180245db7c4d9d5c600eaf294a4c570286 -rc1fdc839165f8b33f051c1688465022f0d85fc92 --- lams_central/src/java/org/lamsfoundation/lams/web/controller/SignupController.java (.../SignupController.java) (revision b4c7cf180245db7c4d9d5c600eaf294a4c570286) +++ lams_central/src/java/org/lamsfoundation/lams/web/controller/SignupController.java (.../SignupController.java) (revision c1fdc839165f8b33f051c1688465022f0d85fc92) @@ -82,7 +82,7 @@ user.setLastName(signupForm.getLastName()); user.setEmail(signupForm.getEmail()); user.setCountry(signupForm.getCountry()); - user.setTimeZone(TimeZoneUtil.getServerTimezone()); + user.setTimeZone(TimeZoneUtil.getServerTimeZone()); if (!ValidationUtil.isPasswordNotUserDetails(signupForm.getPassword(), user)) { errorMap.add("password", messageService.getMessage("label.password.restrictions")); Index: lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java =================================================================== diff -u -rb4c7cf180245db7c4d9d5c600eaf294a4c570286 -rc1fdc839165f8b33f051c1688465022f0d85fc92 --- lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java (.../IntegrationService.java) (revision b4c7cf180245db7c4d9d5c600eaf294a4c570286) +++ lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java (.../IntegrationService.java) (revision c1fdc839165f8b33f051c1688465022f0d85fc92) @@ -504,7 +504,7 @@ user.setCreateDate(new Date()); user.setDisabledFlag(false); user.setLocale(LanguageUtil.getSupportedLocaleByNameOrLanguageCode(userData[12])); - user.setTimeZone(TimeZoneUtil.getServerTimezone()); + user.setTimeZone(TimeZoneUtil.getServerTimeZone()); user.setTheme(service.getDefaultTheme()); service.saveUser(user); } Index: lams_common/src/java/org/lamsfoundation/lams/timezone/TimeZoneUtil.java =================================================================== diff -u -rb4c7cf180245db7c4d9d5c600eaf294a4c570286 -rc1fdc839165f8b33f051c1688465022f0d85fc92 --- lams_common/src/java/org/lamsfoundation/lams/timezone/TimeZoneUtil.java (.../TimeZoneUtil.java) (revision b4c7cf180245db7c4d9d5c600eaf294a4c570286) +++ lams_common/src/java/org/lamsfoundation/lams/timezone/TimeZoneUtil.java (.../TimeZoneUtil.java) (revision c1fdc839165f8b33f051c1688465022f0d85fc92) @@ -1,20 +1,29 @@ package org.lamsfoundation.lams.timezone; -import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; import org.lamsfoundation.lams.util.Configuration; import org.lamsfoundation.lams.util.ConfigurationKeys; +import java.time.ZoneId; +import java.util.List; import java.util.TimeZone; +import java.util.stream.Collectors; public class TimeZoneUtil { - public static String getServerTimezone() { + private static final List TIMEZONES = ZoneId.getAvailableZoneIds().stream().sorted() + .collect(Collectors.toList()); + + public static String getServerTimeZone() { String serverTimezone = Configuration.get(ConfigurationKeys.SERVER_TIMEZONE); return StringUtils.isBlank(serverTimezone) ? TimeZone.getDefault().getID() : serverTimezone; } - public static boolean isTimezoneValid(String timezoneId) { - return ArrayUtils.contains(TimeZone.getAvailableIDs(), timezoneId); + public static boolean isTimeZoneValid(String timezoneId) { + return getTimeZones().contains(timezoneId); } + + public static List getTimeZones() { + return TIMEZONES; + } } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/LdapService.java =================================================================== diff -u -rb4c7cf180245db7c4d9d5c600eaf294a4c570286 -rc1fdc839165f8b33f051c1688465022f0d85fc92 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/LdapService.java (.../LdapService.java) (revision b4c7cf180245db7c4d9d5c600eaf294a4c570286) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/LdapService.java (.../LdapService.java) (revision c1fdc839165f8b33f051c1688465022f0d85fc92) @@ -150,7 +150,7 @@ user.setDisabledFlag(getDisabledBoolean(attrs)); user.setCreateDate(new Date()); user.setLocale(getLocale(map.get("locale"))); - user.setTimeZone(TimeZoneUtil.getServerTimezone()); + user.setTimeZone(TimeZoneUtil.getServerTimeZone()); user.setFirstLogin(true); service.saveUser(user); service.logUserCreated(user, (User) null);