X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/c6476daa5094f992b235fd7c4d10c17b90dc0e8b..e62fc863269c21f4768909f104fb76c8a854a7de:/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/ExportToFileDestinationWizardPage.java diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/ExportToFileDestinationWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/ExportToFileDestinationWizardPage.java index e5c389f66..9d5783130 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/ExportToFileDestinationWizardPage.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/ExportToFileDestinationWizardPage.java @@ -1,22 +1,23 @@ -// $Id$ /** * 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 + * The content 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.wizard; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; -import java.util.Comparator; +import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.UUID; +import org.eclipse.jface.layout.GridLayoutFactory; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; @@ -27,377 +28,632 @@ import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.DirectoryDialog; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Text; +import eu.etaxonomy.cdm.api.application.CdmApplicationState; import eu.etaxonomy.cdm.api.service.IClassificationService; +import eu.etaxonomy.cdm.filter.LogicFilter; +import eu.etaxonomy.cdm.io.cdmLight.CdmLightExportConfigurator; +import eu.etaxonomy.cdm.io.coldp.ColDpExportConfigurator; +import eu.etaxonomy.cdm.io.common.ExportConfiguratorBase; +import eu.etaxonomy.cdm.io.csv.caryophyllales.out.CsvNameExportConfigurator; +import eu.etaxonomy.cdm.io.csv.redlist.demo.CsvDemoExportConfigurator; +import eu.etaxonomy.cdm.io.dwca.out.DwcaTaxExportConfigurator; +import eu.etaxonomy.cdm.io.jaxb.JaxbExportConfigurator; +import eu.etaxonomy.cdm.io.sdd.out.SDDExportConfigurator; +import eu.etaxonomy.cdm.io.tcsxml.out.TcsXmlExportConfigurator; +import eu.etaxonomy.cdm.io.wfo.out.WfoBackboneExportConfigurator; +import eu.etaxonomy.cdm.model.metadata.PreferencePredicate; +import eu.etaxonomy.cdm.model.name.Rank; import eu.etaxonomy.cdm.model.taxon.Classification; -import eu.etaxonomy.taxeditor.datasource.CdmDataSourceRepository; -import eu.etaxonomy.taxeditor.remoting.source.CdmRemoteSourceException; +import eu.etaxonomy.cdm.model.taxon.TaxonNode; +import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDtoByNameComparator; +import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDtoByRankAndNameComparator; +import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDtoNaturalComparator; +import eu.etaxonomy.taxeditor.preference.NavigatorOrderEnum; +import eu.etaxonomy.taxeditor.preference.PreferencesUtil; +import eu.etaxonomy.taxeditor.remoting.source.ICdmRemoteSource; import eu.etaxonomy.taxeditor.store.CdmStore; /** - *

* ExportToFileDestinationWizardPage class. - *

