← 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

 

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