package com.vmware.vcloud.nclient.ui;
import javax.swing.SwingUtilities;
import javax.swing.SwingWorker;
import com.vmware.vcloud.nclient.AmqpClient;
import com.vmware.vcloud.nclient.NotificationListener;
import com.vmware.vcloud.nclient.NotificationMessage;
public class RetrieveNotificationsTask extends SwingWorker<Exception, Void> implements NotificationListener {
final MainFrame mainFrame;
final String queueName;
public RetrieveNotificationsTask(MainFrame mainFrame, String queueName) {
this.mainFrame = mainFrame;
this.queueName = queueName;
}
@Override
protected Exception doInBackground() throws Exception {
AmqpClient client = mainFrame.amqpClient;
try {
client.monitorQueue(queueName, this);
} catch (Exception e) {
return e;
}
return null;
}
@Override
protected void done() {
try {
Exception error = get();
mainFrame.isRetrieving = false;
mainFrame.updateUI();
mainFrame.showError(error);
} catch (Exception e) {
}
}
@Override
public void notificationReceived(final NotificationMessage notification) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
mainFrame.tableModel.addNotification(notification);
}
});
}
}