← Back to team overview

dhis2-devs team mailing list archive

Re: [Branch ~dhis2-devs-core/dhis2/trunk] Rev 1404: Implemented DHIS 1.4 export of data values

 

No clue if this is possible, but if the user was to provide a  path to
a native OS executable, could DHIS push the job off to this?




2010/2/8 Bob Jolliffe <bobjolliffe@xxxxxxxxx>:
> 2010/2/8 Lars Helge Øverland <larshelge@xxxxxxxxx>:
>> Yup agree with that just could not make it write the appropriate zip
>> entries that way.. Open for being enlighted here..
>
> OK.  Can't really look now but I guess it must be tricky :-)  Will
> maybe look later in the week.  If the day comes (and I don't see it
> soon) that you had an option to write to either 7z or zip format I'm
> just thinking you would want the packaging decoupled from the
> production of the streams.
>
> Bob
>
>>
>> 2010/2/8, Bob Jolliffe <bobjolliffe@xxxxxxxxx>:
>>> 2010/2/8 Lars Helge Øverland <larshelge@xxxxxxxxx>:
>>>>
>>>>
>>>> 2010/2/8 Bob Jolliffe <bobjolliffe@xxxxxxxxx>
>>>>>
>>>>> 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.
>>>>>
>>>>> Isn't it better to have gzip/deflate?  We are not talking about
>>>>> compressing an archive of files but rather compressing a single
>>>>> stream.
>>>>>
>>>>> Also I think the original "void write( BufferedWriter writer,
>>>>> ExportParams params )" might be better than "void write(
>>>>> ZipOutputStream out, ExportParams params )".  It seems unnecessary
>>>>> that the convertor should have to know anything about zip, gzip, 7zip
>>>>> or what have you.  It should know how to write csv to a stream.
>>>>>
>>>>> I suspect that how the stream is later compressed is better deferred to
>>>>> later.
>>>>
>>>> Problem is that DHIS 1.4 uses a CSV file for data and an XML file for
>>>> meta-data and keeps both inside the archive... I was was not able to have
>>>> multiple zip entries while using the Writer..
>>>
>>> Ah.  Ok. I do remember.  Then you would need an archive (zip or the
>>> seven thing) rather a gzipped stream.
>>>
>>> But does your CSV writer need to know that?  Surely it just has an
>>> interest in churning out csv datavalues.  Some other component should
>>> put the csv stream together with the xml stream into the zip.
>>>
>>>>
>>>>>
>>>>> Cheers
>>>>> Bob
>>>>>
>>>>> >
>>>>> >>
>>>>> >>
>>>>> >>
>>>>> >>  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
>>>>> >>
>>>>> >
>>>>> >
>>>>> > _______________________________________________
>>>>> > 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
>>>>> >
>>>>> >
>>>>
>>>>
>>>
>>
>> --
>> Sendt fra min mobile enhet
>>
>



Follow ups

References