public static void setUserSettings( List<UserSetting> userSettings ) { userSettings.stream() .filter( userSetting -> !StringUtils.isEmpty( userSetting.getName() ) ) .forEach( userSetting -> UserContext.setUserSetting( userSetting.getName(), userSetting.getValue() ) ); } }
/** * Get user setting optional. The database call is executed in a * programmatic transaction. If the user setting exists and has a value, * the value is returned. If not, the default value for the key is returned, * if not present, an empty optional is returned. * * @param key the user setting key. * @param username the username of the user. * @return an optional user setting value. */ private Optional<Serializable> getUserSettingOptional( UserSettingKey key, String username ) { UserCredentials userCredentials = userService.getUserCredentialsByUsername( username ); if ( userCredentials == null ) { return Optional.empty(); } UserSetting setting = transactionTemplate.execute( new TransactionCallback<UserSetting>() { public UserSetting doInTransaction( TransactionStatus status ) { return userSettingStore.getUserSetting( userCredentials.getUserInfo(), key.getName() ); } } ); Serializable value = setting != null && setting.hasValue() ? setting.getValue() : key.getDefaultValue(); return Optional.ofNullable( value ); }
@Override public Map<String, Serializable> getUserSettingsWithFallbackByUserAsMap( User user, Set<UserSettingKey> userSettingKeys, boolean useFallback ) { Map<String, Serializable> result = Sets.newHashSet( getUserSettings( user ) ).stream() .filter( userSetting -> userSetting != null && userSetting.getName() != null && userSetting.getValue() != null ) .collect( Collectors.toMap( UserSetting::getName, UserSetting::getValue ) ); userSettingKeys.forEach( userSettingKey -> { if ( !result.containsKey( userSettingKey.getName() ) ) { Optional<SettingKey> systemSettingKey = SettingKey.getByName( userSettingKey.getName() ); if ( useFallback && systemSettingKey.isPresent() ) { result.put( userSettingKey.getName(), systemSettingManager.getSystemSetting( systemSettingKey.get() ) ); } else { result.put( userSettingKey.getName(), null ); } } } ); return result; }