This repository has been archived on 2024-05-07. You can view files and clone it, but cannot push or open issues or pull requests.
species-discovery/src/main/java/org/gcube/portlets/user/speciesdiscovery/client/gridview/OccurrenceJobGridManager.java

121 lines
3.7 KiB
Java

package org.gcube.portlets.user.speciesdiscovery.client.gridview;
import java.util.ArrayList;
import java.util.List;
import org.gcube.portlets.user.speciesdiscovery.client.SpeciesDiscovery;
import org.gcube.portlets.user.speciesdiscovery.client.event.CreateOccurrenceJobEvent;
import org.gcube.portlets.user.speciesdiscovery.shared.DataSource;
import org.gcube.portlets.user.speciesdiscovery.shared.OccurrencesSaveEnum;
import org.gcube.portlets.user.speciesdiscovery.shared.SaveFileFormat;
import org.gcube.portlets.user.speciesdiscovery.shared.util.NormalizeString;
import com.allen_sauer.gwt.log.client.Log;
import com.extjs.gxt.ui.client.widget.Info;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.rpc.AsyncCallback;
public class OccurrenceJobGridManager {
private int expectedPoints;
private List<String> listDataSource;
private SaveFileFormat fileFormat;
private OccurrencesSaveEnum saveType;
private String searchTerm;
private boolean isByDataSource;
private EventBus eventBus;
private boolean isSearchByCommonName;
private static int EMPTY = -1;
private static final String SCIENTIFIC_NAME = "(scientific name)";
private static final String COMMON_NAME = "(common name)";
public OccurrenceJobGridManager(EventBus eventBus, SaveFileFormat fileFormat, OccurrencesSaveEnum save, String searchTerm, boolean isByDataSource, boolean isSearchByCommonName) {
this.expectedPoints = EMPTY;
this.listDataSource = null;
this.eventBus = eventBus;
this.fileFormat = fileFormat;
this.saveType = save;
this.searchTerm = searchTerm;
this.isByDataSource = isByDataSource;
this.isSearchByCommonName = isSearchByCommonName;
}
public void saveOccurrence(){
SpeciesDiscovery.taxonomySearchService.loadDataSourceForResultRow(true, true, new AsyncCallback<List<DataSource>>() {
@Override
public void onSuccess(List<DataSource> result) {
listDataSource = new ArrayList<String>();
if(result!=null){
for (DataSource dataSource : result)
listDataSource.add(dataSource.getName());
}
else
Info.display("Error", "Error getting data source list, retry");
createOccurrenceJobEventCallback();
}
@Override
public void onFailure(Throwable caught) {
Info.display("Error getting data source list", "Error getting data source list, retry");
Log.error("An error occured in loadDataSourceForResultRow "+caught);
}
});
SpeciesDiscovery.taxonomySearchService.retrieveOccurencesFromSelection(new AsyncCallback<Integer>() {
@Override
public void onSuccess(Integer points) {
Log.trace("Expected points: "+expectedPoints);
expectedPoints = points.intValue();
if(expectedPoints>0)
createOccurrenceJobEventCallback();
else
Info.display("Info", "There are no occurrence points to save");
}
@Override
public void onFailure(Throwable caught) {
Info.display("Error getting occurrences", "Error getting occurrences, retry");
Log.trace("Error getting occurrences", caught);
}
});
}
private void createOccurrenceJobEventCallback() {
if(listDataSource==null || expectedPoints==EMPTY) //control if both async call is completed
return;
String jobName = getSearchTermBySearchType(isSearchByCommonName, searchTerm);
eventBus.fireEvent(new CreateOccurrenceJobEvent(fileFormat, expectedPoints, saveType, listDataSource, jobName, isByDataSource));
}
public static String getSearchTermBySearchType(boolean isSearchByCommonName, String searchTerm){
if(isSearchByCommonName)
return NormalizeString.lowerCaseUpFirstChar(searchTerm) + " " + COMMON_NAME;
else
return NormalizeString.lowerCaseUpFirstChar(searchTerm) + " " + SCIENTIFIC_NAME;
}
}