6293791d8c65720e2079c4c05883b3535b43aca2
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / io / e4 / out / cdmlight / CdmLightExportWizardE4.java
1 /**
2 * Copyright (C) 2017 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 package eu.etaxonomy.taxeditor.io.e4.out.cdmlight;
10
11 import java.io.File;
12 import java.text.SimpleDateFormat;
13 import java.util.Calendar;
14 import java.util.HashSet;
15 import java.util.List;
16 import java.util.UUID;
17
18 import javax.inject.Inject;
19 import javax.inject.Named;
20
21 import org.apache.commons.lang.StringUtils;
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 import org.eclipse.swt.widgets.Combo;
28
29 import eu.etaxonomy.cdm.ext.geo.CondensedDistributionRecipe;
30 import eu.etaxonomy.cdm.filter.TaxonNodeFilter;
31 import eu.etaxonomy.cdm.io.cdmLight.CdmLightExportConfigurator;
32 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
33 import eu.etaxonomy.cdm.model.taxon.Classification;
34 import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
35 import eu.etaxonomy.taxeditor.io.e4.out.AbstractExportWizardE4;
36 import eu.etaxonomy.taxeditor.io.wizard.ExportToFileDestinationWizardPage;
37 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
38 import eu.etaxonomy.taxeditor.store.CdmStore;
39
40 /**
41 * @author k.luther
42 * @date 21.03.2017
43 *
44 */
45 public class CdmLightExportWizardE4 extends
46 AbstractExportWizardE4<CdmLightExportConfigurator> {
47
48
49 private CdmLightExportConfigurator configurator;
50 private ExportToFileDestinationWizardPage page;
51 private MetaDataConfigurationWizardPage metaDataPage;
52 public static final String DATE_FORMAT_NOW = "yyyyMMddHHmm";
53 TaxonNodeDto selectedNode;
54
55 @Inject
56 public CdmLightExportWizardE4(IEclipseContext context,
57 @Optional@Named(IServiceConstants.ACTIVE_SELECTION)IStructuredSelection selection) {
58 super(context, selection);
59 }
60
61 @Override
62 public void init() {
63 configurator = new CdmLightExportConfigurator(null);
64 configurator.setCreateCondensedDistributionString(PreferencesUtil.getBooleanValue(PreferencePredicate.CdmLightExportCondensedDistributionString.getKey()));
65 if (configurator.isCreateCondensedDistributionString()){
66 String recipeString = PreferencesUtil.getStringValue(PreferencePredicate.CondensedDistributionRecipe.getKey());
67 if (StringUtils.isNotBlank(recipeString)){
68 configurator.setCondensedDistributionRecipe(CondensedDistributionRecipe.valueOf(recipeString));
69 }
70 }
71 if (selection instanceof TreeSelection && !selection.isEmpty() && selection.getFirstElement() instanceof TaxonNodeDto){
72 selectedNode = (TaxonNodeDto)selection.getFirstElement();
73
74 if (selectedNode.getParentUUID() == null){
75 configurator.setTaxonNodeFilter(TaxonNodeFilter.NewClassificationInstance(selectedNode.getClassificationUUID()));
76 }else{
77 configurator.setTaxonNodeFilter(TaxonNodeFilter.NewSubtreeInstance(selectedNode.getUuid()));
78 }
79
80 }
81 }
82
83
84 @Override
85 public CdmLightExportConfigurator getConfigurator() {
86 return configurator;
87 }
88
89
90 @Override
91 public boolean performFinish() {
92 String urlString = page.getFolderText() + File.separator ;
93 if (configurator.isCreateZipFile()){
94 SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
95 Calendar cal = Calendar.getInstance();
96
97 if (!configurator.getTaxonNodeFilter().getSubtreeFilter().isEmpty()){
98 urlString += selectedNode.getNameCache()+"_cdmLight_"+sdf.format(cal.getTime());
99 }else if (!configurator.getTaxonNodeFilter().getClassificationFilter().isEmpty()){
100 urlString += page.getSelectedClassification().getTitleCache()+"_cdmLight_"+sdf.format(cal.getTime());
101 page.getSelectedClassification();
102 }
103
104 }
105
106 //+ page.getExportFileName();
107
108 final Combo combo = page.getCombo();
109 if (metaDataPage != null){
110 metaDataPage.fillConfig();
111 configurator = metaDataPage.configurator;
112 }
113
114 final List<Classification> listClassifications = CdmStore.getCurrentApplicationConfiguration().getClassificationService().listClassifications(null, null, null, null);
115 if(combo != null){
116 int selectionIndex = combo.getSelectionIndex();
117 HashSet<UUID> set = new HashSet<UUID>();
118 if(selectionIndex == -1){
119 for(Classification c:listClassifications){
120 set.add(c.getUuid());
121 }
122 }else{
123 for(Classification c:listClassifications){
124 if(c.getTitleCache().equalsIgnoreCase(combo.getItem(selectionIndex))){
125 set.add(c.getUuid());
126
127 if (!page.getCheckUseSelectedTaxonNode()){
128 configurator.setTaxonNodeFilter(TaxonNodeFilter.NewClassificationInstance(c.getUuid()));
129 }
130 }
131 }
132
133
134 }
135 }
136 configurator.getTaxonNodeFilter().setIncludeUnpublished(page.isExportUnpublishedData());
137 CdmStore.getExportManager().runMoniteredOperation(configurator, urlString);
138 // create job
139 // Job job = CdmStore.getExportManager().createIOServiceJob(configurator, urlString);
140 // // configure the job
141 // job.setProperty(IProgressConstants.KEEP_PROPERTY, true);
142 // job.setUser(true);
143 // // schedule job
144 // job.schedule();
145 PreferencesUtil.setStringValue("exportFolder", page.getFolderText());
146 return true;
147 }
148
149 @Override
150 public void addPages() {
151 //standard page
152 page = ExportToFileDestinationWizardPage.OutputModel(configurator);
153
154 addPage(page);
155 super.addPages();
156 if (PreferencesUtil.showGfbioMetaData()){
157 metaDataPage = new MetaDataConfigurationWizardPage("Add Meta Data", configurator);
158 addPage(metaDataPage);
159 }
160
161 }
162
163 }