dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #33960
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 17400: Web API, impl support for CSV data export using the data value set / period syntax
------------------------------------------------------------
revno: 17400
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Mon 2014-11-10 15:05:42 +0100
message:
Web API, impl support for CSV data export using the data value set / period syntax
modified:
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/DataValueSetStore.java
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/SpringDataValueSetStore.java
dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/DataValueSetController.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-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<String> dataSet, Date startDate, Date endDate, Set<String> 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<String> dataSets, Date startDate, Date endDate, Set<String> 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<DataSet> dataSets, Date completeDate, Period period,
OrganisationUnit orgUnit, Set<Period> periods, Set<OrganisationUnit> orgUnits, OutputStream out, ExportOptions exportOptions );
- public void writeDataValueSetCsv( Set<DataSet> dataSets, Set<Period> periods,
- Set<OrganisationUnit> orgUnits, Writer writer, ExportOptions exportOptions );
-
public void writeDataValueSetJson( Set<DataSet> dataSets, Date completeDate, Period period,
OrganisationUnit orgUnit, Set<Period> periods, Set<OrganisationUnit> orgUnits, OutputStream out, ExportOptions exportOptions );
+ public void writeDataValueSetCsv( Set<DataSet> dataSets, Date completeDate, Period period, OrganisationUnit orgUnit,
+ Set<Period> periods, Set<OrganisationUnit> 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<String> dataSets, Date startDate, Date endDate, Set<String> 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<DataSet> dataSets, Set<Period> periods, Set<OrganisationUnit> orgUnits, Writer writer, ExportOptions exportOptions )
+ public void writeDataValueSetCsv( Set<DataSet> dataSets, Date completeDate, Period period, OrganisationUnit orgUnit,
+ Set<Period> periods, Set<OrganisationUnit> 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<String> 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<String> 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 );
+ }
}
// -------------------------------------------------------------------------