Merge branch 'develop' into featureTreeEditor
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / io / ImportManager.java
index 539db22f7962b7dd3fe70ef4ff3da98d8cf12a78..b515f67232d162ba1a69d93c54ba6ab2ee74cf69 100644 (file)
@@ -1,4 +1,3 @@
-// $Id$
 /**
  * Copyright (C) 2007 EDIT
  * European Distributed Institute of Taxonomy
@@ -12,15 +11,14 @@ package eu.etaxonomy.taxeditor.io;
 
 import java.io.File;
 import java.io.InputStream;
-import java.net.URI;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.List;
-import java.util.Set;
 import java.util.UUID;
 
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
@@ -30,21 +28,23 @@ import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.PlatformUI;
 
 import eu.etaxonomy.cdm.api.application.CdmApplicationState;
-import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
+import eu.etaxonomy.cdm.api.application.ICdmRepository;
 import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor;
+import eu.etaxonomy.cdm.io.common.CacheUpdaterConfigurator;
 import eu.etaxonomy.cdm.io.common.CdmDefaultImport;
 import eu.etaxonomy.cdm.io.common.IImportConfigurator;
 import eu.etaxonomy.cdm.io.common.IImportConfigurator.SOURCE_TYPE;
+import eu.etaxonomy.cdm.io.common.ImportConfiguratorBase;
 import eu.etaxonomy.cdm.io.common.ImportResult;
+import eu.etaxonomy.cdm.io.common.SortIndexUpdaterConfigurator;
+import eu.etaxonomy.cdm.io.distribution.excelupdate.ExcelDistributionUpdateConfigurator;
 import eu.etaxonomy.cdm.io.dwca.in.DwcaImportConfigurator;
 import eu.etaxonomy.cdm.io.excel.taxa.NormalExplicitImportConfigurator;
 import eu.etaxonomy.cdm.io.jaxb.JaxbImportConfigurator;
 import eu.etaxonomy.cdm.io.reference.endnote.in.EndnoteImportConfigurator;
 import eu.etaxonomy.cdm.io.sdd.in.SDDImportConfigurator;
 import eu.etaxonomy.cdm.io.service.IIOService;
-import eu.etaxonomy.cdm.io.specimen.SpecimenImportConfiguratorBase;
 import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator;
-import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportState;
 import eu.etaxonomy.cdm.io.specimen.excel.in.SpecimenCdmExcelImportConfigurator;
 import eu.etaxonomy.cdm.io.specimen.gbif.in.GbifImportConfigurator;
 import eu.etaxonomy.cdm.io.specimen.gbif.in.GbifImportState;
@@ -71,7 +71,7 @@ public class ImportManager extends AbstractIOManager<IImportConfigurator> implem
        /**
         * @param applicationConfiguration
         */
-       private ImportManager(ICdmApplicationConfiguration applicationConfiguration) {
+       private ImportManager(ICdmRepository applicationConfiguration) {
                super(applicationConfiguration);
        }
 
@@ -87,7 +87,7 @@ public class ImportManager extends AbstractIOManager<IImportConfigurator> implem
         * @return a {@link eu.etaxonomy.taxeditor.io.ImportManager} object.
         */
        public static ImportManager NewInstance(
-                       ICdmApplicationConfiguration applicationConfiguration) {
+                       ICdmRepository applicationConfiguration) {
                return new ImportManager(applicationConfiguration);
        }
 
@@ -206,7 +206,7 @@ public class ImportManager extends AbstractIOManager<IImportConfigurator> implem
                 monitor.beginTask("Importing data", IProgressMonitor.UNKNOWN);
                 IIOService ioService = CdmApplicationState.getIOService();
 
-                ioService.importData(configurator, data, type);
+                ImportResult result = ioService.importData(configurator, data, type);
 
                 monitor.done();
 
@@ -217,7 +217,7 @@ public class ImportManager extends AbstractIOManager<IImportConfigurator> implem
                         CdmStore.getContextManager().notifyContextRefresh();
                     }
                 });
-
+                showResult(configurator.getClass().getSimpleName(), display, result);
                 return Status.OK_STATUS;
             }
         };
