Revision f3077849
Added by Patrick Plitzner over 5 years ago
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
ref #7869 Run request for availabel ontologies in background task