1 package eu
.etaxonomy
.taxeditor
.view
.dataimport
.e4
;
4 import java
.time
.LocalDate
;
5 import java
.time
.format
.DateTimeFormatter
;
6 import java
.util
.ArrayList
;
7 import java
.util
.Collection
;
8 import java
.util
.Collections
;
9 import java
.util
.Comparator
;
10 import java
.util
.HashSet
;
11 import java
.util
.List
;
14 import org
.eclipse
.core
.runtime
.jobs
.Job
;
15 import org
.eclipse
.jface
.action
.Action
;
16 import org
.eclipse
.swt
.widgets
.Table
;
17 import org
.eclipse
.swt
.widgets
.TableItem
;
19 import eu
.etaxonomy
.cdm
.api
.conversation
.ConversationHolder
;
20 import eu
.etaxonomy
.cdm
.api
.service
.ITermService
;
21 import eu
.etaxonomy
.cdm
.ext
.occurrence
.OccurenceQuery
;
22 import eu
.etaxonomy
.cdm
.ext
.occurrence
.bioCase
.BioCaseResponse
;
23 import eu
.etaxonomy
.cdm
.ext
.occurrence
.gbif
.DataSetResponse
;
24 import eu
.etaxonomy
.cdm
.ext
.occurrence
.gbif
.GbifDataSetProtocol
;
25 import eu
.etaxonomy
.cdm
.ext
.occurrence
.gbif
.GbifResponse
;
26 import eu
.etaxonomy
.cdm
.io
.specimen
.abcd206
.in
.Abcd206ImportConfigurator
;
27 import eu
.etaxonomy
.cdm
.io
.specimen
.gbif
.in
.GbifImportConfigurator
;
28 import eu
.etaxonomy
.cdm
.model
.term
.DefinedTermBase
;
29 import eu
.etaxonomy
.taxeditor
.preference
.PreferencesUtil
;
30 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
31 import eu
.etaxonomy
.taxeditor
.view
.dataimport
.GbifResponseComparator
;
39 public class SaveImportedSpecimenActionE4
extends Action
{
41 private Comparator
<GbifResponse
> comparator
;
43 private DataImportViewE4
<?
> dataImportView
;
45 public SaveImportedSpecimenActionE4(DataImportViewE4
<?
> dataImportView
) {
47 this.dataImportView
= dataImportView
;
52 Table table
= dataImportView
.getTable();
53 Collection
<GbifResponse
> checkedResults
= new HashSet
<GbifResponse
>();
54 Collection
<BioCaseResponse
> checkedAbcdResults
= new HashSet
<BioCaseResponse
>();
56 Set
<String
[]> unitIdsGbif
= new HashSet
<String
[]>();
57 Set
<String
[]> unitIdsBioCase
= new HashSet
<String
[]>();
58 List
<GbifResponse
> biocaseResponses
= new ArrayList
<GbifResponse
>();
60 for(TableItem item
:table
.getItems()){
61 if(item
.getChecked()){
63 data
= item
.getData();
64 if(data
instanceof GbifResponse
){
65 checkedResults
.add((GbifResponse
)item
.getData());
67 if(data
instanceof BioCaseResponse
){
68 checkedAbcdResults
.add((BioCaseResponse
)data
);
73 for (GbifResponse response
:checkedResults
){
74 if (response
!= null){
75 tripleId
= response
.getTripleID();
77 if (response
.getDataSetProtocol()!=null && response
.getDataSetProtocol().equals(GbifDataSetProtocol
.BIOCASE
)){
78 biocaseResponses
.add(response
);
81 unitIdsGbif
.add(tripleId
);
87 Collections
.sort(biocaseResponses
, getComparator());
89 Abcd206ImportConfigurator configuratorAbcd
;
90 List
<Abcd206ImportConfigurator
> abcdConfigurators
= new ArrayList
<Abcd206ImportConfigurator
>();
91 DataSetResponse dataSetResponse
;
92 OccurenceQuery bioCaseOccurrenceQuery
= null;
93 URI dataSetUri
= null;
94 for (BioCaseResponse response
:checkedAbcdResults
){
96 if (!response
.getDataSetUri().equals(dataSetUri
)){
97 dataSetUri
= response
.getDataSetUri();
98 //configuratorAbcd = Abcd206ImportConfigurator.NewInstance(null, null);
99 configuratorAbcd
= PreferencesUtil
.getLastUsedAbcdImportConfigurator();
100 if (configuratorAbcd
!= null){
102 if (configuratorAbcd
.getNomenclaturalCode() == null){
103 configuratorAbcd
.setNomenclaturalCode(PreferencesUtil
.getPreferredNomenclaturalCode());
106 configuratorAbcd
= Abcd206ImportConfigurator
.NewInstance(null, null);
108 if (configuratorAbcd
.getNomenclaturalCode() == null){
109 configuratorAbcd
.setNomenclaturalCode(PreferencesUtil
.getPreferredNomenclaturalCode());
112 configuratorAbcd
.setSourceUri(dataSetUri
);
113 if (configuratorAbcd
.getSourceReference() == null && configuratorAbcd
.getSourceRefUuid() == null){
114 DateTimeFormatter dtf
= DateTimeFormatter
.ofPattern("yyyy/MM/dd");
115 LocalDate localDate
= LocalDate
.now();
117 String sourceRef
="Specimen Import " + localDate
.toString();
118 configuratorAbcd
.setSourceReferenceTitle(sourceRef
);
121 unitIdsBioCase
= new HashSet
<String
[]>();
122 bioCaseOccurrenceQuery
= new OccurenceQuery(unitIdsBioCase
);
123 configuratorAbcd
.setOccurenceQuery(bioCaseOccurrenceQuery
);
125 // if (dataImportView.getClassification() != null){
126 // configuratorAbcd.setClassificationUuid(dataImportView.getClassification().getUuid());
128 // if (dataImportView.getReferenceString() != null){
129 // configuratorAbcd.setSourceReferenceTitle(dataImportView.getReferenceString());
131 abcdConfigurators
.add(configuratorAbcd
);
135 tripleId
= response
.getTripleID();
136 unitIdsBioCase
.add(tripleId
);
141 // if (!unitIdsBioCase.isEmpty()){
142 // configuratorAbcd = Abcd206ImportConfigurator.NewInstance(dataSetUri, null, false);
143 // configuratorAbcd.addMediaAsMediaSpecimen(true);
144 // configuratorAbcd.setIgnoreAuthorship(true);
145 // configuratorAbcd.setMoveNewTaxaToDefaultClassification(false);
146 // if (configuratorAbcd != null){
147 // abcdConfigurators.add(configuratorAbcd);
149 //// unitIdsBioCase = new HashSet<String[]>();
150 // bioCaseOccurrenceQuery = new OccurenceQuery(unitIdsBioCase);
151 // configuratorAbcd.setOccurenceQuery(bioCaseOccurrenceQuery);
152 // configuratorAbcd.setGetSiblings(true);
153 // if (dataImportView.getClassification() != null){
154 // configuratorAbcd.setClassificationUuid(dataImportView.getClassification().getUuid());
158 // for (GbifResponse response: biocaseResponses){
160 // dataSetResponse = new GbifQueryServiceWrapper().queryOriginalDataSet(response);
161 // dataSetUri = dataSetResponse.getEndpoint();
162 // } catch (ClientProtocolException e) {
163 // // TODO Auto-generated catch block
164 // e.printStackTrace();
165 // } catch (IOException e) {
166 // // TODO Auto-generated catch block
167 // e.printStackTrace();
169 // if (!response.getDataSetUri().equals(dataSetUri)){
170 // configuratorAbcd = Abcd206ImportConfigurator.NewInstance(dataSetUri, null, false);
171 // configuratorAbcd.addMediaAsMediaSpecimen(true);
172 // configuratorAbcd.setIgnoreAuthorship(true);
173 // configuratorAbcd.setMoveNewTaxaToDefaultClassification(false);
174 // if (configuratorAbcd != null){
175 // abcdConfigurators.add(configuratorAbcd);
177 // unitIdsBioCase = new HashSet<String[]>();
178 // bioCaseOccurrenceQuery = new OccurenceQuery(unitIdsBioCase);
179 // configuratorAbcd.setOccurenceQuery(bioCaseOccurrenceQuery);
180 // configuratorAbcd.setGetSiblings(true);
181 // if (dataImportView.getClassification() != null){
182 // configuratorAbcd.setClassificationUuid(dataImportView.getClassification().getUuid());
186 // tripleId = response.getTripleID();
187 // unitIdsBioCase.add(tripleId);
191 // configurator.setQuery(query);
192 if (!checkedAbcdResults
.isEmpty()){
193 Job bioCaseJob
= CdmStore
.getImportManager().createIOServiceJob(abcdConfigurators
);
194 CdmStore
.getImportManager().run(bioCaseJob
);
197 if (!unitIdsGbif
.isEmpty()){
198 OccurenceQuery query
= new OccurenceQuery(unitIdsGbif
);
199 GbifImportConfigurator configurator
= GbifImportConfigurator
.newInstance(query
);
200 configurator
.setSourceReferenceTitle("Import Gbif data");
202 Job gbifJob
= CdmStore
.getImportManager().createIOServiceJob(configurator
);
203 CdmStore
.getImportManager().run(gbifJob
);
208 private void persistTerm(DefinedTermBase
<?
> term
, ITermService termService
, ConversationHolder conversation
){
210 //if the term does not exist in the DB save it
211 if(termService
.find(term
.getUuid())==null){
212 termService
.saveOrUpdate(term
);
218 public String
getText() {
222 private Comparator
<GbifResponse
> getComparator(){
223 if (comparator
== null){
224 comparator
= new GbifResponseComparator();