- added functionality to query a BioCASE provider for the original record which...
authorPatric Plitzner <p.plitzner@bgbm.org>
Mon, 2 Jun 2014 13:52:13 +0000 (13:52 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Mon, 2 Jun 2014 13:52:13 +0000 (13:52 +0000)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorUtil.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/BioCaseEditorInput.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/QueryOriginalRecordCommand.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SpecimenSearchWizard.java

index 218fb33d6bbd12bb4252ca5754e5f8881d66500e..18d340d60086ebe79157beb39ce23b49a6424734 100644 (file)
@@ -35,6 +35,12 @@ import eu.etaxonomy.taxeditor.editor.group.authority.CdmAuthorityEditorInput;
 import eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin;
 import eu.etaxonomy.taxeditor.editor.key.KeyEditor;
 import eu.etaxonomy.taxeditor.editor.key.polytomous.PolytomousKeyEditorInput;
+import eu.etaxonomy.taxeditor.editor.view.dataimport.BioCaseEditorInput;
+import eu.etaxonomy.taxeditor.editor.view.dataimport.DataImportEditor;
+import eu.etaxonomy.taxeditor.editor.view.dataimport.DataImportEditorInput;
+import eu.etaxonomy.taxeditor.editor.view.dataimport.GbifImportEditor;
+import eu.etaxonomy.taxeditor.editor.view.dataimport.GbifImportEditorInput;
+import eu.etaxonomy.taxeditor.editor.view.dataimport.SpecimenImportEditor;
 import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
 import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
@@ -97,6 +103,21 @@ public class EditorUtil extends AbstractUtility {
            open(input, DerivateView.ID);
        }
 
+       /**
+        * Opens a new {@link DataImportEditor} for the given input
+        * @param input a {@link DataImportEditorInput}
+        * @throws PartInitException
+        */
+       public static void open(DataImportEditorInput<?> input)
+               throws PartInitException {
+           if(input instanceof BioCaseEditorInput){
+               open(input, SpecimenImportEditor.ID);
+           }
+           else if(input instanceof GbifImportEditorInput){
+               open(input, GbifImportEditor.ID);
+           }
+       }
+
        /**
         * Taxon Editors may be opened by supplying a taxon node uuid. Session gets
         * initialised here and is passed to the editor
index b98f89760b9d05d55df186ac14d01219815b7e88..60d1302cbbc6bdda9f35f4abeb465885c209c0e4 100644 (file)
@@ -11,7 +11,7 @@ package eu.etaxonomy.taxeditor.editor.view.dataimport;
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.URISyntaxException;
+import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collection;
 
@@ -33,12 +33,18 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  */
 public class BioCaseEditorInput extends DataImportEditorInput<SpecimenOrObservationBase<?>> {
 
+    private final URI endPoint;
+
     /**
-     * @param results
+     * Constructs a new BioCaseEditorInput.
+     * @param query The {@link OccurenceQuery} object holding all necessary parameters.
+     * @param endPoint If the endPoint {@link URI} is <code>null</code> then the default endPoint is used
+     * (<i>http://ww3.bgbm.org/biocase/pywrapper.cgi?dsa=Herbar</i>)
      */
-    public BioCaseEditorInput(OccurenceQuery query) {
+    public BioCaseEditorInput(OccurenceQuery query, URI endPoint) {
         super();
         this.query = query;
+        this.endPoint = endPoint;
     }
 
     @Override
@@ -49,7 +55,7 @@ public class BioCaseEditorInput extends DataImportEditorInput<SpecimenOrObservat
         try {
             //FIXME move ABCD import to cdmlib -> this will also get rid of the transient services
             InputStream resultStream;
-            resultStream = new BioCaseQueryServiceWrapper().query(query);
+            resultStream = new BioCaseQueryServiceWrapper().query(query, endPoint);
             Abcd206ImportConfigurator configurator = Abcd206ImportConfigurator.NewInstance(resultStream, null, false);
             TransientCdmRepository repo =
                     new TransientCdmRepository(CdmStore.getCurrentApplicationConfiguration());
@@ -63,8 +69,6 @@ public class BioCaseEditorInput extends DataImportEditorInput<SpecimenOrObservat
             logger.error(errorMessage, e);
         } catch (IOException e) {
             logger.error(errorMessage, e);
-        } catch (URISyntaxException e) {
-            logger.error(errorMessage, e);
         }
 
         setResults(results);
index 9580c5cbabcb2e425dd28a0403fc784ad70b0cdd..3587615d5eff226651c223c727faee5bad903b66 100644 (file)
@@ -1,15 +1,32 @@
 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)
      */
@@ -21,10 +38,28 @@ public class QueryOriginalRecordCommand extends AbstractHandler {
             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;
index a76a1e7425507bf583f3e3a69d3e65abc44dbf28..d20dadc94b3559d8df026cead51c41de6f3170fc 100644 (file)
@@ -24,6 +24,7 @@ import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.PlatformUI;
 
 import eu.etaxonomy.cdm.ext.occurrence.OccurenceQuery;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
@@ -63,7 +64,7 @@ public class SpecimenSearchWizard extends Wizard implements IImportWizard {
         query = searchPage.getQuery();
         switch (providerSelectionPage.getQueryType()) {
         case BIOCASE:
-            input = new BioCaseEditorInput(query);
+            input = new BioCaseEditorInput(query, null);
             editorId = SpecimenImportEditor.ID;
             break;
         case GBIF:
@@ -72,7 +73,7 @@ public class SpecimenSearchWizard extends Wizard implements IImportWizard {
             break;
         }
         try {
-            page.openEditor(input, editorId, true);
+            EditorUtil.open(input);
         } catch ( PartInitException e ) {
             //Put your exception handler here if you wish to
         }