dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #04265
Re: [Branch ~dhis2-devs-core/dhis2/trunk] Rev 1404: Implemented DHIS 1.4 export of data values
Hmm, what does this mean? We would have to convert from zip to 7z? Any
reason why DHIS 2 cannot export to 7z format?
2010/2/8 Lars Helge Øverland <larshelge@xxxxxxxxx>:
>
>
> On Mon, Feb 8, 2010 at 11:59 AM, <noreply@xxxxxxxxxxxxx> wrote:
>>
>> ------------------------------------------------------------
>> revno: 1404
>> committer: Lars Helge Oeverland <larshelge@xxxxxxxxx>
>> branch nick: trunk
>> timestamp: Mon 2010-02-08 11:56:08 +0100
>> message:
>> Implemented DHIS 1.4 export of data values
>> modified:
>
>
> There is actually still a snag here. DHIS 1.4 only accepts the 7zip/lzma
> format currently. I have talked Greg into making 1.4 accept zip/deflate too.
>
>>
>>
>> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/CSVConverter.java
>>
>> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/ExportPipeThread.java
>>
>> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/csv/converter/ReportTableDataConverter.java
>>
>> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/csv/exporter/CSVExportPipeThread.java
>>
>> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/csv/exporter/DefaultCSVExportService.java
>>
>> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/csv/util/CsvUtil.java
>>
>> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dhis14/xml/converter/DataValueConverter.java
>>
>> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dhis14/xml/exporter/DefaultDhis14XMLExportService.java
>>
>> dhis-2/dhis-services/dhis-service-importexport/src/main/resources/META-INF/dhis/beans.xml
>>
>> dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/DateUtils.java
>>
>> dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/StreamUtils.java
>>
>> dhis-2/dhis-web/dhis-web-importexport/src/main/resources/org/hisp/dhis/importexport/i18n_module.properties
>>
>> dhis-2/dhis-web/dhis-web-importexport/src/main/webapp/dhis-web-importexport/externalExportMenu.vm
>>
>>
>> --
>> 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-importexport/src/main/java/org/hisp/dhis/importexport/CSVConverter.java'
>> ---
>> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/CSVConverter.java
>> 2009-03-03 16:46:36 +0000
>> +++
>> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/CSVConverter.java
>> 2010-02-08 10:56:08 +0000
>> @@ -28,7 +28,7 @@
>> */
>>
>> import java.io.BufferedReader;
>> -import java.io.BufferedWriter;
>> +import java.util.zip.ZipOutputStream;
>>
>> /**
>> * @author Lars Helge Overland
>> @@ -36,7 +36,7 @@
>> */
>> public interface CSVConverter
>> {
>> - void write( BufferedWriter writer, ExportParams params );
>> + void write( ZipOutputStream out, ExportParams params );
>>
>> void read( BufferedReader reader, ImportParams params );
>> }
>>
>> === modified file
>> 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/ExportPipeThread.java'
>> ---
>> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/ExportPipeThread.java
>> 2009-11-02 15:55:44 +0000
>> +++
>> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/ExportPipeThread.java
>> 2010-02-08 10:56:08 +0000
>> @@ -52,7 +52,8 @@
>>
>> private List<XMLConverter> xsdConverters = new
>> ArrayList<XMLConverter>();
>> private List<XMLConverter> xmlConverters = new
>> ArrayList<XMLConverter>();
>> -
>> + private List<CSVConverter> csvConverters = new
>> ArrayList<CSVConverter>();
>> +
>> //
>> -------------------------------------------------------------------------
>> // Parameters
>> //
>> -------------------------------------------------------------------------
>> @@ -122,6 +123,11 @@
>> this.xmlConverters.add( converter );
>> }
>>
>> + public void registerCSVConverter ( CSVConverter converter )
>> + {
>> + this.csvConverters.add( converter );
>> + }
>> +
>> //
>> -------------------------------------------------------------------------
>> // Thread implementation
>> //
>> -------------------------------------------------------------------------
>> @@ -159,9 +165,20 @@
>> }
>>
>> afterXML( writer );
>> -
>> +
>> closeDocument( writer );
>> -
>> +
>> + StreamUtils.closeZipEntry( zipOutputStream );
>> +
>> + //
>> -----------------------------------------------------------------
>> + // CSV
>> + //
>> -----------------------------------------------------------------
>> +
>> + for ( CSVConverter converter : csvConverters )
>> + {
>> + converter.write( zipOutputStream, params );
>> + }
>> +
>> log.info( "Export done" );
>> }
>> catch ( Exception ex )
>> @@ -172,12 +189,10 @@
>> }
>> finally
>> {
>> - StreamUtils.finishZipEntry( zipOutputStream );
>> + writer.closeWriter();
>>
>> StreamUtils.closeOutputStream( zipOutputStream );
>>
>> - writer.closeWriter();
>> -
>> NameMappingUtil.clearMapping();
>> }
>> }
>>
>> === modified file
>> 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/csv/converter/ReportTableDataConverter.java'
>> ---
>> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/csv/converter/ReportTableDataConverter.java
>> 2009-06-10 22:25:07 +0000
>> +++
>> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/csv/converter/ReportTableDataConverter.java
>> 2010-02-08 10:56:08 +0000
>> @@ -27,14 +27,17 @@
>> * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
>> */
>>
>> -import static org.hisp.dhis.importexport.csv.util.CsvUtil.SEPARATOR;
>> +import static org.hisp.dhis.importexport.csv.util.CsvUtil.CSV_EXTENSION;
>> +import static org.hisp.dhis.importexport.csv.util.CsvUtil.NEWLINE;
>> +import static org.hisp.dhis.importexport.csv.util.CsvUtil.SEPARATOR_B;
>> import static org.hisp.dhis.importexport.csv.util.CsvUtil.csvEncode;
>>
>> import java.io.BufferedReader;
>> -import java.io.BufferedWriter;
>> import java.io.IOException;
>> import java.util.Iterator;
>> import java.util.SortedMap;
>> +import java.util.zip.ZipEntry;
>> +import java.util.zip.ZipOutputStream;
>>
>> import org.hisp.dhis.importexport.CSVConverter;
>> import org.hisp.dhis.importexport.ExportParams;
>> @@ -69,27 +72,29 @@
>> // CSVConverter implementation
>> //
>> -------------------------------------------------------------------------
>>
>> - public void write( BufferedWriter writer, ExportParams params )
>> + public void write( ZipOutputStream out, ExportParams params )
>> {
>> try
>> {
>> - for ( Integer id : params.getReportTables() ) //TODO more
>> than one?
>> + for ( Integer id : params.getReportTables() )
>> {
>> + out.putNextEntry( new ZipEntry( "ReportTable" + id +
>> CSV_EXTENSION ) );
>> +
>> ReportTableData data =
>> reportTableService.getReportTableData( id, params.getFormat() );
>>
>> Iterator<String> columns =
>> data.getPrettyPrintColumns().iterator();
>>
>> while ( columns.hasNext() )
>> {
>> - writer.write( csvEncode( columns.next() ) );
>> + out.write( csvEncode( columns.next() ).getBytes() );
>>
>> if ( columns.hasNext() )
>> {
>> - writer.write( SEPARATOR );
>> + out.write( SEPARATOR_B );
>> }
>> }
>>
>> - writer.newLine();
>> + out.write( NEWLINE );
>>
>> for ( SortedMap<Integer, String> row : data.getRows() )
>> {
>> @@ -97,15 +102,15 @@
>>
>> while ( values.hasNext() )
>> {
>> - writer.write( csvEncode( values.next() ) );
>> + out.write( csvEncode( values.next() ).getBytes()
>> );
>>
>> if ( values.hasNext() )
>> {
>> - writer.write( SEPARATOR );
>> + out.write( SEPARATOR_B );
>> }
>> }
>>
>> - writer.newLine();
>> + out.write( NEWLINE );
>> }
>> }
>> }
>>
>> === modified file
>> 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/csv/exporter/CSVExportPipeThread.java'
>> ---
>> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/csv/exporter/CSVExportPipeThread.java
>> 2009-06-10 22:25:07 +0000
>> +++
>> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/csv/exporter/CSVExportPipeThread.java
>> 2010-02-08 10:56:08 +0000
>> @@ -27,9 +27,9 @@
>> * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
>> */
>>
>> -import java.io.BufferedWriter;
>> import java.util.ArrayList;
>> import java.util.List;
>> +import java.util.zip.ZipOutputStream;
>>
>> import org.apache.commons.logging.Log;
>> import org.apache.commons.logging.LogFactory;
>> @@ -48,13 +48,6 @@
>> {
>> private static final Log log = LogFactory.getLog(
>> CSVExportPipeThread.class );
>>
>> - private BufferedWriter writer;
>> -
>> - public void setWriter( BufferedWriter writer )
>> - {
>> - this.writer = writer;
>> - }
>> -
>> private ExportParams params;
>>
>> public void setParams( ExportParams params )
>> @@ -62,6 +55,13 @@
>> this.params = params;
>> }
>>
>> + private ZipOutputStream outputStream;
>> +
>> + public void setOutputStream( ZipOutputStream outputStream )
>> + {
>> + this.outputStream = outputStream;
>> + }
>> +
>> private List<CSVConverter> converters = new ArrayList<CSVConverter>();
>>
>> public void registerCSVConverter( CSVConverter converter )
>> @@ -90,14 +90,18 @@
>>
>> for ( CSVConverter converter : converters )
>> {
>> - converter.write( writer, params );
>> + converter.write( outputStream, params );
>> }
>>
>> log.info( "Export finished" );
>> }
>> + catch ( Exception ex )
>> + {
>> + throw new RuntimeException( ex );
>> + }
>> finally
>> {
>> - StreamUtils.closeWriter( writer );
>> + StreamUtils.closeOutputStream( outputStream );
>> }
>> }
>> }
>>
>> === modified file
>> 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/csv/exporter/DefaultCSVExportService.java'
>> ---
>> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/csv/exporter/DefaultCSVExportService.java
>> 2009-06-10 22:25:07 +0000
>> +++
>> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/csv/exporter/DefaultCSVExportService.java
>> 2010-02-08 10:56:08 +0000
>> @@ -28,13 +28,11 @@
>> */
>>
>> import java.io.BufferedInputStream;
>> -import java.io.BufferedWriter;
>> +import java.io.BufferedOutputStream;
>> import java.io.IOException;
>> import java.io.InputStream;
>> -import java.io.OutputStreamWriter;
>> import java.io.PipedInputStream;
>> import java.io.PipedOutputStream;
>> -import java.util.zip.ZipEntry;
>> import java.util.zip.ZipOutputStream;
>>
>> import org.hibernate.SessionFactory;
>> @@ -50,8 +48,6 @@
>> public class DefaultCSVExportService
>> implements ExportService
>> {
>> - private static final String ZIP_ENTRY_NAME = "Export.csv";
>> -
>> //
>> -------------------------------------------------------------------------
>> // Dependencies
>> //
>> -------------------------------------------------------------------------
>> @@ -87,20 +83,18 @@
>>
>> PipedInputStream in = new PipedInputStream( out );
>>
>> - ZipOutputStream zipOut = new ZipOutputStream( out );
>> + ZipOutputStream zipOut = new ZipOutputStream( new
>> BufferedOutputStream( out ) );
>>
>> - zipOut.putNextEntry( new ZipEntry( ZIP_ENTRY_NAME ) );
>> + //zipOut.putNextEntry( new ZipEntry( ZIP_ENTRY_NAME ) );
>>
>> - BufferedWriter writer = new BufferedWriter( new
>> OutputStreamWriter( zipOut ) );
>> -
>> //
>> -----------------------------------------------------------------
>> // Writes to one end of the pipe
>> //
>> -----------------------------------------------------------------
>>
>> CSVExportPipeThread thread = new CSVExportPipeThread(
>> sessionFactory );
>>
>> - thread.setWriter( writer );
>> thread.setParams( params );
>> + thread.setOutputStream( zipOut );
>>
>> thread.registerCSVConverter( new ReportTableDataConverter(
>> reportTableService ) );
>>
>>
>> === modified file
>> 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/csv/util/CsvUtil.java'
>> ---
>> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/csv/util/CsvUtil.java
>> 2009-04-16 09:53:17 +0000
>> +++
>> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/csv/util/CsvUtil.java
>> 2010-02-08 10:56:08 +0000
>> @@ -33,15 +33,80 @@
>> */
>> public class CsvUtil
>> {
>> - public static final char SEPARATOR = ',';
>> -
>> - private static final String ENCLOSURE = "\"";
>> -
>> - public static String csvEncode( String string )
>> - {
>> - string = string.replaceAll( ENCLOSURE, ENCLOSURE + ENCLOSURE );
>> - string = ENCLOSURE + string + ENCLOSURE;
>> + public static final String SEPARATOR = ",";
>> + public static final byte[] SEPARATOR_B = SEPARATOR.getBytes();
>> + public static final byte[] NEWLINE = "\n".getBytes();
>> +
>> + public static final String CSV_EXTENSION = ".csv";
>> + private static final String ENCLOSURE = "\"";
>> + private static final String EMPTY = "";
>> +
>> + /**
>> + * Encodes the given value to a CSV acceptable value.
>> + *
>> + * @param value the value.
>> + * @return the CSV encoded value.
>> + */
>> + public static String csvEncode( int value )
>> + {
>> + return csvEncode( String.valueOf( value ) );
>> + }
>> +
>> + /**
>> + * Encodes the given value to a CSV acceptable value.
>> + *
>> + * @param value the value.
>> + * @return the CSV encoded value.
>> + */
>> + public static String csvEncode( String value )
>> + {
>> + if ( value == null )
>> + {
>> + value = EMPTY;
>> + }
>> + else
>> + {
>> + value = value.replaceAll( ENCLOSURE, ENCLOSURE + ENCLOSURE );
>> + value = ENCLOSURE + value + ENCLOSURE;
>> + }
>> +
>> + return value;
>> + }
>> +
>> + /**
>> + * Appends a separator to the value and returns the value as a byte
>> array.
>> + *
>> + * @param value the value.
>> + * @return a byte araray.
>> + */
>> + public static byte[] getCsvValue( int value )
>> + {
>> + return getCsvEndValue( value + SEPARATOR );
>> + }
>> +
>> + /**
>> + * Appends a separator to the value and returns the value as a byte
>> array.
>> + *
>> + * @param value the value.
>> + * @return a byte araray.
>> + */
>> + public static byte[] getCsvValue( String value )
>> + {
>> + return getCsvEndValue( value + SEPARATOR );
>> + }
>> +
>> + public static byte[] getCsvEndValue( int value )
>> + {
>> + return getCsvEndValue( String.valueOf( value ) );
>> + }
>> +
>> + public static byte[] getCsvEndValue( String value )
>> + {
>> + if ( value == null )
>> + {
>> + return EMPTY.getBytes();
>> + }
>>
>> - return string;
>> + return ( value ).getBytes();
>> }
>> }
>>
>> === modified file
>> 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dhis14/xml/converter/DataValueConverter.java'
>> ---
>> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dhis14/xml/converter/DataValueConverter.java
>> 2010-02-08 07:04:26 +0000
>> +++
>> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dhis14/xml/converter/DataValueConverter.java
>> 2010-02-08 10:56:08 +0000
>> @@ -27,17 +27,28 @@
>> * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
>> */
>>
>> +import static org.hisp.dhis.importexport.csv.util.CsvUtil.NEWLINE;
>> +import static org.hisp.dhis.importexport.csv.util.CsvUtil.SEPARATOR_B;
>> +import static org.hisp.dhis.importexport.csv.util.CsvUtil.csvEncode;
>> +import static org.hisp.dhis.importexport.csv.util.CsvUtil.getCsvValue;
>> +import static org.hisp.dhis.importexport.csv.util.CsvUtil.getCsvEndValue;
>> +
>> import java.io.BufferedReader;
>> -import java.io.BufferedWriter;
>> import java.io.IOException;
>> +import java.util.Collection;
>> import java.util.Map;
>> +import java.util.zip.ZipEntry;
>> +import java.util.zip.ZipOutputStream;
>>
>> import org.amplecode.quick.BatchHandler;
>> +import org.amplecode.quick.StatementManager;
>> import org.hisp.dhis.dataelement.DataElement;
>> import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo;
>> import org.hisp.dhis.dataelement.DataElementCategoryService;
>> +import org.hisp.dhis.datamart.DataMartService;
>> import org.hisp.dhis.datavalue.DataValue;
>> import org.hisp.dhis.datavalue.DataValueService;
>> +import org.hisp.dhis.datavalue.DeflatedDataValue;
>> import org.hisp.dhis.importexport.CSVConverter;
>> import org.hisp.dhis.importexport.ExportParams;
>> import org.hisp.dhis.importexport.GroupMemberType;
>> @@ -47,7 +58,10 @@
>> import org.hisp.dhis.importexport.converter.AbstractDataValueConverter;
>> import org.hisp.dhis.organisationunit.OrganisationUnit;
>> import org.hisp.dhis.period.Period;
>> +import org.hisp.dhis.period.PeriodService;
>> +import org.hisp.dhis.system.util.DateUtils;
>> import org.hisp.dhis.system.util.MimicingHashMap;
>> +import org.hisp.dhis.system.util.StreamUtils;
>>
>> /**
>> * @author Lars Helge Overland
>> @@ -57,8 +71,11 @@
>> extends AbstractDataValueConverter implements CSVConverter
>> {
>> private static final String SEPARATOR = ",";
>> + private static final String FILENAME = "RoutineData.txt";
>>
>> private DataElementCategoryService categoryService;
>> + private PeriodService periodService;
>> + private StatementManager statementManager;
>>
>> //
>> -------------------------------------------------------------------------
>> // Properties
>> @@ -72,6 +89,14 @@
>> // Constructor
>> //
>> -------------------------------------------------------------------------
>>
>> + public DataValueConverter( PeriodService periodService,
>> DataMartService dataMartService,
>> + StatementManager statementManager )
>> + {
>> + this.periodService = periodService;
>> + this.dataMartService = dataMartService;
>> + this.statementManager = statementManager;
>> + }
>> +
>> /**
>> * Constructor for read operations.
>> */
>> @@ -95,9 +120,81 @@
>> // CSVConverter implementation
>> //
>> -------------------------------------------------------------------------
>>
>> - public void write( BufferedWriter writer, ExportParams params )
>> + public void write( ZipOutputStream out, ExportParams params )
>> {
>> - // Not implemented
>> + try
>> + {
>> + out.putNextEntry( new ZipEntry( FILENAME ) );
>> +
>> + out.write( getCsvValue( csvEncode( "RoutineDataID" ) ) );
>> + out.write( getCsvValue( csvEncode( "OrgUnitID" ) ) );
>> + out.write( getCsvValue( csvEncode( "DataElementID" ) ) );
>> + out.write( getCsvValue( csvEncode( "DataPeriodID" ) ) );
>> + out.write( getCsvValue( csvEncode( "EntryText" ) ) );
>> + out.write( getCsvValue( csvEncode( "EntryYesNo" ) ) );
>> + out.write( getCsvValue( csvEncode( "EntryNumber" ) ) );
>> + out.write( getCsvValue( csvEncode( "EntryDate" ) ) );
>> + out.write( getCsvValue( csvEncode( "EntryMemo" ) ) );
>> + out.write( getCsvValue( csvEncode( "EntryObject" ) ) );
>> + out.write( getCsvValue( csvEncode( "Check" ) ) );
>> + out.write( getCsvValue( csvEncode( "Verified" ) ) );
>> + out.write( getCsvValue( csvEncode( "Deleted" ) ) );
>> + out.write( getCsvValue( csvEncode( "Comment" ) ) );
>> + out.write( getCsvValue( csvEncode( "LastUserID" ) ) );
>> + out.write( getCsvEndValue( csvEncode( "LastUpdated" ) ) );
>> +
>> + out.write( NEWLINE );
>> +
>> + if ( params.isIncludeDataValues() )
>> + {
>> + if ( params.getStartDate() != null && params.getEndDate()
>> != null )
>> + {
>> + Collection<DeflatedDataValue> values = null;
>> +
>> + Collection<Period> periods =
>> periodService.getIntersectingPeriods( params.getStartDate(),
>> params.getEndDate() );
>> +
>> + statementManager.initialise();
>> +
>> + for ( final Integer element :
>> params.getDataElements() )
>> + {
>> + for ( final Period period : periods )
>> + {
>> + values =
>> dataMartService.getDeflatedDataValues( element, period.getId(),
>> params.getOrganisationUnits() );
>> +
>> + for ( final DeflatedDataValue value : values
>> )
>> + {
>> + out.write( getCsvValue( 0 ) );
>> + out.write( getCsvValue(
>> value.getSourceId() ) );
>> + out.write( getCsvValue(
>> value.getDataElementId() ) );
>> + out.write( getCsvValue(
>> value.getPeriodId() ) );
>> + out.write( SEPARATOR_B );
>> + out.write( SEPARATOR_B );
>> + out.write( getCsvValue( csvEncode(
>> value.getValue() ) ) );
>> + out.write( SEPARATOR_B );
>> + out.write( SEPARATOR_B );
>> + out.write( SEPARATOR_B );
>> + out.write( getCsvValue( 0 ) );
>> + out.write( getCsvValue( 0 ) );
>> + out.write( getCsvValue( 0 ) );
>> + out.write( getCsvValue( csvEncode(
>> value.getComment() ) ) );
>> + out.write( getCsvValue( 1 ) );
>> + out.write( getCsvEndValue(
>> DateUtils.getAccessDateString( value.getTimestamp() ) ) );
>> +
>> + out.write( NEWLINE );
>> + }
>> + }
>> + }
>> +
>> + statementManager.destroy();
>> + }
>> + }
>> +
>> + StreamUtils.closeZipEntry( out );
>> + }
>> + catch ( IOException ex )
>> + {
>> + throw new RuntimeException( "Failed to write data", ex );
>> + }
>> }
>>
>> public void read( BufferedReader reader, ImportParams params )
>>
>> === modified file
>> 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dhis14/xml/exporter/DefaultDhis14XMLExportService.java'
>> ---
>> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dhis14/xml/exporter/DefaultDhis14XMLExportService.java
>> 2009-11-07 14:09:00 +0000
>> +++
>> dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dhis14/xml/exporter/DefaultDhis14XMLExportService.java
>> 2010-02-08 10:56:08 +0000
>> @@ -35,16 +35,19 @@
>> import java.util.zip.ZipEntry;
>> import java.util.zip.ZipOutputStream;
>>
>> +import org.amplecode.quick.StatementManager;
>> import org.amplecode.staxwax.factory.XMLFactory;
>> import org.amplecode.staxwax.writer.XMLWriter;
>> import org.hibernate.SessionFactory;
>> import org.hisp.dhis.dataelement.DataElementService;
>> +import org.hisp.dhis.datamart.DataMartService;
>> import org.hisp.dhis.importexport.ExportParams;
>> import org.hisp.dhis.importexport.ExportPipeThread;
>> import org.hisp.dhis.importexport.ExportService;
>> import
>> org.hisp.dhis.importexport.dhis14.xml.converter.CalculatedDataElementAssociationConverter;
>> import
>> org.hisp.dhis.importexport.dhis14.xml.converter.DataElementConverter;
>> import org.hisp.dhis.importexport.dhis14.xml.converter.DataTypeConverter;
>> +import
>> org.hisp.dhis.importexport.dhis14.xml.converter.DataValueConverter;
>> import
>> org.hisp.dhis.importexport.dhis14.xml.converter.IndicatorConverter;
>> import
>> org.hisp.dhis.importexport.dhis14.xml.converter.IndicatorTypeConverter;
>> import
>> org.hisp.dhis.importexport.dhis14.xml.converter.PeriodTypeConverter;
>> @@ -60,6 +63,7 @@
>> import
>> org.hisp.dhis.importexport.dhis14.xml.converter.xsd.UserRoleXSDConverter;
>> import
>> org.hisp.dhis.importexport.dhis14.xml.converter.xsd.UserXSDConverter;
>> import org.hisp.dhis.indicator.IndicatorService;
>> +import org.hisp.dhis.period.PeriodService;
>>
>> /**
>> * @author Lars Helge Overland
>> @@ -100,6 +104,27 @@
>> this.indicatorService = indicatorService;
>> }
>>
>> + private PeriodService periodService;
>> +
>> + public void setPeriodService( PeriodService periodService )
>> + {
>> + this.periodService = periodService;
>> + }
>> +
>> + private DataMartService dataMartService;
>> +
>> + public void setDataMartService( DataMartService dataMartService )
>> + {
>> + this.dataMartService = dataMartService;
>> + }
>> +
>> + private StatementManager statementManager;
>> +
>> + public void setStatementManager( StatementManager statementManager )
>> + {
>> + this.statementManager = statementManager;
>> + }
>> +
>> //
>> -------------------------------------------------------------------------
>> // ExportService implementation
>> //
>> -------------------------------------------------------------------------
>> @@ -122,7 +147,7 @@
>> zipOut.putNextEntry( new ZipEntry( "Export.xml" ) );
>>
>> XMLWriter writer = XMLFactory.getPlainXMLWriter( zipOut );
>> -
>> +
>> //
>> -------------------------------------------------------------------------
>> // Writes to one end of the pipe
>> //
>> -------------------------------------------------------------------------
>> @@ -156,6 +181,8 @@
>> thread.registerXMLConverter( new UserConverter() );
>> thread.registerXMLConverter( new UserRoleConverter() );
>>
>> + thread.registerCSVConverter( new DataValueConverter(
>> periodService, dataMartService, statementManager ) );
>> +
>> thread.start();
>>
>> //
>> -------------------------------------------------------------------------
>>
>> === modified file
>> 'dhis-2/dhis-services/dhis-service-importexport/src/main/resources/META-INF/dhis/beans.xml'
>> ---
>> dhis-2/dhis-services/dhis-service-importexport/src/main/resources/META-INF/dhis/beans.xml
>> 2010-02-02 19:21:58 +0000
>> +++
>> dhis-2/dhis-services/dhis-service-importexport/src/main/resources/META-INF/dhis/beans.xml
>> 2010-02-08 10:56:08 +0000
>> @@ -381,6 +381,9 @@
>> <property name="sessionFactory" ref="sessionFactory" />
>> <property name="dataElementService"
>> ref="org.hisp.dhis.dataelement.DataElementService" />
>> <property name="indicatorService"
>> ref="org.hisp.dhis.indicator.IndicatorService" />
>> + <property name="periodService"
>> ref="org.hisp.dhis.period.PeriodService" />
>> + <property name="dataMartService"
>> ref="org.hisp.dhis.datamart.DataMartService" />
>> + <property name="statementManager" ref="statementManager"
>> />
>> </bean>
>>
>> <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>> -->
>>
>> === modified file
>> 'dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/DateUtils.java'
>> ---
>> dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/DateUtils.java
>> 2009-11-19 19:16:46 +0000
>> +++
>> dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/DateUtils.java
>> 2010-02-08 10:56:08 +0000
>> @@ -49,6 +49,20 @@
>> public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
>>
>> /**
>> + * Formats a Date to the Access date format.
>> + *
>> + * @param date the Date to parse.
>> + * @return a formatted date string.
>> + */
>> + public static String getAccessDateString( Date date )
>> + {
>> + final SimpleDateFormat format = new SimpleDateFormat();
>> + format.applyPattern( "yyyy/MM/dd HH:mm:ss" );
>> +
>> + return date != null ? format.format( date ) : null;
>> + }
>> +
>> + /**
>> * Formats a Date to the IXF date format which is
>> YYYY-MM-DD'T'HH:MM:SS.
>> *
>> * @param date the Date to parse.
>>
>> === modified file
>> 'dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/StreamUtils.java'
>> ---
>> dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/StreamUtils.java
>> 2009-12-19 15:20:41 +0000
>> +++
>> dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/StreamUtils.java
>> 2010-02-08 10:56:08 +0000
>> @@ -422,9 +422,26 @@
>> }
>>
>> /**
>> + * Closes the current ZipEntry and positions the stream for writing
>> the next entry.
>> + *
>> + * @param out the ZipOutputStream.
>> + */
>> + public static void closeZipEntry( ZipOutputStream out )
>> + {
>> + try
>> + {
>> + out.closeEntry();
>> + }
>> + catch ( Exception ex )
>> + {
>> + throw new RuntimeException( "Failed to close the current
>> ZipEntry", ex );
>> + }
>> + }
>> +
>> + /**
>> * Finishes writing the contents of the ZIP output stream without
>> closing the underlying stream.
>> *
>> - * @param out the ZipOutputStream to write to.
>> + * @param out the ZipOutputStream.
>> */
>> public static void finishZipEntry( ZipOutputStream out )
>> {
>> @@ -434,7 +451,7 @@
>> }
>> catch ( Exception ex )
>> {
>> - throw new RuntimeException( "Failed to finish
>> ZipOutputStream", ex );
>> + throw new RuntimeException( "Failed to finish the content of
>> the ZipOutputStream", ex );
>> }
>> }
>>
>>
>> === modified file
>> 'dhis-2/dhis-web/dhis-web-importexport/src/main/resources/org/hisp/dhis/importexport/i18n_module.properties'
>> ---
>> dhis-2/dhis-web/dhis-web-importexport/src/main/resources/org/hisp/dhis/importexport/i18n_module.properties
>> 2010-01-27 21:45:11 +0000
>> +++
>> dhis-2/dhis-web/dhis-web-importexport/src/main/resources/org/hisp/dhis/importexport/i18n_module.properties
>> 2010-02-08 10:56:08 +0000
>> @@ -146,6 +146,7 @@
>> import_from_other_systems = Import from other systems
>> DHIS14_import = DHIS 1.4 Import
>> DHIS14_metadata_export = DHIS 1.4 Metadata Export
>> +DHIS14_data_export = DHIS 1.4 Data Export
>> IXF_import = IXF Import
>> accept_incoming_records = Accept incoming records
>> include_datavalues = Include data values
>> @@ -442,4 +443,5 @@
>> intro_ixf_metadata_export = Do an export of meta-data or dimensional data
>> describing the facts. Indicator Transmission Format (IXF) is a standard
>> developed by the WHO.
>> intro_DHIS14_metadata_export = Do an export of meta-data or dimensional
>> data describing the facts. DHIS 1.4 is the predecessor of DHIS 2.
>> intro_DHIS14_detailed_metadata_export = Do an export of an detailed
>> selection of meta-data. DHIS 1.4 is the predecessor of DHIS 2.
>> +intro_DHIS14_data_export = Do an export of data values or facts. DHIS 1.4
>> is the predecessor of DHIS 2.
>> intro_pdf_metadata_export = Portable Document Format (PDF) is a file
>> format for document exchange.
>>
>> === modified file
>> 'dhis-2/dhis-web/dhis-web-importexport/src/main/webapp/dhis-web-importexport/externalExportMenu.vm'
>> ---
>> dhis-2/dhis-web/dhis-web-importexport/src/main/webapp/dhis-web-importexport/externalExportMenu.vm
>> 2010-01-28 11:51:39 +0000
>> +++
>> dhis-2/dhis-web/dhis-web-importexport/src/main/webapp/dhis-web-importexport/externalExportMenu.vm
>> 2010-02-08 10:56:08 +0000
>> @@ -2,8 +2,9 @@
>> <h3>$i18n.getString( "export_to_other_systems" )</h3>
>>
>> <ul class="introList">
>> + #introListItem( "displayMetaDataExportForm.action?exportFormat=IXF"
>> "ixf_metadata_export" )
>> #introListItem( "displayDataValueExportForm.action?exportFormat=IXF"
>> "ixf_data_export" )
>> - #introListItem( "displayMetaDataExportForm.action?exportFormat=IXF"
>> "ixf_metadata_export" )
>> #introListItem(
>> "displayMetaDataExportForm.action?exportFormat=DHIS14XML"
>> "DHIS14_metadata_export" )
>> #introListItem(
>> "displayDetailedMetaDataExportForm.action?exportFormat=DHIS14XML"
>> "DHIS14_detailed_metadata_export" )
>> + #introListItem(
>> "displayDataValueExportForm.action?exportFormat=DHIS14XML"
>> "DHIS14_data_export" )
>> #introListItem( "displayMetaDataExportForm.action?exportFormat=PDF"
>> "pdf_metadata_export" )
>> \ No newline at end of file
>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~dhis2-devs
>> Post to : dhis2-devs@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~dhis2-devs
>> More help : https://help.launchpad.net/ListHelp
>>
>
>
Follow ups
References