← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 11503: Impl method for removing dashboard item content in web api

 

------------------------------------------------------------
revno: 11503
committer: Lars Helge Øverland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Wed 2013-07-24 17:55:13 +0200
message:
  Impl method for removing dashboard item content in web api
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/dashboard/Dashboard.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/dashboard/DashboardItem.java
  dhis-2/dhis-api/src/test/java/org/hisp/dhis/dashboard/DashboardTest.java
  dhis-2/dhis-services/dhis-service-mapgeneration/src/main/java/org/hisp/dhis/mapgeneration/Legend.java
  dhis-2/dhis-services/dhis-service-mapgeneration/src/main/java/org/hisp/dhis/mapgeneration/LegendSet.java
  dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DashboardController.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/dashboard/Dashboard.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dashboard/Dashboard.java	2013-07-24 11:48:13 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dashboard/Dashboard.java	2013-07-24 15:55:13 +0000
@@ -122,6 +122,20 @@
     }
     
     /**
+     * Returns the item with the given uid, or null if no item with the given
+     * uid is present for this dashboard.
+     * 
+     * @param uid the item identifier.
+     * @return an item.
+     */
+    public DashboardItem getItemByUid( String uid )
+    {
+        int index = items.indexOf( new DashboardItem( uid ) );
+        
+        return index != -1 ? items.get( index ) : null;
+    }
+    
+    /**
      * Returns an item from this dashboard of the given type which number of
      * content is less than max. Returns null if no item matches the criteria.
      * 

=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dashboard/DashboardItem.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dashboard/DashboardItem.java	2013-07-24 11:48:13 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dashboard/DashboardItem.java	2013-07-24 15:55:13 +0000
@@ -28,6 +28,7 @@
  */
 
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 
 import org.hisp.dhis.chart.Chart;
@@ -93,6 +94,7 @@
     // -------------------------------------------------------------------------
 
     @JsonProperty
+    @JacksonXmlProperty
     public String getType()
     {
         if ( chart != null )
@@ -122,7 +124,9 @@
         
         return null;
     }
-    
+
+    @JsonProperty
+    @JacksonXmlProperty
     public int getContentCount()
     {
         int count = 0;
@@ -133,6 +137,49 @@
         return count;
     }
     
+    /**
+     * Removes the content with the given uid. Returns true if a content with
+     * the given uid existed and was removed.
+     * 
+     * @param uid the identifier of the content.
+     * @return true if a content was removed.
+     */
+    public boolean removeItemContent( String uid )
+    {
+        if ( !users.isEmpty() )
+        {
+            return removeContent( uid, users );
+        }
+        else if ( !reportTables.isEmpty() )
+        {
+            return removeContent( uid, reportTables );
+        }
+        else if ( !reports.isEmpty() )
+        {
+            return removeContent( uid, reports );
+        }
+        else
+        {
+            return removeContent( uid, resources );
+        }
+    }
+    
+    private boolean removeContent( String uid, List<? extends IdentifiableObject> content )
+    {
+        Iterator<? extends IdentifiableObject> iterator = content.iterator();
+        
+        while ( iterator.hasNext() )
+        {
+            if ( uid.equals( iterator.next().getUid() ) )
+            {
+                iterator.remove();
+                return true;
+            }
+        }
+        
+        return false;
+    }
+    
     // -------------------------------------------------------------------------
     // Getters and setters
     // -------------------------------------------------------------------------

=== modified file 'dhis-2/dhis-api/src/test/java/org/hisp/dhis/dashboard/DashboardTest.java'
--- dhis-2/dhis-api/src/test/java/org/hisp/dhis/dashboard/DashboardTest.java	2013-07-24 11:48:13 +0000
+++ dhis-2/dhis-api/src/test/java/org/hisp/dhis/dashboard/DashboardTest.java	2013-07-24 15:55:13 +0000
@@ -152,4 +152,25 @@
         assertFalse( dashboard.removeItem( "X" ) );
         assertEquals( 2, dashboard.getItems().size() );
     }
