Merge branch 'release/5.42.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / io / ExportManager.java
index 2dad22a0a507fd94e6bce55f554b3c15d38da5d9..00308aff988ecb11fdc93d64f2afd7d63c344c0d 100644 (file)
@@ -37,6 +37,7 @@ import eu.etaxonomy.cdm.api.application.CdmApplicationState;
 import eu.etaxonomy.cdm.api.application.ICdmRepository;
 import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor;
 import eu.etaxonomy.cdm.io.cdmLight.CdmLightExportConfigurator;
+import eu.etaxonomy.cdm.io.coldp.ColDpExportConfigurator;
 import eu.etaxonomy.cdm.io.common.ExportDataWrapper;
 import eu.etaxonomy.cdm.io.common.ExportResult;
 import eu.etaxonomy.cdm.io.common.ExportResultType;
@@ -46,6 +47,7 @@ import eu.etaxonomy.cdm.io.dwca.out.DwcaTaxExportConfigurator;
 import eu.etaxonomy.cdm.io.jaxb.JaxbExportConfigurator;
 import eu.etaxonomy.cdm.io.sdd.out.SDDExportConfigurator;
 import eu.etaxonomy.cdm.io.service.IIOService;
+import eu.etaxonomy.cdm.io.wfo.out.WfoBackboneExportConfigurator;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.CdmProgressMonitorAdapter;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
@@ -78,84 +80,6 @@ public class ExportManager
                return new ExportManager(applicationConfiguration);
        }
 
-//     @Override
-//     protected Job createIOJob(final IExportConfigurator configurator) {
-//
-//             Assert.isNotNull(configurator, "Configuration may not be null");
-//
-//             final Display display = Display.getCurrent();
-//
-//             Job job = new Job("Export: " + configurator.getClass().getSimpleName()) {
-//                     @Override
-//                     protected IStatus run(IProgressMonitor monitor) {
-//                             monitor.beginTask(
-//                                             "Exporting database. This will take some time.", 100);
-//                             monitor.worked(10);
-//
-//                         /** see ticket # 4456 and */
-////                           display.asyncExec(new Runnable() {
-////
-////                                   @Override
-////                                   public void run() {
-////
-////                                       // terminate any open transactions
-////                                           IConversationEnabled activePart = (IConversationEnabled) StoreUtil
-////                                                           .getActivePage().getActivePart();
-////                                           activePart.getConversationHolder().commit(false);
-////                                   }
-////                           });
-//
-////                           monitor.worked(10);
-//
-//                             CdmDefaultExport<IExportConfigurator> exporter = new CdmDefaultExport<>();
-//                             configurator.setProgressMonitor(CdmProgressMonitorAdapter
-//                                             .CreateSubMonitor(monitor, 80));
-//                             exporter.setCdmAppController(applicationConfiguration);
-//                             monitor.worked(10);
-//
-//                             try {
-//                                     exporter.invoke(configurator);
-//                                     monitor.worked(60);
-//                             } catch (RuntimeException e) {
-//                                     MessagingUtils.messageDialog("Error exporting data", this,
-//                                                     "An error occurred while"
-//                                                                     + "exporting to destination '"
-//                                                                     + configurator.getDestinationNameString()
-//                                                                     + "'.\n"
-//                                                                     + "Please check error log for details.", e);
-//                             }
-//
-////                           display.asyncExec(()-> {
-////                                   Object activePart = EventUtility.getActivePart();
-////                                   if (activePart instanceof IConversationEnabled) {
-////                                           // terminate any open transactions
-////                                           IConversationEnabled conversationEnabled = (IConversationEnabled) activePart;
-////                                           // restarting transaction and committing it to
-////                                           // trigger
-////                                           // change listener
-////                                           // TODO verify correct behaviour
-////
-////                                           try{
-////                                                   conversationEnabled.getConversationHolder()
-////                                                           .startTransaction();
-////
-////                                                   conversationEnabled.getConversationHolder()
-////                                                           .commit();
-////                                           }catch(RuntimeException e){
-////                                                   MessagingUtils.messageDialog("Error starting conversation handling", this, "" +
-////                                                                   "Conversation Error: "+ e);
-////                                           }
-////                                   }
-////                           });
-//                             monitor.worked(10);
-//
-//                             return Status.OK_STATUS;
-//                     }
-//             };
-//
-//             return job;
-//     }
-
        public Job createIOServiceJob(final IExportConfigurator configurator, final File exportFile) {
            Assert.isNotNull(configurator, "Configuration may not be null");
 
@@ -338,7 +262,9 @@ public class ExportManager
                                      Writer out = new BufferedWriter(new OutputStreamWriter(
                                                        stream, "UTF8"));
                                      stream.write(fileData);
+                                     out.flush();
                                      stream.close();
+
                                  }
                                 }
                         }else{
@@ -373,16 +299,32 @@ public class ExportManager
             @Override
             public void run() {
                boolean isZip = false;
-               if (configurator instanceof CdmLightExportConfigurator){
-                       isZip = ((CdmLightExportConfigurator)configurator).isCreateZipFile();
+               String urlAddition = "";
+               if (configurator instanceof CdmLightExportConfigurator 
+                               || configurator instanceof ColDpExportConfigurator 
+                               || configurator instanceof WfoBackboneExportConfigurator){
+                       
+                       if (configurator instanceof CdmLightExportConfigurator) {
+                           isZip = ((CdmLightExportConfigurator)configurator).isCreateZipFile();
+                       }else if (configurator instanceof ColDpExportConfigurator){
+                           isZip = ((ColDpExportConfigurator)configurator).isCreateZipFile();
+                       }else if (configurator instanceof WfoBackboneExportConfigurator){
+                           isZip = ((WfoBackboneExportConfigurator)configurator).isCreateZipFile();
+                           if (isZip) {
+                               SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
+                            Calendar cal = Calendar.getInstance();
+                               urlAddition = File.separator + ((WfoBackboneExportConfigurator)configurator).getFamilyStr() + "_WFO_" + sdf.format(cal.getTime());
+                           }
+                       }
                 }
-                AbstractUtility.executeMoniteredExport(configurator.getUserFriendlyIOName() != null? configurator.getUserFriendlyIOName(): "Export",
+                AbstractUtility.executeMoniteredExport(
+                               configurator.getUserFriendlyIOName() != null? configurator.getUserFriendlyIOName(): "Export",
                         uuid,
                         1000,
                         true,
                         ExportManager.this,
                         null,
-                        urlString,
+                        urlString+urlAddition,
                         isZip);
             }
         });