=== 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-23 09:55:18 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dashboard/DashboardItem.java 2013-07-23 10:10:48 +0000 @@ -33,6 +33,7 @@ import org.hisp.dhis.chart.Chart; import org.hisp.dhis.common.BaseIdentifiableObject; import org.hisp.dhis.common.DxfNamespaces; +import org.hisp.dhis.common.IdentifiableObject; import org.hisp.dhis.document.Document; import org.hisp.dhis.mapping.Map; import org.hisp.dhis.report.Report; @@ -195,4 +196,26 @@ { this.resources = resources; } + + // ------------------------------------------------------------------------- + // Merge with + // ------------------------------------------------------------------------- + + @Override + public void mergeWith( IdentifiableObject other ) + { + super.mergeWith( other ); + + if ( other.getClass().isInstance( this ) ) + { + DashboardItem item = (DashboardItem) other; + + chart = item.getChart() == null ? chart : item.getChart(); + map = item.getMap() == null ? map : item.getMap(); + users = item.getUsers() == null ? users : item.getUsers(); + reportTables = item.getReportTables() == null ? reportTables : item.getReportTables(); + reports = item.getReports() == null ? reports : item.getReports(); + resources = item.getResources() == null ? resources : item.getResources(); + } + } } === 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-23 09:55:18 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DashboardController.java 2013-07-23 10:10:48 +0000 @@ -39,12 +39,14 @@ import org.hisp.dhis.dashboard.DashboardService; import org.hisp.dhis.dxf2.utils.JacksonUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; 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.ResponseStatus; /** * @author Lars Helge Overland @@ -83,9 +85,40 @@ ContextUtils.createdResponse( response, "Dashboard created", RESOURCE_PATH + "/" + dashboard.getUid() ); } + + @Override + @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, consumes = "application/json" ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void putJsonObject( HttpServletResponse response, HttpServletRequest request, @PathVariable( "uid" ) String uid, InputStream input ) throws Exception + { + Dashboard dashboard = dashboardService.getDashboard( uid ); + + if ( dashboard == null ) + { + ContextUtils.notFoundResponse( response, "Dashboard does not exist: " + uid ); + return; + } + + Dashboard newDashboard = JacksonUtils.fromJson( input, Dashboard.class ); + + dashboard.setName( newDashboard.getName() ); // TODO Name only for now + + dashboardService.updateDashboard( dashboard ); + } + + @RequestMapping( value = "/{uid}", method = RequestMethod.DELETE ) + @ResponseStatus( value = HttpStatus.NO_CONTENT ) + public void deleteObject( HttpServletResponse response, HttpServletRequest request, @PathVariable( "uid" ) String uid ) throws Exception + { + Dashboard dashboard = dashboardService.getDashboard( uid ); + + dashboardService.deleteDashboard( dashboard ); + + ContextUtils.okResponse( response, "Dashboard deleted" ); + } @RequestMapping( value = "/{uid}/items", method = RequestMethod.POST, consumes = "application/json" ) - public void addItem( HttpServletResponse response, HttpServletRequest request, + public void postJsonItem( HttpServletResponse response, HttpServletRequest request, InputStream input, @PathVariable String uid ) throws Exception { Dashboard dashboard = dashboardService.getDashboard( uid );