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;
+ }
+
}