save cdm light export to zip file
authorKatja Luther <k.luther@bgbm.org>
Mon, 19 Jun 2017 11:54:03 +0000 (13:54 +0200)
committerKatja Luther <k.luther@bgbm.org>
Mon, 19 Jun 2017 11:54:03 +0000 (13:54 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/ExportManager.java

index 14b1914496226ec4996c6223dcaf3752a81e3546..9cc5f9b5b0d411b324ee4c41b0800c9f0d9f564a 100644 (file)
 package eu.etaxonomy.taxeditor.io;
 
 import java.io.BufferedWriter;
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileOutputStream;
+import java.io.IOException;
 import java.io.OutputStreamWriter;
 import java.io.Writer;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
 
 import org.apache.log4j.Logger;
 import org.eclipse.core.runtime.Assert;
@@ -59,7 +65,8 @@ import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
 public class ExportManager extends AbstractIOManager<IExportConfigurator> {
 
     private static final Logger logger = Logger.getLogger(ExportManager.class);
-
+    /** Constant <code>DATE_FORMAT_NOW="yyyyMMddHHmm"</code> */
+       public static final String DATE_FORMAT_NOW = "yyyyMMddHHmm";
        /**
         *
         * @param applicationConfiguration
@@ -308,19 +315,28 @@ public class ExportManager extends AbstractIOManager<IExportConfigurator> {
                          } else if (result.getExportData().getType().equals(ExportResultType.MAP_BYTE_ARRAY)){
                              Map<String, byte[]> resultMap = (Map<String, byte[]>)data.getExportData();
                              Set<String> keySet = resultMap.keySet();
-                             for (String key: keySet){
+                             SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
+                             Calendar cal = Calendar.getInstance();
+                            
+
+                             File file = new File(urlString+File.separator + "csv_light_" + sdf.format(cal.getTime())+ ".zip");                              
+                             FileOutputStream stream = new FileOutputStream(file);
+                             ZipOutputStream zos = new ZipOutputStream(stream);
+                                                        for (String key: keySet){
                                  byte[] fileData = resultMap.get(key);
                                  String fileEnding ="";
                                  if (configurator instanceof OutputModelConfigurator){
                                      fileEnding  = ".csv";
                                  }
-                                 File file = new File(urlString+File.separator + key + fileEnding);
-                                 FileOutputStream stream = new FileOutputStream(file);
-                                 Writer out = new BufferedWriter(new OutputStreamWriter(
-                                               stream, "UTF8"));
-                                 stream.write(fileData);
-                                 stream.close();
-                             }
+
+                                                               ZipEntry entry = new ZipEntry( key + fileEnding); 
+                                                               zos.putNextEntry(entry);
+                                                               zos.write(fileData);
+                                                               zos.closeEntry();
+                                                        }
+                           
+                            zos.close();
+                        
 
                          }else{
                              logger.error("This kind of result data is not supported yet." + result.getExportData().getType().toString());