← 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

 

I tried the export today, but did not get very far. I examined the XML
file, and there was no data there, just metadata.  I am certain there
is data in the database for the parameters I assigned.

Lars?

Regards,
Jason


On Tue, Feb 9, 2010 at 6:11 PM, Ime Asangansi <asangansi@xxxxxxxxx> wrote:
> Hi Jason,
>
> Pls kindly feedback when you try.
> Thanks
>
> Ime
>
> --- On Tue, 2/9/10, Jason Pickering <jason.p.pickering@xxxxxxxxx> wrote:
>
>> From: Jason Pickering <jason.p.pickering@xxxxxxxxx>
>> Subject: Re: [Dhis2-devs] [Branch ~dhis2-devs-core/dhis2/trunk] Rev 1404:  Implemented DHIS 1.4 export of data values
>> To: "Ime Asangansi" <asangansi@xxxxxxxxx>
>> Cc: "Saptarshi Purkayastha" <sunbiz@xxxxxxxxx>, "DHIS 2 developers" <dhis2-devs@xxxxxxxxxxxxxxxxxxx>
>> Date: Tuesday, February 9, 2010, 5:37 AM
>> Truly bizarre. I will give it a try.
>> Thanks a lot for this tip Ime.
>>
>> Best regards,
>> Jason
>>
>>
>> On Mon, Feb 8, 2010 at 10:21 PM, Ime Asangansi <asangansi@xxxxxxxxx>
>> wrote:
>> > Hi,
>> >
>> > Pardon me if this is irrelevant as I'm unable to
>> understand the initial context. But it appears you were
>> discussing writing 7z for dhis1.4.
>> >
>> > For our mobile server, I simply used a zipoutputstream
>> and used a filename that ends with .7z. And it did the
>> magic. We found no need for actual LZMA streams and dhis1.4
>> is importing this 'fake' .7z very well :)
>> >
>> > Ime
>> >
>> >
>> >
>> > --- On Mon, 2/8/10, Saptarshi Purkayastha <sunbiz@xxxxxxxxx>
>> wrote:
>> >
>> >> From: Saptarshi Purkayastha <sunbiz@xxxxxxxxx>
>> >> Subject: Re: [Dhis2-devs] [Branch
>> ~dhis2-devs-core/dhis2/trunk] Rev 1404: Implemented DHIS 1.4
>> export of data values
>> >> To: "Jason Pickering" <jason.p.pickering@xxxxxxxxx>
>> >> Cc: "DHIS 2 developers" <dhis2-devs@xxxxxxxxxxxxxxxxxxx>
>> >> Date: Monday, February 8, 2010, 6:23 PM
>> >> Isn't LZMA SDK providing
>> >> the JAVA library?? and comparisons are here
>> >> ---
>> >> Regards,
>> >> Saptarshi PURKAYASTHA
>> >>
>> >>
>> >> Director R & D, HISP India
>> >> Health Information Systems Programme
>> >>
>> >> My Tech Blog:  http://sunnytalkstech.blogspot.com
>> >> You Live by CHOICE, Not by CHANCE
>> >>
>> >>
>> >>
>> >> On 8 February 2010 18:17, Jason
>> >> Pickering <jason.p.pickering@xxxxxxxxx>
>> >> wrote:
>> >>
>> >>
>> >> 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
>> >>
>> >> >>
>> >>
>> >> >
>> >>
>> >>
>> >>
>> >> _______________________________________________
>> >>
>> >> 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
>> >>
>> >>
>> >>
>> >>
>> >> -----Inline Attachment Follows-----
>> >>
>> >> _______________________________________________
>> >> 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