Project

General

Profile

Download (8.99 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.taxeditor.view.dataimport.e4;
2

    
3
import java.time.LocalDate;
4
import java.time.format.DateTimeFormatter;
5
import java.util.ArrayList;
6
import java.util.Collection;
7
import java.util.Collections;
8
import java.util.Comparator;
9
import java.util.HashSet;
10
import java.util.List;
11
import java.util.Set;
12

    
13
import org.eclipse.core.runtime.jobs.Job;
14
import org.eclipse.jface.action.Action;
15
import org.eclipse.swt.widgets.Table;
16
import org.eclipse.swt.widgets.TableItem;
17

    
18
import eu.etaxonomy.cdm.common.URI;
19
import eu.etaxonomy.cdm.ext.occurrence.OccurenceQuery;
20
import eu.etaxonomy.cdm.ext.occurrence.bioCase.BioCaseResponse;
21
import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifDataSetProtocol;
22
import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifResponse;
23
import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator;
24
import eu.etaxonomy.cdm.io.specimen.gbif.in.GbifImportConfigurator;
25
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
26
import eu.etaxonomy.taxeditor.store.CdmStore;
27
import eu.etaxonomy.taxeditor.view.dataimport.GbifResponseComparator;
28

    
29
/**
30
 * @author pplitzner
31
 * @since Oct 4, 2017
32
 */
33
public class SaveImportedSpecimenAction extends Action {
34

    
35
    private Comparator<GbifResponse> comparator;
36

    
37
    private DataImportView<?> dataImportView;
38

    
39
    public SaveImportedSpecimenAction(DataImportView<?> dataImportView) {
40
        super();
41
        this.dataImportView = dataImportView;
42
    }
43

    
44
    @Override
45
    public void run() {
46
        Table table = dataImportView.getTable();
47
        Collection<GbifResponse> checkedResults = new HashSet<>();
48
        Collection<BioCaseResponse> checkedAbcdResults = new HashSet<>();
49
        Object data;
50
        Set<String[]> unitIdsGbif = new HashSet<>();
51
        Set<String[]> unitIdsBioCase = new HashSet<>();
52
        List<GbifResponse> biocaseResponses = new ArrayList<>();
53

    
54
        for(TableItem item:table.getItems()){
55
            if(item.getChecked()){
56
                //Save Specimen
57
                data = item.getData();
58
                if(data instanceof GbifResponse){
59
                    checkedResults.add((GbifResponse)item.getData());
60
                }
61
                if(data instanceof BioCaseResponse){
62
                    checkedAbcdResults.add((BioCaseResponse)data);
63
                }
64
            }
65
        }
66
        String[] tripleId ;
67
        for (GbifResponse response:checkedResults){
68
            if (response != null){
69
                tripleId = response.getTripleID();
70

    
71
                if (response.getDataSetProtocol()!=null && response.getDataSetProtocol().equals(GbifDataSetProtocol.BIOCASE)){
72
                    biocaseResponses.add(response);
73

    
74
                }else{
75
                    unitIdsGbif.add(tripleId);
76
                }
77
            }
78
        }
79
        Collections.sort(biocaseResponses, getComparator());
80

    
81
        Abcd206ImportConfigurator configuratorAbcd;
82
        List<Abcd206ImportConfigurator> abcdConfigurators = new ArrayList<>();
83
        OccurenceQuery bioCaseOccurrenceQuery = null;
84
        URI dataSetUri = null;
85
        for (BioCaseResponse response:checkedAbcdResults){
86

    
87
            if (!response.getDataSetUri().equals(dataSetUri)){
88
                dataSetUri = response.getDataSetUri();
89
                //configuratorAbcd = Abcd206ImportConfigurator.NewInstance(null, null);
90
                configuratorAbcd = PreferencesUtil.getLastUsedAbcdImportConfigurator();
91
                if (configuratorAbcd != null){
92

    
93
                    if (configuratorAbcd.getNomenclaturalCode() == null){
94
                        configuratorAbcd.setNomenclaturalCode(PreferencesUtil.getPreferredNomenclaturalCode());
95
                    }
96
                }else{
97
                    configuratorAbcd = Abcd206ImportConfigurator.NewInstance(null, null);
98

    
99
                    if (configuratorAbcd.getNomenclaturalCode() == null){
100
                        configuratorAbcd.setNomenclaturalCode(PreferencesUtil.getPreferredNomenclaturalCode());
101
                    }
102
                }
103
                configuratorAbcd.setSourceUri(dataSetUri);
104
                if (configuratorAbcd.getSourceReference() == null && configuratorAbcd.getSourceRefUuid() == null){
105
                    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd");
106
                    LocalDate localDate = LocalDate.now();
107

    
108
                    String sourceRef ="Specimen Import " + localDate.toString();
109
                    configuratorAbcd.setSourceReferenceTitle(sourceRef);
110
                }
111

    
112
                unitIdsBioCase = new HashSet<>();
113
                bioCaseOccurrenceQuery = new OccurenceQuery(unitIdsBioCase);
114
                configuratorAbcd.setOccurenceQuery(bioCaseOccurrenceQuery);
115

    
116
//                if (dataImportView.getClassification() != null){
117
//                    configuratorAbcd.setClassificationUuid(dataImportView.getClassification().getUuid());
118
//                }
119
//                if (dataImportView.getReferenceString() != null){
120
//                    configuratorAbcd.setSourceReferenceTitle(dataImportView.getReferenceString());
121
//                }
122
                abcdConfigurators.add(configuratorAbcd);
123

    
124

    
125
            }
126
            tripleId = response.getTripleID();
127
            unitIdsBioCase.add(tripleId);
128

    
129
        }
130

    
131

    
132
        //                if (!unitIdsBioCase.isEmpty()){
133
        //                    configuratorAbcd = Abcd206ImportConfigurator.NewInstance(dataSetUri, null, false);
134
        //                    configuratorAbcd.addMediaAsMediaSpecimen(true);
135
        //                    configuratorAbcd.setIgnoreAuthorship(true);
136
        //                    configuratorAbcd.setMoveNewTaxaToDefaultClassification(false);
137
        //                    if (configuratorAbcd != null){
138
        //                        abcdConfigurators.add(configuratorAbcd);
139
        //                    }
140
        ////                    unitIdsBioCase = new HashSet<String[]>();
141
        //                    bioCaseOccurrenceQuery = new OccurenceQuery(unitIdsBioCase);
142
        //                    configuratorAbcd.setOccurenceQuery(bioCaseOccurrenceQuery);
143
        //                    configuratorAbcd.setGetSiblings(true);
144
        //                    if (dataImportView.getClassification() != null){
145
        //                        configuratorAbcd.setClassificationUuid(dataImportView.getClassification().getUuid());
146
        //                    }
147
        //                }
148

    
149
        //                for (GbifResponse response: biocaseResponses){
150
        //                	try {
151
        //						dataSetResponse = new GbifQueryServiceWrapper().queryOriginalDataSet(response);
152
        //						dataSetUri = dataSetResponse.getEndpoint();
153
        //					} catch (ClientProtocolException e) {
154
        //						// TODO Auto-generated catch block
155
        //						e.printStackTrace();
156
        //					} catch (IOException e) {
157
        //						// TODO Auto-generated catch block
158
        //						e.printStackTrace();
159
        //					}
160
        //                	if (!response.getDataSetUri().equals(dataSetUri)){
161
        //                		configuratorAbcd = Abcd206ImportConfigurator.NewInstance(dataSetUri, null, false);
162
        //                		configuratorAbcd.addMediaAsMediaSpecimen(true);
163
        //                		configuratorAbcd.setIgnoreAuthorship(true);
164
        //                		configuratorAbcd.setMoveNewTaxaToDefaultClassification(false);
165
        //                		if (configuratorAbcd != null){
166
        //                			abcdConfigurators.add(configuratorAbcd);
167
        //                		}
168
        //                		unitIdsBioCase = new HashSet<String[]>();
169
        //                		bioCaseOccurrenceQuery = new OccurenceQuery(unitIdsBioCase);
170
        //                		configuratorAbcd.setOccurenceQuery(bioCaseOccurrenceQuery);
171
        //                		configuratorAbcd.setGetSiblings(true);
172
        //                		if (dataImportView.getClassification() != null){
173
        //                			configuratorAbcd.setClassificationUuid(dataImportView.getClassification().getUuid());
174
        //                		}
175
        //
176
        //                	}
177
        //                	tripleId = response.getTripleID();
178
        //                	unitIdsBioCase.add(tripleId);
179
        //                }
180

    
181

    
182
        //  configurator.setQuery(query);
183
        if (!checkedAbcdResults.isEmpty()){
184
            Job bioCaseJob = CdmStore.getImportManager().createIOServiceJob(abcdConfigurators);
185
            CdmStore.getImportManager().run(bioCaseJob);
186
        }
187

    
188
        if (!unitIdsGbif.isEmpty()){
189
            OccurenceQuery query = new OccurenceQuery(unitIdsGbif);
190
            GbifImportConfigurator configurator = GbifImportConfigurator.newInstance(query);
191
            configurator.setSourceReferenceTitle("Import Gbif data");
192

    
193
            Job gbifJob = CdmStore.getImportManager().createIOServiceJob(configurator);
194
            CdmStore.getImportManager().run(gbifJob);
195
        }
196
    }
197

    
198
    @Override
199
    public String getText() {
200
        return "Import";
201
    }
202

    
203
    private Comparator<GbifResponse> getComparator(){
204
        if (comparator == null){
205
            comparator = new GbifResponseComparator();
206
        }
207
        return comparator;
208
    }
209
}
(3-3/7)