+    
+    @Test
+    public void testGetItem()
+    {
+        Dashboard dashboard = new Dashboard();
+        
+        DashboardItem diA = new DashboardItem();
+        DashboardItem diB = new DashboardItem();
+        DashboardItem diC = new DashboardItem();
+        
+        diA.setUid( "A" );
+        diB.setUid( "B" );
+        diC.setUid( "C" );
+
+        dashboard.getItems().add( diA );
+        dashboard.getItems().add( diB );
+        dashboard.getItems().add( diC );
+        
+        assertEquals( diB, dashboard.getItemByUid( "B" ) );
+        assertNull( dashboard.getItemByUid( "X" ) );
+    }
 }

=== modified file 'dhis-2/dhis-services/dhis-service-mapgeneration/src/main/java/org/hisp/dhis/mapgeneration/Legend.java'
--- dhis-2/dhis-services/dhis-service-mapgeneration/src/main/java/org/hisp/dhis/mapgeneration/Legend.java	2013-07-24 12:38:12 +0000
+++ dhis-2/dhis-services/dhis-service-mapgeneration/src/main/java/org/hisp/dhis/mapgeneration/Legend.java	2013-07-24 15:55:13 +0000
@@ -44,8 +44,8 @@
  */
 public class Legend
 {
-    public static final Font TITLE_FONT = new Font( "title", Font.BOLD, 15 );
-    public static final Font PLAIN_FONT = new Font( "plain", Font.PLAIN, 11 );
+    public static final Font TITLE_FONT = new Font( "title", Font.BOLD, 14 );
+    public static final Font PLAIN_FONT = new Font( "plain", Font.PLAIN, 10 );
 
     private InternalMapLayer mapLayer;
 

=== modified file 'dhis-2/dhis-services/dhis-service-mapgeneration/src/main/java/org/hisp/dhis/mapgeneration/LegendSet.java'
--- dhis-2/dhis-services/dhis-service-mapgeneration/src/main/java/org/hisp/dhis/mapgeneration/LegendSet.java	2013-07-24 12:38:12 +0000
+++ dhis-2/dhis-services/dhis-service-mapgeneration/src/main/java/org/hisp/dhis/mapgeneration/LegendSet.java	2013-07-24 15:55:13 +0000
@@ -30,7 +30,6 @@
 import java.awt.Color;
 import java.awt.Dimension;
 import java.awt.Graphics2D;
-import java.awt.Rectangle;
 import java.awt.RenderingHints;
 import java.awt.geom.AffineTransform;
 import java.awt.image.BufferedImage;
@@ -50,7 +49,7 @@
     private Color backgroundColor = null;
 
     private static final int LEGEND_WIDTH = 145;
-    private static final int LEGEND_MARGIN_LEFT = 4;
+    private static final int LEGEND_MARGIN_LEFT = 3;
     private static final int LEGEND_MARGIN_BOTTOM = 20;
     
     public static final int LEGEND_TOTAL_WIDTH = LEGEND_WIDTH + LEGEND_MARGIN_LEFT;

=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DashboardController.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DashboardController.java	2013-07-24 11:48:13 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DashboardController.java	2013-07-24 15:55:13 +0000
@@ -193,4 +193,32 @@
             ContextUtils.okResponse( response, "Dashboard item removed" );
         }        
     }
+
+    @RequestMapping( value = "/{dashboardUid}/items/{itemUid}/content/{contentUid}", method = RequestMethod.DELETE )
+    public void deleteItemContent( HttpServletResponse response, HttpServletRequest request,
+        @PathVariable String dashboardUid, @PathVariable String itemUid, @PathVariable String contentUid )
+    {
+        Dashboard dashboard = dashboardService.getDashboard( dashboardUid );
+
+        if ( dashboard == null )
+        {
+            ContextUtils.notFoundResponse( response, "Dashboard does not exist: " + dashboardUid );
+            return;
+        }
+        
+        DashboardItem item = dashboard.getItemByUid( itemUid );
+
+        if ( item == null )
+        {
+            ContextUtils.notFoundResponse( response, "Dashboard item does not exist: " + itemUid );
+            return;
+        }
+        
+        if ( item.removeItemContent( contentUid ) )
+        {
+            dashboardService.updateDashboard( dashboard );
+            
+            ContextUtils.okResponse( response, "Dashboard item content removed" );
+        }        
+    }
 }