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 <[email protected]> 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 <[email protected]> wrote: > >> From: Saptarshi Purkayastha <[email protected]> >> Subject: Re: [Dhis2-devs] [Branch ~dhis2-devs-core/dhis2/trunk] Rev 1404: >> Implemented DHIS 1.4 export of data values >> To: "Jason Pickering" <[email protected]> >> Cc: "DHIS 2 developers" <[email protected]> >> 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 <[email protected]> >> 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 <[email protected]>: >> >> > 2010/2/8 Lars Helge Øverland <[email protected]>: >> >> >> 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 <[email protected]>: >> >> >>> 2010/2/8 Lars Helge Øverland <[email protected]>: >> >> >>>> >> >> >>>> >> >> >>>> 2010/2/8 Bob Jolliffe <[email protected]> >> >> >>>>> >> >> >>>>> 2010/2/8 Lars Helge Øverland <[email protected]>: >> >> >>>>> > >> >> >>>>> > >> >> >>>>> > On Mon, Feb 8, 2010 at 11:59 AM, >> <[email protected]> >> wrote: >> >> >>>>> >> >> >> >>>>> >> >> ------------------------------------------------------------ >> >> >>>>> >> revno: 1404 >> >> >>>>> >> committer: Lars Helge >> Oeverland <[email protected]> >> >> >>>>> >> 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 : [email protected] >> >> >>>>> >> Unsubscribe : https://launchpad.net/~dhis2-devs >> >> >>>>> >> More help : https://help.launchpad.net/ListHelp >> >> >>>>> >> >> >> >>>>> > >> >> >>>>> > >> >> >>>>> > >> _______________________________________________ >> >> >>>>> > Mailing list: https://launchpad.net/~dhis2-devs >> >> >>>>> > Post to : [email protected] >> >> >>>>> > 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 : [email protected] >> >> 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 : [email protected] >> Unsubscribe : https://launchpad.net/~dhis2-devs >> More help : https://help.launchpad.net/ListHelp >> > _______________________________________________ Mailing list: https://launchpad.net/~dhis2-devs Post to : [email protected] Unsubscribe : https://launchpad.net/~dhis2-devs More help : https://help.launchpad.net/ListHelp

