=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataExportParams.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataExportParams.java 2015-06-01 22:46:00 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataExportParams.java 2015-06-09 08:37:13 +0000 @@ -28,6 +28,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import java.util.Date; import java.util.HashSet; import java.util.Set; @@ -51,6 +52,10 @@ private boolean includeChildren; + private Date lastUpdated; + + private Integer limit; + private IdSchemes idSchemes; // ------------------------------------------------------------------------- @@ -80,6 +85,16 @@ return organisationUnits != null && !organisationUnits.isEmpty() ? organisationUnits.iterator().next() : null; } + public boolean hasLastUpdated() + { + return lastUpdated != null; + } + + public boolean hasLimit() + { + return limit != null; + } + /** * Indicates whether this parameters represents a single data value set, implying * that it contains exactly one of data sets, periods and organisation units. @@ -144,6 +159,26 @@ this.includeChildren = includeChildren; } + public Date getLastUpdated() + { + return lastUpdated; + } + + public void setLastUpdated( Date lastUpdated ) + { + this.lastUpdated = lastUpdated; + } + + public Integer getLimit() + { + return limit; + } + + public void setLimit( Integer limit ) + { + this.limit = limit; + } + public IdSchemes getIdSchemes() { return idSchemes; === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetService.java 2015-06-01 23:12:38 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetService.java 2015-06-09 08:37:13 +0000 @@ -49,7 +49,7 @@ public interface DataValueSetService { DataExportParams getFromUrl( Set dataSets, Set periods, Date startDate, Date endDate, - Set organisationUnits, boolean includeChildren, IdSchemes idSchemes ); + Set organisationUnits, boolean includeChildren, Date lastUpdated, Integer limit, IdSchemes idSchemes ); void validate( DataExportParams params ); === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DefaultDataValueSetService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DefaultDataValueSetService.java 2015-06-01 23:45:15 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DefaultDataValueSetService.java 2015-06-09 08:37:13 +0000 @@ -159,7 +159,7 @@ @Override public DataExportParams getFromUrl( Set dataSets, Set periods, Date startDate, Date endDate, - Set organisationUnits, boolean includeChildren, IdSchemes idSchemes ) + Set organisationUnits, boolean includeChildren, Date lastUpdated, Integer limit, IdSchemes idSchemes ) { DataExportParams params = new DataExportParams(); @@ -190,6 +190,8 @@ } params.setIncludeChildren( includeChildren ); + params.setLastUpdated( lastUpdated ); + params.setLimit( limit ); params.setIdSchemes( idSchemes ); return params; @@ -228,6 +230,11 @@ } } + if ( params.hasLimit() && params.getLimit() < 0 ) + { + violation = "Limit cannot be less than zero: " + params.getLimit(); + } + if ( violation != null ) { log.warn( "Validation failed: " + violation ); @@ -258,9 +265,7 @@ @Override public void writeDataValueSetJson( Date lastUpdated, OutputStream outputStream, IdSchemes idSchemes ) - { - //TODO validate - + { dataValueSetStore.writeDataValueSetJson( lastUpdated, outputStream, idSchemes ); } === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/SpringDataValueSetStore.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/SpringDataValueSetStore.java 2015-06-01 23:12:38 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/SpringDataValueSetStore.java 2015-06-09 08:37:13 +0000 @@ -175,7 +175,7 @@ String ouScheme = idSchemes.getOrgUnitIdScheme().toString().toLowerCase(); String ocScheme = idSchemes.getCategoryOptionComboIdScheme().toString().toLowerCase(); - return + String sql = "select de." + deScheme + " as deid, pe.startdate as pestart, pt.name as ptname, ou." + ouScheme + " as ouid, " + "coc." + ocScheme + " as cocid, aoc." + ocScheme + " as aocid, " + "dv.value, dv.storedby, dv.created, dv.lastupdated, dv.comment, dv.followup " + @@ -188,7 +188,19 @@ "join categoryoptioncombo aoc on (dv.attributeoptioncomboid=aoc.categoryoptioncomboid) " + "where de.dataelementid in (" + getCommaDelimitedString( getIdentifiers( getDataElements( params.getDataSets() ) ) ) + ") " + "and dv.periodid in (" + getCommaDelimitedString( getIdentifiers( params.getPeriods() ) ) + ") " + - "and dv.sourceid in (" + getCommaDelimitedString( getIdentifiers( params.getOrganisationUnits() ) ) + ")"; + "and dv.sourceid in (" + getCommaDelimitedString( getIdentifiers( params.getOrganisationUnits() ) ) + ") "; + + if ( params.hasLastUpdated() ) + { + sql += "and dv.lastupdated >= '" + getLongGmtDateString( params.getLastUpdated() ) + "' "; + } + + if ( params.hasLimit() ) + { + sql += "limit " + params.getLimit(); + } + + return sql; } private Set getDataElements( Set dataSets ) === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/DataValueSetController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/DataValueSetController.java 2015-06-01 23:45:15 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/DataValueSetController.java 2015-06-09 08:37:13 +0000 @@ -79,12 +79,14 @@ @RequestParam( required = false ) Date endDate, @RequestParam Set orgUnit, @RequestParam( required = false ) boolean children, + @RequestParam( required = false ) Date lastUpdated, + @RequestParam( required = false ) Integer limit, IdSchemes idSchemes, HttpServletResponse response ) throws IOException { response.setContentType( CONTENT_TYPE_XML ); DataExportParams params = dataValueSetService.getFromUrl( dataSet, period, - startDate, endDate, orgUnit, children, idSchemes ); + startDate, endDate, orgUnit, children, lastUpdated, limit, idSchemes ); dataValueSetService.writeDataValueSetXml( params, response.getOutputStream() ); } @@ -97,12 +99,14 @@ @RequestParam( required = false ) Date endDate, @RequestParam Set orgUnit, @RequestParam( required = false ) boolean children, + @RequestParam( required = false ) Date lastUpdated, + @RequestParam( required = false ) Integer limit, IdSchemes idSchemes, HttpServletResponse response ) throws IOException { response.setContentType( CONTENT_TYPE_JSON ); DataExportParams params = dataValueSetService.getFromUrl( dataSet, period, - startDate, endDate, orgUnit, children, idSchemes ); + startDate, endDate, orgUnit, children, lastUpdated, limit, idSchemes ); dataValueSetService.writeDataValueSetJson( params, response.getOutputStream() ); } @@ -115,13 +119,15 @@ @RequestParam( required = false ) Date endDate, @RequestParam Set orgUnit, @RequestParam( required = false ) boolean children, + @RequestParam( required = false ) Date lastUpdated, + @RequestParam( required = false ) Integer limit, IdSchemes idSchemes, HttpServletResponse response ) throws IOException { response.setContentType( CONTENT_TYPE_CSV ); DataExportParams params = dataValueSetService.getFromUrl( dataSet, period, - startDate, endDate, orgUnit, children, idSchemes ); + startDate, endDate, orgUnit, children, lastUpdated, limit, idSchemes ); dataValueSetService.writeDataValueSetCsv( params, response.getWriter() ); } === modified file 'dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/datavalue/ExportDataValueAction.java' --- dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/datavalue/ExportDataValueAction.java 2015-06-01 23:12:38 +0000 +++ dhis-2/dhis-web/dhis-web-importexport/src/main/java/org/hisp/dhis/importexport/action/datavalue/ExportDataValueAction.java 2015-06-09 08:37:13 +0000 @@ -153,7 +153,7 @@ HttpServletResponse response = ServletActionContext.getResponse(); DataExportParams params = dataValueSetService.getFromUrl( selectedDataSets, null, - getMediumDate( startDate ), getMediumDate( endDate ), orgUnits, true, idSchemes ); + getMediumDate( startDate ), getMediumDate( endDate ), orgUnits, true, null, null, idSchemes ); if ( FORMAT_CSV.equals( exportFormat ) ) {