comment the changes out, to fix jenkins
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / view / dataimport / DataImportEditorContextMenu.java
1 package eu.etaxonomy.taxeditor.view.dataimport;
2
3 import java.io.IOException;
4 import java.util.HashSet;
5 import java.util.Set;
6
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;
26
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;
36
37 public class DataImportEditorContextMenu extends CompoundContributionItem {
38
39 private final Logger logger = Logger.getLogger(DataImportEditorContextMenu.class);
40
41 /* (non-Javadoc)
42 * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
43 */
44 @Override
45 protected IContributionItem[] getContributionItems() {
46 IContributionItem[] contributionItems = new IContributionItem[] {
47 new ContributionItem() {
48 @Override
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;
55
56 //Save Specimen
57 MenuItem saveSpecimenItem = new MenuItem(menu, SWT.NONE);
58 saveSpecimenItem.setText("Save Specimen");
59 saveSpecimenItem.addListener(SWT.Selection, new Listener() {
60
61 @Override
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();
68 }
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);
74 }
75 }
76 }
77 }
78 });
79
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() {
89
90 @Override
91 public void handleEvent(Event event) {
92 try{
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...") {
100
101 @Override
102 protected IStatus run(IProgressMonitor monitor) {
103 input.query();
104 return Status.OK_STATUS;
105 }
106 };
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);
112 }
113 // } catch (PartInitException e) {
114 // logger.error("Could not open editor.", e);
115 // }
116 }
117 });
118 }
119 }
120 }
121 }};
122 return contributionItems;
123 }
124
125 }