|
|
|
@ -94,12 +94,9 @@ import org.gcube.portlets.user.speciesdiscovery.shared.SearchType;
|
|
|
|
|
import org.gcube.portlets.user.speciesdiscovery.shared.SpeciesCapability;
|
|
|
|
|
import org.gcube.portlets.user.speciesdiscovery.shared.filter.ResultFilter;
|
|
|
|
|
import org.gcube.portlets.user.speciesdiscovery.shared.util.SearchTermValidator;
|
|
|
|
|
import org.gcube.portlets.widgets.lighttree.client.ItemType;
|
|
|
|
|
import org.gcube.portlets.widgets.lighttree.client.event.DataLoadEvent;
|
|
|
|
|
import org.gcube.portlets.widgets.lighttree.client.event.DataLoadHandler;
|
|
|
|
|
import org.gcube.portlets.widgets.lighttree.client.event.PopupEvent;
|
|
|
|
|
import org.gcube.portlets.widgets.lighttree.client.event.PopupHandler;
|
|
|
|
|
import org.gcube.portlets.widgets.lighttree.client.save.WorkspaceLightTreeSavePopup;
|
|
|
|
|
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSaveNotification.WorskpaceExplorerSaveNotificationListener;
|
|
|
|
|
import org.gcube.portlets.widgets.wsexplorer.client.save.WorkspaceExplorerSaveDialog;
|
|
|
|
|
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
|
|
|
|
|
|
|
|
|
|
import com.allen_sauer.gwt.log.client.Log;
|
|
|
|
|
import com.extjs.gxt.ui.client.data.BaseModelData;
|
|
|
|
@ -279,6 +276,7 @@ public class SearchController {
|
|
|
|
|
@Override
|
|
|
|
|
public void onSearch(SearchEvent event) {
|
|
|
|
|
//Info.display("Event", event.toString());
|
|
|
|
|
GWT.log(event.toString());
|
|
|
|
|
Log.trace(event.toString());
|
|
|
|
|
|
|
|
|
|
lastSearchEvent = event;
|
|
|
|
@ -852,6 +850,7 @@ public class SearchController {
|
|
|
|
|
@Override
|
|
|
|
|
public void onFailure(Throwable caught) {
|
|
|
|
|
new MessageBoxAlert("Error", caught.getMessage() + ". Please, try your request again later.", null);
|
|
|
|
|
GWT.log("loadDataSourceFromService error: "+caught.getMessage());
|
|
|
|
|
// Info.display("Error on loading", "An error occurred on loading Data Source, retry.");
|
|
|
|
|
// Log.error("Error on loading", "An error occurred on loading Data Source, retry. " +caught.getMessage());
|
|
|
|
|
// Log.error("Error on loading", "An error occurred on loading Data Source, retry. " +caught);
|
|
|
|
@ -862,6 +861,7 @@ public class SearchController {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onSuccess(List<DataSourceModel> result) {
|
|
|
|
|
GWT.log("LOADED "+result.size()+" plugin's");
|
|
|
|
|
|
|
|
|
|
if(result!=null && result.size()>0)
|
|
|
|
|
AdvancedSearchPanelManager.getInstance().loadDataSource(result);
|
|
|
|
@ -929,7 +929,48 @@ public class SearchController {
|
|
|
|
|
case CSV: fileName += ".csv"; break;
|
|
|
|
|
case DARWIN_CORE: fileName += ".xml"; break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
final WorkspaceExplorerSaveDialog navigator = new WorkspaceExplorerSaveDialog("Select where to save the Occurrence points", fileName, true);
|
|
|
|
|
|
|
|
|
|
WorskpaceExplorerSaveNotificationListener listener = new WorskpaceExplorerSaveNotificationListener(){
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onSaving(Item parent, final String fileName) {
|
|
|
|
|
GWT.log("onSaving parent: "+parent +", fileName" +fileName);
|
|
|
|
|
navigator.hide();
|
|
|
|
|
|
|
|
|
|
Info.display("Saving in progress", "...");
|
|
|
|
|
|
|
|
|
|
SpeciesDiscovery.taxonomySearchService.saveSelectedOccurrencePoints(parent.getId(), fileName, fileFormat, typeCSV, new AsyncCallback<Void>() {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onSuccess(Void result) {
|
|
|
|
|
Info.display("File saved", "The "+fileName+" file has been saved in the workspace.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onFailure(Throwable caught) {
|
|
|
|
|
Info.display("Error saving the file", "An error occurred saving the file, retry.");
|
|
|
|
|
Log.error("Error saving the file", "An error occurred saving the file, retry." +caught.getMessage());
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onAborted() {
|
|
|
|
|
GWT.log("onAborted");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onFailed(Throwable throwable) {
|
|
|
|
|
GWT.log("onFailed");
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
navigator.addWorkspaceExplorerSaveNotificationListener(listener);
|
|
|
|
|
navigator.show();
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
WorkspaceLightTreeSavePopup popup = new WorkspaceLightTreeSavePopup("Select where to save the Occurrence points", true, fileName);
|
|
|
|
|
popup.setModal(false);
|
|
|
|
|
popup.setSelectableTypes(ItemType.FOLDER, ItemType.ROOT);
|
|
|
|
@ -970,7 +1011,7 @@ public class SearchController {
|
|
|
|
|
});
|
|
|
|
|
popup.getElement().getStyle().setZIndex(10001);
|
|
|
|
|
popup.show();
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -1003,6 +1044,52 @@ public class SearchController {
|
|
|
|
|
|
|
|
|
|
private void saveTaxonomyJobErrorFile() {
|
|
|
|
|
|
|
|
|
|
final WorkspaceExplorerSaveDialog navigator = new WorkspaceExplorerSaveDialog("Select where to save the file with Job error", fileName, true);
|
|
|
|
|
|
|
|
|
|
WorskpaceExplorerSaveNotificationListener listener = new WorskpaceExplorerSaveNotificationListener(){
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onSaving(Item parent, final String fileName) {
|
|
|
|
|
GWT.log("onSaving parent: "+parent +", fileName" +fileName);
|
|
|
|
|
navigator.hide();
|
|
|
|
|
|
|
|
|
|
Info.display("Saving in progress", "...");
|
|
|
|
|
|
|
|
|
|
SpeciesDiscovery.taxonomySearchService.saveTaxonomyJobError(jobTaxonomyModel.getIdentifier(), parent.getId(), fileName, scientificName, dataSourceName, new AsyncCallback<Boolean>() {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onSuccess(Boolean result) {
|
|
|
|
|
|
|
|
|
|
if(result){
|
|
|
|
|
Info.display("File saved", "The "+fileName+" file has been saved in the workspace.");
|
|
|
|
|
|
|
|
|
|
changeStatusJob(SearchResultType.TAXONOMY_ITEM, jobTaxonomyModel.getIdentifier(), DownloadState.SAVED);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onFailure(Throwable caught) {
|
|
|
|
|
Info.display("Error saving the file", "An error occurred saving the file, retry.");
|
|
|
|
|
Log.error("Error saving the file", "An error occurred saving the file, retry." +caught.getMessage());
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onAborted() {
|
|
|
|
|
GWT.log("onAborted");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onFailed(Throwable throwable) {
|
|
|
|
|
GWT.log("onFailed");
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
navigator.addWorkspaceExplorerSaveNotificationListener(listener);
|
|
|
|
|
navigator.show();
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
WorkspaceLightTreeSavePopup popup = new WorkspaceLightTreeSavePopup("Select where to save the file with Job error", true, fileName);
|
|
|
|
|
popup.setModal(false);
|
|
|
|
|
popup.setSelectableTypes(ItemType.FOLDER, ItemType.ROOT);
|
|
|
|
@ -1047,7 +1134,7 @@ public class SearchController {
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
popup.show();
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
@ -1057,10 +1144,54 @@ public class SearchController {
|
|
|
|
|
// IN THIS CASE THERE IS ONE DATASOURCE
|
|
|
|
|
final String dataSourceName = listDataSources.get(0)!=null?listDataSources.get(0).getName():"no datasource";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String fileName = jobTaxonomyModel.getName() +" from "+dataSourceName+" - DWCA.zip";
|
|
|
|
|
// String fileName = "DWCA " +rank + " -"+scientificName +"- from "+dataSourceName+".zip";
|
|
|
|
|
|
|
|
|
|
final WorkspaceExplorerSaveDialog navigator = new WorkspaceExplorerSaveDialog("Select where to save the Job", fileName, true);
|
|
|
|
|
|
|
|
|
|
WorskpaceExplorerSaveNotificationListener listener = new WorskpaceExplorerSaveNotificationListener(){
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onSaving(Item parent, final String fileName) {
|
|
|
|
|
GWT.log("onSaving parent: "+parent +", fileName" +fileName);
|
|
|
|
|
navigator.hide();
|
|
|
|
|
|
|
|
|
|
Info.display("Saving in progress", "...");
|
|
|
|
|
|
|
|
|
|
SpeciesDiscovery.taxonomySearchService.saveTaxonomyJob(jobTaxonomyModel.getIdentifier(), parent.getId(), fileName, scientificName, dataSourceName, new AsyncCallback<Boolean>() {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onSuccess(Boolean result) {
|
|
|
|
|
|
|
|
|
|
if(result){
|
|
|
|
|
Info.display("File saved", "The "+fileName+" file has been saved in the workspace.");
|
|
|
|
|
|
|
|
|
|
changeStatusJob(SearchResultType.TAXONOMY_ITEM, jobTaxonomyModel.getIdentifier(), DownloadState.SAVED);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onFailure(Throwable caught) {
|
|
|
|
|
Info.display("Error saving the file", "An error occurred saving the file, retry.");
|
|
|
|
|
Log.error("Error saving the file", "An error occurred saving the file, retry." +caught.getMessage());
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onAborted() {
|
|
|
|
|
GWT.log("onAborted");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onFailed(Throwable throwable) {
|
|
|
|
|
GWT.log("onFailed");
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
navigator.addWorkspaceExplorerSaveNotificationListener(listener);
|
|
|
|
|
navigator.show();
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
WorkspaceLightTreeSavePopup popup = new WorkspaceLightTreeSavePopup("Select where to save the Job", true, fileName);
|
|
|
|
|
popup.setModal(false);
|
|
|
|
|
popup.setSelectableTypes(ItemType.FOLDER, ItemType.ROOT);
|
|
|
|
@ -1105,7 +1236,7 @@ public class SearchController {
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
popup.show();
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1146,6 +1277,50 @@ public class SearchController {
|
|
|
|
|
|
|
|
|
|
private void saveOccurrenceJobError() {
|
|
|
|
|
|
|
|
|
|
final WorkspaceExplorerSaveDialog navigator = new WorkspaceExplorerSaveDialog("Select where to save the error file", fileName, true);
|
|
|
|
|
|
|
|
|
|
WorskpaceExplorerSaveNotificationListener listener = new WorskpaceExplorerSaveNotificationListener(){
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onSaving(Item parent, final String fileName) {
|
|
|
|
|
GWT.log("onSaving parent: "+parent +", fileName" +fileName);
|
|
|
|
|
navigator.hide();
|
|
|
|
|
|
|
|
|
|
Info.display("Saving in progress", "...");
|
|
|
|
|
|
|
|
|
|
SpeciesDiscovery.taxonomySearchService.saveOccurrenceJobError(jobOccurrencesModel, parent.getId(), fileName, scientificName, dataSources, new AsyncCallback<Boolean>() {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onSuccess(Boolean result) {
|
|
|
|
|
|
|
|
|
|
if(result){
|
|
|
|
|
Info.display("File saved", "The "+fileName+" file has been saved in the workspace.");
|
|
|
|
|
changeStatusJob(SearchResultType.OCCURRENCE_POINT, jobOccurrencesModel.getJobIdentifier(), DownloadState.SAVED);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onFailure(Throwable caught) {
|
|
|
|
|
Info.display("Error saving the file", "An error occurred saving the file, retry.");
|
|
|
|
|
Log.error("Error saving the file", "An error occurred saving the file, retry." +caught.getMessage());
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onAborted() {
|
|
|
|
|
GWT.log("onAborted");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onFailed(Throwable throwable) {
|
|
|
|
|
GWT.log("onFailed");
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
navigator.addWorkspaceExplorerSaveNotificationListener(listener);
|
|
|
|
|
navigator.show();
|
|
|
|
|
/*
|
|
|
|
|
WorkspaceLightTreeSavePopup popup = new WorkspaceLightTreeSavePopup("Select where to save the error file", true, fileName);
|
|
|
|
|
popup.setModal(false);
|
|
|
|
|
popup.setSelectableTypes(ItemType.FOLDER, ItemType.ROOT);
|
|
|
|
@ -1191,7 +1366,7 @@ public class SearchController {
|
|
|
|
|
});
|
|
|
|
|
popup.show();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
@ -1226,7 +1401,50 @@ public class SearchController {
|
|
|
|
|
// String fileName = "Occurrences results of "+scientificName +"- from "+dataSourceName+" - "+suffix+"."+extension;
|
|
|
|
|
|
|
|
|
|
String fileName = jobOccurrencesModel.getJobName() +" from "+dataSourceName+" - "+suffix+"."+extension;
|
|
|
|
|
|
|
|
|
|
final String dataSources = dataSourceName;
|
|
|
|
|
final WorkspaceExplorerSaveDialog navigator = new WorkspaceExplorerSaveDialog("Select where to save the Occurrences", fileName, true);
|
|
|
|
|
WorskpaceExplorerSaveNotificationListener listener = new WorskpaceExplorerSaveNotificationListener(){
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onSaving(Item parent, final String fileName) {
|
|
|
|
|
GWT.log("onSaving parent: "+parent +", fileName" +fileName);
|
|
|
|
|
navigator.hide();
|
|
|
|
|
|
|
|
|
|
Info.display("Saving in progress", "...");
|
|
|
|
|
|
|
|
|
|
SpeciesDiscovery.taxonomySearchService.saveOccurrenceJob(jobOccurrencesModel, parent.getId(), fileName, scientificName, dataSources, new AsyncCallback<Boolean>() {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onSuccess(Boolean result) {
|
|
|
|
|
|
|
|
|
|
if(result){
|
|
|
|
|
Info.display("File saved", "The "+fileName+" file has been saved in the workspace.");
|
|
|
|
|
changeStatusJob(SearchResultType.OCCURRENCE_POINT, jobOccurrencesModel.getJobIdentifier(), DownloadState.SAVED);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onFailure(Throwable caught) {
|
|
|
|
|
Info.display("Error saving the file", "An error occurred saving the file, retry.");
|
|
|
|
|
Log.error("Error saving the file", "An error occurred saving the file, retry." +caught.getMessage());
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onAborted() {
|
|
|
|
|
GWT.log("onAborted");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onFailed(Throwable throwable) {
|
|
|
|
|
GWT.log("onFailed");
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
navigator.addWorkspaceExplorerSaveNotificationListener(listener);
|
|
|
|
|
navigator.show();
|
|
|
|
|
/*
|
|
|
|
|
WorkspaceLightTreeSavePopup popup = new WorkspaceLightTreeSavePopup("Select where to save the Occurrence points", true, fileName);
|
|
|
|
|
popup.setModal(false);
|
|
|
|
|
popup.setSelectableTypes(ItemType.FOLDER, ItemType.ROOT);
|
|
|
|
@ -1273,7 +1491,7 @@ public class SearchController {
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
popup.show();
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -1323,6 +1541,45 @@ public class SearchController {
|
|
|
|
|
case DARWIN_CORE_ARCHIVE: fileName += ".zip"; break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
final WorkspaceExplorerSaveDialog navigator = new WorkspaceExplorerSaveDialog("Select where to save the Taxonomy", fileName, true);
|
|
|
|
|
WorskpaceExplorerSaveNotificationListener listener = new WorskpaceExplorerSaveNotificationListener(){
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onSaving(Item parent, final String fileName) {
|
|
|
|
|
GWT.log("onSaving parent: "+parent +", fileName" +fileName);
|
|
|
|
|
navigator.hide();
|
|
|
|
|
|
|
|
|
|
Info.display("Saving in progress", "...");
|
|
|
|
|
|
|
|
|
|
SpeciesDiscovery.taxonomySearchService.saveSelectedTaxonomyPoints(parent.getId(), fileName, fileFormat, new AsyncCallback<Void>() {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onSuccess(Void result) {
|
|
|
|
|
Info.display("File saved", "The "+fileName+" file has been saved in the workspace.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onFailure(Throwable caught) {
|
|
|
|
|
Info.display("Error saving the file", "An error occurred saving the file, retry.");
|
|
|
|
|
Log.error("Error saving the file", "An error occurred saving the file, retry." +caught.getMessage());
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onAborted() {
|
|
|
|
|
GWT.log("onAborted");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onFailed(Throwable throwable) {
|
|
|
|
|
GWT.log("onFailed");
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
navigator.addWorkspaceExplorerSaveNotificationListener(listener);
|
|
|
|
|
navigator.show();
|
|
|
|
|
/*
|
|
|
|
|
WorkspaceLightTreeSavePopup popup = new WorkspaceLightTreeSavePopup("Select where to save the Taxonomy", true, fileName);
|
|
|
|
|
popup.setModal(false);
|
|
|
|
|
popup.setSelectableTypes(ItemType.FOLDER, ItemType.ROOT);
|
|
|
|
@ -1363,7 +1620,7 @@ public class SearchController {
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
popup.show();
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void showOccurrencesMap()
|
|
|
|
@ -1592,7 +1849,7 @@ public class SearchController {
|
|
|
|
|
|
|
|
|
|
protected void search(SearchType type, String searchTerm, Number upperBoundLongitude, Number upperBoundLatitude, Number lowerBoundLongitude, Number lowerBoundLatitude, Date fromDate, Date toDate, List<DataSourceModel> listDataSources, String groupRank, SpeciesCapability resultType, List<DataSourceModel> listDataSourcesForSynonyms, List<DataSourceModel> listDataSourcesForUnfold)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
GWT.log("IN SEARCH..............");
|
|
|
|
|
Log.trace("IN SEARCH..............");
|
|
|
|
|
|
|
|
|
|
AsyncCallback<Void> callback = initSearchCallback();
|
|
|
|
@ -1611,9 +1868,11 @@ public class SearchController {
|
|
|
|
|
switch (type) {
|
|
|
|
|
|
|
|
|
|
case BY_SCIENTIFIC_NAME:
|
|
|
|
|
GWT.log("search BY_SCIENTIFIC_NAME");
|
|
|
|
|
SpeciesDiscovery.taxonomySearchService.searchByScientificName(searchTerm, filters, callback);
|
|
|
|
|
break;
|
|
|
|
|
case BY_COMMON_NAME:
|
|
|
|
|
GWT.log("search BY_COMMON_NAME");
|
|
|
|
|
SpeciesDiscovery.taxonomySearchService.searchByCommonName(searchTerm, filters, callback);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|