← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 20698: System settings, more caching

 

------------------------------------------------------------
revno: 20698
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Wed 2015-10-14 13:29:47 +0200
message:
  System settings, more caching
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/setting/Setting.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/setting/SystemSettingManager.java
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/setting/DefaultStyleManager.java
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/setting/DefaultSystemSettingManager.java
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/setting/DefaultTranslateSystemSettingManager.java
  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/resources/META-INF/dhis/beans.xml


--
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/setting/Setting.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/setting/Setting.java	2015-10-13 09:22:30 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/setting/Setting.java	2015-10-14 11:29:47 +0000
@@ -108,7 +108,8 @@
     DATE_FORMAT( "keyDateFormat", "yyyy-MM-dd", String.class ),
     APP_FOLDER_PATH( "appFolderPath" ),
     APP_BASE_URL( "appBaseUrl" ),
-    APP_STORE_URL( "appStoreUrl", "http://www.dhis2.org/appstore";, String.class );
+    APP_STORE_URL( "appStoreUrl", "http://www.dhis2.org/appstore";, String.class ),
+    STYLE( "currentStyle", "light_blue", String.class );
     
     private final String name;
     

=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/setting/SystemSettingManager.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/setting/SystemSettingManager.java	2015-10-14 09:35:22 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/setting/SystemSettingManager.java	2015-10-14 11:29:47 +0000
@@ -130,8 +130,6 @@
 
     Serializable getSystemSetting( String name );
 
-    Serializable getSystemSetting( String name, Serializable defaultValue );
-
     Serializable getSystemSetting( Setting setting );
     
     Serializable getSystemSetting( Setting setting, Serializable defaultValue );

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/setting/DefaultStyleManager.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/setting/DefaultStyleManager.java	2015-09-10 16:35:55 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/setting/DefaultStyleManager.java	2015-10-14 11:29:47 +0000
@@ -35,15 +35,11 @@
 
 /**
  * @author Lars Helge Overland
- * @version $Id$
  */
 public class DefaultStyleManager
     implements StyleManager
 {
-    private static final String SETTING_NAME_STYLE = "currentStyle";
-
     private static final String SEPARATOR = "/";
-
     private static final String SYSTEM_SEPARATOR = File.separator;
 
     // -------------------------------------------------------------------------
@@ -64,13 +60,6 @@
         this.userSettingService = userSettingService;
     }
 
-    private String defaultStyle;
-
-    public void setDefaultStyle( String defaultStyle )
-    {
-        this.defaultStyle = defaultStyle;
-    }
-
     /**
      * Map for styles. The key refers to the user setting key and the value refers
      * to the path to the CSS file of the style relative to /dhis-web-commons/.
@@ -89,19 +78,19 @@
     @Override
     public void setSystemStyle( String style )
     {
-         systemSettingManager.saveSystemSetting( SETTING_NAME_STYLE, style );
+        systemSettingManager.saveSystemSetting( Setting.STYLE.getName(), style );
     }
     
     @Override
     public void setUserStyle( String style )
     {
-        userSettingService.saveUserSetting( SETTING_NAME_STYLE, style );
+        userSettingService.saveUserSetting( Setting.STYLE.getName(), style );
     }
 
     @Override
     public String getCurrentStyle()
     {
-        String style = (String) userSettingService.getUserSetting( SETTING_NAME_STYLE );
+        String style = (String) userSettingService.getUserSetting( Setting.STYLE.getName() );
         
         if ( style != null )
         {
@@ -114,7 +103,7 @@
     @Override
     public String getSystemStyle()
     {
-        return (String) systemSettingManager.getSystemSetting( SETTING_NAME_STYLE, styles.get( defaultStyle ) );
+        return (String) systemSettingManager.getSystemSetting( Setting.STYLE );
     }
 
     @Override

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/setting/DefaultSystemSettingManager.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/setting/DefaultSystemSettingManager.java	2015-10-14 09:35:22 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/setting/DefaultSystemSettingManager.java	2015-10-14 11:29:47 +0000
@@ -57,7 +57,7 @@
     /**
      * Cache for system settings. Does not accept nulls.
      */
-    private static Cache<String, Serializable> SETTING_CACHE = CacheBuilder.newBuilder()
+    private static Cache<String, Optional<Serializable>> SETTING_CACHE = CacheBuilder.newBuilder()
         .expireAfterAccess( 15, TimeUnit.MINUTES )
         .initialCapacity( 200 )
         .maximumSize( 400 )
@@ -143,37 +143,31 @@
     }
 
     @Override
-    public Serializable getSystemSetting( String name, Serializable defaultValue )
-    {
-        SystemSetting setting = systemSettingStore.getByName( name );
-
-        return setting != null && setting.hasValue() ? setting.getValue() : defaultValue;
-    }
-
-    @Override
     public Serializable getSystemSetting( Setting setting )
     {
-        if ( setting.hasDefaultValue() )
-        {
-            try
-            {
-                return SETTING_CACHE.get( setting.getName(), () -> getSystemSetting( setting.getName(), setting.getDefaultValue() ) );
-            }
-            catch ( ExecutionException ignored )
-            {
-                return null;
-            }
-        }
-        else
-        {
-            return getSystemSetting( setting.getName(), setting.getDefaultValue() );
-        }        
+        try
+        {
+            Optional<Serializable> value = SETTING_CACHE.get( setting.getName(), () -> getSystemSettingOptional( setting.getName(), setting.getDefaultValue() ) );
+            
+            return value.orElse( null );
+        }
+        catch ( ExecutionException ignored )
+        {
+            return null;
+        }
     }
 
     @Override
     public Serializable getSystemSetting( Setting setting, Serializable defaultValue )
     {
-        return getSystemSetting( setting.getName(), defaultValue );
+        return getSystemSettingOptional( setting.getName(), defaultValue ).orElse( null );
+    }
+
+    private Optional<Serializable> getSystemSettingOptional( String name, Serializable defaultValue )
+    {
+        SystemSetting setting = systemSettingStore.getByName( name );
+        
+        return setting != null && setting.hasValue() ? Optional.of( setting.getValue() ) : Optional.ofNullable( defaultValue );
     }
 
     @Override
