From aef8731c260567fc03548f898a58604d24740f65 Mon Sep 17 00:00:00 2001 From: Patrick Plitzner Date: Fri, 26 Apr 2019 12:10:28 +0200 Subject: [PATCH] ref #8248 Implement OWL import wizard --- .../META-INF/MANIFEST.MF | 3 +- eu.etaxonomy.taxeditor.store/fragment.e4xmi | 3 + .../taxeditor/io/AbstractIOManager.java | 4 +- .../etaxonomy/taxeditor/io/ImportManager.java | 7 ++ .../io/e4/in/owl/OpenOwlImportWizard.java | 27 ++++++ .../owl/OwlImportConfiguratorWizardPage.java | 57 +++++++++++++ .../io/e4/in/owl/OwlImportWizard.java | 85 +++++++++++++++++++ 7 files changed, 183 insertions(+), 3 deletions(-) create mode 100644 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/e4/in/owl/OpenOwlImportWizard.java create mode 100644 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/e4/in/owl/OwlImportConfiguratorWizardPage.java create mode 100644 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/e4/in/owl/OwlImportWizard.java diff --git a/eu.etaxonomy.taxeditor.cdmlib/META-INF/MANIFEST.MF b/eu.etaxonomy.taxeditor.cdmlib/META-INF/MANIFEST.MF index 4323fed2c..5332b5890 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/META-INF/MANIFEST.MF +++ b/eu.etaxonomy.taxeditor.cdmlib/META-INF/MANIFEST.MF @@ -74,6 +74,7 @@ Export-Package: com.google.api, eu.etaxonomy.cdm.io.csv.caryophyllales.out, eu.etaxonomy.cdm.io.csv.redlist.demo, eu.etaxonomy.cdm.io.csv.redlist.out, + eu.etaxonomy.cdm.io.descriptive.owl.in, eu.etaxonomy.cdm.io.descriptive.owl.out, eu.etaxonomy.cdm.io.descriptive.word.out, eu.etaxonomy.cdm.io.distribution.excelupdate, @@ -117,7 +118,7 @@ Export-Package: com.google.api, eu.etaxonomy.cdm.model.reference, eu.etaxonomy.cdm.model.taxon, eu.etaxonomy.cdm.model.term, - eu.etaxonomy.cdm.model.term.init, + eu.etaxonomy.cdm.model.term.init, eu.etaxonomy.cdm.model.validation, eu.etaxonomy.cdm.model.view, eu.etaxonomy.cdm.model.view.context, diff --git a/eu.etaxonomy.taxeditor.store/fragment.e4xmi b/eu.etaxonomy.taxeditor.store/fragment.e4xmi index 1f4a5516d..51d473630 100644 --- a/eu.etaxonomy.taxeditor.store/fragment.e4xmi +++ b/eu.etaxonomy.taxeditor.store/fragment.e4xmi @@ -155,6 +155,7 @@ + @@ -194,6 +195,7 @@ + @@ -243,6 +245,7 @@ + diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/AbstractIOManager.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/AbstractIOManager.java index 6f5088af6..15ddbacb3 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/AbstractIOManager.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/AbstractIOManager.java @@ -39,7 +39,7 @@ public abstract class AbstractIOManager { protected ICdmRepository applicationConfiguration; public static enum TYPE { - Jaxb, Tcs, Excel_Taxa, Endnote, Sdd, Abcd, SpecimenCdmExcel, Excel_Name, SpecimenSearch, Gbif, Excel_Distribution, Ris + Jaxb, Tcs, Excel_Taxa, Endnote, Sdd, Abcd, SpecimenCdmExcel, Excel_Name, SpecimenSearch, Gbif, Excel_Distribution, Ris, OWL } /** @@ -89,7 +89,7 @@ public abstract class AbstractIOManager { * @return a {@link org.eclipse.core.runtime.jobs.Job} object. */ protected abstract Job createIOJob(CONFIGURATOR configurator); - + /** * @param configurator * @param display 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 5f8f0cd89..6ce4ef3ea 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 @@ -34,6 +34,7 @@ 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.descriptive.owl.in.OwlImportConfigurator; import eu.etaxonomy.cdm.io.distribution.excelupdate.ExcelDistributionUpdateConfigurator; import eu.etaxonomy.cdm.io.dwca.in.DwcaImportConfigurator; import eu.etaxonomy.cdm.io.excel.taxa.NormalExplicitImportConfigurator; @@ -314,6 +315,8 @@ public class ImportManager extends AbstractIOManager implem return DwcaImportConfigurator.NewInstance(null, null); case Excel_Distribution: return ExcelDistributionUpdateConfigurator.NewInstance(null, null, null); + case OWL: + return OwlImportConfigurator.NewInstance(null); default: MessagingUtils.notImplementedMessage(this); @@ -404,6 +407,10 @@ public class ImportManager extends AbstractIOManager implem return (DwcaImportConfigurator) getConfigurator(TYPE.Gbif); } + public final OwlImportConfigurator OwlImportConfigurator() { + return (OwlImportConfigurator) getConfigurator(TYPE.OWL); + } + /** * {@inheritDoc} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/e4/in/owl/OpenOwlImportWizard.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/e4/in/owl/OpenOwlImportWizard.java new file mode 100644 index 000000000..5d8592715 --- /dev/null +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/e4/in/owl/OpenOwlImportWizard.java @@ -0,0 +1,27 @@ +/** +* Copyright (C) 2017 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.e4.in.owl; + +import eu.etaxonomy.taxeditor.io.e4.in.AbstractImportWizardE4; +import eu.etaxonomy.taxeditor.io.e4.in.AbstractOpenImportWizard; + +/** + * + * @author pplitzner + * @since Apr 25, 2019 + * + */ +public class OpenOwlImportWizard extends AbstractOpenImportWizard { + + @Override + protected Class getImportWizardClass() { + return OwlImportWizard.class; + } + +} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/e4/in/owl/OwlImportConfiguratorWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/e4/in/owl/OwlImportConfiguratorWizardPage.java new file mode 100644 index 000000000..fc1ee08e1 --- /dev/null +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/e4/in/owl/OwlImportConfiguratorWizardPage.java @@ -0,0 +1,57 @@ +/** +* 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.e4.in.owl; + +import javax.inject.Inject; + +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; + +import eu.etaxonomy.cdm.io.descriptive.owl.in.OwlImportConfigurator; + +/** + * + * @author pplitzner + * @since Apr 25, 2019 + * + */ +public class OwlImportConfiguratorWizardPage extends WizardPage { + + public static final String PAGE_NAME = "OwlImportConfiguratorWizardPage"; + + private OwlImportConfigurator configurator; + + @Inject + public OwlImportConfiguratorWizardPage() { + super(PAGE_NAME); + setTitle("Configure import parameters"); + setDescription("Tooltips will explain parameters in more detail"); + } + + @Override + public void createControl(Composite parent) { + final Composite composite = new Composite(parent, SWT.NULL); + GridLayout gridLayout = new GridLayout(); + composite.setLayout(gridLayout); + + setControl(composite); + } + + public String createConfigString(){ + return configurator.toString(); + } + + public void setConfigurator(OwlImportConfigurator configurator) { + this.configurator = configurator; + } + +} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/e4/in/owl/OwlImportWizard.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/e4/in/owl/OwlImportWizard.java new file mode 100644 index 000000000..b8e8c5e2d --- /dev/null +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/e4/in/owl/OwlImportWizard.java @@ -0,0 +1,85 @@ +/** +* 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.e4.in.owl; + +import java.io.File; +import java.net.URI; + +import javax.inject.Inject; + +import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.e4.core.contexts.ContextInjectionFactory; +import org.eclipse.e4.core.contexts.IEclipseContext; +import org.eclipse.e4.ui.workbench.modeling.EPartService; + +import eu.etaxonomy.cdm.database.DbSchemaValidation; +import eu.etaxonomy.cdm.io.common.IImportConfigurator.SOURCE_TYPE; +import eu.etaxonomy.cdm.io.descriptive.owl.in.OwlImportConfigurator; +import eu.etaxonomy.taxeditor.io.e4.in.AbstractImportWizardE4; +import eu.etaxonomy.taxeditor.io.e4.in.ImportFromFileDataSourceWizardPage; +import eu.etaxonomy.taxeditor.store.CdmStore; + +/** + * + * @author pplitzner + * @since Apr 25, 2019 + * + */ +public class OwlImportWizard extends AbstractImportWizardE4 { + + private OwlImportConfigurator configurator; + private ImportFromFileDataSourceWizardPage dataSourcePage; + + @Inject + public OwlImportWizard(IEclipseContext context, EPartService partService) { + super(context, partService); + } + + @Override + public OwlImportConfigurator getConfigurator() { + return configurator; + } + + /** {@inheritDoc} */ + @Override + public boolean performFinish() { + URI source = dataSourcePage.getUri(); + configurator.setSource(source); + configurator.setDbSchemaValidation(DbSchemaValidation.CREATE); + Job job = CdmStore.getImportManager().createIOServiceJob(configurator, new File(source), SOURCE_TYPE.URI); + CdmStore.getImportManager().run(job); + + return true; + } + + /** {@inheritDoc} */ + @Override + public void init() { + configurator = CdmStore.getImportManager().OwlImportConfigurator(); + } + + @Override + protected void addConfiguratorPage() { +// OwlImportConfiguratorWizardPage configuratorWizardPage = ContextInjectionFactory.make(OwlImportConfiguratorWizardPage.class, context);//AbcdImportConfiguratorWizardPage.createPage(configurator); +// configuratorWizardPage.setConfigurator(configurator); +// addPage(configuratorWizardPage); + } + + /** {@inheritDoc} */ + @Override + public void addPages() { + dataSourcePage = ContextInjectionFactory.make(ImportFromFileDataSourceWizardPage.class, context); + dataSourcePage.setTitle("Choose File"); + dataSourcePage.setDescription("Please choose an OWL file to import an ontology as a term tree."); + dataSourcePage.setExtensions(new String[]{"*.owl"}); + + addPage(dataSourcePage); + } +} -- 2.34.1