Hmm, what does this mean? We would have to convert from zip to 7z? Any reason why DHIS 2 cannot export to 7z format?
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. > >> >> >> 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

