1 package eu
.etaxonomy
.taxeditor
.view
.dataimport
;
3 import java
.io
.IOException
;
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
;
12 import java
.util
.UUID
;
14 import org
.apache
.http
.client
.ClientProtocolException
;
15 import org
.apache
.log4j
.Logger
;
16 import org
.eclipse
.core
.runtime
.jobs
.Job
;
17 import org
.eclipse
.jface
.action
.Action
;
18 import org
.eclipse
.jface
.text
.source
.Annotation
;
19 import org
.eclipse
.swt
.widgets
.Event
;
20 import org
.eclipse
.swt
.widgets
.Table
;
21 import org
.eclipse
.swt
.widgets
.TableItem
;
22 import org
.eclipse
.ui
.IWorkbenchPart
;
23 import org
.eclipse
.ui
.IWorkbenchWindow
;
24 import org
.eclipse
.ui
.PlatformUI
;
26 import eu
.etaxonomy
.cdm
.api
.conversation
.ConversationHolder
;
27 import eu
.etaxonomy
.cdm
.api
.service
.IClassificationService
;
28 import eu
.etaxonomy
.cdm
.api
.service
.IOccurrenceService
;
29 import eu
.etaxonomy
.cdm
.api
.service
.ITermService
;
30 import eu
.etaxonomy
.cdm
.ext
.occurrence
.OccurenceQuery
;
31 import eu
.etaxonomy
.cdm
.ext
.occurrence
.gbif
.DataSetResponse
;
32 import eu
.etaxonomy
.cdm
.ext
.occurrence
.gbif
.GbifDataSetProtocol
;
33 import eu
.etaxonomy
.cdm
.ext
.occurrence
.gbif
.GbifQueryServiceWrapper
;
34 import eu
.etaxonomy
.cdm
.ext
.occurrence
.gbif
.GbifResponse
;
35 import eu
.etaxonomy
.cdm
.io
.specimen
.abcd206
.in
.Abcd206ImportConfigurator
;
36 import eu
.etaxonomy
.cdm
.io
.specimen
.gbif
.in
.*;
37 import eu
.etaxonomy
.cdm
.model
.common
.DefinedTermBase
;
38 import eu
.etaxonomy
.cdm
.model
.common
.ICdmBase
;
39 import eu
.etaxonomy
.cdm
.model
.name
.TaxonNameBase
;
40 import eu
.etaxonomy
.cdm
.model
.occurrence
.SpecimenOrObservationBase
;
41 import eu
.etaxonomy
.cdm
.model
.taxon
.Classification
;
42 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
43 import eu
.etaxonomy
.taxeditor
.ui
.dialog
.selection
.SelectionDialogFactory
;
45 public class SaveImportedSpecimenAction
extends Action
{
47 private final Logger logger
= Logger
.getLogger(SaveImportedSpecimenAction
.class);
49 private Comparator
<GbifResponse
> comparator
;
52 * @see org.eclipse.jface.action.Action#run()
56 final IWorkbenchWindow window
= PlatformUI
.getWorkbench().getActiveWorkbenchWindow();
57 IWorkbenchPart activePart
= window
.getActivePage().getActivePart();
58 if(activePart
instanceof DataImportView
<?
>){
59 DataImportView
<?
> dataImportView
= (DataImportView
<?
>)activePart
;
60 Table table
= dataImportView
.getTable();
61 Collection
<GbifResponse
> checkedResults
= new HashSet
<GbifResponse
>();
63 Set
<String
[]> unitIdsGbif
= new HashSet
<String
[]>();
64 Set
<String
[]> unitIdsBioCase
= new HashSet
<String
[]>();
65 List
<GbifResponse
> biocaseResponses
= new ArrayList
<GbifResponse
>();
67 for(TableItem item
:table
.getItems()){
68 if(item
.getChecked()){
70 data
= item
.getData();
71 if(data
instanceof GbifResponse
){
72 checkedResults
.add((GbifResponse
)item
.getData());
77 for (GbifResponse response
:checkedResults
){
78 if (response
!= null){
79 tripleId
= response
.getTripleID();
81 if (response
.getDataSetProtocol().equals(GbifDataSetProtocol
.BIOCASE
)){
82 biocaseResponses
.add(response
);
85 unitIdsGbif
.add(tripleId
);
91 Collections
.sort(biocaseResponses
, getComparator());
92 URI dataSetUri
= null;
93 Abcd206ImportConfigurator configuratorAbcd
;
95 List
<Abcd206ImportConfigurator
> abcdConfigurators
= new ArrayList
<Abcd206ImportConfigurator
>();
96 DataSetResponse dataSetResponse
;
97 OccurenceQuery bioCaseOccurrenceQuery
= null;
98 for (GbifResponse response
: biocaseResponses
){
100 dataSetResponse
= new GbifQueryServiceWrapper().queryOriginalDataSet(response
);
101 dataSetUri
= dataSetResponse
.getEndpoint();
102 } catch (ClientProtocolException e
) {
103 // TODO Auto-generated catch block
105 } catch (IOException e
) {
106 // TODO Auto-generated catch block
109 if (!response
.getDataSetUri().equals(dataSetUri
)){
110 configuratorAbcd
= Abcd206ImportConfigurator
.NewInstance(dataSetUri
, null, false);
111 configuratorAbcd
.addMediaAsMediaSpecimen(true);
112 if (configuratorAbcd
!= null){
113 abcdConfigurators
.add(configuratorAbcd
);
115 unitIdsBioCase
= new HashSet
<String
[]>();
116 bioCaseOccurrenceQuery
= new OccurenceQuery(unitIdsBioCase
);
117 configuratorAbcd
.setOccurenceQuery(bioCaseOccurrenceQuery
);
118 if (dataImportView
.getClassification() != null){
119 configuratorAbcd
.setClassificationUuid(dataImportView
.getClassification().getUuid());
123 tripleId
= response
.getTripleID();
124 unitIdsBioCase
.add(tripleId
);
127 OccurenceQuery query
= new OccurenceQuery(unitIdsGbif
);
128 GbifImportConfigurator configurator
= GbifImportConfigurator
.newInstance(query
);
129 configurator
.setSourceReferenceTitle("Import Gbif data");
133 // configurator.setQuery(query);
135 Job bioCaseJob
= CdmStore
.getImportManager().createIOServiceJob(abcdConfigurators
);
136 CdmStore
.getImportManager().run(bioCaseJob
);
138 Job gbifJob
= CdmStore
.getImportManager().createIOServiceJob(configurator
);
139 CdmStore
.getImportManager().run(gbifJob
);
147 private void persistTerm(DefinedTermBase
<?
> term
, ITermService termService
, ConversationHolder conversation
){
149 //if the term does not exist in the DB save it
150 if(termService
.find(term
.getUuid())==null){
151 termService
.saveOrUpdate(term
);
157 * @see org.eclipse.jface.action.Action#getText()
160 public String
getText() {
164 private Comparator
<GbifResponse
> getComparator(){
165 if (comparator
== null){
166 comparator
= new GbifResponseComparator();