1 package eu
.etaxonomy
.taxeditor
.view
.dataimport
;
3 import java
.io
.IOException
;
4 import java
.util
.HashSet
;
7 import org
.apache
.http
.client
.ClientProtocolException
;
8 import org
.apache
.log4j
.Logger
;
9 import org
.eclipse
.core
.runtime
.IProgressMonitor
;
10 import org
.eclipse
.core
.runtime
.IStatus
;
11 import org
.eclipse
.core
.runtime
.Status
;
12 import org
.eclipse
.core
.runtime
.jobs
.Job
;
13 import org
.eclipse
.jface
.action
.ContributionItem
;
14 import org
.eclipse
.jface
.action
.IContributionItem
;
15 import org
.eclipse
.jface
.viewers
.ISelection
;
16 import org
.eclipse
.jface
.viewers
.StructuredSelection
;
17 import org
.eclipse
.swt
.SWT
;
18 import org
.eclipse
.swt
.widgets
.Event
;
19 import org
.eclipse
.swt
.widgets
.Listener
;
20 import org
.eclipse
.swt
.widgets
.Menu
;
21 import org
.eclipse
.swt
.widgets
.MenuItem
;
22 import org
.eclipse
.ui
.IEditorPart
;
23 import org
.eclipse
.ui
.IWorkbenchWindow
;
24 import org
.eclipse
.ui
.PlatformUI
;
25 import org
.eclipse
.ui
.actions
.CompoundContributionItem
;
27 import eu
.etaxonomy
.cdm
.api
.service
.IOccurrenceService
;
28 import eu
.etaxonomy
.cdm
.ext
.occurrence
.OccurenceQuery
;
29 import eu
.etaxonomy
.cdm
.ext
.occurrence
.gbif
.DataSetResponse
;
30 import eu
.etaxonomy
.cdm
.ext
.occurrence
.gbif
.GbifDataSetProtocol
;
31 import eu
.etaxonomy
.cdm
.ext
.occurrence
.gbif
.GbifQueryServiceWrapper
;
32 import eu
.etaxonomy
.cdm
.ext
.occurrence
.gbif
.GbifResponse
;
33 import eu
.etaxonomy
.cdm
.model
.occurrence
.SpecimenOrObservationBase
;
34 import eu
.etaxonomy
.taxeditor
.model
.AbstractUtility
;
35 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
37 public class DataImportEditorContextMenu
extends CompoundContributionItem
{
39 private final Logger logger
= Logger
.getLogger(DataImportEditorContextMenu
.class);
42 * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
45 protected IContributionItem
[] getContributionItems() {
46 IContributionItem
[] contributionItems
= new IContributionItem
[] {
47 new ContributionItem() {
49 public void fill(Menu menu
, int index
) {
50 final IWorkbenchWindow window
= PlatformUI
.getWorkbench().getActiveWorkbenchWindow();
51 final IEditorPart activeEditor
= AbstractUtility
.getActiveEditor();
52 final ISelection selection
= window
.getActivePage().getSelection();
53 if(selection
instanceof StructuredSelection
){
54 final StructuredSelection structuredSelection
= (StructuredSelection
)selection
;
57 MenuItem saveSpecimenItem
= new MenuItem(menu
, SWT
.NONE
);
58 saveSpecimenItem
.setText("Save Specimen");
59 saveSpecimenItem
.addListener(SWT
.Selection
, new Listener() {
62 public void handleEvent(Event event
) {
63 if(structuredSelection
.iterator().hasNext()){
64 Object next
= structuredSelection
.iterator().next();
65 if(next
instanceof GbifResponse
){
66 //unwrap DerivedUnit from GbifResponse
67 next
= ((GbifResponse
) next
).getDerivedUnitFacade().innerDerivedUnit();
69 if(next
instanceof SpecimenOrObservationBase
){
70 if(activeEditor
instanceof DataImportEditor
){
71 DataImportEditor
<?
> dataImportEditor
= (DataImportEditor
<?
>)activeEditor
;
72 CdmStore
.getService(IOccurrenceService
.class).saveOrUpdate((SpecimenOrObservationBase
<?
>) next
);
73 dataImportEditor
.getConversationHolder().commit(true);
80 //Query original data provider
81 if(structuredSelection
.size()==1
82 && structuredSelection
.iterator().next() instanceof GbifResponse
83 && ((GbifResponse
)structuredSelection
.iterator().next()).getDataSetProtocol()!=null
84 && ((GbifResponse
)structuredSelection
.iterator().next()).getDataSetProtocol()==GbifDataSetProtocol
.BIOCASE
){
85 final GbifResponse gbifResponse
= (GbifResponse
)structuredSelection
.iterator().next();
86 MenuItem queryOriginalItem
= new MenuItem(menu
, SWT
.NONE
);
87 queryOriginalItem
.setText("Query original data provider");
88 queryOriginalItem
.addListener(SWT
.Selection
, new Listener() {
91 public void handleEvent(Event event
) {
93 DataSetResponse response
= new GbifQueryServiceWrapper().queryOriginalDataSet(gbifResponse
);
94 Set
<String
[]> unitIds
= new HashSet
<String
[]>();
95 String
[] tripleId
= {response
.getUnitId()};
96 unitIds
.add(tripleId
);
97 /* final BioCaseEditorInput input = new BioCaseEditorInput(new OccurenceQuery(unitIds), response.getEndpoint());
98 // EditorUtil.open(input);
99 Job queryJob = new Job("Querying for original record...") {
102 protected IStatus run(IProgressMonitor monitor) {
104 return Status.OK_STATUS;
107 queryJob.schedule();*/
108 } catch (ClientProtocolException e
) {
109 logger
.error("Query for single record failed.", e
);
110 } catch (IOException e
) {
111 logger
.error("Query for single record failed.", e
);
113 // } catch (PartInitException e) {
114 // logger.error("Could not open editor.", e);
122 return contributionItems
;