Project

General

Profile

Download (6.73 KB) Statistics
| Branch: | Tag: | Revision:
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.jface.action.ContributionItem;
10
import org.eclipse.jface.action.IContributionItem;
11
import org.eclipse.jface.viewers.ISelection;
12
import org.eclipse.jface.viewers.StructuredSelection;
13
import org.eclipse.swt.SWT;
14
import org.eclipse.swt.widgets.Event;
15
import org.eclipse.swt.widgets.Listener;
16
import org.eclipse.swt.widgets.Menu;
17
import org.eclipse.swt.widgets.MenuItem;
18
import org.eclipse.ui.IWorkbenchWindow;
19
import org.eclipse.ui.PlatformUI;
20
import org.eclipse.ui.actions.CompoundContributionItem;
21

    
22
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
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.GbifQueryServiceWrapper;
26
import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifResponse;
27
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
28
import eu.etaxonomy.taxeditor.model.AbstractUtility;
29
import eu.etaxonomy.taxeditor.store.CdmStore;
30

    
31
public class DataImportEditorContextMenu extends CompoundContributionItem {
32

    
33
    private final Logger logger = Logger.getLogger(DataImportEditorContextMenu.class);
34

    
35
    /* (non-Javadoc)
36
     * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
37
     */
38
    @Override
39
    protected IContributionItem[] getContributionItems() {
40
        IContributionItem[] contributionItems = new IContributionItem[] {
41
                new ContributionItem() {
42
                    @Override
43
                    public void fill(Menu menu, int index) {
44
                        final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
45
                        final Object activeEditor = AbstractUtility.getActiveEditor();
46
                        final ISelection selection = window.getActivePage().getSelection();
47
                        if(selection instanceof StructuredSelection){
48
                            final StructuredSelection structuredSelection = (StructuredSelection)selection;
49

    
50
                            //Save Specimen
51
                            MenuItem saveSpecimenItem = new MenuItem(menu, SWT.NONE);
52
                            saveSpecimenItem.setText("Save Specimen");
53
                            saveSpecimenItem.addListener(SWT.Selection, new Listener() {
54

    
55
                                @Override
56
                                public void handleEvent(Event event) {
57
                                    if(structuredSelection.iterator().hasNext()){
58
                                        Object next = structuredSelection.iterator().next();
59
                                        if(next instanceof GbifResponse){
60
                                            //unwrap DerivedUnit from GbifResponse
61
                                            next = ((GbifResponse) next).getDerivedUnitFacade().innerDerivedUnit();
62
                                        }
63
                                        if(next instanceof SpecimenOrObservationBase){
64
                                            if(activeEditor instanceof DataImportEditor){
65
                                                DataImportEditor<?> dataImportEditor = (DataImportEditor<?>)activeEditor;
66
                                                CdmStore.getService(IOccurrenceService.class).saveOrUpdate((SpecimenOrObservationBase<?>) next);
67
                                                dataImportEditor.getConversationHolder().commit(true);
68
                                            }
69
                                        }
70
                                    }
71
                                }
72
                            });
73

    
74
                            //Query original data provider
75
                            if(structuredSelection.size()==1
76
                                    && structuredSelection.iterator().next() instanceof GbifResponse
77
                                    && ((GbifResponse)structuredSelection.iterator().next()).getDataSetProtocol()!=null
78
                                    && ((GbifResponse)structuredSelection.iterator().next()).getDataSetProtocol()==GbifDataSetProtocol.BIOCASE){
79
                                final GbifResponse gbifResponse = (GbifResponse)structuredSelection.iterator().next();
80
                                MenuItem queryOriginalItem = new MenuItem(menu, SWT.NONE);
81
                                queryOriginalItem.setText("Query original data provider");
82
                                queryOriginalItem.addListener(SWT.Selection, new Listener() {
83

    
84
                                    @Override
85
                                    public void handleEvent(Event event) {
86
                                        try{
87
                                            DataSetResponse response = new GbifQueryServiceWrapper().queryOriginalDataSet(gbifResponse);
88
                                            Set<String[]> unitIds = new HashSet<String[]>();
89
                                            String[] tripleId = {response.getUnitId()};
90
                                            unitIds.add(tripleId);
91
                                           /* final BioCaseEditorInput input = new BioCaseEditorInput(new OccurenceQuery(unitIds), response.getEndpoint());
92
                                           // EditorUtil.open(input);
93
                                            Job queryJob = new Job("Querying for original record...") {
94

    
95
                                                @Override
96
                                                protected IStatus run(IProgressMonitor monitor) {
97
                                                    input.query();
98
                                                    return Status.OK_STATUS;
99
                                                }
100
                                            };
101
                                            queryJob.schedule();*/
102
                                        } catch (ClientProtocolException e) {
103
                                            logger.error("Query for single record failed.", e);
104
                                        } catch (IOException e) {
105
                                            logger.error("Query for single record failed.", e);
106
                                        }
107
//                                        } catch (PartInitException e) {
108
//                                            logger.error("Could not open editor.", e);
109
//                                        }
110
                                    }
111
                                });
112
                            }
113
                        }
114
                    }
115
                }};
116
        return contributionItems;
117
    }
118

    
119
}
(3-3/17)