package eu.etaxonomy.taxeditor.io;
+import java.lang.reflect.InvocationTargetException;
+
import org.apache.log4j.Logger;
import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.operation.IRunnableWithProgress;
import eu.etaxonomy.cdm.api.application.CdmApplicationController;
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
import eu.etaxonomy.cdm.io.common.CdmDefaultExport;
import eu.etaxonomy.cdm.io.common.IExportConfigurator;
import eu.etaxonomy.cdm.io.jaxb.JaxbExportConfigurator;
-import eu.etaxonomy.cdm.io.jaxb.JaxbImportConfigurator;
import eu.etaxonomy.taxeditor.store.StoreUtil;
/**
private static final Logger logger = Logger
.getLogger(ExportHandler.class);
+ /**
+ *
+ * @param applicationController
+ */
private ExportHandler(CdmApplicationController applicationController){
super(applicationController);
}
+ /**
+ *
+ * @param applicationController
+ * @return
+ */
public static ExportHandler NewInstance(CdmApplicationController applicationController){
return new ExportHandler(applicationController);
}
- public void doExport(final IExportConfigurator configurator){
+ /**
+ * Starts the export process
+ *
+ * @param configurator
+ */
+ public void run(final IExportConfigurator configurator){
+ ProgressMonitorDialog dialog = new ProgressMonitorDialog(StoreUtil.getShell());
+
+ try {
+ dialog.run(false, true, new IRunnableWithProgress() {
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.jface.operation.IRunnableWithProgress#run(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public void run(IProgressMonitor monitor)
+ throws InvocationTargetException, InterruptedException {
+ doExport(monitor, configurator);
+ }
+ });
+ }catch (InvocationTargetException e) {
+ logger.error(e);
+ throw new RuntimeException(e);
+ } catch (InterruptedException e) {
+ logger.error(e);
+ throw new RuntimeException(e);
+ }
+
+ }
+
+ /**
+ *
+ * @param monitor
+ * @param configurator
+ */
+ private void doExport(IProgressMonitor monitor, IExportConfigurator configurator){
+
Assert.isNotNull(configurator, "Configuration may not be null");
+ monitor.beginTask("Exporting database. This will take some time.", 100);
+ monitor.worked(10);
+
// terminate any open transactions
IConversationEnabled activePart = (IConversationEnabled) StoreUtil.getActivePage().getActivePart();
activePart.getConversationHolder().commit(false);
-
+ monitor.worked(10);
CdmDefaultExport<IExportConfigurator> exporter = new CdmDefaultExport<IExportConfigurator>();
-
+
exporter.setCdmAppController(applicationController);
-
+ monitor.worked(10);
try{
exporter.invoke(configurator);
+ monitor.worked(60);
}catch(RuntimeException e){
StoreUtil.errorDialog("Error exporting data", "An error occured while" +
"exporting to destination '" + configurator.getDestinationNameString() + "'.\n" +
// TODO verify correct behaviour
activePart.getConversationHolder().startTransaction();
activePart.getConversationHolder().commit();
+ monitor.worked(10);
}
/**
}
}
+ /**
+ *
+ * @return
+ */
public final JaxbExportConfigurator JaxbConfigurator() { return (JaxbExportConfigurator) getConfigurator(TYPE.Jaxb); }
package eu.etaxonomy.taxeditor.io;
+import java.lang.reflect.InvocationTargetException;
+
import org.apache.log4j.Logger;
import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.operation.IRunnableWithProgress;
import eu.etaxonomy.cdm.api.application.CdmApplicationController;
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator;
import eu.etaxonomy.cdm.io.common.CdmDefaultImport;
+import eu.etaxonomy.cdm.io.common.IExportConfigurator;
import eu.etaxonomy.cdm.io.common.IImportConfigurator;
import eu.etaxonomy.cdm.io.excel.taxa.NormalExplicitImportConfigurator;
import eu.etaxonomy.cdm.io.jaxb.JaxbImportConfigurator;
return new ImportHandler(applicationController);
}
+ /**
+ * Start the import process
+ *
+ * @param configurator
+ */
+ public void run(final IImportConfigurator configurator){
+ ProgressMonitorDialog dialog = new ProgressMonitorDialog(StoreUtil.getShell());
+
+ try {
+ dialog.run(false, true, new IRunnableWithProgress() {
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.jface.operation.IRunnableWithProgress#run(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public void run(IProgressMonitor monitor)
+ throws InvocationTargetException, InterruptedException {
+ doImport(monitor, configurator);
+ }
+ });
+ }catch (InvocationTargetException e) {
+ logger.error(e);
+ throw new RuntimeException(e);
+ } catch (InterruptedException e) {
+ logger.error(e);
+ throw new RuntimeException(e);
+ }
+
+ }
+
/**
* Use when importing data into the current application context
*
* @param configurator
* @return
*/
- public void doImport(final IImportConfigurator configurator){
+ private void doImport(IProgressMonitor monitor, IImportConfigurator configurator){
Assert.isNotNull(configurator, "Configuration may not be null");
+ monitor.beginTask("Importing data. This will take some time.", 100);
+ monitor.worked(10);
+
// terminate any open transactions
IConversationEnabled activePart = (IConversationEnabled) StoreUtil.getActivePage().getActivePart();
activePart.getConversationHolder().commit(false);
-
+ monitor.worked(10);
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", "An error occured while" +
"importing from source '" + configurator.getSourceNameString() + "'.\n" +
// TODO verify correct behaviour
activePart.getConversationHolder().startTransaction();
activePart.getConversationHolder().commit();
+ monitor.worked(10);
}
private IImportConfigurator getConfigurator(TYPE type){
/** @return a <code>TcsXmlImportConfigurator</code>*/
public final TcsXmlImportConfigurator TcsConfigurator() { return (TcsXmlImportConfigurator) getConfigurator(TYPE.Tcs); }
/** @return an <code>EndnoteImportConfigurator</code> */
- public final EndnoteImportConfigurator EndnoteImportConfigurator() { return (EndnoteImportConfigurator) getConfigurator(TYPE.Endnote); }
+ public final EndnoteImportConfigurator EndnoteConfigurator() { return (EndnoteImportConfigurator) getConfigurator(TYPE.Endnote); }
/** @return a <code>NormalExplicitImportConfigurator</code>*/
- public final NormalExplicitImportConfigurator NormalExplicitImportConfigurator() { return (NormalExplicitImportConfigurator) getConfigurator(TYPE.Excel_Taxa); }
+ public final NormalExplicitImportConfigurator NormalExplicitConfigurator() { return (NormalExplicitImportConfigurator) getConfigurator(TYPE.Excel_Taxa); }
}
configurator.setDestination(destination);
- CdmStore.getExportHandler().doExport(configurator);
+ CdmStore.getExportHandler().run(configurator);
return true;
}
configurator.setSource(source);
- CdmStore.getImportHandler().doImport(configurator);
+ CdmStore.getImportHandler().run(configurator);
return true;
}
configurator.setSource(file);
- CdmStore.getImportHandler().doImport(configurator);
+ CdmStore.getImportHandler().run(configurator);
return true;
}
* @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
*/
public void init(IWorkbench workbench, IStructuredSelection selection) {
- configurator = CdmStore.getImportHandler().EndnoteImportConfigurator();
+ configurator = CdmStore.getImportHandler().EndnoteConfigurator();
}
/* (non-Javadoc)
configurator.setSource(file);
configurator.setDbSchemaValidation(DbSchemaValidation.CREATE);
- CdmStore.getImportHandler().doImport(configurator);
+ CdmStore.getImportHandler().run(configurator);
return true;
}
* @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
*/
public void init(IWorkbench workbench, IStructuredSelection selection) {
- configurator = CdmStore.getImportHandler().NormalExplicitImportConfigurator();
+ configurator = CdmStore.getImportHandler().NormalExplicitConfigurator();
}
/* (non-Javadoc)
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
*/
public void createControl(Composite parent) {
+// ScrolledComposite scrolledComposite = new ScrolledComposite(parent, SWT.H_SCROLL);
+// scrolledComposite.setLayout(new GridLayout());
+
+ // TODO wrap this composite in a scrolled composite
Composite composite = new Composite(parent, SWT.NULL);
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 2;
composite.setLayout(gridLayout);
+
List<Method> methods = getConfiguratorsBooleanSetMethods(configurator);
for(Method method : methods){
createCheckbox(composite, method, configurator);
}
- setControl(composite);
+// scrolledComposite.setContent(composite);
+
+ setControl(parent);
}
private void createCheckbox(Composite parent, Method method, final IIoConfigurator configurator){
configurator.setDestination(urlString);
- CdmStore.getExportHandler().doExport(configurator);
+ CdmStore.getExportHandler().run(configurator);
return true;
}
import org.apache.log4j.Logger;
import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.ui.IImportWizard;
import org.eclipse.ui.IWorkbench;
+import eu.etaxonomy.cdm.database.DbSchemaValidation;
+import eu.etaxonomy.cdm.io.jaxb.JaxbImportConfigurator;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
/**
* @author n.hoffmann
* @created 15.06.2009
* @version 1.0
*/
-public class JaxbImportWizard extends Wizard implements IImportWizard {
+public class JaxbImportWizard extends AbstractImportWizard<JaxbImportConfigurator> {
private static final Logger logger = Logger
.getLogger(JaxbImportWizard.class);
+ private JaxbImportConfigurator configurator;
+
+ private ImportFromFileDataSourceWizardPage dataSourcePage;
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.io.wizard.AbstractImportWizard#getConfigurator()
+ */
+ @Override
+ public JaxbImportConfigurator getConfigurator() {
+ return configurator;
+ }
+
/* (non-Javadoc)
* @see org.eclipse.jface.wizard.Wizard#performFinish()
*/
@Override
public boolean performFinish() {
- // TODO Auto-generated method stub
- return false;
+ String file = dataSourcePage.getFile();
+
+ // Imports are expecting a string that can be used to instantiate a URL instance
+ // TODO consolidate import and exports regarding what may be passed in as source
+ // will construct a url string for now
+
+ file = "file://" + file;
+
+ configurator.setSource(file);
+ configurator.setDbSchemaValidation(DbSchemaValidation.CREATE);
+
+ CdmStore.getImportHandler().run(configurator);
+
+ return true;
}
/* (non-Javadoc)
* @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
*/
public void init(IWorkbench workbench, IStructuredSelection selection) {
- // TODO Auto-generated method stub
+ configurator = CdmStore.getImportHandler().JaxbConfigurator();
+ }
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.io.wizard.AbstractImportWizard#addPages()
+ */
+ @Override
+ public void addPages() {
+ super.addPages();
+
+ dataSourcePage = new ImportFromFileDataSourceWizardPage("Choose File",
+ "Please choose an XML file in the cdm JAXB format.", new String[]{"*.xml"});
+ addPage(dataSourcePage);
}
}
configurator.setDestination(new File(urlString));
- CdmStore.getExportHandler().doExport(configurator);
+ CdmStore.getExportHandler().run(configurator);
return true;
}
configurator.setSource(file);
configurator.setDbSchemaValidation(DbSchemaValidation.CREATE);
- CdmStore.getImportHandler().doImport(configurator);
+ CdmStore.getImportHandler().run(configurator);
return true;
}