- /**
- * <p>
- * createIOJob
- * </p>
- *
- * @param configurator
- * a {@link eu.etaxonomy.cdm.io.common.IExportConfigurator}
- * object.
- * @return a {@link org.eclipse.core.runtime.jobs.Job} object.
- */
- @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<IExportConfigurator>();
- 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 occured while"
- + "exporting to destination '"
- + configurator.getDestinationNameString()
- + "'.\n"
- + "Please check error log for details.", e);
- }
-
- display.asyncExec(new Runnable() {
-
- @Override
- public void run() {
- IWorkbenchPart activePart = StoreUtil.getActivePage()
- .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;
- }
-