X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/e3bcf9949a000ee3d35875dc200d51cfb60fc70c..4b30e08bd7dda419269eb80d4eba302f25e32621:/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/ImportManager.java diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/ImportManager.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/ImportManager.java index 89249cddc..809e19efa 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/ImportManager.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/ImportManager.java @@ -15,6 +15,8 @@ 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.eclipse.core.runtime.Assert; @@ -23,12 +25,15 @@ 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.CdmApplicationState; import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration; +import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor; 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.ImportResult; import eu.etaxonomy.cdm.io.excel.taxa.NormalExplicitImportConfigurator; import eu.etaxonomy.cdm.io.jaxb.JaxbImportConfigurator; import eu.etaxonomy.cdm.io.reference.endnote.in.EndnoteImportConfigurator; @@ -37,10 +42,13 @@ 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.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.internal.TaxeditorStorePlugin; +import eu.etaxonomy.taxeditor.ui.dialog.ReportTextDialog; /** *

@@ -51,7 +59,7 @@ import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin; * @created Sep 11, 2009 * @version 1.0 */ -public class ImportManager extends AbstractIOManager { +public class ImportManager extends AbstractIOManager implements IPostMoniteredOperationEnabled { /** * @param applicationConfiguration @@ -103,9 +111,10 @@ public class ImportManager extends AbstractIOManager { CdmDefaultImport importer = new CdmDefaultImport(); importer.setCdmAppController(applicationConfiguration); monitor.worked(5); - + ImportResult importResult = null; try { - importer.invoke(configurator); + importResult = importer.invoke(configurator); + monitor.worked(80); } catch (RuntimeException e) { MessagingUtils.messageDialog( @@ -121,10 +130,23 @@ public class ImportManager extends AbstractIOManager { monitor.worked(5); monitor.done(); + + final StringBuilder reportText = new StringBuilder(); + if(importResult!=null){ + List 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(); } }); @@ -195,6 +217,68 @@ public class ImportManager extends AbstractIOManager { 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) { @@ -216,6 +300,8 @@ public class ImportManager extends AbstractIOManager { return SDDImportConfigurator.NewInstance(null, null); case SpecimenCdmExcel: return SpecimenCdmExcelImportConfigurator.NewInstance(null, null); + case SpecimenSearch: + return Abcd206ImportConfigurator.NewInstance(null, null); default: MessagingUtils.notImplementedMessage(this); throw new IllegalArgumentException("Import not supported yet"); @@ -301,5 +387,20 @@ public class ImportManager extends AbstractIOManager { return (SpecimenCdmExcelImportConfigurator) getConfigurator(TYPE.SpecimenCdmExcel); } + /** + * {@inheritDoc} + */ + @Override + public void postOperation(IRemotingProgressMonitor monitor) { + Display.getDefault().asyncExec(new Runnable() { + + @Override + public void run() { + CdmStore.getContextManager().notifyContextRefresh(); + } + }); + + } + }