ref #7362 Implement search interface for terminology service
authorPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 9 May 2018 15:57:35 +0000 (17:57 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 9 May 2018 15:57:42 +0000 (17:57 +0200)
17 files changed:
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/OntologyTermContentProvider.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/OntologyTermLabelProvider.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/TerminologyLabelProvider.java [deleted file]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/parser/HierarchyParser.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/parser/OntologyTermParser.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/parser/SuggestParser.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/requests/AbstractTerminologyServiceRequest.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/requests/RequestBroader.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/requests/RequestHierarchy.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/requests/RequestNarrower.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/requests/RequestSuggest.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/requests/TerminologyServiceConstants.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/wrapper/HierarchyTermWrapper.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/wrapper/OntologyTermWrapper.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/wrapper/TermWrapper.java [new file with mode: 0644]

index b9277036e60faf1e1459a2920c04ac92ab21eeb3..e857fcc0c18694f7a30f6b203fc8f00fad393fce 100644 (file)
@@ -8,13 +8,13 @@
 */
 package eu.etaxonomy.taxeditor.view.webimport.termimport;
 
-import org.eclipse.jface.viewers.ComboViewer;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
 import org.eclipse.swt.widgets.Tree;
 
 /**
@@ -24,24 +24,32 @@ import org.eclipse.swt.widgets.Tree;
  */
 public class GfBioTerminologyImportComposite extends Composite{
     private TreeViewer treeTermHierarchy;
-    private ComboViewer comboOntologies;
+    private Text txtSearch;
+    private Button btnSearch;
 
     public GfBioTerminologyImportComposite(Composite parent, int style) {
         super(parent, style);
-        setLayout(new GridLayout(1, false));
+        setLayout(new GridLayout(2, false));
 
-        comboOntologies = new ComboViewer(this, SWT.NONE);
-        Combo combo = comboOntologies.getCombo();
-        combo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
+        txtSearch = new Text(this, SWT.BORDER);
+        txtSearch.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
 
-        treeTermHierarchy = new TreeViewer(this, SWT.BORDER);
-        Tree tree = treeTermHierarchy.getTree();
-        tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
+        btnSearch = new Button(this, SWT.NONE);
+        btnSearch.setText("Search");
+
+                treeTermHierarchy = new TreeViewer(this, SWT.BORDER);
+                Tree tree = treeTermHierarchy.getTree();
+                GridData gd_tree = new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1);
+                gd_tree.widthHint = 423;
+                tree.setLayoutData(gd_tree);
     }
     public TreeViewer getTreeTermHierarchy() {
         return treeTermHierarchy;
     }
-    public ComboViewer getComboOntologies() {
-        return comboOntologies;
+    public Button getBtnSearch() {
+        return btnSearch;
+    }
+    public Text getTxtSearch() {
+        return txtSearch;
     }
 }
index 1dee2192d82e662b02cccd1e76f83bf3dfc07a60..f375254c76c1a1709dbed41689dbf053a8763999 100644 (file)
@@ -8,88 +8,71 @@
 */
 package eu.etaxonomy.taxeditor.view.webimport.termimport;
 
-import java.util.ArrayList;
 import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
 
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.ComboViewer;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
-import eu.etaxonomy.taxeditor.view.webimport.termimport.requests.RequestTerminologies;
-import eu.etaxonomy.taxeditor.view.webimport.termimport.requests.TerminologyServiceConstants;
+import eu.etaxonomy.taxeditor.view.webimport.termimport.parser.SuggestParser;
+import eu.etaxonomy.taxeditor.view.webimport.termimport.requests.RequestSuggest;
 import eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper.OntologyTermWrapper;
-import eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper.TerminologyWrapper;
 
 /**
  * @author pplitzner
  * @since Apr 23, 2018
  *
  */
-public class GfBioTerminologyImportPresenter implements ISelectionChangedListener {
+public class GfBioTerminologyImportPresenter implements SelectionListener, KeyListener  {
 
     private GfBioTerminologyImportComposite composite;
-    private OntologyTermContentProvider contentProvider;
 
-    /**
-     * @param composite
-     */
     public GfBioTerminologyImportPresenter(GfBioTerminologyImportComposite composite) {
         super();
         this.composite = composite;
-        String response = new RequestTerminologies().request();
+        //text search
+        composite.getBtnSearch().addSelectionListener(this);
+        composite.getTxtSearch().addKeyListener(this);
+        //tree results
+        composite.getTreeTermHierarchy().setContentProvider(new OntologyTermContentProvider());
+        composite.getTreeTermHierarchy().setLabelProvider(new OntologyTermLabelProvider());
+    }
+
+    private void search(){
+        String searchString = composite.getTxtSearch().getText();
+        String response = new RequestSuggest(searchString).request();
         if(response==null){
             MessagingUtils.informationDialog("Web service unavailable", "Could not retrieve data from web service");
             return;
         }
-        //fetch terminology list via web service
-        List<TerminologyWrapper> wrapperList = new ArrayList<>();
-        try {
-            JSONObject jsonResponse = new JSONObject(response);
-            JSONArray responseArray = jsonResponse.getJSONArray("results");
-            for(int i=0;i<responseArray.length();i++){
-                JSONObject terminology = responseArray.getJSONObject(i);
-                String name = terminology.getString("name");
-                String acronym = terminology.getString("acronym");
-                String description = terminology.getString("description");
-                String uriString = terminology.getString("uri");
-                wrapperList.add(new TerminologyWrapper(name, acronym, description, uriString));
-            }
-        } catch (JSONException e) {
-            e.printStackTrace();
+        Collection<OntologyTermWrapper> wrapperList = SuggestParser.parse(response);
+        composite.getTreeTermHierarchy().setInput(wrapperList);
+    }
+
+    @Override
+    public void widgetSelected(SelectionEvent e) {
+        if(e.widget==composite.getBtnSearch()){
+            search();
         }
-        //combo
-        ComboViewer comboOntologies = composite.getComboOntologies();
-        comboOntologies.setLabelProvider(new TerminologyLabelProvider());
-        comboOntologies.setContentProvider(new ArrayContentProvider());
-        comboOntologies.setInput(wrapperList);
-        comboOntologies.addSelectionChangedListener(this);
+    }
 
-        contentProvider = new OntologyTermContentProvider();
-        composite.getTreeTermHierarchy().setContentProvider(contentProvider);
-        composite.getTreeTermHierarchy().setLabelProvider(new OntologyTermLabelProvider());
+    @Override
+    public void widgetDefaultSelected(SelectionEvent e) {
     }
 
-    /**
-     * {@inheritDoc}
-     */
     @Override
-    public void selectionChanged(SelectionChangedEvent event) {
-        //get root elements of selected ontology
-        //FIXME: this service endpoint does not exist yet
-        //so we use the root element of the PO for all selections
-        String selectedOntology = "PO";
-        contentProvider.setOntologyLabel(selectedOntology);
-        Collection<OntologyTermWrapper> termWrappers = new HashSet<>();
-        termWrappers.add(new OntologyTermWrapper(TerminologyServiceConstants.PO_ROOT_ELEMENT, "plant anatomical entity"));
-        composite.getTreeTermHierarchy().setInput(termWrappers);
+    public void keyPressed(KeyEvent e) {
+        if(e.keyCode==SWT.CR){
+            search();
+        }
     }
 
+    @Override
+    public void keyReleased(KeyEvent e) {
+
+    }
 
 }
index 9cbf6195d37837cdde335f233fe57ba8483bc45d..05cc3b288f377317109d0dccdfd94195d9c410b6 100644 (file)
@@ -12,11 +12,9 @@ import java.util.ArrayList;
 import java.util.Collection;
 
 import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
 
-import eu.etaxonomy.taxeditor.view.webimport.termimport.requests.RequestNarrower;
+import eu.etaxonomy.taxeditor.view.webimport.termimport.parser.OntologyTermParser;
+import eu.etaxonomy.taxeditor.view.webimport.termimport.requests.RequestBroader;
 import eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper.OntologyTermWrapper;
 
 /**
@@ -26,8 +24,6 @@ import eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper.OntologyTermWrap
  */
 public class OntologyTermContentProvider implements ITreeContentProvider {
 
-    private String ontologyLabel;
-
     @Override
     public Object[] getElements(Object inputElement) {
         Collection<Object> elements = new ArrayList<>();
@@ -39,24 +35,13 @@ public class OntologyTermContentProvider implements ITreeContentProvider {
 
     @Override
     public Object[] getChildren(Object parentElement) {
-        Collection<OntologyTermWrapper> wrapperList = new ArrayList<>();
         if(parentElement instanceof OntologyTermWrapper){
-            String parentUri = ((OntologyTermWrapper) parentElement).getUri();
-            String response = new RequestNarrower(parentUri, ontologyLabel).request();
-            try {
-                JSONObject jsonResponse = new JSONObject(response);
-                JSONArray responseArray = jsonResponse.getJSONArray("results");
-                for(int i=0;i<responseArray.length();i++){
-                    JSONObject terminology = responseArray.getJSONObject(i);
-                    String label = terminology.getString("label");
-                    String uriString = terminology.getString("uri");
-                    wrapperList.add(new OntologyTermWrapper(uriString, label));
-                }
-            } catch (JSONException e) {
-                e.printStackTrace();
-            }
+            OntologyTermWrapper wrapper = (OntologyTermWrapper) parentElement;
+            String response = new RequestBroader(wrapper.getUri(), wrapper.getSourceTerminology()).request();
+            Collection<OntologyTermWrapper> broader = OntologyTermParser.parse(response, ((OntologyTermWrapper) parentElement).getSourceTerminology());
+            return broader.toArray();
         }
-        return wrapperList.toArray();
+        return null;
     }
 
     @Override
@@ -69,8 +54,4 @@ public class OntologyTermContentProvider implements ITreeContentProvider {
         return true;
     }
 
-    public void setOntologyLabel(String ontologyLabel) {
-        this.ontologyLabel = ontologyLabel;
-    }
-
 }
index a2608e56d8f9f20e216461eae8e67db4cf088850..8e5f965cfdf576061447614522007dd15790188c 100644 (file)
@@ -22,7 +22,8 @@ public class OntologyTermLabelProvider extends LabelProvider {
     @Override
     public String getText(Object element) {
         if(element instanceof OntologyTermWrapper){
-            return ((OntologyTermWrapper) element).getLabel();
+            OntologyTermWrapper wrapper = (OntologyTermWrapper) element;
+            return wrapper.getSourceTerminology()+": "+wrapper.getLabel();
         }
         return super.getText(element);
     }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/TerminologyLabelProvider.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/TerminologyLabelProvider.java
deleted file mode 100644 (file)
index 2abfd72..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
-* Copyright (C) 2018 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.view.webimport.termimport;
-
-import org.eclipse.jface.viewers.LabelProvider;
-
-import eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper.TerminologyWrapper;
-
-/**
- * @author pplitzner
- * @since Apr 23, 2018
- *
- */
-public class TerminologyLabelProvider extends LabelProvider {
-
-    @Override
-    public String getText(Object element) {
-        if(element instanceof TerminologyWrapper){
-            return ((TerminologyWrapper) element).getName();
-        }
-        return super.getText(element);
-    }
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/parser/HierarchyParser.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/parser/HierarchyParser.java
new file mode 100644 (file)
index 0000000..edff1bc
--- /dev/null
@@ -0,0 +1,49 @@
+/**
+* Copyright (C) 2018 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.view.webimport.termimport.parser;
+
+import java.util.Collection;
+import java.util.LinkedList;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper.HierarchyTermWrapper;
+
+/**
+ * @author pplitzner
+ * @since May 9, 2018
+ *
+ */
+public class HierarchyParser {
+    public static Collection<HierarchyTermWrapper> parse(String response){
+        LinkedList<HierarchyTermWrapper> wrapperList = new LinkedList<>();
+        try {
+            JSONObject jsonResponse = new JSONObject(response);
+            JSONArray responseArray = jsonResponse.getJSONArray("results");
+            HierarchyTermWrapper childTerm = null;
+            for(int i=0;i<responseArray.length();i++){
+                JSONObject terminology = responseArray.getJSONObject(i);
+                String label = terminology.getString("label");
+                String uri = terminology.getString("uri");
+                HierarchyTermWrapper hierarchyTermWrapper = new HierarchyTermWrapper(uri, label);
+                wrapperList.add(hierarchyTermWrapper);
+                if(childTerm!=null){
+                    childTerm.setParentTerm(hierarchyTermWrapper);
+                }
+                childTerm = hierarchyTermWrapper;
+            }
+        } catch (JSONException jsonException) {
+            jsonException.printStackTrace();
+        }
+        return wrapperList;
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/parser/OntologyTermParser.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/parser/OntologyTermParser.java
new file mode 100644 (file)
index 0000000..7bd8919
--- /dev/null
@@ -0,0 +1,44 @@
+/**
+* Copyright (C) 2018 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.view.webimport.termimport.parser;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper.OntologyTermWrapper;
+
+/**
+ * @author pplitzner
+ * @since May 9, 2018
+ *
+ */
+public class OntologyTermParser {
+    public static Collection<OntologyTermWrapper> parse(String response, String terminology){
+        List<OntologyTermWrapper> wrapperList = new ArrayList<>();
+        try {
+            JSONObject jsonResponse = new JSONObject(response);
+            JSONArray responseArray = jsonResponse.getJSONArray("results");
+            for(int i=0;i<responseArray.length();i++){
+                JSONObject jsonObject = responseArray.getJSONObject(i);
+                String label = jsonObject.getString("label");
+                String uriString = jsonObject.getString("uri");
+                wrapperList.add(new OntologyTermWrapper(uriString, label, terminology));
+            }
+        } catch (JSONException e) {
+            e.printStackTrace();
+        }
+        return wrapperList;
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/parser/SuggestParser.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/parser/SuggestParser.java
new file mode 100644 (file)
index 0000000..f985e90
--- /dev/null
@@ -0,0 +1,45 @@
+/**
+* Copyright (C) 2018 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.view.webimport.termimport.parser;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper.OntologyTermWrapper;
+
+/**
+ * @author pplitzner
+ * @since May 9, 2018
+ *
+ */
+public class SuggestParser {
+    public static Collection<OntologyTermWrapper> parse(String response){
+        List<OntologyTermWrapper> wrapperList = new ArrayList<>();
+        try {
+            JSONObject jsonResponse = new JSONObject(response);
+            JSONArray responseArray = jsonResponse.getJSONArray("results");
+            for(int i=0;i<responseArray.length();i++){
+                JSONObject terminology = responseArray.getJSONObject(i);
+                String label = terminology.getString("label");
+                String uri = terminology.getString("uri");
+                String sourceTerminology = terminology.getString("sourceTerminology");
+                wrapperList.add(new OntologyTermWrapper(uri, label, sourceTerminology));
+            }
+        } catch (JSONException jsonException) {
+            jsonException.printStackTrace();
+        }
+        return wrapperList;
+    }
+
+}
index 7af548cb0b3bdaff66f0baa396e70c8f048af340..08f98c48714bc906d35290f679adb0888500e855 100644 (file)
@@ -30,15 +30,13 @@ public abstract class AbstractTerminologyServiceRequest {
 
             List<RequestParameter> serviceParameters = getServiceParameters();
             if(serviceParameters!=null){
-                uriString += "?";
+                uriString += "?format=json&";
                 StringBuilder params = new StringBuilder();
                 serviceParameters.forEach(param->params.append(param.key+"="+param.value+"&"));
                 uriString += params.toString();
             }
             URL url = new URL(uriString);
             HttpURLConnection conn = (HttpURLConnection) url.openConnection();
-            conn.setRequestProperty("format", "json");
-            conn.setRequestMethod("GET");
             conn.setRequestProperty("Accept", "application/json");
 
             if (conn.getResponseCode() != 200) {
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/requests/RequestBroader.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/requests/RequestBroader.java
new file mode 100644 (file)
index 0000000..41661f1
--- /dev/null
@@ -0,0 +1,47 @@
+/**
+* Copyright (C) 2018 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.view.webimport.termimport.requests;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author pplitzner
+ * @since Apr 23, 2018
+ *
+ */
+public class RequestBroader extends AbstractTerminologyServiceRequest{
+
+    private String termUri;
+    private String ontologyLabel;
+
+    public RequestBroader(String termUri, String ontologyLabel) {
+        super();
+        this.termUri = termUri;
+        this.ontologyLabel = ontologyLabel;
+    }
+
+    @Override
+    protected String getServiceUri() {
+        return TerminologyServiceConstants.BROADER_SERVICE_URL;
+    }
+
+    @Override
+    protected String getTerminologyId() {
+        return ontologyLabel;
+    }
+
+    @Override
+    protected List<RequestParameter> getServiceParameters() {
+        List<RequestParameter> params = new ArrayList<>();
+        params.add(new RequestParameter(TerminologyServiceConstants.ATTR_URI, termUri));
+        return params;
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/requests/RequestHierarchy.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/requests/RequestHierarchy.java
new file mode 100644 (file)
index 0000000..1c7b933
--- /dev/null
@@ -0,0 +1,51 @@
+/**
+* Copyright (C) 2018 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.view.webimport.termimport.requests;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author pplitzner
+ * @since Apr 23, 2018
+ *
+ */
+public class RequestHierarchy extends AbstractTerminologyServiceRequest{
+
+    private String termUri;
+
+    public RequestHierarchy(String termUri) {
+        super();
+        this.termUri = termUri;
+    }
+
+    @Override
+    protected String getServiceUri() {
+        return TerminologyServiceConstants.HIERARCHY_SERVICE_URL;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected String getTerminologyId() {
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected List<RequestParameter> getServiceParameters() {
+        List<RequestParameter> params = new ArrayList<>();
+        params.add(new RequestParameter(TerminologyServiceConstants.ATTR_URI, termUri));
+        return params;
+    }
+
+}
index 2b21900a004cb7eab7d17c94345d5a8d8bc8e28a..2a9af05bec4f555e802e6e7780eac1b46a44d975 100644 (file)
@@ -32,21 +32,15 @@ public class RequestNarrower extends AbstractTerminologyServiceRequest{
         return TerminologyServiceConstants.NARROWER_SERVICE_URL;
     }
 
-    /**
-     * {@inheritDoc}
-     */
     @Override
     protected String getTerminologyId() {
         return ontologyLabel;
     }
 
-    /**
-     * {@inheritDoc}
-     */
     @Override
     protected List<RequestParameter> getServiceParameters() {
         List<RequestParameter> params = new ArrayList<>();
-        params.add(new RequestParameter(TerminologyServiceConstants.ATR_URI, termUri));
+        params.add(new RequestParameter(TerminologyServiceConstants.ATTR_URI, termUri));
         return params;
     }
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/requests/RequestSuggest.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/requests/RequestSuggest.java
new file mode 100644 (file)
index 0000000..0b09f03
--- /dev/null
@@ -0,0 +1,52 @@
+/**
+* Copyright (C) 2018 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.view.webimport.termimport.requests;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author pplitzner
+ * @since Apr 23, 2018
+ *
+ */
+public class RequestSuggest extends AbstractTerminologyServiceRequest{
+
+    private String suggestString;
+
+    public RequestSuggest(String suggestString) {
+        super();
+        this.suggestString = suggestString;
+    }
+
+    @Override
+    protected String getServiceUri() {
+        return TerminologyServiceConstants.SUGGEST_SERVICE_URL;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected String getTerminologyId() {
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected List<RequestParameter> getServiceParameters() {
+        List<RequestParameter> params = new ArrayList<>();
+        params.add(new RequestParameter(TerminologyServiceConstants.ATTR_QUERY, suggestString));
+        params.add(new RequestParameter(TerminologyServiceConstants.ATTR_LIMIT, "20"));
+        return params;
+    }
+
+}
index 351d80e40039b84aeb1e28d675a9d3cf8adaeb10..df4a4a41b761b3c4779dbe5ff904304989eddfde 100644 (file)
@@ -17,8 +17,14 @@ public interface TerminologyServiceConstants {
 
     public static final String SERVICE_URL = "https://dev-gfbio.bgbm.org/api/terminologies/";
     public static final String NARROWER_SERVICE_URL = "narrower";
+    public static final String BROADER_SERVICE_URL = "broader";
+    public static final String SUGGEST_SERVICE_URL = "suggest";
+    public static final String HIERARCHY_SERVICE_URL = "hierarchy";
     public static final String TERM_SERVICE_URL = "term";
-    public static final String ATR_URI = "uri";
+
+    public static final String ATTR_QUERY = "query";
+    public static final String ATTR_URI = "uri";
+    public static final String ATTR_LIMIT = "limit";
 
     public static final String PO_ROOT_ELEMENT = "http://purl.obolibrary.org/obo/PO_0025131";
 }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/wrapper/HierarchyTermWrapper.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/wrapper/HierarchyTermWrapper.java
new file mode 100644 (file)
index 0000000..7a1aab1
--- /dev/null
@@ -0,0 +1,28 @@
+/**
+* Copyright (C) 2018 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.view.webimport.termimport.wrapper;
+
+/**
+ * @author pplitzner
+ * @since Apr 23, 2018
+ *
+ */
+public class HierarchyTermWrapper extends TermWrapper{
+
+    private HierarchyTermWrapper parentTerm;
+    public HierarchyTermWrapper(String uri, String label) {
+        super(uri, label);
+    }
+    public HierarchyTermWrapper getParentTerm() {
+        return parentTerm;
+    }
+    public void setParentTerm(HierarchyTermWrapper parentTerm) {
+        this.parentTerm = parentTerm;
+    }
+}
index e55e20b947fe1966cd2f3f87e0f3bee6dc68999c..05a52711450848edee02c47312820d7520bba7e7 100644 (file)
@@ -13,19 +13,14 @@ package eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper;
  * @since Apr 23, 2018
  *
  */
-public class OntologyTermWrapper {
+public class OntologyTermWrapper extends TermWrapper{
 
-    private String uri;
-    private String label;
-    public OntologyTermWrapper(String uri, String label) {
-        this.uri = uri;
-        this.label = label;
+    private String sourceTerminology;
+    public OntologyTermWrapper(String uri, String label, String sourceTerminology) {
+        super(uri, label);
+        this.sourceTerminology = sourceTerminology;
     }
-    public String getUri() {
-        return uri;
+    public String getSourceTerminology() {
+        return sourceTerminology;
     }
-    public String getLabel() {
-        return label;
-    }
-
 }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/wrapper/TermWrapper.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/wrapper/TermWrapper.java
new file mode 100644 (file)
index 0000000..d46b040
--- /dev/null
@@ -0,0 +1,29 @@
+/**
+* Copyright (C) 2018 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.view.webimport.termimport.wrapper;
+
+/**
+ * @author pplitzner
+ * @since May 9, 2018
+ *
+ */
+public class TermWrapper {
+    private String uri;
+    private String label;
+    public TermWrapper(String uri, String label) {
+        this.uri = uri;
+        this.label = label;
+    }
+    public String getUri() {
+        return uri;
+    }
+    public String getLabel() {
+        return label;
+    }
+}