Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/UserAction.java =================================================================== diff -u -rb959a5f41013249a0537fb19bb7129dd727bb55a -r74a2b3a59c65dff1bd5bf94988fa6fb9ae24160a --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/UserAction.java (.../UserAction.java) (revision b959a5f41013249a0537fb19bb7129dd727bb55a) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/UserAction.java (.../UserAction.java) (revision 74a2b3a59c65dff1bd5bf94988fa6fb9ae24160a) @@ -222,7 +222,7 @@ } request.setAttribute("locales", locales); - request.setAttribute("countryCodes", CommonConstants.COUNTRY_CODES); + request.setAttribute("countryCodes", LanguageUtil.getCountryCodes()); request.setAttribute("authenticationMethods", authenticationMethods); return mapping.findForward("user"); Index: lams_admin/web/user.jsp =================================================================== diff -u -rb959a5f41013249a0537fb19bb7129dd727bb55a -r74a2b3a59c65dff1bd5bf94988fa6fb9ae24160a --- lams_admin/web/user.jsp (.../user.jsp) (revision b959a5f41013249a0537fb19bb7129dd727bb55a) +++ lams_admin/web/user.jsp (.../user.jsp) (revision 74a2b3a59c65dff1bd5bf94988fa6fb9ae24160a) @@ -358,8 +358,8 @@ - - + + ${countryCode.value} Index: lams_central/src/java/org/lamsfoundation/lams/web/ProfileAction.java =================================================================== diff -u -rb959a5f41013249a0537fb19bb7129dd727bb55a -r74a2b3a59c65dff1bd5bf94988fa6fb9ae24160a --- lams_central/src/java/org/lamsfoundation/lams/web/ProfileAction.java (.../ProfileAction.java) (revision b959a5f41013249a0537fb19bb7129dd727bb55a) +++ lams_central/src/java/org/lamsfoundation/lams/web/ProfileAction.java (.../ProfileAction.java) (revision 74a2b3a59c65dff1bd5bf94988fa6fb9ae24160a) @@ -242,7 +242,7 @@ userForm.set("localeId", locale.getLocaleId()); request.setAttribute("locales", locales); - request.setAttribute("countryCodes", CommonConstants.COUNTRY_CODES); + request.setAttribute("countryCodes", LanguageUtil.getCountryCodes()); themeService = getThemeService(); Index: lams_central/src/java/org/lamsfoundation/lams/web/action/SignupAction.java =================================================================== diff -u -rb959a5f41013249a0537fb19bb7129dd727bb55a -r74a2b3a59c65dff1bd5bf94988fa6fb9ae24160a --- lams_central/src/java/org/lamsfoundation/lams/web/action/SignupAction.java (.../SignupAction.java) (revision b959a5f41013249a0537fb19bb7129dd727bb55a) +++ lams_central/src/java/org/lamsfoundation/lams/web/action/SignupAction.java (.../SignupAction.java) (revision 74a2b3a59c65dff1bd5bf94988fa6fb9ae24160a) @@ -21,6 +21,7 @@ import org.lamsfoundation.lams.util.ConfigurationKeys; import org.lamsfoundation.lams.util.Emailer; import org.lamsfoundation.lams.util.HashUtil; +import org.lamsfoundation.lams.util.LanguageUtil; import org.lamsfoundation.lams.util.ValidationUtil; import org.lamsfoundation.lams.util.WebUtil; import org.springframework.web.context.WebApplicationContext; @@ -41,7 +42,7 @@ signupService = (ISignupService) wac.getBean("signupService"); } - request.setAttribute("countryCodes", CommonConstants.COUNTRY_CODES); + request.setAttribute("countryCodes", LanguageUtil.getCountryCodes()); DynaActionForm signupForm = (DynaActionForm) form; String method = WebUtil.readStrParam(request, "method", true); Index: lams_central/web/profile/editprofile.jsp =================================================================== diff -u -rb959a5f41013249a0537fb19bb7129dd727bb55a -r74a2b3a59c65dff1bd5bf94988fa6fb9ae24160a --- lams_central/web/profile/editprofile.jsp (.../editprofile.jsp) (revision b959a5f41013249a0537fb19bb7129dd727bb55a) +++ lams_central/web/profile/editprofile.jsp (.../editprofile.jsp) (revision 74a2b3a59c65dff1bd5bf94988fa6fb9ae24160a) @@ -153,8 +153,8 @@ - - + + ${countryCode.value} Index: lams_central/web/signup/singupTab.jsp =================================================================== diff -u -rb959a5f41013249a0537fb19bb7129dd727bb55a -r74a2b3a59c65dff1bd5bf94988fa6fb9ae24160a --- lams_central/web/signup/singupTab.jsp (.../singupTab.jsp) (revision b959a5f41013249a0537fb19bb7129dd727bb55a) +++ lams_central/web/signup/singupTab.jsp (.../singupTab.jsp) (revision 74a2b3a59c65dff1bd5bf94988fa6fb9ae24160a) @@ -256,8 +256,8 @@ - - + + ${countryCode.value} Index: lams_common/src/java/org/lamsfoundation/lams/util/LanguageUtil.java =================================================================== diff -u -r51fb2a37254f24bb2a805d4ffd54482c779f43fa -r74a2b3a59c65dff1bd5bf94988fa6fb9ae24160a --- lams_common/src/java/org/lamsfoundation/lams/util/LanguageUtil.java (.../LanguageUtil.java) (revision 51fb2a37254f24bb2a805d4ffd54482c779f43fa) +++ lams_common/src/java/org/lamsfoundation/lams/util/LanguageUtil.java (.../LanguageUtil.java) (revision 74a2b3a59c65dff1bd5bf94988fa6fb9ae24160a) @@ -24,10 +24,13 @@ package org.lamsfoundation.lams.util; import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.TimeZone; +import java.util.stream.Collectors; import org.apache.commons.lang.StringUtils; import org.lamsfoundation.lams.usermanagement.SupportedLocale; @@ -40,7 +43,6 @@ * Various internationalisation (internationalization) utilities. * * @author Fiona Malikoff - * */ public class LanguageUtil { @@ -51,20 +53,8 @@ public static final String DEFAULT_DIRECTION = "LTR"; private static IUserManagementService service; + private static MessageService messageService; - private static IUserManagementService getService() { - if (LanguageUtil.service == null) { - WebApplicationContext ctx = WebApplicationContextUtils - .getWebApplicationContext(SessionManager.getServletContext()); - LanguageUtil.service = (IUserManagementService) ctx.getBean("userManagementService"); - } - return LanguageUtil.service; - } - - public static void setService(IUserManagementService service) { - LanguageUtil.service = service; - } - /** * Get the default language, country, based on entries in the server configuration file. * @@ -133,9 +123,9 @@ } SupportedLocale locale = null; - locale = LanguageUtil.getSupportedLocaleOrNull(langIsoCode, countryIsoCode); + locale = getSupportedLocaleOrNull(langIsoCode, countryIsoCode); if (locale == null) { - locale = LanguageUtil.getSupportedLocaleOrNull(LanguageUtil.DEFAULT_LANGUAGE, LanguageUtil.DEFAULT_COUNTRY); + locale = getSupportedLocaleOrNull(LanguageUtil.DEFAULT_LANGUAGE, LanguageUtil.DEFAULT_COUNTRY); } return locale; @@ -146,16 +136,16 @@ * default locale. */ public static SupportedLocale getSupportedLocale(String input) { - List list = LanguageUtil.getService().findByProperty(SupportedLocale.class, "languageIsoCode", input); + List list = getService().findByProperty(SupportedLocale.class, "languageIsoCode", input); if ((list != null) && (list.size() > 0)) { return (SupportedLocale) list.get(0); } else { - list = LanguageUtil.getService().findByProperty(SupportedLocale.class, "countryIsoCode", input); + list = getService().findByProperty(SupportedLocale.class, "countryIsoCode", input); if ((list != null) && (list.size() > 0)) { return (SupportedLocale) list.get(0); } } - return LanguageUtil.getDefaultLocale(); + return getDefaultLocale(); } /** @@ -164,9 +154,9 @@ public static SupportedLocale getSupportedLocale(String langIsoCode, String countryIsoCode) { SupportedLocale locale = null; - locale = LanguageUtil.getSupportedLocaleOrNull(langIsoCode, countryIsoCode); + locale = getSupportedLocaleOrNull(langIsoCode, countryIsoCode); if (locale == null) { - locale = LanguageUtil.getDefaultLocale(); + locale = getDefaultLocale(); } return locale; @@ -190,7 +180,7 @@ return null; } - List list = LanguageUtil.getService().findByProperties(SupportedLocale.class, properties); + List list = getService().findByProperties(SupportedLocale.class, properties); if ((list != null) && (list.size() > 0)) { Collections.sort(list); locale = (SupportedLocale) list.get(0); @@ -199,5 +189,41 @@ } return locale; } + + /** + * Get list of all available country names sorted alphabetically. + */ + public static Map getCountryCodes() { + getMessageService(); + + Map countryCodesMap = new HashMap(); + for (String countryCode : CommonConstants.COUNTRY_CODES) { + String countryName = messageService.getMessage("country." + countryCode); + countryCodesMap.put(countryCode, countryName); + } + + //sort alphabetically + return countryCodesMap.entrySet().stream().sorted(Map.Entry.comparingByValue(Comparator.naturalOrder())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, + LinkedHashMap::new)); + } + private static IUserManagementService getService() { + if (service == null) { + WebApplicationContext ctx = WebApplicationContextUtils + .getWebApplicationContext(SessionManager.getServletContext()); + service = (IUserManagementService) ctx.getBean("userManagementService"); + } + return service; + } + + private static MessageService getMessageService() { + if (messageService == null) { + WebApplicationContext ctx = WebApplicationContextUtils + .getWebApplicationContext(SessionManager.getServletContext()); + messageService = (MessageService) ctx.getBean("commonMessageService"); + } + return messageService; + } + }