Merge branch 'develop' into featureTreeEditor
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / io / ImportManager.java
index d73ab1ae25098fa993330b37cbba0db82817336c..b515f67232d162ba1a69d93c54ba6ab2ee74cf69 100644 (file)
-// $Id$
 /**
-* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
-* http://www.e-taxonomy.eu
-* 
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
+ * Copyright (C) 2007 EDIT
+ * European Distributed Institute of Taxonomy
+ * http://www.e-taxonomy.eu
+ *
+ * The contents of this file are subject to the Mozilla Public License Version 1.1
+ * See LICENSE.TXT at the top of this package for the full license terms.
+ */
 
 package eu.etaxonomy.taxeditor.io;
 
+import java.io.File;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+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;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.PlatformUI;
 
-import eu.etaxonomy.cdm.api.application.CdmApplicationController;
-import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator;
+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.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.abcd206.in.Abcd206ImportConfigurator;
+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;
 import eu.etaxonomy.cdm.io.tcsxml.in.TcsXmlImportConfigurator;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.CdmProgressMonitorAdapter;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.operation.IPostMoniteredOperationEnabled;
 import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
+import eu.etaxonomy.taxeditor.ui.dialog.ReportTextDialog;
 
 /**
- * <p>ImportHandler class.</p>
+ * <p>
+ * ImportHandler class.
+ * </p>
  *
  * @author n.hoffmann
  * @created Sep 11, 2009
  * @version 1.0
  */
