Project

General

Profile

« Previous | Next » 

Revision f3077849

Added by Patrick Plitzner over 5 years ago

ref #7869 Run request for availabel ontologies in background task

View differences:

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/GfBioTerminologyImportPresenter.java
44 44
import eu.etaxonomy.taxeditor.model.MessagingUtils;
45 45
import eu.etaxonomy.taxeditor.preference.Resources;
46 46
import eu.etaxonomy.taxeditor.view.webimport.termimport.parser.TermParser;
47
import eu.etaxonomy.taxeditor.view.webimport.termimport.parser.TerminologyParser;
47 48
import eu.etaxonomy.taxeditor.view.webimport.termimport.requests.RequestSearch;
49
import eu.etaxonomy.taxeditor.view.webimport.termimport.requests.RequestTerminologies;
48 50
import eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper.OntologyTermWrapper;
49 51
import eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper.TerminologyWrapper;
50 52

  
......
62 64
    private GfBioTerminologyImportComposite composite;
63 65
    private Collection<TerminologyWrapper> selectedOntologies = new ArrayList<>();
64 66
    private UISynchronize sync;
67
    private volatile Collection<TerminologyWrapper> availableOntologies;
65 68

  
66 69
    public GfBioTerminologyImportPresenter(GfBioTerminologyImportComposite composite, UISynchronize sync) {
67 70
        super();
68 71
        this.composite = composite;
69 72
        this.sync = sync;
73

  
74
        requestAvailableOntologies();
75

  
70 76
        composite.getBtnSearch().addSelectionListener(new SelectionAdapter() {
71 77
            @Override
72 78
            public void widgetSelected(SelectionEvent e) {
......
106 112
            }
107 113
        });
108 114

  
115

  
109 116
        composite.getBtnChooseOntology().addSelectionListener(new SelectionAdapter() {
110 117
            @Override
111 118
            public void widgetSelected(SelectionEvent e) {
112
                OntologySelectionDialog dialog = new OntologySelectionDialog(composite.getShell(), selectedOntologies);
119
                if(availableOntologies.isEmpty()
120
                        && MessagingUtils.confirmDialog("No Ontologies available", "There are no ontologies available. They have either not been loaded yet or the terminology service can not be reached.\nDo you want to retry loading the ontologies?")){
121
                    //re-check if ontologies have been loaded in the meantime
122
                    if(availableOntologies.isEmpty()){
123
                        requestAvailableOntologies();
124
                    }
125
                    else{
126
                        openOntologySelectionDialog(composite);
127
                    }
128
                }
129
                else{
130
                    openOntologySelectionDialog(composite);
131
                }
132
            }
133

  
134
            private void openOntologySelectionDialog(GfBioTerminologyImportComposite composite) {
135
                OntologySelectionDialog dialog = new OntologySelectionDialog(composite.getShell(), selectedOntologies, availableOntologies);
113 136
                if(dialog.open()==Window.OK){
114
                    selectedOntologies = dialog.getOntologies();
137
                    selectedOntologies = dialog.getSelectedOntologies();
115 138
                    composite.getTextOntologies().setText(selectedOntologies.stream()
116 139
                            .map(wrapper->wrapper.getAcronym())
117 140
                            .collect(Collectors.joining(", ")));
......
155 178
        });
156 179
    }
157 180

  
181
    private void requestAvailableOntologies() {
182
        Job requestOntologiesJob = new Job("Request available ontologies") {
183

  
184
            @Override
185
            protected IStatus run(IProgressMonitor monitor) {
186
                String response = new RequestTerminologies().request();
187
                availableOntologies = TerminologyParser.parse(response);
188
                return Status.OK_STATUS;
189
            }
190
        };
191
        requestOntologiesJob.schedule();
192
    }
193

  
158 194
    private OntologyTermWrapper getSelectedTerm(IStructuredSelection selection){
159 195
        Iterator iterator = selection.iterator();
160 196
        if(iterator.hasNext()){

Also available in: Unified diff