@Override
public IStatus run(final IProgressMonitor monitor) {
try{
- monitor.beginTask("Retrieving datasources", dataSources.size());
+ monitor.beginTask("Retrieving datasources", dataSources.size() + 1);
List<ICdmDataSource> dataSources = CdmDataSourceRepository.getAll();
final List<CdmMetaDataAwareDataSourceContainer> containers = new ArrayList<CdmMetaDataAwareDataSourceContainer>();
for(ICdmDataSource dataSource : dataSources){
- containers.add(new CdmMetaDataAwareDataSourceContainer(dataSource, CdmDataSourceViewPart.this));
- monitor.worked(1);
+ containers.add(new CdmMetaDataAwareDataSourceContainer(dataSource));
}
Display.getDefault().asyncExec(new Runnable() {
public void run() {
viewer.setInput(containers);
}
- });
-// viewer.setInput(containers);
+ });
+ monitor.worked(1);
+
+ for(final CdmMetaDataAwareDataSourceContainer container : containers){
+
+ container.getMetaDataFromDataSource();
+ Display.getDefault().asyncExec(new Runnable() {
+
+ @Override
+ public void run() {
+ viewer.update(container, null);
+ }
+ });
+ monitor.worked(1);
+ }
}finally{
monitor.done();
* <p>refresh</p>
*/
public void refresh(){
- getService().schedule(new DataSourceJob("Loading datasources", CdmDataSourceRepository.getAll()), Job.SHORT);
+ getService().schedule(new DataSourceJob("Loading datasources", CdmDataSourceRepository.getAll()), Job.LONG);
}
/** {@inheritDoc} */
import java.util.HashMap;
import java.util.Map;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.viewers.StructuredViewer;
-import org.eclipse.swt.widgets.Display;
-
import eu.etaxonomy.cdm.database.ICdmDataSource;
import eu.etaxonomy.cdm.model.common.CdmMetaData;
import eu.etaxonomy.cdm.model.common.CdmMetaData.MetaDataPropertyName;
*/
public class CdmMetaDataAwareDataSourceContainer {
- private class MetaDataJob extends Job{
-
- /**
- * @param name
- */
- public MetaDataJob(String dataSourceName) {
- super("Retrieving meta data for datasource: " + dataSourceName);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
- */
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- if(!monitor.isCanceled()){
- try {
- running = dataSource.testConnection();
- } catch (Exception e) {
- running = false;
- }
- }
-
- if(!monitor.isCanceled()){
- getMetaDataFromDataSource(dataSource);
- }
-
- if(!monitor.isCanceled()){
- Display.getDefault().asyncExec(new Runnable(){
- @Override
- public void run() {
- viewer.update(CdmMetaDataAwareDataSourceContainer.this, null);
- }
-
- });
- }
-
- return monitor.isCanceled() ? Status.CANCEL_STATUS : Status.OK_STATUS;
- }
-
- }
/** Constant <code>DEFAULT_ENTRY="-"</code> */
public static final String DEFAULT_ENTRY = "-";
private boolean running;
private Map<MetaDataPropertyName, String> metaDataMap;
-
- private StructuredViewer viewer;
-
- private MetaDataJob job;
/**
* <p>Constructor for CdmMetaDataAwareDataSourceContainer.</p>
* @param dataSource a {@link eu.etaxonomy.cdm.database.ICdmDataSource} object.
* @param view a {@link eu.etaxonomy.taxeditor.view.datasource.CdmDataSourceViewPart} object.
*/
- public CdmMetaDataAwareDataSourceContainer(ICdmDataSource dataSource, CdmDataSourceViewPart view){
+ public CdmMetaDataAwareDataSourceContainer(ICdmDataSource dataSource){
this.dataSource = dataSource;
- this.viewer = view.getViewer();
metaDataMap = getDefaultMetaDataMap();
- job = new MetaDataJob(dataSource.getName());
- job.setPriority(Job.DECORATE);
- view.getService().schedule(job);
}
/**
return dataSource;
}
- private void getMetaDataFromDataSource(ICdmDataSource dataSource){
+ public void getMetaDataFromDataSource(){
+ try {
+ running = dataSource.testConnection();
+ } catch (Exception e) {
+ running = false;
+ }
+
try {
if(isRunning()){
public String toString() {
return dataSource.getName();
}
-
- /**
- * <p>dispose</p>
- */
- public void dispose(){
- job.cancel();
- }
}