@@ -260,6 +260,7 @@ public class ImportManager extends AbstractIOManager<IImportConfigurator> implem
         Path path = Paths.get(importFile.toURI());
         try {
             runMoniteredOperation(configurator, Files.readAllBytes(path), type);
+
         } catch (Exception e) {
             MessagingUtils.errorDialog("Error importing input stream",
                     this,
@@ -311,6 +312,9 @@ public class ImportManager extends AbstractIOManager<IImportConfigurator> implem
                    return Abcd206ImportConfigurator.NewInstance(null, null);
                case Gbif:
                    return DwcaImportConfigurator.NewInstance(null, null);
+               case Excel_Distribution:
+            return ExcelDistributionUpdateConfigurator.NewInstance(null, null, null);
+
                default:
                        MessagingUtils.notImplementedMessage(this);
                        throw new IllegalArgumentException("Import not supported yet");
@@ -395,7 +399,7 @@ public class ImportManager extends AbstractIOManager<IImportConfigurator> implem
        public SpecimenCdmExcelImportConfigurator SpecimenCdmExcelImportConfigurator() {
                return (SpecimenCdmExcelImportConfigurator) getConfigurator(TYPE.SpecimenCdmExcel);
        }
-       
+
        public DwcaImportConfigurator DwcaImportConfigurator() {
                return (DwcaImportConfigurator) getConfigurator(TYPE.Gbif);
        }
@@ -429,14 +433,14 @@ public class ImportManager extends AbstractIOManager<IImportConfigurator> implem
                        ImportResult result = ioService.importDataFromStream(configurator);
                        monitor.done();
 
-                       display.asyncExec(new Runnable() {
-
-                           @Override
-                           public void run() {
-                               CdmStore.getContextManager().notifyContextRefresh();
-                           }
-                       });
-
+//                     display.asyncExec(new Runnable() {
+//
+//                         @Override
+//                         public void run() {
+//                             CdmStore.getContextManager().notifyContextRefresh();
+//                         }
+//                     });
+                       showResult("Gbif Import", display, result);
                        return Status.OK_STATUS;
                    }
                };
@@ -444,8 +448,8 @@ public class ImportManager extends AbstractIOManager<IImportConfigurator> implem
                return job;
 
        }
-       
-       public Job createIOServiceJob(final Abcd206ImportConfigurator<Abcd206ImportState, InputStream> configurator) {
+
+       public Job createIOServiceJob(final Abcd206ImportConfigurator configurator) {
                 Assert.isNotNull(configurator, "Configuration may not be null");
                final Display display = Display.getDefault();
                Job job = new Job("Import: " + " Dwca") {
@@ -465,7 +469,7 @@ public class ImportManager extends AbstractIOManager<IImportConfigurator> implem
                                CdmStore.getContextManager().notifyContextRefresh();
                            }
                        });
-
+                       showResult("Abcd Import", display, result);
                        return Status.OK_STATUS;
                    }
                };
@@ -478,7 +482,7 @@ public class ImportManager extends AbstractIOManager<IImportConfigurator> implem
                        final List<Abcd206ImportConfigurator> abcdConfigurators) {
                 Assert.isNotNull(abcdConfigurators, "Configuration may not be null");
                final Display display = Display.getDefault();
-               Job job = new Job("Import: " + " Dwca") {
+               Job job = new Job("Import: " + " Abcd") {
 
                    @Override
                    protected IStatus run(IProgressMonitor monitor) {
@@ -495,6 +499,9 @@ public class ImportManager extends AbstractIOManager<IImportConfigurator> implem
                                CdmStore.getContextManager().notifyContextRefresh();
                            }
                        });
+                       showResult("Abcd Import", display, result);
+
+
 
                        return Status.OK_STATUS;
                    }
@@ -503,7 +510,60 @@ public class ImportManager extends AbstractIOManager<IImportConfigurator> implem
                return job;
        }
 
-       
+    public Job createIOServiceJob(final ImportConfiguratorBase configurator) {
+        Assert.isNotNull(configurator, "Configuration may not be null");
+        final Display display = Display.getDefault();
+
+        Job job = new Job("Update: " + configurator.getClass().getSimpleName()) {
+
+            @Override
+            protected IStatus run(IProgressMonitor monitor) {
+                monitor.beginTask("Updating data", IProgressMonitor.UNKNOWN);
+                IIOService ioService = CdmApplicationState.getIOService();
+                ImportResult importResult = null;
+                if (configurator instanceof SortIndexUpdaterConfigurator){
+                    SortIndexUpdaterConfigurator config = (SortIndexUpdaterConfigurator)configurator;
+                    importResult =ioService.updateSortIndex(config);
+                } else if (configurator instanceof CacheUpdaterConfigurator){
+                    CacheUpdaterConfigurator config = (CacheUpdaterConfigurator) configurator;
+                    importResult = ioService.updateCaches(config);
+                } else if (configurator instanceof ExcelDistributionUpdateConfigurator){
+                    ExcelDistributionUpdateConfigurator config = (ExcelDistributionUpdateConfigurator) configurator;
+                    importResult =ioService.updateDistributionData(config);
+                }
+
+                monitor.done();
+//                display.asyncExec(new Runnable() {
+//
+//                    @Override
+//                    public void run() {
+//                        CdmStore.getContextManager().notifyContextRefresh();
+//                    }
+//                });
+                showResult(configurator.getClass().getSimpleName(), display, importResult);
+
+
+                return Status.OK_STATUS;
+            }
+
+
+        };
+
+        return job;
+
+    }
+
+    /**
+     * @return
+     */
+    public ExcelDistributionUpdateConfigurator ExcelDistributionUpdateConfigurator() {
+        return (ExcelDistributionUpdateConfigurator) getConfigurator(TYPE.Excel_Distribution);
+    }
+
+
+
+   
+
 
 
 }