@SuppressWarnings( "unchecked" ) public static <T> T getUserSetting( UserSettingKey key, Class<T> klass ) { return threadUserSettings.get() != null ? (T) threadUserSettings.get().get( key.getName() ) : null; }
@Override @Transactional public List<UserSetting> getUserSettings( User user ) { if ( user == null ) { return new ArrayList<>(); } List<UserSetting> userSettings = userSettingStore.getAllUserSettings( user ); Set<UserSetting> defaultUserSettings = UserSettingKey.getDefaultUserSettings( user ); userSettings.addAll( defaultUserSettings.stream().filter( x -> !userSettings.contains( x ) ).collect( Collectors.toList() ) ); return userSettings; }
@Override public Map<String, Serializable> getUserSettingsAsMap() { Set<UserSettingKey> userSettingKeys = Stream.of( UserSettingKey.values() ).collect( Collectors.toSet() ); return getUserSettingsWithFallbackByUserAsMap( currentUserService.getCurrentUser(), userSettingKeys, false ); }
public static Serializable getAsRealClass( String name, String value ) { Optional<UserSettingKey> setting = getByName( name ); if ( setting.isPresent() ) { Class<?> settingClazz = setting.get().getClazz(); if ( Double.class.isAssignableFrom( settingClazz ) ) { return Double.valueOf( value ); } else if ( Integer.class.isAssignableFrom( settingClazz ) ) { return Integer.valueOf( value ); } else if ( Boolean.class.isAssignableFrom( settingClazz ) ) { return Boolean.valueOf( value ); } else if ( Locale.class.isAssignableFrom( settingClazz ) ) { return LocaleUtils.toLocale( value ); } //TODO handle Dates } return value; }
/** * 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 ); }
public static Serializable getUserSetting( UserSettingKey key ) { return threadUserSettings.get() != null ? threadUserSettings.get().get( key.getName() ) : null; }
public static void setUserSetting( UserSettingKey key, Serializable value ) { UserContext.setUserSetting( key.getName(), value ); }
@Override @Transactional public void deleteUserSetting( UserSettingKey key, User user ) { UserSetting setting = userSettingStore.getUserSetting( user, key.getName() ); if ( setting != null ) { deleteUserSetting( setting ); } }
@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; }
public UserSetting doInTransaction( TransactionStatus status ) { return userSettingStore.getUserSetting( userCredentials.getUserInfo(), key.getName() ); } } );
private Optional<Serializable> getUserSetting( UserSettingKey key, Optional<User> user ) { if ( key == null ) { return Optional.empty(); } String username = user.isPresent() ? user.get().getUsername() : currentUserService.getCurrentUsername(); String cacheKey = getCacheKey( key.getName(), username ); Optional<Serializable> result = userSettingCache .get( cacheKey, c -> getUserSettingOptional( key, username ).orElse( null ) ); if ( !result.isPresent() && NAME_SETTING_KEY_MAP.containsKey( key.getName() ) ) { return Optional.ofNullable( systemSettingManager.getSystemSetting( NAME_SETTING_KEY_MAP.get( key.getName() ) ) ); } else { return result; } }
@Override @Transactional public void deleteUserSetting( UserSettingKey key ) { User currentUser = currentUserService.getCurrentUser(); if ( currentUser != null ) { UserSetting setting = userSettingStore.getUserSetting( currentUser, key.getName() ); if ( setting != null ) { deleteUserSetting( setting ); } } }
@Override @Transactional public void saveUserSetting( UserSettingKey key, Serializable value, User user ) { if ( user == null ) { return; } userSettingCache.invalidate( getCacheKey( key.getName(), user.getUsername() ) ); UserSetting userSetting = userSettingStore.getUserSetting( user, key.getName() ); if ( userSetting == null ) { userSetting = new UserSetting( user, key.getName(), value ); userSettingStore.addUserSetting( userSetting ); } else { userSetting.setValue( value ); userSettingStore.updateUserSetting( userSetting ); } }