- added new DataImportEditor for GbifResponses
authorPatric Plitzner <p.plitzner@bgbm.org>
Wed, 28 May 2014 08:57:39 +0000 (08:57 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Wed, 28 May 2014 08:57:39 +0000 (08:57 +0000)
  - allows querying for original record via context menu

12 files changed:
.gitattributes
eu.etaxonomy.taxeditor.editor/plugin.xml
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/BioCaseEditorInput.java [moved from eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SpecimenImportEditorInput.java with 66% similarity]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/DataImportEditor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/DataImportEditorInput.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/GbifImportEditor.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/GbifImportEditorInput.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/QueryOriginalRecordCommand.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SaveSpecimenCommand.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SpecimenImportEditor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SpecimenSearchWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewer.java

index 8a537c739b178e26b67bfd032ca4b37080bca733..c1983eea8ddaec88656dec54d058086f71fc5971 100644 (file)
@@ -482,12 +482,15 @@ eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/c
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/concept/handler/OpenRelatedConceptHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/concept/operation/CreateConceptRelationOperation.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/concept/operation/DeleteConceptRelationOperation.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/BioCaseEditorInput.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/DataImportEditor.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/DataImportEditorInput.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/GbifImportEditor.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/GbifImportEditorInput.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/QueryOriginalRecordCommand.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/QueryType.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SaveSpecimenCommand.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SpecimenImportEditor.java -text
-eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SpecimenImportEditorInput.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SpecimenProviderSelectionWizardPage.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SpecimenSearchWizard.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SpecimenSearchWizardPage.java -text
index bd98a0e309289f906bc3b9f7275a2b476994031e..7c9f0548fabb2670c3b4713152d9905ff0e4279f 100644 (file)
             id="eu.etaxonomy.taxeditor.editor.view.dataimport.SpecimenImportEditor"
             name="Specimen Import Editor">
       </editor>
+      <editor
+            class="eu.etaxonomy.taxeditor.editor.view.dataimport.GbifImportEditor"
+            default="false"
+            id="eu.etaxonomy.taxeditor.editor.view.dataimport.GbifImportEditor"
+            name="Gbif Import Editor">
+      </editor>
    </extension>
       <extension
             point="org.eclipse.ui.views">
                style="push">
          </command>
       </menuContribution>
+      <menuContribution
+            locationURI="popup:eu.etaxonomy.taxeditor.editor.view.dataimport.GbifImportEditor">
+         <command
+               commandId="eu.etaxonomy.taxeditor.editor.view.dataimport.SaveSpecimenCommand"
+               label="Save Specimen"
+               style="push">
+         </command>
+         <command
+               commandId="eu.etaxonomy.taxeditor.editor.view.dataimport.QueryOriginalRecordCommand"
+               label="Query original data record"
+               style="push">
+         </command>
+      </menuContribution>
       
       
       
             id="eu.etaxonomy.taxeditor.editor.view.dataimport.SaveSpecimenCommand"
             name="Save Specimen">
       </command>
+       <command
+             defaultHandler="eu.etaxonomy.taxeditor.editor.view.dataimport.QueryOriginalRecordCommand"
+             id="eu.etaxonomy.taxeditor.editor.view.dataimport.QueryOriginalRecordCommand"
+             name="Query original data record">
+       </command>
 
    </extension>
    <extension
@@ -18,10 +18,8 @@ import java.util.Collection;
 import org.apache.http.client.ClientProtocolException;
 import org.eclipse.swt.widgets.Display;
 
-import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.ext.occurrence.OccurenceQuery;
 import eu.etaxonomy.cdm.ext.occurrence.bioCase.BioCaseQueryServiceWrapper;
-import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifQueryServiceWrapper;
 import eu.etaxonomy.cdm.io.common.CdmDefaultImport;
 import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
@@ -33,46 +31,35 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @date 25.02.2014
  *
  */
-public class SpecimenImportEditorInput extends DataImportEditorInput<SpecimenOrObservationBase<?>> {
+public class BioCaseEditorInput extends DataImportEditorInput<SpecimenOrObservationBase<?>> {
 
     private final OccurenceQuery query;
-    private final QueryType queryType;
 
     /**
      * @param results
      */
-    public SpecimenImportEditorInput(OccurenceQuery query, QueryType queryType) {
+    public BioCaseEditorInput(OccurenceQuery query) {
         super();
         this.query = query;
-        this.queryType = queryType;
     }
 
+    @Override
     public void query(){
         String errorMessage = "Could not execute query " + query;
 
         Collection<SpecimenOrObservationBase<?>> results = new ArrayList<SpecimenOrObservationBase<?>>();
         try {
             InputStream resultStream;
-            switch (queryType) {
-            case GBIF:
-                Collection<DerivedUnitFacade> facades = new GbifQueryServiceWrapper().query(query);
-                for(DerivedUnitFacade facade:facades){
-                    results.add(facade.innerDerivedUnit());
-                }
-                break;
-            case BIOCASE:
-                resultStream = new BioCaseQueryServiceWrapper().query(query);
-                Abcd206ImportConfigurator configurator = Abcd206ImportConfigurator.NewInstance(resultStream, null, false);
-                TransientCdmRepository repo =
-                        new TransientCdmRepository(CdmStore.getCurrentApplicationConfiguration());
-                configurator.setCdmAppController(repo);
-
-                CdmDefaultImport<Abcd206ImportConfigurator> importer = new CdmDefaultImport<Abcd206ImportConfigurator>();
-                importer.invoke(configurator);
-                results = repo.getUnits();
-                setResults(results);
-                break;
-            }
+            resultStream = new BioCaseQueryServiceWrapper().query(query);
+            Abcd206ImportConfigurator configurator = Abcd206ImportConfigurator.NewInstance(resultStream, null, false);
+            TransientCdmRepository repo =
+                    new TransientCdmRepository(CdmStore.getCurrentApplicationConfiguration());
+            configurator.setCdmAppController(repo);
+
+            CdmDefaultImport<Abcd206ImportConfigurator> importer = new CdmDefaultImport<Abcd206ImportConfigurator>();
+            importer.invoke(configurator);
+            results = repo.getUnits();
+            setResults(results);
         } catch (ClientProtocolException e) {
             logger.error(errorMessage, e);
         } catch (IOException e) {
@@ -97,7 +84,7 @@ public class SpecimenImportEditorInput extends DataImportEditorInput<SpecimenOrO
      */
     @Override
     public String getName() {
-        return queryType + " " + query.toString();
+        return "[BioCASE] " + query.toString();
     }
 
     /* (non-Javadoc)
@@ -105,7 +92,7 @@ public class SpecimenImportEditorInput extends DataImportEditorInput<SpecimenOrO
      */
     @Override
     public String getToolTipText() {
-        return query.toString();
+        return "[BioCASE] " + query.toString();
     }
 
     /* (non-Javadoc)
@@ -133,7 +120,7 @@ public class SpecimenImportEditorInput extends DataImportEditorInput<SpecimenOrO
         if (getClass() != obj.getClass()) {
             return false;
         }
-        SpecimenImportEditorInput other = (SpecimenImportEditorInput) obj;
+        BioCaseEditorInput other = (BioCaseEditorInput) obj;
         if (query == null) {
             if (other.query != null) {
                 return false;
index d2167a7f95de51b56438011ed3c02a0bfca0e3d5..ade771dc047acf51cc4be31fa65f55a487b0df0f 100644 (file)
@@ -28,7 +28,6 @@ import org.eclipse.ui.part.EditorPart;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
-import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.model.IContextListener;
 import eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider;
@@ -43,7 +42,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @date 20.09.2013
  *
  */
-public abstract class DataImportEditor<T extends IIdentifiableEntity> extends EditorPart implements IPartContentHasFactualData, IDirtyMarkableSelectionProvider,
+public abstract class DataImportEditor<T> extends EditorPart implements IPartContentHasFactualData, IDirtyMarkableSelectionProvider,
 IConversationEnabled, IPartContentHasDetails, IPartContentHasSupplementalData, IContextListener{
 
     private ConversationHolder conversation;
@@ -54,7 +53,6 @@ IConversationEnabled, IPartContentHasDetails, IPartContentHasSupplementalData, I
      * Constructs a new DataImportEditor and registers it to listen to context changes
      */
     public DataImportEditor() {
-        CdmStore.getContextManager().addContextListener(this);
     }
 
     /* (non-Javadoc)
@@ -64,7 +62,7 @@ IConversationEnabled, IPartContentHasDetails, IPartContentHasSupplementalData, I
     public void createPartControl(Composite parent) {
 
         Table table = new Table(parent, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
-        table.setHeaderVisible(true);//TODO: set header title as BioCase query
+        table.setHeaderVisible(true);//TODO: set header title as query
         table.setLinesVisible(true);
         tableViewer = new TableViewer(table);
 
@@ -96,6 +94,7 @@ IConversationEnabled, IPartContentHasDetails, IPartContentHasSupplementalData, I
      */
     @Override
     public void init(IEditorSite site, IEditorInput input) throws PartInitException {
+        CdmStore.getContextManager().addContextListener(this);
         setSite(site);
         setInput(input);
         setPartName(input.getName());
@@ -147,15 +146,17 @@ IConversationEnabled, IPartContentHasDetails, IPartContentHasSupplementalData, I
             tableViewer.getTable().removeAll();
             Collection<T> results = ((DataImportEditorInput<T>) editorInput).getResults();
             if(results!=null){
-                for(T specimen:results){
+                for(T item:results){
                     TableItem tableItem = new TableItem(tableViewer.getTable(), SWT.NONE);
-                    tableItem.setText(specimen.generateTitle());
-                    tableItem.setData(specimen);
+                    tableItem.setText(getTextForTableItem(item));
+                    tableItem.setData(item);
                 }
             }
         }
     }
 
+    protected abstract String getTextForTableItem(T item);
+
     /* (non-Javadoc)
      * @see eu.etaxonomy.taxeditor.model.IContextListener#workbenchShutdown(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
      */
index af71f91e0b14ae9270e00a2e9db090441a62ee87..1d7c52ef32da0be99b05bc5aba98701b0b86d0d6 100644 (file)
@@ -17,7 +17,6 @@ import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IPersistableElement;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
@@ -25,7 +24,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @date 25.02.2014
  *
  */
-public abstract class DataImportEditorInput<T extends IIdentifiableEntity> implements IEditorInput {
+public abstract class DataImportEditorInput<T> implements IEditorInput {
 
     protected static Logger logger = Logger.getLogger(DataImportEditorInput.class);
 
@@ -101,4 +100,7 @@ public abstract class DataImportEditorInput<T extends IIdentifiableEntity> imple
 
     @Override
     public abstract boolean equals(Object obj);
+
+
+    public abstract void query();
 }
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/GbifImportEditor.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/GbifImportEditor.java
new file mode 100644 (file)
index 0000000..3159b22
--- /dev/null
@@ -0,0 +1,38 @@
+// $Id$
+/**
+* Copyright (C) 2014 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.editor.view.dataimport;
+
+import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifResponse;
+
+/**
+ * @author pplitzner
+ * @date 27.05.2014
+ *
+ */
+public class GbifImportEditor extends DataImportEditor<GbifResponse>{
+
+    public static final String ID = "eu.etaxonomy.taxeditor.editor.view.dataimport.GbifImportEditor";
+
+    /**
+     * Required for extension point
+     */
+    public GbifImportEditor() {
+        super();
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.editor.view.dataimport.DataImportEditor#getTextForTableItem(java.lang.Object)
+     */
+    @Override
+    protected String getTextForTableItem(GbifResponse item) {
+        return item.getDerivedUnitFacade().innerDerivedUnit().generateTitle();
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/GbifImportEditorInput.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/GbifImportEditorInput.java
new file mode 100644 (file)
index 0000000..e74bb70
--- /dev/null
@@ -0,0 +1,110 @@
+// $Id$
+/**
+* Copyright (C) 2014 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.editor.view.dataimport;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.cdm.ext.occurrence.OccurenceQuery;
+import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifResponse;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
+
+/**
+ * @author pplitzner
+ * @date 27.05.2014
+ *
+ */
+public class GbifImportEditorInput extends DataImportEditorInput<GbifResponse> {
+
+    private final OccurenceQuery query;
+
+    /**
+     * @param query
+     */
+    public GbifImportEditorInput(OccurenceQuery query) {
+        super();
+        this.query = query;
+    }
+
+    @Override
+    public void query(){
+        String errorMessage = "Could not execute query " + query;
+//        try{
+//            Collection<GbifResponse> results = new GbifQueryServiceWrapper().query(query);
+            Collection<GbifResponse> results = new ArrayList<GbifResponse>();
+            DerivedUnitFacade facade = DerivedUnitFacade.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
+            facade.setLocality("outbanks of seashore");
+            GbifResponse gbifResponse = new GbifResponse(facade, "endPointURL");
+            results.add(gbifResponse);
+            setResults(results);
+//        } catch (ClientProtocolException e) {
+//            logger.error(errorMessage, e);
+//        } catch (IOException e) {
+//            logger.error(errorMessage, e);
+//        } catch (URISyntaxException e) {
+//            logger.error(errorMessage, e);
+//        }
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.IEditorInput#getName()
+     */
+    @Override
+    public String getName() {
+        return "[GBIF] " + query.toString();
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.IEditorInput#getToolTipText()
+     */
+    @Override
+    public String getToolTipText() {
+        return "[GBIF] " + query.toString();
+    }
+
+    /* (non-Javadoc)
+     * @see java.lang.Object#hashCode()
+     */
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((query == null) ? 0 : query.hashCode());
+        return result;
+    }
+
+    /* (non-Javadoc)
+     * @see java.lang.Object#equals(java.lang.Object)
+     */
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        GbifImportEditorInput other = (GbifImportEditorInput) obj;
+        if (query == null) {
+            if (other.query != null) {
+                return false;
+            }
+        } else if (!query.equals(other.query)) {
+            return false;
+        }
+        return true;
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/QueryOriginalRecordCommand.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/QueryOriginalRecordCommand.java
new file mode 100644 (file)
index 0000000..8feeb7d
--- /dev/null
@@ -0,0 +1,34 @@
+package eu.etaxonomy.taxeditor.editor.view.dataimport;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+
+import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifResponse;
+
+public class QueryOriginalRecordCommand extends AbstractHandler {
+
+    /* (non-Javadoc)
+     * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+     */
+    @Override
+    public Object execute(ExecutionEvent event) throws ExecutionException {
+        final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+        final ISelection selection = window.getActivePage().getSelection();
+        if(selection instanceof StructuredSelection){
+            StructuredSelection structuredSelection = (StructuredSelection)selection;
+            if(structuredSelection.size()==1){
+                Object next = structuredSelection.iterator().next();
+                if(next instanceof GbifResponse){
+                    String endPoint = ((GbifResponse) next).getEndPointQuery();
+                }
+            }
+        }
+        return null;
+    }
+
+}
index cc0fca2254f7259464e65f40dc57218e1f596e1c..3df52dbd08d73245251ab13f56dad07a921fedc4 100644 (file)
@@ -34,7 +34,7 @@ public class SaveSpecimenCommand extends AbstractHandler {
                 if(next instanceof SpecimenOrObservationBase){
                     IWorkbenchPart activePart = AbstractUtility.getActivePart();
                     if(activePart instanceof DataImportEditor){
-                        SpecimenImportEditor dataImportEditor = (SpecimenImportEditor)activePart;
+                        DataImportEditor dataImportEditor = (DataImportEditor)activePart;
                         CdmStore.getService(IOccurrenceService.class).saveOrUpdate((SpecimenOrObservationBase<?>) next);
                         dataImportEditor.getConversationHolder().commit(true);
                     }
index 742fe41281402cc51243de5310255bd66f4e51c3..82a847c39ba3eb5c03153da8aa7366dae14eb9de 100644 (file)
@@ -22,9 +22,17 @@ public class SpecimenImportEditor extends DataImportEditor<SpecimenOrObservation
     public static final String ID = "eu.etaxonomy.taxeditor.editor.view.dataimport.SpecimenImportEditor";
 
     /**
-     *
+     * Required for extension point
      */
     public SpecimenImportEditor() {
         super();
     }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.editor.view.dataimport.DataImportEditor#getTextForTableItem(eu.etaxonomy.cdm.model.common.IIdentifiableEntity)
+     */
+    @Override
+    protected String getTextForTableItem(SpecimenOrObservationBase<?> item) {
+        return item.generateTitle();
+    }
 }
index 0fd5e8b04d6b069c5d9f35546bb74caecb7d1804..a76a1e7425507bf583f3e3a69d3e65abc44dbf28 100644 (file)
@@ -16,6 +16,7 @@ import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.IImportWizard;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPage;
@@ -57,23 +58,26 @@ public class SpecimenSearchWizard extends Wizard implements IImportWizard {
     @Override
     public boolean performFinish() {
         final IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
-
-            query = searchPage.getQuery();
-            final SpecimenImportEditorInput input = new SpecimenImportEditorInput(query, providerSelectionPage.getQueryType());
-            Job queryJob = new Job("Query specimen provider") {
-
-                @Override
-                protected IStatus run(IProgressMonitor monitor) {
-                    input.query();
-                    return Status.OK_STATUS;
-                }
-            };
-            queryJob.schedule();
-            try {
-                page.openEditor(input, SpecimenImportEditor.ID, true);
-            } catch ( PartInitException e ) {
-                //Put your exception handler here if you wish to
-            }
+        DataImportEditorInput<?> input = null;
+        String editorId = null;
+        query = searchPage.getQuery();
+        switch (providerSelectionPage.getQueryType()) {
+        case BIOCASE:
+            input = new BioCaseEditorInput(query);
+            editorId = SpecimenImportEditor.ID;
+            break;
+        case GBIF:
+            input = new GbifImportEditorInput(query);
+            editorId = GbifImportEditor.ID;
+            break;
+        }
+        try {
+            page.openEditor(input, editorId, true);
+        } catch ( PartInitException e ) {
+            //Put your exception handler here if you wish to
+        }
+        Job queryJob = new QueryJob("Query specimen provider", input);
+        queryJob.schedule();
         return true;
     }
 
@@ -95,4 +99,33 @@ public class SpecimenSearchWizard extends Wizard implements IImportWizard {
         searchPage = new SpecimenSearchWizardPage("Specimen Search");
     }
 
+    private class QueryJob extends Job{
+
+        private final DataImportEditorInput<?> input;
+
+        /**
+         * @param name
+         */
+        public QueryJob(String name, DataImportEditorInput<?> input) {
+            super(name);
+            this.input = input;
+        }
+
+        /* (non-Javadoc)
+         * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
+         */
+        @Override
+        protected IStatus run(IProgressMonitor monitor) {
+            input.query();
+            Display.getDefault().asyncExec(new Runnable() {
+
+                @Override
+                public void run() {
+                    CdmStore.getContextManager().notifyContextRefresh();
+                }
+            });
+            return Status.OK_STATUS;
+        }
+
+    }
 }
index d652feba2e34d2d183398253cbe0a4aa0ed7d068..ff81684c198b7ee5d7bbce48e1e6077f9c3a007c 100644 (file)
@@ -23,6 +23,7 @@ import org.eclipse.ui.forms.widgets.ExpandableComposite;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
 import eu.etaxonomy.cdm.api.service.ITermService;
+import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifResponse;
 import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.agent.Team;
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
@@ -168,6 +169,9 @@ public class DetailsViewer extends AbstractCdmDataViewer {
         if(input instanceof TreeNode){
             input = ((TreeNode) input).getValue();
         }
+        if(input instanceof GbifResponse){
+            input = ((GbifResponse) input).getDerivedUnitFacade();
+        }
         if (input.getClass().equals(DerivedUnit.class)) {
             DerivedUnit derivedUnit = (DerivedUnit)input;
             try {