* * @author n.hoffmann * @created 15.06.2009 - * @version 1.0 */ public class ExportToFileDestinationWizardPage extends WizardPage implements SelectionListener { - /** Constant DATE_FORMAT_NOW="yyyyMMddHHmm" */ - public static final String DATE_FORMAT_NOW = "yyyyMMddHHmm"; + /** Constant DATE_FORMAT_NOW="yyyyMMddHHmm" */ + public static final String DATE_FORMAT_NOW = "yyyyMMddHHmm"; - /** Constant JAXB_EXPORT="JAXB_EXPORT" */ - public static final String JAXB_EXPORT = "JAXB_EXPORT"; + /** Constant JAXB_EXPORT="JAXB_EXPORT" */ + public static final String JAXB_EXPORT = "JAXB_EXPORT"; - /** Constant TCS_EXPORT="TCS_EXPORT" */ - public static final String TCS_EXPORT = "TCS_EXPORT"; + /** Constant TCS_EXPORT="TCS_EXPORT" */ + public static final String TCS_EXPORT = "TCS_EXPORT"; - /** Constant SDD_EXPORT="SDD_EXPORT" */ - public static final String SDD_EXPORT = "SDD_EXPORT"; + /** Constant SDD_EXPORT="SDD_EXPORT" */ + public static final String SDD_EXPORT = "SDD_EXPORT"; - public static final String DWCA_EXPORT = "DWCA_EXPORT"; + public static final String DWCA_EXPORT = "DWCA_EXPORT"; + public static final String WFO_BACKBONE_EXPORT = "WFO_BACKBONE_EXPORT"; + public static final String CDM_LIGHT_EXPORT = "CDM_LIGHT(CSV)"; + public static final String COL_DP_EXPORT = "COL DP"; + public static final String CSV_EXPORT = "CSV_EXPORT"; + public static final String CSV_NAME_EXPORT = "CSV_NAME_EXPORT"; + private static final String CSV_PRINT_EXPORT = "CSV_PRINT_EXPORT"; + private static final String EXPORT_FOLDER = "EXPORT_FOLDER"; + public static final String XML = "xml"; - public static final String CSV_EXPORT = "CSV_EXPORT"; - public static final String CSV_NAME_EXPORT = "CSV_NAME_EXPORT"; + public static final String CSV = "csv"; - public static final String XML = "xml"; + public static final String ZIP = "zip"; - public static final String CSV = "csv"; - - + private boolean csvExport = false; - public static final String ZIP = "zip"; + private boolean csvNameExport = false; - private static boolean csvExport = false; - - private static boolean csvNameExport = false; + private boolean csvPrintExport = false; - private static String CSV_PRINT_EXPORT ="CSV_PRINT_EXPORT"; + private boolean cdmLightExport = false; - private static boolean csvPrintExport = false; + private boolean colDPExport = false; + private boolean dwcaExport = false; + private boolean wfoBackboneExport = false; - private DirectoryDialog folderDialog; - private Text text_exportFileName; + private DirectoryDialog folderDialog; + private Text text_exportFileName; - private Text text_folder; + private Text text_folder; - private final String type; + private final String type; - private final String extension; + private final String extension; private Combo classificationSelectionCombo; - + private List classifications; - + private Classification selectedClassification; - /** - * @param pageName - * @param selection - */ - protected ExportToFileDestinationWizardPage(String pageName, String type, - String title, String description, String extension) { - super(pageName); - - this.type = type; - this.extension = extension; - this.setTitle(title); - this.setDescription(description); - } - - /** - *

- * Jaxb - *

- * - * @return a - * {@link eu.etaxonomy.taxeditor.io.wizard.ExportToFileDestinationWizardPage} - * object. - */ - public static ExportToFileDestinationWizardPage Jaxb() { - return new ExportToFileDestinationWizardPage( - JAXB_EXPORT, - "jaxb", - "JAXB Export", - "Exports the contents of the currently selected database into the cdm jaxb format.", - XML); - } - - /** - *

- * Tcs - *

- * - * @return a - * {@link eu.etaxonomy.taxeditor.io.wizard.ExportToFileDestinationWizardPage} - * object. - */ - public static ExportToFileDestinationWizardPage Tcs() { - return new ExportToFileDestinationWizardPage( - TCS_EXPORT, - "tcs", - "Tcs Export", - "Export the contents of the currently selected database into TCS format.", - XML); - } - - /** - *

- * Sdd - *

- * - * @return a - * {@link eu.etaxonomy.taxeditor.io.wizard.ExportToFileDestinationWizardPage} - * object. - */ - public static ExportToFileDestinationWizardPage Sdd() { - return new ExportToFileDestinationWizardPage( - SDD_EXPORT, - "sdd", - "Sdd Export", - "Export the contents of the currently selected database into SDD format.", - XML); - } - - /** - * @return - */ - public static ExportToFileDestinationWizardPage Dwca() { - return new ExportToFileDestinationWizardPage( - DWCA_EXPORT, - "dwca", - "DwC-Archive Export", - "Export the contents of the currently selected database into Darwin Core Archive format.", - ZIP); - } + private ExportConfiguratorBase configurator; + private Button checkUseSelectedTaxonNode; + + private Button checkUseSelectedClassification; + private Button checkUseAllClassification; + + private Button checkExportUnpublished; + private Button checkExportFactualData; + private Button checkExportUnpublishedFactualData; + + private Combo orderSelectionCombo; + + private Text text_familyString; + + protected ExportToFileDestinationWizardPage(String pageName, String type, String title, String description, + String extension, ExportConfiguratorBase configurator) { + super(pageName); + this.configurator = configurator; + this.type = type; + switch (type) { + case CSV_EXPORT: + csvExport = true; + break; + case CSV_NAME_EXPORT: + csvNameExport = true; + break; + case CDM_LIGHT_EXPORT: + cdmLightExport = true; + break; + case COL_DP_EXPORT: + colDPExport = true; + break; + case CSV_PRINT_EXPORT: + csvPrintExport = true; + break; + case DWCA_EXPORT: + dwcaExport = true; + break; + case WFO_BACKBONE_EXPORT: + wfoBackboneExport = true; + break; + default: + throw new RuntimeException("Export type not yet handeled: " + type); + } + this.extension = extension; + this.setTitle(title); + this.setDescription(description); + } + public static ExportToFileDestinationWizardPage Jaxb(JaxbExportConfigurator configurator) { + return new ExportToFileDestinationWizardPage(JAXB_EXPORT, "jaxb", "JAXB Export", + "Exports the content of the currently selected database into the cdm jaxb format.", XML, configurator); + } + public static ExportToFileDestinationWizardPage Tcs(TcsXmlExportConfigurator config) { + return new ExportToFileDestinationWizardPage(TCS_EXPORT, "tcs", "Tcs Export", + "Export the content of the currently selected database into TCS format.", XML, config); + } + + public static ExportToFileDestinationWizardPage Sdd(SDDExportConfigurator config) { + return new ExportToFileDestinationWizardPage(SDD_EXPORT, "sdd", "Sdd Export", + "Export the content of the currently selected database into SDD format.", XML, config); + } + + public static ExportToFileDestinationWizardPage Dwca(DwcaTaxExportConfigurator config) { + return new ExportToFileDestinationWizardPage(DWCA_EXPORT, DWCA_EXPORT, "DwC-Archive Export", + "Export the content of the currently selected database into Darwin Core Archive format.", ZIP, config); + } + public static ExportToFileDestinationWizardPage WFO(WfoBackboneExportConfigurator config) { + return new ExportToFileDestinationWizardPage(WFO_BACKBONE_EXPORT, WFO_BACKBONE_EXPORT, "WFO Backbone Export", + "Export the content of the currently selected database into WFO Backbone format." + , ZIP, config); + } + + public static ExportToFileDestinationWizardPage CdmLight(CdmLightExportConfigurator config) { + + return new ExportToFileDestinationWizardPage(CDM_LIGHT_EXPORT, CDM_LIGHT_EXPORT, "CDM Light Export (csv)", + "Export the content of the currently selected database into the CDM light (csv) format.", CSV, config); + } + + public static ExportToFileDestinationWizardPage ColDp(ColDpExportConfigurator config) { + + return new ExportToFileDestinationWizardPage(COL_DP_EXPORT, COL_DP_EXPORT, "Col DP Export (zip)", + "Export the content of the currently selected database into the Catalogue of Life Data Package (Col DP) format.", ZIP, config); + } + + public static ExportToFileDestinationWizardPage Csv(CsvDemoExportConfigurator config) { + + return new ExportToFileDestinationWizardPage(CSV_EXPORT, CSV_EXPORT, "CSV Export", + "Export the content of the currently selected database into Comma Separated Value format.", CSV, + config); + } + + public static ExportToFileDestinationWizardPage CsvNames(CsvNameExportConfigurator config) { + + return new ExportToFileDestinationWizardPage(CSV_NAME_EXPORT, CSV_NAME_EXPORT, "CSV Name Export", + "Export the names of the currently selected database into Semicolon Separated Value format.", CSV, + config); + } + + public static ExportToFileDestinationWizardPage CsvPrint(CsvNameExportConfigurator config) { + + return new ExportToFileDestinationWizardPage(CSV_PRINT_EXPORT, CSV_NAME_EXPORT, "CSV Print Export", + "Export the content of the currently selected database into Semicolon Separated Value format.", CSV, + config); + } + + /** {@inheritDoc} */ + @Override + public void createControl(Composite parent) { + + setPageComplete(false); + + Composite composite = new Composite(parent, SWT.NONE); + GridLayout gridLayout = new GridLayout(); + + gridLayout.numColumns = 2; + TaxonNode node = null; + + composite.setLayout(gridLayout); + if (cdmLightExport || dwcaExport || colDPExport) { + checkExportUnpublished = new Button(composite, SWT.CHECK); + checkExportUnpublished.setText("Export unpublished taxa"); + Label emptyLabel = new Label(composite, SWT.NONE); + checkExportFactualData = new Button(composite, SWT.CHECK); + checkExportFactualData.setText("Export factual data"); + checkExportFactualData.setSelection(true); + checkExportFactualData.addListener(SWT.Selection, e -> { + Button b = (Button) e.widget; + GridData data = (GridData) checkExportUnpublishedFactualData.getLayoutData(); + data.exclude = b.getSelection(); + checkExportUnpublishedFactualData.setEnabled(data.exclude); + }); + if (cdmLightExport || colDPExport) { + emptyLabel = new Label(composite, SWT.NONE); + + checkExportUnpublishedFactualData = new Button(composite, SWT.CHECK); + checkExportUnpublishedFactualData.setText("Export unpublished factual data"); + checkExportUnpublishedFactualData.setSelection(false); + GridData gridData = new GridData(); + gridData.horizontalIndent = 20; + checkExportUnpublishedFactualData.setLayoutData(gridData); + } + + @SuppressWarnings("unused") + Label nope = new Label(composite, SWT.NONE); + + Label separator = new Label(composite, SWT.HORIZONTAL | SWT.SEPARATOR); + GridData gridDataSep = new GridData(GridData.FILL_HORIZONTAL); + gridDataSep.horizontalSpan = 2; + separator.setLayoutData(gridDataSep); + } + if (classifications == null && !wfoBackboneExport) { + classifications = CdmStore.getService(IClassificationService.class).list(null, null, null, null, null); + Collections.sort(classifications, (o1, o2) -> { + if (o1.equals(o2)) { + return 0; + } + int result = o1.getTitleCache().compareTo(o2.getTitleCache()); + if (result == 0) { + return o1.getUuid().compareTo(o2.getUuid()); + } + return result; + }); + if (!configurator.getTaxonNodeFilter().getClassificationFilter().isEmpty()) { + selectedClassification = CdmStore.getService(IClassificationService.class) + .load(configurator.getTaxonNodeFilter().getClassificationFilter().get(0).getUuid()); + } else { + + selectedClassification = classifications.iterator().next(); + } + } + + if (csvExport || csvPrintExport || cdmLightExport || csvNameExport || dwcaExport || colDPExport || wfoBackboneExport) { + + // Label comboBoxLabel = new Label(composite, SWT.NONE); + // comboBoxLabel.setText("Classification"); + Composite selectNodeOrClassification = new Composite(composite, SWT.NONE); + GridLayout grid = new GridLayout(); + grid.numColumns = 1; + selectNodeOrClassification.setLayout(grid); + if ((cdmLightExport || dwcaExport || colDPExport || wfoBackboneExport) && !configurator.getTaxonNodeFilter().getSubtreeFilter().isEmpty()) { + if (!wfoBackboneExport) { + checkUseSelectedTaxonNode = new Button(selectNodeOrClassification, SWT.RADIO); + } + String taxonStr = ""; + int count = configurator.getTaxonNodeFilter().getSubtreeFilter().size(); + List selectedNodes = new ArrayList<>(); + for (LogicFilter filter : configurator.getTaxonNodeFilter().getSubtreeFilter()) { + node = CdmApplicationState.getCurrentAppConfig().getTaxonNodeService().load(filter.getUuid()); + selectedNodes.add(node); + count--; + if (node.hasTaxon()) { + taxonStr += node.getTaxon().getName().getTitleCache(); + if (count > 0) { + taxonStr += ", "; + } + } + } + if (!wfoBackboneExport) { + checkUseSelectedTaxonNode.setText("Export all selected subtree(s) (" + taxonStr + ")"); + checkUseSelectedTaxonNode.addListener(SWT.Selection, e -> { + Button b = (Button) e.widget; + GridData data = (GridData) classificationSelectionCombo.getLayoutData(); + data.exclude = b.getSelection(); + if (classificationSelectionCombo != null) { + classificationSelectionCombo.setEnabled(!data.exclude); + } + }); + checkUseSelectedTaxonNode.setSelection(true); + }else { + Composite wfoComp = new Composite(selectNodeOrClassification, SWT.NONE); + grid = new GridLayout(); + grid.numColumns = 2; + wfoComp.setLayout(grid); + + Label label = new Label(wfoComp, SWT.NONE); + label.setText("Export all selected subtree(s) (" + taxonStr + ")"); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + gridData.grabExcessHorizontalSpace = true; + label.setLayoutData(gridData); + + Label familyString = new Label(wfoComp, SWT.NONE); + familyString.setText("Family"); + text_familyString = new Text(wfoComp, SWT.BORDER); + text_familyString.setText(generateFamilyName(selectedNodes)); + text_familyString.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); + + } + }else if (wfoBackboneExport) { + + Label label = new Label(composite, SWT.NONE); + label.setText("WFO Backbone export is only available for subtrees, not for classifications"); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + gridData.grabExcessHorizontalSpace = true; + label.setLayoutData(gridData); + label.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_RED)); + } + + if (cdmLightExport || dwcaExport || colDPExport ) { + if (dwcaExport) { + checkUseAllClassification = new Button(selectNodeOrClassification, SWT.RADIO); + checkUseAllClassification.setText("Export all classifications"); + checkUseAllClassification.addListener(SWT.Selection, new Listener() { + @Override + public void handleEvent(Event e) { + Button b = (Button) e.widget; + GridData data = (GridData) classificationSelectionCombo.getLayoutData(); + data.exclude = b.getSelection(); + classificationSelectionCombo.setEnabled(!data.exclude); + + } + }); + } + checkUseSelectedClassification = new Button(selectNodeOrClassification, SWT.RADIO); + checkUseSelectedClassification.setText("Export selected classification"); + checkUseSelectedClassification.addListener(SWT.Selection, e -> { + Button b = (Button) e.widget; + GridData data = (GridData) classificationSelectionCombo.getLayoutData(); + data.exclude = b.getSelection(); + classificationSelectionCombo.setEnabled(data.exclude); + }); + } + + if (node != null && !wfoBackboneExport) { + selectedClassification = node.getClassification(); + } + if (!wfoBackboneExport) { + createClassificationSelectionCombo(selectNodeOrClassification); + } + if (cdmLightExport) { + Label separator = new Label(composite, SWT.HORIZONTAL | SWT.SEPARATOR); + GridData gridDataSep = new GridData(); + gridDataSep = new GridData(GridData.BEGINNING, GridData.CENTER, true, true); + gridDataSep.horizontalSpan = 2; + separator.setLayoutData(gridDataSep); + + Composite comp = new Composite(composite, SWT.NONE); + + GridData gridData = new GridData(); + gridData = new GridData(GridData.BEGINNING, GridData.CENTER, true, false); + gridData.horizontalSpan = 2; + comp.setLayoutData(gridData); + + Label label = new Label(comp, SWT.NONE); + label.setText("Sorting of taxa"); + + orderSelectionCombo = new Combo(comp, SWT.BORDER | SWT.READ_ONLY); + + GridLayoutFactory.fillDefaults().applyTo(comp); + for (NavigatorOrderEnum display : NavigatorOrderEnum.values()) { + orderSelectionCombo.add(display.getLabel()); + } + + int index = 0; + if (PreferencesUtil.getStringValue(PreferencePredicate.TaxonNodeOrder.getKey()) != null) { + NavigatorOrderEnum orderInNavigator = NavigatorOrderEnum + .valueOf(PreferencesUtil.getStringValue(PreferencePredicate.TaxonNodeOrder.getKey())); + + for (String itemLabel : orderSelectionCombo.getItems()) { + if (itemLabel.equalsIgnoreCase(orderInNavigator.getLabel())) { + orderSelectionCombo.select(index); + setComparatorToConfig(); + break; + } + index++; + } + } + + orderSelectionCombo.addSelectionListener(new SelectionListener() { + + @Override + public void widgetSelected(SelectionEvent e) { + setComparatorToConfig(); + } + + @Override + public void widgetDefaultSelected(SelectionEvent e) { + // TODO Auto-generated method stub + } + }); + } + + if (classificationSelectionCombo != null) { + if (checkUseSelectedTaxonNode != null) { + if (checkUseSelectedTaxonNode.getSelection()) { + classificationSelectionCombo.setEnabled(false); + } + } else { + classificationSelectionCombo.setEnabled(true); + classificationSelectionCombo.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1)); + } + } + Label separator = new Label(composite, SWT.HORIZONTAL | SWT.SEPARATOR); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + separator.setLayoutData(gridData); + + } + + Label folderLabel = new Label(composite, SWT.NONE); + folderLabel.setText("Select Folder for exported files"); + folderLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1)); + folderDialog = new DirectoryDialog(parent.getShell()); + String exportFolder = PreferencesUtil.getStringValue(EXPORT_FOLDER, true); + folderDialog.setFilterPath(exportFolder); + + text_folder = new Text(composite, SWT.BORDER); + text_folder.setEditable(false); + text_folder.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); + if (exportFolder != null) { + text_folder.setText(exportFolder); + setPageComplete(true); + } + + Button button = new Button(composite, SWT.PUSH); + button.setText("Browse..."); + + button.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + super.widgetSelected(e); + + String path = folderDialog.open(); + if (path != null) { // a folder was selected + text_folder.setText(path); + PreferencesUtil.setStringValue(EXPORT_FOLDER, path); + setPageComplete(true); + } + } + }); + if (!cdmLightExport) { + + Label fileLabel = new Label(composite, SWT.NONE); + fileLabel.setText("Filename"); + text_exportFileName = new Text(composite, SWT.BORDER); + text_exportFileName.setText(generateFilename()); + text_exportFileName.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); + } + + // make the composite the wizard pages control + setControl(composite); + } /** * @return */ - public static ExportToFileDestinationWizardPage Csv() { - csvExport = true; - return new ExportToFileDestinationWizardPage( - CSV_EXPORT, - "csv", - "CSV Export", - "Export the contents of the currently selected database into Comma Separated Value format.", - CSV); - } - - /** - * @return - */ - public static ExportToFileDestinationWizardPage CsvNames() { - csvNameExport = true; - return new ExportToFileDestinationWizardPage( - CSV_NAME_EXPORT, - "csvNames", - "CSV Name Export", - "Export the names of the currently selected database into Semicolon Separated Value format.", - CSV); - } - + private String generateFamilyName(List nodes) { + if (nodes.size() == 1){ + TaxonNode node = nodes.get(0); + if (node.getTaxon() != null) { + if(node.getTaxon().getName().getRank().getOrderIndex() >= Rank.FAMILY().getOrderIndex()) { + TaxonNode familyNode = node.getAncestorOfRank(Rank.FAMILY()); + if (familyNode != null && familyNode.getTaxon() != null) { + return familyNode.getTaxon().getName().getNameCache(); + } + + } + } + + } + return ""; + } + + protected void setComparatorToConfig() { + if (orderSelectionCombo.getText().equals(NavigatorOrderEnum.NaturalOrder.getLabel())) { + ((CdmLightExportConfigurator) configurator).setTaxonNodeComparator(new TaxonNodeDtoNaturalComparator()); + } else if (orderSelectionCombo.getText().equals(NavigatorOrderEnum.AlphabeticalOrder.getLabel())) { + ((CdmLightExportConfigurator) configurator).setTaxonNodeComparator(new TaxonNodeDtoByNameComparator()); + } else { + ((CdmLightExportConfigurator) configurator) + .setTaxonNodeComparator(new TaxonNodeDtoByRankAndNameComparator()); + } + } + + protected String generateFilename() { + StringBuffer buffer = new StringBuffer(); + + Calendar cal = Calendar.getInstance(); + SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW); + buffer.append(sdf.format(cal.getTime())); + + buffer.append("-"); + buffer.append(type + "_"); + + String source = ((ICdmRemoteSource) CdmStore.getActiveCdmSource()).toString(); + source = source.substring(source.indexOf("/") + 1); + buffer.append(source); + + buffer.append("."); + buffer.append(extension); + + return buffer.toString(); + } + + public String getExportFileName() { + return text_exportFileName.getText(); + } + /** - * @return + * @return the familyString */ - public static ExportToFileDestinationWizardPage CsvPrint() { - csvPrintExport = true; - return new ExportToFileDestinationWizardPage( - CSV_PRINT_EXPORT, - "csvPrint", - "CSV Print Export", - "Export the content of the currently selected database into Semicolon Separated Value format.", - CSV); - } - - /* - * (non-Javadoc) - * - * @see - * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets - * .Composite) - */ - /** {@inheritDoc} */ - @Override - public void createControl(Composite parent) { + public String getFamilyString() { + return text_familyString.getText(); + } + + public String getFolderText() { + return text_folder.getText(); + } - setPageComplete(false); + public Text getFolderComposite() { + return text_folder; + } - Composite composite = new Composite(parent, SWT.NONE); - GridLayout gridLayout = new GridLayout(); - gridLayout.numColumns = 3; - composite.setLayout(gridLayout); - if(classifications == null){ - classifications = CdmStore.getService(IClassificationService.class).list(null, null, null, null, null); - Collections.sort(classifications, new Comparator() { + public boolean isExportUnpublishedData() { + return checkExportUnpublished.getSelection(); + } - @Override - public int compare(Classification o1, Classification o2) { - return o1.getTitleCache().compareTo(o2.getTitleCache()); - } - }); - - selectedClassification = classifications.iterator().next(); - } - - - if(csvExport || csvPrintExport){ - Label comboBoxLabel = new Label(composite, SWT.NONE); - comboBoxLabel.setText("Classification"); - - createClassificationSelectionCombo(composite); - classificationSelectionCombo.setLayoutData(new GridData(SWT.FILL, SWT.FILL, - true, false, 2, 1)); - } - - - - - Label fileLabel = new Label(composite, SWT.NONE); - fileLabel.setText("File"); - - text_exportFileName = new Text(composite, SWT.BORDER); - text_exportFileName.setText(generateFilename()); - text_exportFileName.setLayoutData(new GridData(SWT.FILL, SWT.FILL, - true, false, 2, 1)); - - Label folderLabel = new Label(composite, SWT.NONE); - folderLabel.setText("Folder"); - - folderDialog = new DirectoryDialog(parent.getShell()); - - text_folder = new Text(composite, SWT.BORDER); - text_folder.setEditable(false); - text_folder.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, - false)); - - Button button = new Button(composite, SWT.PUSH); - button.setText("Browse..."); - - button.addSelectionListener(new SelectionAdapter() { - /* - * (non-Javadoc) - * - * @see - * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse - * .swt.events.SelectionEvent) - */ - @Override - public void widgetSelected(SelectionEvent e) { - super.widgetSelected(e); - String path = folderDialog.open(); - if (path != null) { // a folder was selected - text_folder.setText(path); - setPageComplete(true); - } - } - }); - - // make the composite the wizard pages control - setControl(composite); - } - - protected String generateFilename() { - StringBuffer buffer = new StringBuffer(); - - Calendar cal = Calendar.getInstance(); - SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW); - buffer.append(sdf.format(cal.getTime())); - - buffer.append("-"); - - buffer.append(type + "_export-"); - try { - buffer.append(CdmDataSourceRepository.getCurrentCdmSource()); - } catch (CdmRemoteSourceException e) { - buffer.append("Unknown"); - } - - buffer.append("."); - buffer.append(extension); - - return buffer.toString(); - } - - /** - *

- * getExportFileName - *

- * - * @return the exportFileName - */ - public String getExportFileName() { - return text_exportFileName.getText(); - } - - /** - *

- * getFolderText - *

- * - * @return the folderText - */ - public String getFolderText() { - return text_folder.getText(); - } - - private Control createClassificationSelectionCombo(Composite parent){ -// classifications = CdmStore.getTaxonTreeService().list(null, null, null, null, null); - - Composite classificationSelection = new Composite(parent, SWT.NULL); - classificationSelection.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false)); - - GridLayout layout = new GridLayout(); - classificationSelection.setLayout(layout); - - Label label = new Label(classificationSelection, SWT.NULL); - // TODO not working is not really true but leave it here to remind everyone that this is under construction - label.setText("Select Classification"); - classificationSelectionCombo = new Combo(classificationSelection, SWT.BORDER | SWT.READ_ONLY); - classificationSelectionCombo.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true)); - - for(Classification tree : classifications){ - classificationSelectionCombo.add(tree.getName().getText(), classifications.indexOf(tree)); - - } - - classificationSelectionCombo.select(classifications.indexOf(selectedClassification)); - - // TODO remember last selection - classificationSelectionCombo.addSelectionListener(this); - - - - return classificationSelection; - } - - public Combo getCombo(){ - return classificationSelectionCombo; - } - - @Override - public void widgetSelected(SelectionEvent e) { - selectedClassification = classifications.get(classificationSelectionCombo.getSelectionIndex()); - - } - - @Override - public void widgetDefaultSelected(SelectionEvent e) { - //not needed here - - } - - public UUID getSelectedClassificationUUID() { - - return selectedClassification.getUuid(); - } + public boolean isExportFactualData() { + return checkExportFactualData.getSelection(); + } + + public boolean isExportUnpublishedFactualData() { + return checkExportUnpublishedFactualData.getSelection(); + } + + private void createClassificationSelectionCombo(Composite parent) { + + GridData gridData = new GridData(); + gridData = new GridData(GridData.BEGINNING, GridData.CENTER, true, false); + gridData.horizontalIndent = 5; + + classificationSelectionCombo = new Combo(parent, SWT.BORDER | SWT.READ_ONLY); + classificationSelectionCombo.setLayoutData(gridData); + for (Classification tree : classifications) { + classificationSelectionCombo.add(tree.getTitleCache(), classifications.indexOf(tree)); + } + classificationSelectionCombo.select(classifications.indexOf(selectedClassification)); + + // TODO remember last selection + classificationSelectionCombo.addSelectionListener(this); + + } + + public Combo getCombo() { + return classificationSelectionCombo; + } + + @Override + public void widgetSelected(SelectionEvent e) { + selectedClassification = classifications.get(classificationSelectionCombo.getSelectionIndex()); + } + + public Classification getSelectedClassification() { + return selectedClassification; + } + + @Override + public void widgetDefaultSelected(SelectionEvent e) { + // not needed here + } + + public UUID getSelectedClassificationUUID() { + return selectedClassification.getUuid(); + } + + public boolean getCheckUseSelectedTaxonNode() { + if (checkUseSelectedTaxonNode == null) { + return false; + } + return checkUseSelectedTaxonNode.getSelection(); + } + + public boolean getCheckUseAllClassifications() { + if (checkUseAllClassification == null) { + return false; + } + return checkUseAllClassification.getSelection(); + } + + public Set getAllClassificationUuids() { + Set allClassificationUuids = new HashSet<>(); + for (Classification classification : this.classifications) { + allClassificationUuids.add(classification.getUuid()); + } + return allClassificationUuids; + } + + @Override + public boolean canFlipToNextPage() { + return getFolderText() != null && !(wfoBackboneExport && configurator.getTaxonNodeFilter().getSubtreeFilter().isEmpty()); + } }