X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.district.imports.ui%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fimports%2Fui%2FCSVImportWizard.java;h=6162314e21a91b3be6d4ba0e355482099f1d9085;hb=a13d8d4e5a029cc1cbee6ddf939e2946af40785c;hp=97fa990aed619334c5d080e04b74b0e4ec2fb830;hpb=31bcbe46c93a576cd6ade673a745ea9cb28672da;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.imports.ui/src/org/simantics/district/imports/ui/CSVImportWizard.java b/org.simantics.district.imports.ui/src/org/simantics/district/imports/ui/CSVImportWizard.java index 97fa990a..6162314e 100644 --- a/org.simantics.district.imports.ui/src/org/simantics/district/imports/ui/CSVImportWizard.java +++ b/org.simantics.district.imports.ui/src/org/simantics/district/imports/ui/CSVImportWizard.java @@ -1,38 +1,69 @@ -package org.simantics.district.imports.ui; - -import java.io.IOException; -import java.nio.file.Path; - -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.wizard.Wizard; -import org.eclipse.ui.IImportWizard; -import org.eclipse.ui.IWorkbench; -import org.simantics.district.imports.DistrictImportUtils; - -public class CSVImportWizard extends Wizard implements IImportWizard { - - private CSVImportModel model; - - public CSVImportWizard() { - setWindowTitle("Import CSV data"); - } - - - @Override - public void init(IWorkbench workbench, IStructuredSelection selection) { - model = new CSVImportModel(); - addPage(new CSVImportWizardPage(model)); - } - - @Override - public boolean performFinish() { - Path csvFile = model.getSource(); - try { - DistrictImportUtils.importCSVAsLayer(csvFile); - } catch (IOException e) { - e.printStackTrace(); - } - return false; - } - -} +package org.simantics.district.imports.ui; + +import java.lang.reflect.InvocationTargetException; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jface.operation.IRunnableWithProgress; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.ui.IImportWizard; +import org.eclipse.ui.IWorkbench; +import org.simantics.district.imports.CSVImportModel; +import org.simantics.district.imports.DistrictImportUtils; +import org.simantics.utils.ui.ExceptionUtils; + +public class CSVImportWizard extends Wizard implements IImportWizard { + + private CSVImportModel model; + + public CSVImportWizard() { + setWindowTitle("Import CSV data"); + setNeedsProgressMonitor(true); + } + + + @Override + public void init(IWorkbench workbench, IStructuredSelection selection) { + model = new CSVImportModel(); + addPage(new CSVImportWizardFirstPage(model)); + addPage(new CSVImportWizardPage(model)); + addPage(new ComponentMappingPage(model)); + } + + @Override + public boolean performFinish() { + try { + getContainer().run(true, true, new IRunnableWithProgress() { + + @Override + public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { + try { + monitor.beginTask("Importing CSV", 1); + + if (model.isVertexImport()) { + DistrictImportUtils.importVertices(model); + } else { + DistrictImportUtils.importEdges(model); + } + + } catch (Exception e) { + throw new InvocationTargetException(e); + } + } + }); + return true; + } catch (InvocationTargetException e) { + Throwable t = e.getTargetException(); + WizardPage cp = (WizardPage) getContainer().getCurrentPage(); + cp.setErrorMessage(t.getMessage()); + ExceptionUtils.logAndShowError(t); + return false; + } catch (InterruptedException e) { + ExceptionUtils.logAndShowError(e); + return false; + } + } + + +}