package eu.etaxonomy.taxeditor.editor.view.dataimport;
+import java.io.IOException;
+
+import org.apache.http.client.ClientProtocolException;
+import org.apache.log4j.Logger;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
+import eu.etaxonomy.cdm.ext.occurrence.OccurenceQuery;
+import eu.etaxonomy.cdm.ext.occurrence.gbif.DataSetResponse;
+import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifQueryServiceWrapper;
+import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifResponse;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+
public class QueryOriginalRecordCommand extends AbstractHandler {
+ private final Logger logger = Logger.getLogger(QueryOriginalRecordCommand.class);
+
/* (non-Javadoc)
* @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
*/
StructuredSelection structuredSelection = (StructuredSelection)selection;
if(structuredSelection.size()==1){
Object next = structuredSelection.iterator().next();
-// if(next instanceof GbifResponse){
-// InputStream inputStream = new GbifQueryServiceWrapper().queryForOriginalRecord((GbifResponse)next);
-// BioCaseEditorInput input = new BioCaseEditorInput(query);
-// }
+ if(next instanceof GbifResponse){
+ try{
+ DataSetResponse response = new GbifQueryServiceWrapper().queryOriginalDataSet((GbifResponse)next);
+ final BioCaseEditorInput input = new BioCaseEditorInput(new OccurenceQuery(response.getUnitId()), response.getEndpoint());
+ EditorUtil.open(input);
+ Job queryJob = new Job("Querying for original record...") {
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ input.query();
+ return Status.OK_STATUS;
+ }
+ };
+ queryJob.schedule();
+ } catch (ClientProtocolException e) {
+ logger.error("Query for single record failed.", e);
+ } catch (IOException e) {
+ logger.error("Query for single record failed.", e);
+ } catch (PartInitException e) {
+ logger.error("Could not open editor.", e);
+ }
+ }
}
}
return null;