import java.util.Set;
import java.util.UUID;
+import org.eclipse.core.runtime.ICoreRunnable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.jobs.Job;
+
import ca.odell.glazedlists.BasicEventList;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
public void performSearch(final BulkEditorQuery bulkEditorQuery) {
model.clear();
- BasicEventList<T> entityList = new BasicEventList<>();
if(getEntityUuid() != null){
T entity = loadEntity(getEntityUuid());
- entityList.add(entity);
- model.addAll(entityList);
+ model.add(entity);
}
else if(bulkEditorQuery != null){
IIdentifiableEntityServiceConfigurator configurator = bulkEditorQuery.getSearchConfigurator();
Comparator queryComparator = (bulkEditorQuery.getComparator() != null) ? bulkEditorQuery.getComparator() : new TitleCacheComparator();
- entityList.addAll(listEntities(configurator));
-
- Collections.sort(entityList, queryComparator);
+ String jobLabel = "Load data";
+ Job job = Job.create(jobLabel, (ICoreRunnable) monitor -> {
+ monitor.beginTask(jobLabel, IProgressMonitor.UNKNOWN);
+ int pageNumber = 0;
+ List<T> entities = listEntities(configurator);
+ while(!entities.isEmpty()){
+ if(monitor.isCanceled()){
+ break;
+ }
+ configurator.setPageNumber(pageNumber);
+ entities = listEntities(configurator);
+ model.addAll(entities);
+ pageNumber++;
+ Collections.sort(model, queryComparator);
+ }
+ monitor.done();
+ });
+ job.schedule();
}
- model.addAll(entityList);
}
public boolean isMergingEnabled() {
import java.util.List;
import java.util.UUID;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.widgets.Display;
-
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.api.service.IAgentService;
import eu.etaxonomy.cdm.api.service.IGroupService;
import eu.etaxonomy.cdm.model.reference.Reference;
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
-import eu.etaxonomy.taxeditor.l10n.Messages;
import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
public static int NO_COUNT = -1;
-
- // TODO make this configurable via preferences
- private static final int MAX_RESULTS_BEFORE_WARNING = 500;
-
public List<TaxonName> findNames(IIdentifiableEntityServiceConfigurator configurator, ConversationHolder conversation){
-
- if(checkLargeResult(CdmStore.getService(INameService.class).countByTitle(configurator))){
- List<TaxonName> records = CdmStore.getService(INameService.class).findByTitle(configurator).getRecords();
- addUuidSearchResults(records, configurator, INameService.class);
- return records;
- }
- return NO_RESULTS;
+ List<TaxonName> records = CdmStore.getService(INameService.class).findByTitle(configurator).getRecords();
+ addUuidSearchResults(records, configurator, INameService.class);
+ return records;
}
public List<NameRelationship> findNameRelationships(
}
public List<Reference> findReferences(IIdentifiableEntityServiceConfigurator configurator){
- if(checkLargeResult(CdmStore.getService(IReferenceService.class).countByTitle(configurator))){
- List<Reference> records = CdmStore.getService(IReferenceService.class).findByTitle(configurator).getRecords();
- addUuidSearchResults(records, configurator, IReferenceService.class);
- return records;
- }
- return NO_RESULTS;
+ List<Reference> records = CdmStore.getService(IReferenceService.class).findByTitle(configurator).getRecords();
+ addUuidSearchResults(records, configurator, IReferenceService.class);
+ return records;
}
public List<AgentBase> findAgents(IIdentifiableEntityServiceConfigurator configurator){
-
- if(checkLargeResult(CdmStore.getService(IAgentService.class).countByTitle(configurator))){
- List<AgentBase> records = CdmStore.getService(IAgentService.class).findByTitle(configurator).getRecords();
- addUuidSearchResults(records, configurator, IAgentService.class);
- return records;
- }
- return NO_RESULTS;
+ List<AgentBase> records = CdmStore.getService(IAgentService.class).findByTitle(configurator).getRecords();
+ addUuidSearchResults(records, configurator, IAgentService.class);
+ return records;
}
/**
}
configurator.setPropertyPaths(occurrencePropertyPaths);
- if(checkLargeResult(CdmStore.getService(IOccurrenceService.class).countOccurrences(configurator))){
- records = CdmStore.getService(IOccurrenceService.class).findByTitle(configurator).getRecords();
- }
+ records = CdmStore.getService(IOccurrenceService.class).findByTitle(configurator).getRecords();
addUuidSearchResults(records, configurator, IOccurrenceService.class);
return records;
}
}
- private boolean checkLargeResult(int count) {
- return checkLargeResult(count, MAX_RESULTS_BEFORE_WARNING);
- }
-
- private boolean checkLargeResult(int count, int maxBeforWarning) {
- if(count > maxBeforWarning){
- return MessageDialog.openConfirm(Display.getDefault().getActiveShell(), Messages.SearchManager_LARGE_RESULT_EXPECTED,
- String.format(Messages.SearchManager_LONG_SEARCH_WARNING, count));
- }else{
- return true;
- }
- }
-
private String sqlizeTitleSearchString(IIdentifiableEntityServiceConfigurator configurator){
return configurator.getTitleSearchString().replace(WILDCARD, "%"); //$NON-NLS-1$
}
public List findTaxa(IIdentifiableEntityServiceConfigurator configurator) {
- if(checkLargeResult(CdmStore.getService(ITaxonService.class).countByTitle(configurator))){
- List<TaxonBase> records = CdmStore.getService(ITaxonService.class).findByTitle(configurator).getRecords();
- addUuidSearchResults(records, configurator, ITaxonService.class);
- return records;
- }
- return NO_RESULTS;
+ List<TaxonBase> records = CdmStore.getService(ITaxonService.class).findByTitle(configurator).getRecords();
+ addUuidSearchResults(records, configurator, ITaxonService.class);
+ return records;
}
public List findMedia(IIdentifiableEntityServiceConfigurator configurator) {
- if(checkLargeResult(CdmStore.getService(IMediaService.class).countByTitle(configurator))){
- List<Media> records = CdmStore.getService(IMediaService.class).findByTitle(configurator).getRecords();
- addUuidSearchResults(records, configurator, IMediaService.class);
- return records;
- }
- return NO_RESULTS;
+ List<Media> records = CdmStore.getService(IMediaService.class).findByTitle(configurator).getRecords();
+ addUuidSearchResults(records, configurator, IMediaService.class);
+ return records;
}