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() {