@@ -186,6 +180,7 @@
     public Map<String, Serializable> getSystemSettingsAsMap()
     {
         Map<String, Serializable> settingsMap = new HashMap<>();
+        
         Collection<SystemSetting> systemSettings = getAllSystemSettings();
 
         for ( SystemSetting systemSetting : systemSettings )

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/setting/DefaultTranslateSystemSettingManager.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/setting/DefaultTranslateSystemSettingManager.java	2015-10-06 18:24:42 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/setting/DefaultTranslateSystemSettingManager.java	2015-10-14 11:29:47 +0000
@@ -31,6 +31,8 @@
 import java.util.Hashtable;
 import java.util.Map;
 
+import org.hisp.dhis.util.ObjectUtils;
+
 /**
  * @author James Chang
  */
@@ -70,10 +72,14 @@
     {
         Map<String, String> translations = new Hashtable<>();
 
-        translations.put( Setting.APPLICATION_TITLE.getDefaultValue().toString(), systemSettingManager.getSystemSetting( Setting.APPLICATION_TITLE.getDefaultValue().toString() + localeStr, Setting.APPLICATION_TITLE.getDefaultValue().toString() ).toString() );        
-        translations.put( Setting.APPLICATION_INTRO.getDefaultValue().toString(), systemSettingManager.getSystemSetting( Setting.APPLICATION_INTRO.getDefaultValue().toString() + localeStr, "" ).toString() );
-        translations.put( Setting.APPLICATION_NOTIFICATION.getDefaultValue().toString(), systemSettingManager.getSystemSetting( Setting.APPLICATION_NOTIFICATION.getDefaultValue().toString() + localeStr, "" ).toString() );
-        translations.put( Setting.APPLICATION_FOOTER.getDefaultValue().toString(), systemSettingManager.getSystemSetting( Setting.APPLICATION_FOOTER.getDefaultValue().toString() + localeStr, "" ).toString() );
+        translations.put( Setting.APPLICATION_TITLE.getDefaultValue().toString(), ObjectUtils.firstNonNull( 
+            systemSettingManager.getSystemSetting( Setting.APPLICATION_TITLE.getDefaultValue().toString() + localeStr ), Setting.APPLICATION_TITLE.getDefaultValue().toString() ).toString() );        
+        translations.put( Setting.APPLICATION_INTRO.getDefaultValue().toString(), ObjectUtils.firstNonNull( 
+            systemSettingManager.getSystemSetting( Setting.APPLICATION_INTRO.getDefaultValue().toString() + localeStr ), "" ).toString() );
+        translations.put( Setting.APPLICATION_NOTIFICATION.getDefaultValue().toString(), ObjectUtils.firstNonNull( 
+            systemSettingManager.getSystemSetting( Setting.APPLICATION_NOTIFICATION.getDefaultValue().toString() + localeStr ), "" ).toString() );
+        translations.put( Setting.APPLICATION_FOOTER.getDefaultValue().toString(), ObjectUtils.firstNonNull( 
+            systemSettingManager.getSystemSetting( Setting.APPLICATION_FOOTER.getDefaultValue().toString() + localeStr ), "" ).toString() );
                 
         return translations;
     }
@@ -86,11 +92,11 @@
     {
         String settingValue = "";
 
-        String keyWithLocale = (String) systemSettingManager.getSystemSetting( keyName + localeStr, "" );
+        String keyWithLocale = (String) ObjectUtils.firstNonNull( systemSettingManager.getSystemSetting( keyName + localeStr ), "" );
 
         if ( keyWithLocale.isEmpty() )
         {
-            settingValue = (String) systemSettingManager.getSystemSetting( keyName, defaultValue );          
+            settingValue = (String) ObjectUtils.firstNonNull( systemSettingManager.getSystemSetting( keyName ), defaultValue );          
         }
         else
         {

=== 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	2015-10-14 10:36:42 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/DefaultUserSettingService.java	2015-10-14 11:29:47 +0000
@@ -224,7 +224,7 @@
     {
         UserSetting setting = userSettingStore.getUserSetting( user, name );
         
-        return setting != null && setting.getValue() != null ? Optional.of( setting.getValue() ) : Optional.empty();
+        return setting != null ? Optional.ofNullable( setting.getValue() ) : Optional.empty();
     }
     
     @Override

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml	2015-10-13 22:07:31 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml	2015-10-14 11:29:47 +0000
@@ -1001,7 +1001,6 @@
   <bean id="org.hisp.dhis.setting.StyleManager" class="org.hisp.dhis.setting.DefaultStyleManager">
     <property name="systemSettingManager" ref="org.hisp.dhis.setting.SystemSettingManager" />
     <property name="userSettingService" ref="org.hisp.dhis.user.UserSettingService" />
-    <property name="defaultStyle" value="light_blue" />
     <property name="styles">
       <map>
         <entry>