public static String ChecklistEditorGeneralPreference_show_symbol;
public static String ChecklistEditorGeneralPreference_sort_areas;
+ public static String GfBioTerminologyImportPresenter_NO_CONNECTION_MESSAGE;
+
+
+ public static String GfBioTerminologyImportPresenter_NO_CONNECTION_TITLE;
+
+
+ public static String GfBioTerminologyImportPresenter_NO_RESULTS_MESSAGE;
+
+
+ public static String GfBioTerminologyImportPresenter_NO_RESULTS_TITLE;
+
+
public static String PublishFlagPreference_description;
public static String PublishFlagPreference_do_not_set;
public static String PublishFlagPreference_inherit;
ChecklistEditorGeneralPreference_show_rank=Show Rank in Distribution Editor
ChecklistEditorGeneralPreference_show_symbol=Show Symbol of the Status, if existing
ChecklistEditorGeneralPreference_sort_areas=Sort Areas by Order in Vocabulary
+GfBioTerminologyImportPresenter_NO_CONNECTION_MESSAGE=Could not retrieve data from web service
+GfBioTerminologyImportPresenter_NO_CONNECTION_TITLE=Web service unavailable
+GfBioTerminologyImportPresenter_NO_RESULTS_MESSAGE=No results found for the query.
+GfBioTerminologyImportPresenter_NO_RESULTS_TITLE=No results found
PublishFlagPreference_description=Configure the default settings for the publish flag in new created taxa
PublishFlagPreference_do_not_set=Set no publish flag
ChecklistEditorGeneralPreference_show_rank=Rank anzeigen
ChecklistEditorGeneralPreference_show_symbol=Symbol des Status anzeigen, wenn es existiert
ChecklistEditorGeneralPreference_sort_areas=Areas nach der Sortierung im Vokabular anzeigen
+GfBioTerminologyImportPresenter_NO_CONNECTION_MESSAGE=Konnte keine Verbindung zum Webservice herstellen.
+GfBioTerminologyImportPresenter_NO_CONNECTION_TITLE=Webservice nicht erreichbar
+GfBioTerminologyImportPresenter_NO_RESULTS_MESSAGE=Keine Ergebnisse für die Anfrage gefunden.
+GfBioTerminologyImportPresenter_NO_RESULTS_TITLE=Keine Ergebnisse
PublishFlagPreference_description=Konfiguration des Default Verhaltens beim Setzen des Publish Flags in einem neu erzeugten Taxon.
PublishFlagPreference_do_not_set=Kein Publish Flag
/**
-* 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.
-*/
+ * 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.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.Button;
+import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Tree;
+import eu.etaxonomy.taxeditor.model.ImageResources;
+
/**
* @author pplitzner
* @since Apr 23, 2018
private TreeViewer treeTermHierarchy;
private Text txtSearch;
private Button btnSearch;
+ private Composite composite;
+ private Button btnRemoveTerminology;
+ private ComboViewer comboTerminologies;
public GfBioTerminologyImportComposite(Composite parent, int style) {
super(parent, style);
- setLayout(new GridLayout(2, false));
+ setLayout(new GridLayout(1, false));
+
+ composite = new Composite(this, SWT.NONE);
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
+ composite.setLayout(new GridLayout(4, false));
- txtSearch = new Text(this, SWT.BORDER);
+ txtSearch = new Text(composite, SWT.BORDER);
txtSearch.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
- btnSearch = new Button(this, SWT.NONE);
+ comboTerminologies = new ComboViewer(composite, SWT.NONE);
+ Combo combo = comboTerminologies.getCombo();
+ combo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
+
+ btnRemoveTerminology = new Button(composite, SWT.NONE);
+ btnRemoveTerminology.setImage(ImageResources.getImage(ImageResources.TRASH_ICON));
+
+ btnSearch = new Button(composite, 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);
+ treeTermHierarchy = new TreeViewer(this, SWT.BORDER);
+ Tree tree = treeTermHierarchy.getTree();
+ GridData gd_tree = new GridData(SWT.FILL, SWT.FILL, true, true, 3, 1);
+ gd_tree.widthHint = 423;
+ tree.setLayoutData(gd_tree);
}
public TreeViewer getTreeTermHierarchy() {
return treeTermHierarchy;
public Text getTxtSearch() {
return txtSearch;
}
+ public Button getBtnRemoveTerminology() {
+ return btnRemoveTerminology;
+ }
+ public ComboViewer getComboTerminologies() {
+ return comboTerminologies;
+ }
}
*/
package eu.etaxonomy.taxeditor.view.webimport.termimport;
+import java.util.ArrayList;
import java.util.Collection;
import org.eclipse.jface.util.LocalSelectionTransfer;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.dnd.DragSourceAdapter;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
+import eu.etaxonomy.taxeditor.l10n.Messages;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.view.webimport.termimport.parser.SuggestParser;
+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.RequestTerminologies;
import eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper.OntologyTermWrapper;
+import eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper.TerminologyWrapper;
/**
* @author pplitzner
*/
public class GfBioTerminologyImportPresenter {
+ private static final String NO_CONNECTION_TITLE = Messages.GfBioTerminologyImportPresenter_NO_CONNECTION_TITLE;
+ private static final String NO_CONNECTION_MESSAGE = Messages.GfBioTerminologyImportPresenter_NO_CONNECTION_MESSAGE;
+
private GfBioTerminologyImportComposite composite;
public GfBioTerminologyImportPresenter(GfBioTerminologyImportComposite composite) {
}
}
});
+ String response = new RequestTerminologies().request();
+ if(response==null){
+ MessagingUtils.informationDialog(NO_CONNECTION_TITLE, NO_CONNECTION_MESSAGE);
+ return;
+ }
+ Collection<TerminologyWrapper> terminologies = TerminologyParser.parse(response);
+ //combo
+ ComboViewer comboOntologies = composite.getComboTerminologies();
+ comboOntologies.setLabelProvider(new TerminologyLabelProvider());
+ comboOntologies.setContentProvider(new ArrayContentProvider());
+ comboOntologies.setInput(terminologies);
+ composite.getBtnRemoveTerminology().addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ composite.getComboTerminologies().setSelection(null);
+ }
+ });
+
+ composite.getTreeTermHierarchy().setContentProvider(new OntologyTermContentProvider());
+ composite.getTreeTermHierarchy().setLabelProvider(new OntologyTermLabelProvider());
+
//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;
+ ISelection selection = composite.getComboTerminologies().getSelection();
+ Collection<OntologyTermWrapper> wrapperList = new ArrayList<>();
+ if(selection instanceof IStructuredSelection && !selection.isEmpty()){
+ //FIXME add support for mutliple terminology selection
+ Object next = ((IStructuredSelection) selection).iterator().next();
+ if(next instanceof TerminologyWrapper){
+ String response = new RequestSearch(searchString, ((TerminologyWrapper) next).getName()).request();
+ if(response==null){
+ MessagingUtils.informationDialog(NO_CONNECTION_TITLE, NO_CONNECTION_MESSAGE);
+ return;
+ }
+ wrapperList = SuggestParser.parse(response);
+ }
+ }
+ else{
+ String response = new RequestSuggest(searchString).request();
+ if(response==null){
+ MessagingUtils.informationDialog(NO_CONNECTION_TITLE, NO_CONNECTION_MESSAGE);
+ return;
+ }
+ wrapperList = SuggestParser.parse(response);
+ }
+ if(wrapperList.isEmpty()){
+ MessagingUtils.informationDialog(Messages.GfBioTerminologyImportPresenter_NO_RESULTS_TITLE, Messages.GfBioTerminologyImportPresenter_NO_RESULTS_MESSAGE);
}
- Collection<OntologyTermWrapper> wrapperList = SuggestParser.parse(response);
composite.getTreeTermHierarchy().setInput(wrapperList);
}
--- /dev/null
+// $Id$
+/**
+* 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
+ * @date 15.05.2018
+ *
+ */
+public class TerminologyLabelProvider extends LabelProvider {
+
+
+ @Override
+ public String getText(Object element) {
+ if(element instanceof TerminologyWrapper){
+ return ((TerminologyWrapper) element).getName();
+ }
+ return super.getText(element);
+ }
+
+}
--- /dev/null
+/**
+* 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.TerminologyWrapper;
+
+/**
+ * @author pplitzner
+ * @since May 9, 2018
+ *
+ */
+public class TerminologyParser {
+ public static Collection<TerminologyWrapper> parse(String response){
+ 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();
+ }
+ return wrapperList;
+ }
+
+}
--- /dev/null
+/**
+* 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 RequestSearch extends AbstractTerminologyServiceRequest{
+
+ private String searchString;
+ private String terminology;
+
+ public RequestSearch(String searchString, String terminology) {
+ super();
+ this.searchString = searchString;
+ this.terminology = terminology;
+ }
+
+ @Override
+ protected String getServiceUri() {
+ return TerminologyServiceConstants.SEARCH_SERVICE_URL;
+ }
+
+ @Override
+ protected String getTerminologyId() {
+ return null;
+ }
+
+ @Override
+ protected List<RequestParameter> getServiceParameters() {
+ List<RequestParameter> params = new ArrayList<>();
+ params.add(new RequestParameter(TerminologyServiceConstants.ATTR_QUERY, ".*"+searchString+".*"));
+ params.add(new RequestParameter(TerminologyServiceConstants.ATTR_LIMIT, "20"));
+ params.add(new RequestParameter("match_type", "regex"));
+ params.add(new RequestParameter("internal_only", "true"));
+ params.add(new RequestParameter("terminologies", terminology));
+ return params;
+ }
+
+}
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 SEARCH_SERVICE_URL = "search";
public static final String HIERARCHY_SERVICE_URL = "hierarchy";
public static final String TERM_SERVICE_URL = "term";