-public class ImportManager extends AbstractIOManager<IImportConfigurator> {
+public class ImportManager extends AbstractIOManager<IImportConfigurator> implements IPostMoniteredOperationEnabled {
 
        /**
-        * @param applicationController
+        * @param applicationConfiguration
         */
-       private ImportManager(
-                       CdmApplicationController applicationController) {
-               super(applicationController);
+       private ImportManager(ICdmRepository applicationConfiguration) {
+               super(applicationConfiguration);
        }
-       
+
        /**
-        * <p>NewInstance</p>
+        * <p>
+        * NewInstance
+        * </p>
         *
-        * @param applicationController a {@link eu.etaxonomy.cdm.api.application.CdmApplicationController} object.
+        * @param applicationConfiguration
+        *            a
+        *            {@link eu.etaxonomy.cdm.api.application.CdmApplicationController}
+        *            object.
         * @return a {@link eu.etaxonomy.taxeditor.io.ImportManager} object.
         */
-       public static ImportManager NewInstance(CdmApplicationController applicationController){
-               return new ImportManager(applicationController);
+       public static ImportManager NewInstance(
+                       ICdmRepository applicationConfiguration) {
+               return new ImportManager(applicationConfiguration);
        }
-       
+
        /**
         * Use when importing data into the current application context
         *
-        * @param configurator a {@link eu.etaxonomy.cdm.io.common.IImportConfigurator} object.
+        * @param configurator
+        *            a {@link eu.etaxonomy.cdm.io.common.IImportConfigurator}
+        *            object.
         * @return a {@link org.eclipse.core.runtime.jobs.Job} object.
         */
-       protected Job createIOJob(final IImportConfigurator configurator){
+       @Override
+       protected Job createIOJob(final IImportConfigurator configurator) {
                Assert.isNotNull(configurator, "Configuration may not be null");
-               
+
                final Display display = Display.getDefault();
-               
-               Job job = new Job("Import: " + configurator.getClass().getSimpleName()){
-               
+
+               Job job = new Job("Import: " + configurator.getClass().getSimpleName()) {
+
                        @Override
                        protected IStatus run(IProgressMonitor monitor) {
                                monitor.beginTask("Importing data", 100);
-                               configurator.setProgressMonitor(CdmProgressMonitorAdapter.CreateSubMonitor(monitor, 70));
-                               
-                               monitor.worked(10);
-                               
+                               configurator.setProgressMonitor(CdmProgressMonitorAdapter
+                                               .CreateSubMonitor(monitor, 70));
+
+                               monitor.worked(5);
+
                                CdmDefaultImport<IImportConfigurator> importer = new CdmDefaultImport<IImportConfigurator>();
-                               importer.setCdmAppController(applicationController);
-                               monitor.worked(10);             
-                               
-                               try{
-                                       importer.invoke(configurator);
-                                       monitor.worked(60);
-                               }catch(RuntimeException e){
-                                       StoreUtil.errorDialog("Error importing data", this, "An error occured while" +
-                                                       "importing from source '" + configurator.getSourceNameString() + "'.\n" +
-                                                                       "Please check error log for details.", e);
+                               importer.setCdmAppController(applicationConfiguration);
+                               monitor.worked(5);
+                               ImportResult importResult = null;
+                               try {
+                                       importResult = importer.invoke(configurator);
+
+                                       monitor.worked(80);
+                               } catch (RuntimeException e) {
+                                       MessagingUtils.messageDialog(
+                                                       "Error importing data",
+                                                       this,
+                                                       "An error occured while"
+                                                                       + "importing from source '"
+                                                                       + configurator.getSourceNameString()
+                                                                       + "'.\n"
+                                                                       + "Please check error log for details.", e);
                                }
-                               
-                               monitor.worked(10);
+
+                               monitor.worked(5);
                                monitor.done();
-                               
+
+
+                               final StringBuilder reportText = new StringBuilder();
+                               if(importResult!=null){
+                                   List<byte[]> reports = importResult.getReports();
+                                   for (byte[] bs : reports) {
+                        reportText.append(new String(bs));
+                    }
+                               }
                                display.asyncExec(new Runnable() {
-                                       
+
                                        @Override
                                        public void run() {
+                        // display reports with possibility to save
+                        ReportTextDialog dialog = new ReportTextDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
+                        dialog.setTitle(configurator.getClass().getSimpleName()+" Report");
+                        dialog.setReportText(reportText.toString());
+                        dialog.open();
                                                CdmStore.getContextManager().notifyContextRefresh();
                                        }
                                });
-                               
+
                                return Status.OK_STATUS;
                        }
                };
-               
+
                return job;
-               
+
+       }
+
+       public Job createIOServiceJob(IImportConfigurator configurator, InputStream is, SOURCE_TYPE type) {
+
+           try {
+               return createIOServiceJob(configurator, IOUtils.toByteArray(is), type);
+           } catch (Exception e) {
+               MessagingUtils.errorDialog("Error importing input stream",
+                       this,
+                       e.getMessage(),
+                       TaxeditorStorePlugin.PLUGIN_ID,
+                       e,
+                       true);
+           }
+           return null;
+       }
+
+       public Job createIOServiceJob(IImportConfigurator configurator, File importFile, SOURCE_TYPE type) {
+           Path path = Paths.get(importFile.toURI());
+           try {
+               return createIOServiceJob(configurator, Files.readAllBytes(path), type);
+           } catch (Exception e) {
+               MessagingUtils.errorDialog("Error importing file",
+                       this,
+                       e.getMessage(),
+                       TaxeditorStorePlugin.PLUGIN_ID,
+                       e,
+                       true);
+           }
+           return null;
        }
 
-       private IImportConfigurator getConfigurator(TYPE type){
+    public Job createIOServiceJob(final IImportConfigurator configurator, final byte[] data, final SOURCE_TYPE type) {
+        Assert.isNotNull(configurator, "Configuration may not be null");
+        final Display display = Display.getDefault();
+        Job job = new Job("Import: " + configurator.getClass().getSimpleName()) {
+
+            @Override
+            protected IStatus run(IProgressMonitor monitor) {
+                monitor.beginTask("Importing data", IProgressMonitor.UNKNOWN);
+                IIOService ioService = CdmApplicationState.getIOService();
+
+                ImportResult result = ioService.importData(configurator, data, type);
+
+                monitor.done();
+
+                display.asyncExec(new Runnable() {
+
+                    @Override
+                    public void run() {
+                        CdmStore.getContextManager().notifyContextRefresh();
+                    }
+                });
+                showResult(configurator.getClass().getSimpleName(), display, result);
+                return Status.OK_STATUS;
+            }
+        };
+
+        return job;
+
+    }
+
+    public void runMoniteredOperation(IImportConfigurator configurator, InputStream is, SOURCE_TYPE type) {
+
+        try {
+            runMoniteredOperation(configurator, IOUtils.toByteArray(is), type);
+        } catch (Exception e) {
+            MessagingUtils.errorDialog("Error importing input stream",
+                    this,
+                    e.getMessage(),
+                    TaxeditorStorePlugin.PLUGIN_ID,
+                    e,
+                    true);
+        }
+
+    }
+
+    public void runMoniteredOperation(IImportConfigurator configurator, SOURCE_TYPE type) {
+        byte[] data = new byte[1];
+        try {
+            runMoniteredOperation(configurator, data, type);
+        } catch (Exception e) {
+            MessagingUtils.errorDialog("Error importing input stream",
+                    this,
+                    e.getMessage(),
+                    TaxeditorStorePlugin.PLUGIN_ID,
+                    e,
+                    true);
+        }
+
+    }
+
+    public void runMoniteredOperation(IImportConfigurator configurator, File importFile, SOURCE_TYPE type) {
+        Path path = Paths.get(importFile.toURI());
+        try {
+            runMoniteredOperation(configurator, Files.readAllBytes(path), type);
+
+        } catch (Exception e) {
+            MessagingUtils.errorDialog("Error importing input stream",
+                    this,
+                    e.getMessage(),
+                    TaxeditorStorePlugin.PLUGIN_ID,
+                    e,
+                    true);
+        }
+
+    }
+
+    public void runMoniteredOperation(final IImportConfigurator configurator, final byte[] data, final SOURCE_TYPE type) {
+        IIOService ioService = CdmApplicationState.getIOService();
+        final UUID uuid = ioService.monitImportData(configurator, data, type);
+        Display.getDefault().asyncExec(new Runnable() {
+            @Override
+            public void run() {
+                AbstractUtility.executeMoniteredOperation("Import: " + configurator.getClass().getSimpleName(),
+                        uuid,
+                        1000,
+                        false,
+                        ImportManager.this,
+                        null);
+            }
+        });
+
+    }
+
+       private IImportConfigurator getConfigurator(TYPE type) {
                Assert.isNotNull(type, "Type should not be null");
-               
-               switch(type){
-                       case BerlinModel:
-                               return BerlinModelImportConfigurator.NewInstance(null, null);   
-                       case Jaxb:
-                               return JaxbImportConfigurator.NewInstance(null, null);
-                       case Tcs:
-                               return TcsXmlImportConfigurator.NewInstance(null, null);
-                       case Endnote:
-                               return EndnoteImportConfigurator.NewInstance(null, null);
-                       case Excel_Taxa:
-                               return NormalExplicitImportConfigurator.NewInstance(null, null, null);
-                       case Abcd:
-                               return Abcd206ImportConfigurator.NewInstance(null, null);
-                       case Sdd:
-                               return SDDImportConfigurator.NewInstance(null, null);
-                       default:
-                               StoreUtil.notImplementedMessage(this);
-                               throw new IllegalArgumentException("Import not supported yet");
+
+               switch (type) {
+               case Jaxb:
+                       return JaxbImportConfigurator.NewInstance(null, null);
+               case Tcs:
+                       return TcsXmlImportConfigurator.NewInstance(null, null);
+               case Endnote:
+                       return EndnoteImportConfigurator.NewInstance(null, null);
+               case Excel_Taxa:
+                       return NormalExplicitImportConfigurator.NewInstance(null, null,
+                                       null, null);
+               case Abcd:
+                       return Abcd206ImportConfigurator.NewInstance(null, null);
+               case Sdd:
+                       return SDDImportConfigurator.NewInstance(null, null);
+               case SpecimenCdmExcel:
+                       return SpecimenCdmExcelImportConfigurator.NewInstance(null, null);
+               case SpecimenSearch:
+                   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");
                }
        }
-       
-       /**
-        * <p>BerlinModelConfigurator</p>
-        *
-        * @return a {@link eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator} object.
-        */
-       public final BerlinModelImportConfigurator BerlinModelConfigurator() { return (BerlinModelImportConfigurator) getConfigurator(TYPE.BerlinModel);        }
+
+
        /**
-        * <p>JaxbConfigurator</p>
+        * <p>
+        * JaxbConfigurator
+        * </p>
         *
         * @return a {@link eu.etaxonomy.cdm.io.jaxb.JaxbImportConfigurator} object.
         */
-       public final JaxbImportConfigurator JaxbConfigurator() { return (JaxbImportConfigurator) getConfigurator(TYPE.Jaxb);    }
+       public final JaxbImportConfigurator JaxbConfigurator() {
+               return (JaxbImportConfigurator) getConfigurator(TYPE.Jaxb);
+       }
+
        /**
-        * <p>TcsConfigurator</p>
+        * <p>
+        * TcsConfigurator
+        * </p>
         *
-        * @return a {@link eu.etaxonomy.cdm.io.tcsxml.in.TcsXmlImportConfigurator} object.
+        * @return a {@link eu.etaxonomy.cdm.io.tcsxml.in.TcsXmlImportConfigurator}
+        *         object.
         */
-       public final TcsXmlImportConfigurator TcsConfigurator() { return (TcsXmlImportConfigurator) getConfigurator(TYPE.Tcs);  }
+       public final TcsXmlImportConfigurator TcsConfigurator() {
+               return (TcsXmlImportConfigurator) getConfigurator(TYPE.Tcs);
+       }
+
        /**
-        * <p>EndnoteConfigurator</p>
+        * <p>
+        * EndnoteConfigurator
+        * </p>
         *
-        * @return a {@link eu.etaxonomy.cdm.io.reference.endnote.in.EndnoteImportConfigurator} object.
+        * @return a
+        *         {@link eu.etaxonomy.cdm.io.reference.endnote.in.EndnoteImportConfigurator}
+        *         object.
         */
-       public final EndnoteImportConfigurator EndnoteConfigurator() { return (EndnoteImportConfigurator) getConfigurator(TYPE.Endnote);   }
+       public final EndnoteImportConfigurator EndnoteConfigurator() {
+               return (EndnoteImportConfigurator) getConfigurator(TYPE.Endnote);
+       }
+
        /**
-        * <p>NormalExplicitConfigurator</p>
+        * <p>
+        * NormalExplicitConfigurator
+        * </p>
         *
-        * @return a {@link eu.etaxonomy.cdm.io.excel.taxa.NormalExplicitImportConfigurator} object.
+        * @return a
+        *         {@link eu.etaxonomy.cdm.io.excel.taxa.NormalExplicitImportConfigurator}
+        *         object.
         */
-       public final NormalExplicitImportConfigurator NormalExplicitConfigurator() { return (NormalExplicitImportConfigurator) getConfigurator(TYPE.Excel_Taxa); }
+       public final NormalExplicitImportConfigurator NormalExplicitConfigurator() {
+               return (NormalExplicitImportConfigurator) getConfigurator(TYPE.Excel_Taxa);
+       }
+
        /**
-        * <p>SddConfigurator</p>
+        * <p>
+        * SddConfigurator
+        * </p>
         *
-        * @return a {@link eu.etaxonomy.cdm.io.sdd.in.SDDImportConfigurator} object.
+        * @return a {@link eu.etaxonomy.cdm.io.sdd.in.SDDImportConfigurator}
+        *         object.
         */
-       public final SDDImportConfigurator SddConfigurator() { return (SDDImportConfigurator) getConfigurator(TYPE.Sdd); }
+       public final SDDImportConfigurator SddConfigurator() {
+               return (SDDImportConfigurator) getConfigurator(TYPE.Sdd);
+       }
+
        /**
-        * <p>AbcdConfigurator</p>
+        * <p>
+        * AbcdConfigurator
+        * </p>
         *
-        * @return a {@link eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator} object.
+        * @return a
+        *         {@link eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator}
+        *         object.
         */
-       public final Abcd206ImportConfigurator AbcdConfigurator() { return (Abcd206ImportConfigurator) getConfigurator(TYPE.Abcd); }
-       
-       
+       public final Abcd206ImportConfigurator AbcdConfigurator() {
+               return (Abcd206ImportConfigurator) getConfigurator(TYPE.Abcd);
+       }
+
+       public SpecimenCdmExcelImportConfigurator SpecimenCdmExcelImportConfigurator() {
+               return (SpecimenCdmExcelImportConfigurator) getConfigurator(TYPE.SpecimenCdmExcel);
+       }
+
+       public DwcaImportConfigurator DwcaImportConfigurator() {
+               return (DwcaImportConfigurator) getConfigurator(TYPE.Gbif);
+       }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void postOperation(IRemotingProgressMonitor monitor) {
+        Display.getDefault().asyncExec(new Runnable() {
+
+            @Override
+            public void run() {
+                CdmStore.getContextManager().notifyContextRefresh();
+            }
+        });
+
+    }
+
+       public Job createIOServiceJob(final GbifImportConfigurator<GbifImportState, InputStream> configurator) {
+                Assert.isNotNull(configurator, "Configuration may not be null");
+               final Display display = Display.getDefault();
+               Job job = new Job("Import: " + " Dwca") {
+
+                   @Override
+                   protected IStatus run(IProgressMonitor monitor) {
+                       monitor.beginTask("Importing data", IProgressMonitor.UNKNOWN);
+                       IIOService ioService = CdmApplicationState.getIOService();
+
+                       ImportResult result = ioService.importDataFromStream(configurator);
+                       monitor.done();
+
+//                     display.asyncExec(new Runnable() {
+//
+//                         @Override
+//                         public void run() {
+//                             CdmStore.getContextManager().notifyContextRefresh();
+//                         }
+//                     });
+                       showResult("Gbif Import", display, result);
+                       return Status.OK_STATUS;
+                   }
+               };
+
+               return job;
+
+       }
+
+       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") {
+
+                   @Override
+                   protected IStatus run(IProgressMonitor monitor) {
+                       monitor.beginTask("Importing data", IProgressMonitor.UNKNOWN);
+                       IIOService ioService = CdmApplicationState.getIOService();
+
+                       ImportResult result = ioService.importDataFromStream(configurator);
+                       monitor.done();
+
+                       display.asyncExec(new Runnable() {
+
+                           @Override
+                           public void run() {
+                               CdmStore.getContextManager().notifyContextRefresh();
+                           }
+                       });
+                       showResult("Abcd Import", display, result);
+                       return Status.OK_STATUS;
+                   }
+               };
+
+               return job;
+
+       }
+
+       public Job createIOServiceJob(
+                       final List<Abcd206ImportConfigurator> abcdConfigurators) {
+                Assert.isNotNull(abcdConfigurators, "Configuration may not be null");
+               final Display display = Display.getDefault();
+               Job job = new Job("Import: " + " Abcd") {
+
+                   @Override
+                   protected IStatus run(IProgressMonitor monitor) {
+                       monitor.beginTask("Importing data", IProgressMonitor.UNKNOWN);
+                       IIOService ioService = CdmApplicationState.getIOService();
+
+                       ImportResult result = ioService.importDataFromStream(abcdConfigurators);
+                       monitor.done();
+
+                       display.asyncExec(new Runnable() {
+
+                           @Override
+                           public void run() {
+                               CdmStore.getContextManager().notifyContextRefresh();
+                           }
+                       });
+                       showResult("Abcd Import", display, result);
+
+
+
+                       return Status.OK_STATUS;
+                   }
+               };
+
+               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);
+    }
+
+
+
+   
+
+
+
 }