=== 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 2014-11-10 13:38:22 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetService.java 2014-11-10 14:05:42 +0000 @@ -57,6 +57,8 @@ void writeDataValueSetJson( Set dataSet, Date startDate, Date endDate, Set ous, boolean includeChildren, OutputStream outputStream, ExportOptions exportOptions ); void writeDataValueSetJson( Date lastUpdated, OutputStream outputStream, ExportOptions exportOptions ); + + void writeDataValueSetCsv( String dataSet, String period, String orgUnit, Writer writer, ExportOptions exportOptions ); void writeDataValueSetCsv( Set dataSets, Date startDate, Date endDate, Set orgUnits, boolean includeChildren, Writer writer, ExportOptions exportOptions ); === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetStore.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetStore.java 2014-09-12 15:26:18 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetStore.java 2014-11-10 14:05:42 +0000 @@ -28,16 +28,16 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import java.io.OutputStream; +import java.io.Writer; +import java.util.Date; +import java.util.Set; + import org.hisp.dhis.dataset.DataSet; import org.hisp.dhis.dxf2.metadata.ExportOptions; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.period.Period; -import java.io.OutputStream; -import java.io.Writer; -import java.util.Date; -import java.util.Set; - /** * @author Lars Helge Overland */ @@ -46,11 +46,11 @@ public void writeDataValueSetXml( Set dataSets, Date completeDate, Period period, OrganisationUnit orgUnit, Set periods, Set orgUnits, OutputStream out, ExportOptions exportOptions ); - public void writeDataValueSetCsv( Set dataSets, Set periods, - Set orgUnits, Writer writer, ExportOptions exportOptions ); - public void writeDataValueSetJson( Set dataSets, Date completeDate, Period period, OrganisationUnit orgUnit, Set periods, Set orgUnits, OutputStream out, ExportOptions exportOptions ); + public void writeDataValueSetCsv( Set dataSets, Date completeDate, Period period, OrganisationUnit orgUnit, + Set periods, Set orgUnits, Writer writer, ExportOptions exportOptions ); + void writeDataValueSetJson( Date lastUpdated, OutputStream outputStream, ExportOptions exportOptions ); } === 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 2014-11-10 13:38:22 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DefaultDataValueSetService.java 2014-11-10 14:05:42 +0000 @@ -289,6 +289,41 @@ } @Override + public void writeDataValueSetCsv( String dataSet, String period, String orgUnit, Writer writer, ExportOptions exportOptions ) + { + DataSet dataSet_ = dataSetService.getDataSet( dataSet ); + Period period_ = PeriodType.getPeriodFromIsoString( period ); + OrganisationUnit orgUnit_ = organisationUnitService.getOrganisationUnit( orgUnit ); + + if ( dataSet_ == null ) + { + throw new IllegalArgumentException( ERROR_INVALID_DATA_SET + dataSet ); + } + + if ( period_ == null ) + { + throw new IllegalArgumentException( ERROR_INVALID_PERIOD + period ); + } + + if ( orgUnit_ == null ) + { + throw new IllegalArgumentException( ERROR_INVALID_ORG_UNIT + orgUnit ); + } + + DataElementCategoryOptionCombo optionCombo = categoryService.getDefaultDataElementCategoryOptionCombo(); //TODO + + CompleteDataSetRegistration registration = registrationService + .getCompleteDataSetRegistration( dataSet_, period_, orgUnit_, optionCombo ); + + Date completeDate = registration != null ? registration.getDate() : null; + + period_ = periodService.reloadPeriod( period_ ); + + dataValueSetStore.writeDataValueSetCsv( newHashSet( dataSet_ ), completeDate, period_, orgUnit_, wrap( period_ ), + wrap( orgUnit_ ), writer, exportOptions ); + } + + @Override public void writeDataValueSetCsv( Set dataSets, Date startDate, Date endDate, Set orgUnits, boolean includeChildren, Writer writer, ExportOptions exportOptions ) { @@ -316,7 +351,7 @@ ou = new HashSet<>( organisationUnitService.getOrganisationUnitsWithChildren( IdentifiableObjectUtils.getUids( ou ) ) ); } - dataValueSetStore.writeDataValueSetCsv( ds, pe, ou, writer, exportOptions ); + dataValueSetStore.writeDataValueSetCsv( ds, null, null, null, pe, ou, writer, exportOptions ); } @Override === 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 2014-10-16 06:17:19 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/SpringDataValueSetStore.java 2014-11-10 14:05:42 +0000 @@ -96,11 +96,14 @@ } @Override - public void writeDataValueSetCsv( Set dataSets, Set periods, Set orgUnits, Writer writer, ExportOptions exportOptions ) + public void writeDataValueSetCsv( Set dataSets, Date completeDate, Period period, OrganisationUnit orgUnit, + Set periods, Set orgUnits, Writer writer, ExportOptions exportOptions ) { DataValueSet dataValueSet = new StreamingCsvDataValueSet( new CsvWriter( writer, CSV_DELIM ) ); - writeDataValueSet( getDataValueSql( dataSets, periods, orgUnits, exportOptions ), dataSets, null, null, null, dataValueSet ); + writeDataValueSet( getDataValueSql( dataSets, periods, orgUnits, exportOptions ), dataSets, completeDate, period, orgUnit, dataValueSet ); + + StreamUtils.closeWriter( writer ); } @Override === 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 2014-11-10 13:38:22 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/DataValueSetController.java 2014-11-10 14:05:42 +0000 @@ -144,18 +144,33 @@ @RequestMapping( method = RequestMethod.GET, produces = CONTENT_TYPE_CSV ) public void getDataValueSetCsv( @RequestParam Set dataSet, - @RequestParam @DateTimeFormat( pattern = "yyyy-MM-dd" ) Date startDate, - @RequestParam @DateTimeFormat( pattern = "yyyy-MM-dd" ) Date endDate, + @RequestParam( required = false ) String period, + @RequestParam( required = false ) @DateTimeFormat( pattern = "yyyy-MM-dd" ) Date startDate, + @RequestParam( required = false ) @DateTimeFormat( pattern = "yyyy-MM-dd" ) Date endDate, @RequestParam Set orgUnit, @RequestParam( required = false ) boolean children, ExportOptions exportOptions, HttpServletResponse response ) throws IOException { - log.info( "Get CSV bulk data value set for start date: " + startDate + ", end date: " + endDate ); - response.setContentType( CONTENT_TYPE_CSV ); - dataValueSetService.writeDataValueSetCsv( dataSet, startDate, endDate, orgUnit, children, response.getWriter(), exportOptions ); + boolean isSingleDataValueSet = dataSet.size() == 1 && period != null && orgUnit.size() == 1; + + if ( isSingleDataValueSet ) + { + String ds = dataSet.iterator().next(); + String ou = orgUnit.iterator().next(); + + log.info( "Get CSV data value set for data set: " + ds + ", period: " + period + ", org unit: " + ou ); + + dataValueSetService.writeDataValueSetCsv( ds, period, ou, response.getWriter(), exportOptions ); + } + else + { + log.info( "Get CSV bulk data value set for start date: " + startDate + ", end date: " + endDate ); + + dataValueSetService.writeDataValueSetCsv( dataSet, startDate, endDate, orgUnit, children, response.getWriter(), exportOptions ); + } } // -------------------------------------------------------------------------