=== modified file 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetService.java' --- dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetService.java 2012-04-14 18:32:00 +0000 +++ dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetService.java 2012-04-15 15:05:28 +0000 @@ -29,6 +29,7 @@ import java.io.InputStream; import java.io.OutputStream; +import java.io.Reader; import java.io.Writer; import java.util.Date; import java.util.Set; @@ -50,4 +51,6 @@ ImportSummary saveDataValueSet( InputStream in, ImportOptions importOptions ); ImportSummary saveDataValueSet( InputStream in, ImportOptions importOptions, TaskId taskId ); + + ImportSummary saveDataValueSetCsv( Reader reader, ImportOptions importOptions, TaskId id ); } === modified file 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DefaultDataValueSetService.java' --- dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DefaultDataValueSetService.java 2012-04-14 20:09:10 +0000 +++ dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DefaultDataValueSetService.java 2012-04-15 15:05:28 +0000 @@ -37,6 +37,7 @@ import java.io.InputStream; import java.io.OutputStream; +import java.io.Reader; import java.io.Writer; import java.util.Date; import java.util.HashSet; @@ -74,6 +75,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; +import au.com.bytecode.opencsv.CSVReader; + /** * @author Lars Helge Overland */ @@ -176,11 +179,25 @@ public ImportSummary saveDataValueSet( InputStream in, ImportOptions importOptions, TaskId id ) { + DataValueSet dataValueSet = new StreamingDataValueSet( XMLFactory.getXMLReader( in ) ); + + return saveDataValueSet( importOptions, id, dataValueSet ); + } + + public ImportSummary saveDataValueSetCsv( Reader reader, ImportOptions importOptions, TaskId id ) + { + DataValueSet dataValueSet = new StreamingCsvDataValueSet( new CSVReader( reader ) ); + + return saveDataValueSet( importOptions, id, dataValueSet ); + } + + private ImportSummary saveDataValueSet( ImportOptions importOptions, TaskId id, DataValueSet dataValueSet ) + { notifier.clear( id, DATAVALUE_IMPORT ).notify( id, DATAVALUE_IMPORT, "Process started" ); ImportSummary summary = new ImportSummary(); - DataValueSet dataValueSet = new StreamingDataValueSet( XMLFactory.getXMLReader( in ) ); + importOptions = importOptions != null ? importOptions : ImportOptions.getDefaultImportOptions(); IdentifiableProperty dataElementIdScheme = dataValueSet.getDataElementIdScheme() != null ? IdentifiableProperty.valueOf( dataValueSet.getDataElementIdScheme().toUpperCase() ) : importOptions.getDataElementIdScheme(); IdentifiableProperty orgUnitIdScheme = dataValueSet.getOrgUnitIdScheme() != null ? IdentifiableProperty.valueOf( dataValueSet.getOrgUnitIdScheme().toUpperCase() ) : importOptions.getOrgUnitIdScheme(); === modified file 'dhis-2/dhis-dxf2/src/test/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetServiceTest.java' --- dhis-2/dhis-dxf2/src/test/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetServiceTest.java 2012-04-15 14:52:54 +0000 +++ dhis-2/dhis-dxf2/src/test/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetServiceTest.java 2012-04-15 15:05:28 +0000 @@ -31,6 +31,7 @@ import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertTrue; +import java.io.InputStreamReader; import java.util.Collection; import org.hisp.dhis.DhisTest; @@ -162,6 +163,16 @@ assertImportDataValues( summary ); } + @Test + public void testImportDataValuesCsv() + throws Exception + { + ImportSummary summary = dataValueSetService.saveDataValueSetCsv( + new InputStreamReader( new ClassPathResource( "datavalueset/dataValueSetB.csv" ).getInputStream() ), null, null ); + + assertImportDataValues( summary ); + } + private void assertImportDataValues( ImportSummary summary ) { assertNotNull( summary );