← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 13381: Data value controller, for duplicate query params using separated value with ; instead of multipl...

 

------------------------------------------------------------
revno: 13381
committer: Lars Helge Øverland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Sun 2013-12-22 10:15:53 +0100
message:
  Data value controller, for duplicate query params using separated value with ; instead of multiple query params. Easier to handle on client side and gives shorter URLs. No standards in this area.
modified:
  dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataValueController.java
  dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/ContextUtils.java
  dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/GetDataValuesForDataSetAction.java
  dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/form.js


--
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-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataValueController.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataValueController.java	2013-12-19 23:08:40 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataValueController.java	2013-12-22 09:15:53 +0000
@@ -30,6 +30,7 @@
 
 import java.util.Date;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 
 import javax.servlet.http.HttpServletResponse;
@@ -91,13 +92,15 @@
         @RequestParam String de, 
         @RequestParam( required = false ) String co, 
         @RequestParam( required = false ) String cc, 
-        @RequestParam( required = false ) Set<String> cp, 
+        @RequestParam( required = false ) String cp, 
         @RequestParam String pe, 
         @RequestParam String ou, 
         @RequestParam( required = false ) String value, 
         @RequestParam( required = false ) String comment, 
         @RequestParam( required = false ) boolean followUp, HttpServletResponse response )
     {
+        List<String> opts = ContextUtils.getQueryParamValues( cp );
+        
         // ---------------------------------------------------------------------
         // Data element validation
         // ---------------------------------------------------------------------
@@ -135,7 +138,7 @@
         // Attribute category combo validation
         // ---------------------------------------------------------------------
 
-        if ( ( cc == null && ( cp != null && !cp.isEmpty() ) || ( cc != null && ( cp == null || cp.isEmpty() ) ) ) )
+        if ( ( cc == null && opts != null || ( cc != null && opts == null ) ) )
         {
             ContextUtils.conflictResponse( response, "Both or none of category combination and category options must be present" );
             return;
@@ -155,11 +158,11 @@
 
         DataElementCategoryOptionCombo attributeOptionCombo = null;
 
-        if ( cp != null )
+        if ( opts != null )
         {
             Set<DataElementCategoryOption> categoryOptions = new HashSet<DataElementCategoryOption>();
 
-            for ( String id : cp )
+            for ( String id : opts )
             {
                 DataElementCategoryOption categoryOption = categoryService.getDataElementCategoryOption( id );
                 

=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/ContextUtils.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/ContextUtils.java	2013-12-13 15:09:46 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/ContextUtils.java	2013-12-22 09:15:53 +0000
@@ -47,7 +47,10 @@
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Calendar;
+import java.util.List;
 
 import static org.apache.commons.lang.StringUtils.trimToNull;
 import static org.hisp.dhis.setting.SystemSettingManager.KEY_CACHE_STRATEGY;
@@ -80,6 +83,8 @@
     public static final String HEADER_LOCATION = "Location";
     
     public static final String DATE_PATTERN = "yyyy-MM-dd";
+    
+    public static final String QUERY_PARAM_SEP = ";";
 
     @Autowired
     private SystemSettingManager systemSettingManager;
@@ -283,6 +288,25 @@
 
         return builder.toString();
     }
+    
+    /**
+     * Splits the given query param value into independent values using ; as
+     * separator.
+     * 
+     * @param value the query param value.
+     * @return the list of independent values.
+     */
+    public static List<String> getQueryParamValues( String value )
+    {
+        if ( value == null || value.isEmpty() )
+        {
+            return null;
+        }
+
+        String[] values = value.split( QUERY_PARAM_SEP );
+        
+        return new ArrayList<String>( Arrays.asList( values ) );
+    }
 
     /**
      * Adds basic authentication by adding an Authorization header to the

=== modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/GetDataValuesForDataSetAction.java'
--- dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/GetDataValuesForDataSetAction.java	2013-12-21 17:59:39 +0000
+++ dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/GetDataValuesForDataSetAction.java	2013-12-22 09:15:53 +0000
@@ -32,6 +32,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.hisp.dhis.api.utils.ContextUtils;
 import org.hisp.dhis.dataelement.DataElementCategoryCombo;
 import org.hisp.dhis.dataelement.DataElementCategoryOption;
 import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo;
@@ -53,6 +54,7 @@
 import java.util.Collection;
 import java.util.Date;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 
 /**
@@ -153,9 +155,9 @@
         this.cc = cc;
     }
 
-    private Set<String> cp;
+    private String cp;
 
-    public void setCp( Set<String> cp )
+    public void setCp( String cp )
     {
         this.cp = cp;
     }
@@ -212,6 +214,8 @@
 
     public String execute()
     {
+        List<String> opts = ContextUtils.getQueryParamValues( cp );
+        
         // ---------------------------------------------------------------------
         // Validation
         // ---------------------------------------------------------------------
@@ -236,13 +240,13 @@
 
         DataElementCategoryOptionCombo attributeOptionCombo = null;
         
-        if ( cc != null && cp != null )
+        if ( cc != null && opts != null )
         {
             DataElementCategoryCombo categoryCombo = categoryService.getDataElementCategoryCombo( cc );
 
             Set<DataElementCategoryOption> categoryOptions = new HashSet<DataElementCategoryOption>();
 
-            for ( String id : cp )
+            for ( String id : opts )
             {
                 categoryOptions.add( categoryService.getDataElementCategoryOption( id ) );
             }

=== modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/form.js'
--- dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/form.js	2013-12-21 23:57:23 +0000
+++ dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/form.js	2013-12-22 09:15:53 +0000
@@ -1340,7 +1340,7 @@
 
     // Set min-max values and colorize violation fields
 
-    if( !json.locked ) 
+    if ( !json.locked ) 
     {
         $.safeEach( json.minMaxDataElements, function( i, value )
         {