=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/schema/descriptors/SqlViewSchemaDescriptor.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/schema/descriptors/SqlViewSchemaDescriptor.java 2014-09-07 07:42:48 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/schema/descriptors/SqlViewSchemaDescriptor.java 2014-11-03 12:28:28 +0000 @@ -52,12 +52,14 @@ public Schema getSchema() { Schema schema = new Schema( SqlView.class, SINGULAR, PLURAL ); + schema.setApiEndpoint( API_ENDPOINT ); schema.setShareable( true ); schema.setOrder( 1010 ); schema.getAuthorities().add( new Authority( AuthorityType.CREATE_PUBLIC, Lists.newArrayList( "F_SQLVIEW_PUBLIC_ADD" ) ) ); schema.getAuthorities().add( new Authority( AuthorityType.CREATE_PRIVATE, Lists.newArrayList( "F_SQLVIEW_PRIVATE_ADD" ) ) ); schema.getAuthorities().add( new Authority( AuthorityType.DELETE, Lists.newArrayList( "F_SQLVIEW_DELETE" ) ) ); + schema.getAuthorities().add( new Authority( AuthorityType.EXTERNALIZE, Lists.newArrayList( "F_SQLVIEW_EXTERNAL" ) ) ); return schema; } === modified file 'dhis-2/dhis-services/dhis-service-administration/src/main/resources/org/hisp/dhis/sqlview/hibernate/SqlView.hbm.xml' --- dhis-2/dhis-services/dhis-service-administration/src/main/resources/org/hisp/dhis/sqlview/hibernate/SqlView.hbm.xml 2014-03-24 18:52:45 +0000 +++ dhis-2/dhis-services/dhis-service-administration/src/main/resources/org/hisp/dhis/sqlview/hibernate/SqlView.hbm.xml 2014-11-03 12:28:28 +0000 @@ -20,6 +20,8 @@ + + === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/SqlViewController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/SqlViewController.java 2014-10-02 17:01:16 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/SqlViewController.java 2014-11-03 12:28:28 +0000 @@ -28,16 +28,13 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import java.util.Set; - -import javax.servlet.http.HttpServletResponse; - -import org.hisp.dhis.webapi.utils.ContextUtils; -import org.hisp.dhis.webapi.utils.ContextUtils.CacheStrategy; import org.hisp.dhis.common.Grid; +import org.hisp.dhis.schema.descriptors.SqlViewSchemaDescriptor; import org.hisp.dhis.sqlview.SqlView; import org.hisp.dhis.sqlview.SqlViewService; import org.hisp.dhis.system.grid.GridUtils; +import org.hisp.dhis.webapi.utils.ContextUtils; +import org.hisp.dhis.webapi.utils.ContextUtils.CacheStrategy; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -46,16 +43,17 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; +import javax.servlet.http.HttpServletResponse; +import java.util.Set; + /** * @author Morten Olav Hansen */ @Controller -@RequestMapping( value = SqlViewController.RESOURCE_PATH ) +@RequestMapping( value = SqlViewSchemaDescriptor.API_ENDPOINT ) public class SqlViewController extends AbstractCrudController { - public static final String RESOURCE_PATH = "/sqlViews"; - @Autowired private SqlViewService sqlViewService; @@ -63,120 +61,120 @@ private ContextUtils contextUtils; @RequestMapping( value = "/{uid}/data", method = RequestMethod.GET, produces = ContextUtils.CONTENT_TYPE_JSON ) - public String getViewJson( @PathVariable( "uid" ) String uid, - @RequestParam(required=false) Set criteria, Model model, HttpServletResponse response ) + public String getViewJson( @PathVariable( "uid" ) String uid, + @RequestParam( required = false ) Set criteria, Model model, HttpServletResponse response ) { SqlView sqlView = sqlViewService.getSqlViewByUid( uid ); - + Grid grid = sqlViewService.getSqlViewGrid( sqlView, SqlView.getCriteria( criteria ) ); model.addAttribute( "model", grid ); model.addAttribute( "viewClass", "detailed" ); - + contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_JSON, CacheStrategy.RESPECT_SYSTEM_SETTING ); - + return grid != null ? "sqlView" : null; } @RequestMapping( value = "/{uid}/data.xml", method = RequestMethod.GET ) - public void getViewXml( @PathVariable( "uid" ) String uid, - @RequestParam(required=false) Set criteria, HttpServletResponse response ) throws Exception + public void getViewXml( @PathVariable( "uid" ) String uid, + @RequestParam( required = false ) Set criteria, HttpServletResponse response ) throws Exception { SqlView sqlView = sqlViewService.getSqlViewByUid( uid ); - + Grid grid = sqlViewService.getSqlViewGrid( sqlView, SqlView.getCriteria( criteria ) ); - + contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_XML, CacheStrategy.RESPECT_SYSTEM_SETTING ); - + GridUtils.toXml( grid, response.getOutputStream() ); } @RequestMapping( value = "/{uid}/data.csv", method = RequestMethod.GET ) - public void getViewCsv( @PathVariable( "uid" ) String uid, - @RequestParam(required=false) Set criteria, HttpServletResponse response ) throws Exception + public void getViewCsv( @PathVariable( "uid" ) String uid, + @RequestParam( required = false ) Set criteria, HttpServletResponse response ) throws Exception { SqlView sqlView = sqlViewService.getSqlViewByUid( uid ); - + Grid grid = sqlViewService.getSqlViewGrid( sqlView, SqlView.getCriteria( criteria ) ); - + contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_CSV, CacheStrategy.RESPECT_SYSTEM_SETTING, "sqlview.csv", true ); - + GridUtils.toCsv( grid, response.getOutputStream() ); } - + @RequestMapping( value = "/{uid}/data.xls", method = RequestMethod.GET ) - public void getViewXls( @PathVariable( "uid" ) String uid, - @RequestParam(required=false) Set criteria, HttpServletResponse response ) throws Exception + public void getViewXls( @PathVariable( "uid" ) String uid, + @RequestParam( required = false ) Set criteria, HttpServletResponse response ) throws Exception { SqlView sqlView = sqlViewService.getSqlViewByUid( uid ); - + Grid grid = sqlViewService.getSqlViewGrid( sqlView, SqlView.getCriteria( criteria ) ); - + contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_EXCEL, CacheStrategy.RESPECT_SYSTEM_SETTING, "sqlview.xls", true ); - + GridUtils.toXls( grid, response.getOutputStream() ); } @RequestMapping( value = "/{uid}/data.html", method = RequestMethod.GET ) - public void getViewHtml( @PathVariable( "uid" ) String uid, - @RequestParam(required=false) Set criteria, HttpServletResponse response ) throws Exception + public void getViewHtml( @PathVariable( "uid" ) String uid, + @RequestParam( required = false ) Set criteria, HttpServletResponse response ) throws Exception { SqlView sqlView = sqlViewService.getSqlViewByUid( uid ); - + Grid grid = sqlViewService.getSqlViewGrid( sqlView, SqlView.getCriteria( criteria ) ); - + contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_HTML, CacheStrategy.RESPECT_SYSTEM_SETTING ); - + GridUtils.toHtml( grid, response.getWriter() ); } @RequestMapping( value = "/{uid}/data.html+css", method = RequestMethod.GET ) - public void getViewHtmlCss( @PathVariable( "uid" ) String uid, - @RequestParam(required=false) Set criteria, HttpServletResponse response ) throws Exception + public void getViewHtmlCss( @PathVariable( "uid" ) String uid, + @RequestParam( required = false ) Set criteria, HttpServletResponse response ) throws Exception { SqlView sqlView = sqlViewService.getSqlViewByUid( uid ); - + Grid grid = sqlViewService.getSqlViewGrid( sqlView, SqlView.getCriteria( criteria ) ); - + contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_HTML, CacheStrategy.RESPECT_SYSTEM_SETTING ); - + GridUtils.toHtmlCss( grid, response.getWriter() ); } @RequestMapping( value = "/{uid}/data.pdf", method = RequestMethod.GET ) - public void getViewPdf( @PathVariable( "uid" ) String uid, - @RequestParam(required=false) Set criteria, HttpServletResponse response ) throws Exception + public void getViewPdf( @PathVariable( "uid" ) String uid, + @RequestParam( required = false ) Set criteria, HttpServletResponse response ) throws Exception { SqlView sqlView = sqlViewService.getSqlViewByUid( uid ); - + Grid grid = sqlViewService.getSqlViewGrid( sqlView, SqlView.getCriteria( criteria ) ); - + contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_PDF, CacheStrategy.RESPECT_SYSTEM_SETTING ); - + GridUtils.toPdf( grid, response.getOutputStream() ); } - + @RequestMapping( value = "/{uid}/execute", method = RequestMethod.POST ) public void executeView( @PathVariable( "uid" ) String uid, HttpServletResponse response ) { SqlView sqlView = sqlViewService.getSqlViewByUid( uid ); - + if ( sqlView == null ) { ContextUtils.notFoundResponse( response, "SQL view not found" ); return; } - + String result = sqlViewService.createViewTable( sqlView ); - + if ( result != null ) { ContextUtils.conflictResponse( response, result ); } else { - String location = RESOURCE_PATH + "/" + sqlView.getUid(); - + String location = SqlViewSchemaDescriptor.API_ENDPOINT + "/" + sqlView.getUid(); + ContextUtils.createdResponse( response, "SQL view created", location ); } } === modified file 'dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/security/vote/ExternalAccessVoter.java' --- dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/security/vote/ExternalAccessVoter.java 2014-08-15 07:40:20 +0000 +++ dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/security/vote/ExternalAccessVoter.java 2014-11-03 12:28:28 +0000 @@ -37,6 +37,7 @@ import org.hisp.dhis.document.Document; import org.hisp.dhis.report.Report; import org.hisp.dhis.reporttable.ReportTable; +import org.hisp.dhis.sqlview.SqlView; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.AccessDecisionVoter; import org.springframework.security.access.ConfigAttribute; @@ -67,6 +68,7 @@ externalClasses.put( "reportTables", ReportTable.class ); externalClasses.put( "reports", Report.class ); externalClasses.put( "documents", Document.class ); + externalClasses.put( "sqlViews", SqlView.class ); } // ------------------------------------------------------------------------- === modified file 'dhis-2/dhis-web/dhis-web-commons/src/main/resources/META-INF/dhis/security.xml' --- dhis-2/dhis-web/dhis-web-commons/src/main/resources/META-INF/dhis/security.xml 2014-10-25 11:56:18 +0000 +++ dhis-2/dhis-web/dhis-web-commons/src/main/resources/META-INF/dhis/security.xml 2014-11-03 12:28:28 +0000 @@ -304,6 +304,7 @@ F_REPORTTABLE_PUBLIC_ADD F_MAP_EXTERNAL F_CHART_EXTERNAL + F_SQLVIEW_EXTERNAL F_REPORTTABLE_EXTERNAL F_METADATA_EXPORT F_METADATA_IMPORT === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/resources/org/hisp/dhis/user/i18n_module.properties' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/resources/org/hisp/dhis/user/i18n_module.properties 2014-10-25 11:56:18 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/resources/org/hisp/dhis/user/i18n_module.properties 2014-11-03 12:28:28 +0000 @@ -226,6 +226,7 @@ F_SQLVIEW_DELETE=Delete SQL View F_SQLVIEW_EXECUTE=Execute SQL View F_SQLVIEW_MANAGEMENT=Sql View Management +F_SQLVIEW_EXTERNAL=Sql View External Access F_VALIDATIONCRITERIA_ADD=Add/Update Validation Criteria F_VALIDATIONCRITERIA_DELETE=Delete Validation Criteria F_SEND_MESSAGE=Send message