dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #43986
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 22317: Moved code for getting user settings with fallback into own method in service, from controller
Merge authors:
Stian Sandvold (stian-sandvold)
------------------------------------------------------------
revno: 22317 [merge]
committer: Stian Sandvold <stian.sandvold@xxxxxxxxx>
branch nick: dhis2
timestamp: Tue 2016-03-15 11:12:20 +0100
message:
Moved code for getting user settings with fallback into own method in service, from controller
modified:
dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserSettingService.java
dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/DefaultUserSettingService.java
dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/UserSettingController.java
--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk
Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserSettingService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserSettingService.java 2016-01-04 02:27:49 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserSettingService.java 2016-03-15 10:04:09 +0000
@@ -30,6 +30,8 @@
import java.io.Serializable;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
/**
* The main interface for working with user settings. Implementation need to get
@@ -128,6 +130,14 @@
* @return all user settings belonging to the current user.
*/
List<UserSetting> getAllUserSettings();
+
+ /**
+ * Returns all specified user settings. If any user settings have not been set,
+ * system settings will be used as a fallback.
+ * @param names the settings to retrieve
+ * @return a map of setting names and their values
+ */
+ Map<String, Serializable> getUserSettingsWithFallbackByUserAsMap( User user, Set<String> names );
/**
* Invalidates in-memory caches.
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/DefaultUserSettingService.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/DefaultUserSettingService.java 2016-03-14 18:04:21 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/DefaultUserSettingService.java 2016-03-15 10:09:43 +0000
@@ -42,12 +42,10 @@
import org.springframework.transaction.support.TransactionTemplate;
import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
+import java.util.*;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
+import java.util.function.Consumer;
import java.util.stream.Collectors;
/**
@@ -232,6 +230,22 @@
}
@Override
+ public Map<String, Serializable> getUserSettingsWithFallbackByUserAsMap( User user, Set<String> names )
+ {
+ Map<String, Serializable> result = Sets.newHashSet( getUserSettings(user) ).stream()
+ .collect( Collectors.toMap( UserSetting::getName, UserSetting::getValue ) );
+
+ names.forEach( name -> {
+ if ( !result.containsKey( name ) )
+ {
+ result.put( name, systemSettingManager.getSystemSetting( NAME_SETTING_KEY_MAP.get( name ) ) );
+ }
+ } );
+
+ return result;
+ }
+
+ @Override
@Transactional
public List<UserSetting> getUserSettings( User user )
{
@@ -263,15 +277,15 @@
try
{
String username = user.isPresent() ? user.get().getUsername() : currentUserService.getCurrentUsername();
-
+
String cacheKey = getCacheKey( key.getName(), username );
-
+
Optional<Serializable> result = SETTING_CACHE.
get( cacheKey, () -> getUserSettingOptional( key, username ) );
if ( !result.isPresent() && NAME_SETTING_KEY_MAP.containsKey( key.getName() ) )
{
- return Optional.ofNullable(
+ return Optional.ofNullable(
systemSettingManager.getSystemSetting( NAME_SETTING_KEY_MAP.get( key.getName() ) ) );
}
else
=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/UserSettingController.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/UserSettingController.java 2016-03-14 14:46:23 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/UserSettingController.java 2016-03-15 10:09:43 +0000
@@ -29,18 +29,9 @@
*/
import com.google.common.collect.Sets;
+import org.hisp.dhis.dxf2.webmessage.WebMessageException;
import org.hisp.dhis.render.RenderService;
-
-import org.hisp.dhis.dxf2.webmessage.WebMessageException;
-import org.hisp.dhis.setting.SettingKey;
-import org.hisp.dhis.setting.SystemSettingManager;
-import org.hisp.dhis.user.CurrentUserService;
-import org.hisp.dhis.user.User;
-import org.hisp.dhis.user.UserCredentials;
-import org.hisp.dhis.user.UserService;
-import org.hisp.dhis.user.UserSetting;
-import org.hisp.dhis.user.UserSettingKey;
-import org.hisp.dhis.user.UserSettingService;
+import org.hisp.dhis.user.*;
import org.hisp.dhis.util.ObjectUtils;
import org.hisp.dhis.webapi.service.WebMessageService;
import org.hisp.dhis.webapi.utils.ContextUtils;
@@ -48,18 +39,15 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-
import java.io.IOException;
import java.io.Serializable;
-import java.util.*;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
import java.util.stream.Collectors;
/**
@@ -69,9 +57,6 @@
@RequestMapping( "/userSettings" )
public class UserSettingController
{
- private static final Map<String, SettingKey> NAME_SETTING_KEY_MAP = Sets.newHashSet(
- SettingKey.values() ).stream().collect( Collectors.toMap( SettingKey::getName, s -> s ) );
-
@Autowired
private UserSettingService userSettingService;
@@ -87,8 +72,8 @@
@Autowired
private RenderService renderService;
- @Autowired
- private SystemSettingManager systemSettingManager;
+ private static final Set<String> USER_SETTING_NAMES = Sets.newHashSet(
+ UserSettingKey.values() ).stream().map( UserSettingKey::getName ).collect( Collectors.toSet() );
// -------------------------------------------------------------------------
// Resources
@@ -205,25 +190,10 @@
us = currentUserService.getCurrentUser();
}
- Map<String, Serializable> settings = new HashMap<>();
-
- // Find fall-back for missing users settings
-
- userSettingService.getUserSettings( us ).stream().filter( UserSetting::hasValue )
- .forEach( userSetting -> settings.put( userSetting.getName(), userSetting.getValue() ) );
-
- // Add missing user settings
-
- for ( UserSettingKey userSettingKey : UserSettingKey.values() )
- {
- if ( !settings.containsKey( userSettingKey.getName() ) )
- {
- settings.put( userSettingKey.getName(),
- systemSettingManager.getSystemSetting( NAME_SETTING_KEY_MAP.get( userSettingKey.getName() ) ) );
- }
- }
-
- renderService.toJson( response.getOutputStream(), settings );
+ Map<String, Serializable> result = userSettingService
+ .getUserSettingsWithFallbackByUserAsMap( us, USER_SETTING_NAMES );
+
+ renderService.toJson( response.getOutputStream(), result );
}
@RequestMapping( value = "/{key}", method = RequestMethod.DELETE )