ref #10448: fix configuration creation in WFO classification export
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / io / e4 / out / wfo / WFOExportWizard.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9
10 package eu.etaxonomy.taxeditor.io.e4.out.wfo;
11
12 import java.io.File;
13 import java.util.ArrayList;
14 import java.util.Iterator;
15 import java.util.List;
16
17 import javax.inject.Inject;
18 import javax.inject.Named;
19
20 import org.apache.commons.lang.StringUtils;
21 import org.eclipse.e4.core.contexts.ContextInjectionFactory;
22 import org.eclipse.e4.core.contexts.IEclipseContext;
23 import org.eclipse.e4.core.di.annotations.Optional;
24 import org.eclipse.e4.ui.services.IServiceConstants;
25 import org.eclipse.jface.viewers.IStructuredSelection;
26 import org.eclipse.jface.viewers.TreeSelection;
27
28 import eu.etaxonomy.cdm.filter.TaxonNodeFilter;
29 import eu.etaxonomy.cdm.io.wfo.out.WfoExportConfigurator;
30 import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
31 import eu.etaxonomy.taxeditor.io.e4.in.GenericConfiguratorWizardPageE4;
32 import eu.etaxonomy.taxeditor.io.e4.out.AbstractExportWizard;
33 import eu.etaxonomy.taxeditor.io.wizard.ExportToFileDestinationWizardPage;
34 import eu.etaxonomy.taxeditor.store.CdmStore;
35
36 /**
37 * @author k.luther
38 * @since Jan 23, 2024
39 */
40 public class WFOExportWizard extends
41 AbstractExportWizard<WfoExportConfigurator> {
42
43 private WfoExportConfigurator configurator;
44 private ExportToFileDestinationWizardPage page;
45
46 @Inject
47 public WFOExportWizard(IEclipseContext context,
48 @Optional@Named(IServiceConstants.ACTIVE_SELECTION)IStructuredSelection selection) {
49 super(context, selection);
50 }
51
52 @Override
53 public void init() {
54 configurator = WfoExportConfigurator.NewInstance();
55 if (selection instanceof TreeSelection && !selection.isEmpty()){
56 Iterator<?> it = selection.iterator();
57
58 while(it.hasNext()){
59 Object obj = it.next();
60 if (obj instanceof TaxonNodeDto){
61 TaxonNodeDto node = (TaxonNodeDto) obj;
62 if (node.getParentUUID() == null){
63 //configurator = null;
64 }else{
65 if (configurator.getTaxonNodeFilter() == null){
66 configurator.setTaxonNodeFilter(TaxonNodeFilter.NewSubtreeInstance(node.getUuid()));
67 }else{
68 configurator.getTaxonNodeFilter().orSubtree(node.getUuid());
69 }
70
71 }
72 }
73 }
74 }
75 }
76
77 @Override
78 public WfoExportConfigurator getConfigurator() {
79 return configurator;
80 }
81
82 @Override
83 public boolean performFinish() {
84 String urlString = page.getFolderText() + File.separator
85 + page.getExportFileName();
86
87
88 if (StringUtils.isNotBlank(page.getFamilyString())) {
89 configurator.setFamilyStr(page.getFamilyString());
90 }
91 CdmStore.getExportManager().runMoniteredOperation(configurator, urlString);
92
93 return true;
94 }
95
96 @Override
97 public void addPages() {
98 if (configurator == null) {
99 //don't call the export on classifications
100 this.setWindowTitle("Please select a subtree for WFO export, not a classification");
101 }
102 page = ExportToFileDestinationWizardPage.WFO(configurator);
103 addPage(page);
104 pageConfiguration = ContextInjectionFactory.make(GenericConfiguratorWizardPageE4.class, context);
105 List<String> ignoreMethods = new ArrayList<>();
106 ignoreMethods.add("setDoFactualData");
107 pageConfiguration.initExport(getConfigurator(), ignoreMethods);
108 this.addPage(pageConfiguration);
109 }
110 @Override
111 public boolean canFinish() {
112 boolean canFinish = super.canFinish();
113 if (configurator.getTaxonNodeFilter().getSubtreeFilter().isEmpty()) {
114 return false;
115 }
116 return canFinish;
117 }
118 }