Skip to content

Commit afb52e7

Browse files
committed
Check for new Code reviews wrapped in BgTask
1 parent 90aede0 commit afb52e7

File tree

1 file changed

+33
-41
lines changed

1 file changed

+33
-41
lines changed

tmc-plugin/src/fi/helsinki/cs/tmc/actions/CheckForNewReviews.java

Lines changed: 33 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111
import fi.helsinki.cs.tmc.model.TmcCoreSingleton;
1212
import fi.helsinki.cs.tmc.ui.ConvenientDialogDisplayer;
1313
import fi.helsinki.cs.tmc.core.exceptions.TmcCoreException;
14+
import fi.helsinki.cs.tmc.utilities.BgTask;
15+
import fi.helsinki.cs.tmc.utilities.BgTaskListener;
16+
import fi.helsinki.cs.tmc.utilities.CancellableCallable;
1417
import java.awt.event.ActionEvent;
1518
import java.awt.event.ActionListener;
1619
import java.util.List;
@@ -79,7 +82,6 @@ public void actionPerformed(ActionEvent e) {
7982

8083
@Override
8184
public void run() {
82-
// TODO(jamo): use bg task
8385
if (resetNotifications) {
8486
reviewDb.forgetReviewsNotifiedAbout();
8587
}
@@ -94,50 +96,40 @@ public void run() {
9496
if (course.getReviewsUrl() == null) {
9597
return;
9698
}
97-
getReviews(course);
98-
99-
}
100-
101-
private void getReviews(Course course){
102-
final ProgressHandle progress = ProgressHandleFactory.createHandle("Checking for code reviews");
103-
progress.start();
104-
try {
105-
ListenableFuture<List<Review>> reviews = TmcCoreSingleton.getInstance()
106-
.getNewReviews(course);
107-
Futures.addCallback(reviews, new FutureCallback<List<Review>>() {
108-
109-
@Override
110-
public void onSuccess(List<Review> v) {
111-
success(v);
112-
progress.finish();
113-
99+
BgTaskListener bgTaskListener = new BgTaskListener<List<Review>>() {
100+
@Override
101+
public void bgTaskReady(List<Review> result) {
102+
boolean newReviews = reviewDb.setReviews(result);
103+
if (!newReviews && notifyAboutNoNewReviews) {
104+
dialogs.displayMessage("You have no unread code reviews.");
114105
}
106+
}
115107

116-
@Override
117-
public void onFailure(Throwable thrwbl) {
118-
fail(thrwbl);
119-
progress.finish();
108+
@Override
109+
public void bgTaskFailed(final Throwable ex) {
110+
final String msg = "Failed to check for code reviews";
111+
log.log(Level.INFO, msg, ex);
112+
if (!beQuiet) {
113+
dialogs.displayError(msg, ex);
120114
}
115+
}
121116

122-
});
123-
} catch (TmcCoreException ex) {
124-
progress.finish();
125-
Exceptions.printStackTrace(ex);
126-
}
127-
}
128-
129-
private void success(List<Review> list) {
130-
boolean newReviews = reviewDb.setReviews(list);
131-
if (!newReviews && notifyAboutNoNewReviews) {
132-
dialogs.displayMessage("You have no unread code reviews.");
133-
}
134-
}
117+
@Override
118+
public void bgTaskCancelled() {
119+
}
120+
};
121+
BgTask.start("Checking for code reviews", new CancellableCallable<List<Review>>() {
122+
private ListenableFuture<List<Review>> lf;
123+
@Override
124+
public List<Review> call() throws Exception {
125+
lf = TmcCoreSingleton.getInstance().getNewReviews(courseDb.getCurrentCourse());
126+
return lf.get();
127+
}
135128

136-
private void fail(Throwable thrwbl) {
137-
final String msg = "Failed to check for code reviews";
138-
log.log(Level.INFO, msg, thrwbl);
139-
if (!beQuiet) {
140-
dialogs.displayError(msg, thrwbl);
141-
}
129+
@Override
130+
public boolean cancel() {
131+
return lf.cancel(true);
132+
}
133+
}, bgTaskListener);
142134
}
143135
}

0 commit comments

Comments
 (0)