ref #7362 Add "Load Details" button
authorPatrick Plitzner <p.plitzner@bgbm.org>
Thu, 31 May 2018 14:51:12 +0000 (16:51 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Thu, 31 May 2018 14:51:12 +0000 (16:51 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/GfBioTerminologyImportComposite.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/GfBioTerminologyImportPresenter.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/parser/ParserUtil.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/parser/SuggestParser.java

index 0f8ab3a94a4f4a050424116e78ae2d76a31e4a5e..fef1681a0c73671295400e0360df26103cdc398e 100644 (file)
@@ -42,6 +42,7 @@ public class GfBioTerminologyImportComposite extends Composite{
     private Text txtLabel;
     private Text txtUri;
     private Text txtDescription;
+    private Button btnLoadDetails;
 
     public GfBioTerminologyImportComposite(Composite parent, int style) {
         super(parent, style);
@@ -75,6 +76,11 @@ public class GfBioTerminologyImportComposite extends Composite{
         composite_1 = new Composite(composite_2, SWT.NONE);
         composite_1.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
         composite_1.setLayout(new GridLayout(2, false));
+        new Label(composite_1, SWT.NONE);
+
+        btnLoadDetails = new Button(composite_1, SWT.NONE);
+        btnLoadDetails.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
+        btnLoadDetails.setText("Load Details");
 
         lblNewLabel = new Label(composite_1, SWT.NONE);
         lblNewLabel.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
@@ -121,4 +127,7 @@ public class GfBioTerminologyImportComposite extends Composite{
     public Text getLblLabel() {
         return txtLabel;
     }
+    public Button getBtnLoadDetails() {
+        return btnLoadDetails;
+    }
 }
index 1e02f03b9e42001eed8474ddca8cd5b147b09b0c..7fddce9ed61d0ea284397c8feef80051b67a0ed8 100644 (file)
@@ -39,6 +39,7 @@ import eu.etaxonomy.taxeditor.view.webimport.termimport.parser.TermParser;
 import eu.etaxonomy.taxeditor.view.webimport.termimport.parser.TerminologyParser;
 import eu.etaxonomy.taxeditor.view.webimport.termimport.requests.RequestSearch;
 import eu.etaxonomy.taxeditor.view.webimport.termimport.requests.RequestSuggest;
+import eu.etaxonomy.taxeditor.view.webimport.termimport.requests.RequestTerm;
 import eu.etaxonomy.taxeditor.view.webimport.termimport.requests.RequestTerminologies;
 import eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper.OntologyTermWrapper;
 import eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper.TerminologyWrapper;
@@ -120,6 +121,13 @@ public class GfBioTerminologyImportPresenter {
             }
         });
 
+        composite.getBtnLoadDetails().addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                loadTermDetails();
+            }
+        });
+
         composite.getTreeTermHierarchy().setContentProvider(new OntologyTermContentProvider());
         composite.getTreeTermHierarchy().setLabelProvider(new OntologyTermLabelProvider());
 
@@ -144,6 +152,17 @@ public class GfBioTerminologyImportPresenter {
         });
     }
 
+    private OntologyTermWrapper getSelectedTerm(IStructuredSelection selection){
+        Iterator iterator = selection.iterator();
+        if(iterator.hasNext()){
+            Object next = iterator.next();
+            if(next instanceof OntologyTermWrapper){
+                return (OntologyTermWrapper) next;
+            }
+        }
+        return null;
+    }
+
     private void clearDetails(){
         composite.getLblLabel().setText("");
         composite.getLblUri().setText("");
@@ -155,19 +174,22 @@ public class GfBioTerminologyImportPresenter {
         if(selection.isEmpty()){
             clearDetails();
         }
-        Iterator iterator = selection.iterator();
-        if(iterator.hasNext()){
-            Object next = iterator.next();
-            if(next instanceof OntologyTermWrapper){
-                OntologyTermWrapper wrapper = (OntologyTermWrapper)next;
-                String label = wrapper.getLabel();
-                String uri = wrapper.getUri();
-                String description = wrapper.getDescription();
-                composite.getLblLabel().setText(label!=null?label:"");
-                composite.getLblUri().setText(uri!=null?uri:"");
-                composite.getLblDescription().setText(description!=null?description:"");
-            }
-        }
+        OntologyTermWrapper wrapper = getSelectedTerm(selection);
+        String label = wrapper.getLabel();
+        String uri = wrapper.getUri();
+        String description = wrapper.getDescription();
+        composite.getLblLabel().setText(label!=null?label:"");
+        composite.getLblUri().setText(uri!=null?uri:"");
+        composite.getLblDescription().setText(description!=null?description:"");
+    }
+
+    private void loadTermDetails(){
+        OntologyTermWrapper selectedWrapper = getSelectedTerm((IStructuredSelection) composite.getTreeTermHierarchy().getSelection());
+        //load term description
+        String request = new RequestTerm(selectedWrapper.getUri(), selectedWrapper.getSourceTerminology()).request();
+        OntologyTermWrapper detailTerm = TermParser.parseSingleTerm(request);
+        selectedWrapper.setDescription(detailTerm.getDescription());
+        updateDetails(new StructuredSelection(selectedWrapper));
     }
 
     private void search(){
index a63542699a41cc28d8392001a9144c9d42ca96eb..a73c21c95532c552aa854f907375125d484a80a5 100644 (file)
@@ -32,7 +32,11 @@ public class ParserUtil {
     }
 
     public static String parseDescription(JSONObject jsonObject) throws JSONException{
-        return jsonObject.getString("description");
+        String descriptionKey = "description";
+        if(jsonObject.has(descriptionKey)){
+            return jsonObject.getString(descriptionKey);
+        }
+        return null;
     }
 
     public static String parseTerminology(JSONObject jsonObject) throws JSONException {
index a968a85695162d14ff423dbea3d5678053f0338d..8bfa874d1da3208c8755d9c9f4cb2c0b216246c9 100644 (file)
@@ -36,10 +36,7 @@ public class SuggestParser {
                 String uri= ParserUtil.parseUri(jsonObject);
                 String sourceTerminology = ParserUtil.parseTerminology(jsonObject);
                 String request = new RequestTerm(uri, sourceTerminology).request();
-                //load term description
-                String description = TermParser.parseSingleTerm(request).getDescription();
                 OntologyTermWrapper wrapper = new OntologyTermWrapper(uri, label, sourceTerminology);
-                wrapper.setDescription(description);
                 wrapperList.add(wrapper);
             }
         } catch (JSONException jsonException) {