dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #04255
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 1404: Implemented DHIS 1.4 export of data values
------------------------------------------------------------
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:
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
Follow ups