package de.micromata.borgbutler.server.user; import java.text.NumberFormat; import java.util.Locale; public class UserUtils { private static final ThreadLocal threadUserInfo = new ThreadLocal(); /** * Gets the current user from ThreadLocal. * @return */ public static UserData getUser() { UserInfo user = threadUserInfo.get(); if (user == null) { return null; } return user.userData; } public static Locale getUserLocale() { UserInfo userInfo = threadUserInfo.get(); if (userInfo == null) return null; UserData user = userInfo.userData; Locale locale = user.getLocale(); if (locale == null) { locale = userInfo.requestLocale; } if (locale == null) { locale = Locale.getDefault(); } return locale; } public static String getUserDateFormat() { UserData user = getUser(); return user != null ? user.getDateFormat() : null; } static void setUser(UserData user, Locale requestLocale) { threadUserInfo.set(new UserInfo(user, requestLocale)); } static void removeUser() { threadUserInfo.remove(); } private static class UserInfo { private UserData userData; private Locale requestLocale; private UserInfo(UserData userData, Locale requestLocale) { this.userData = userData; this.requestLocale = requestLocale; } } public static String formatNumber(long number) { NumberFormat numberFormat = NumberFormat.getInstance(getUserLocale()); return numberFormat.format(number); } }