Skip to content

Commit c019e8b

Browse files
committed
Merge pull request #21 from rage/reviews
Code review & imports changed to TmcCore Review
2 parents 130624e + 6e3dac5 commit c019e8b

File tree

7 files changed

+56
-162
lines changed

7 files changed

+56
-162
lines changed
Lines changed: 51 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
package fi.helsinki.cs.tmc.actions;
22

3+
import com.google.common.util.concurrent.FutureCallback;
4+
import com.google.common.util.concurrent.Futures;
5+
import com.google.common.util.concurrent.ListenableFuture;
36
import hy.tmc.core.domain.Course;
4-
import fi.helsinki.cs.tmc.data.Review;
7+
import hy.tmc.core.domain.Review;
58
import fi.helsinki.cs.tmc.model.CourseDb;
9+
import fi.helsinki.cs.tmc.model.NBTmcSettings;
610
import fi.helsinki.cs.tmc.model.ReviewDb;
711
import fi.helsinki.cs.tmc.model.ServerAccess;
12+
import fi.helsinki.cs.tmc.model.TmcCoreSingleton;
813
import fi.helsinki.cs.tmc.ui.ConvenientDialogDisplayer;
914
import fi.helsinki.cs.tmc.utilities.BgTask;
1015
import fi.helsinki.cs.tmc.utilities.BgTaskListener;
16+
import hy.tmc.core.exceptions.TmcCoreException;
1117
import java.awt.event.ActionEvent;
1218
import java.awt.event.ActionListener;
1319
import java.util.List;
@@ -18,24 +24,26 @@
1824
import org.openide.awt.ActionReference;
1925
import org.openide.awt.ActionReferences;
2026
import org.openide.awt.ActionRegistration;
27+
import org.openide.util.Exceptions;
2128
import org.openide.util.NbBundle;
2229

2330
@ActionID(category = "TMC",
24-
id = "fi.helsinki.cs.tmc.actions.CheckForNewReviews")
31+
id = "fi.helsinki.cs.tmc.actions.CheckForNewReviews")
2532
@ActionRegistration(displayName = "#CTL_CheckForNewReviews")
2633
@ActionReferences({
2734
@ActionReference(path = "Menu/TM&C", position = -40)
2835
})
2936
@NbBundle.Messages("CTL_CheckForNewReviews=Check for new code &reviews")
3037
public class CheckForNewReviews implements ActionListener, Runnable {
38+
3139
private static final Logger log = Logger.getLogger(CheckForNewReviews.class.getName());
32-
40+
3341
private static CheckForNewReviews instance;
34-
42+
3543
public static void startTimer() {
3644
if (instance == null) {
3745
instance = new CheckForNewReviews(true, false, false);
38-
int interval = 20*60*1000; // 20 minutes
46+
int interval = 20 * 60 * 1000; // 20 minutes
3947
javax.swing.Timer timer = new javax.swing.Timer(interval, instance);
4048
timer.setRepeats(true);
4149
timer.start();
@@ -44,15 +52,15 @@ public static void startTimer() {
4452
log.warning("CheckForNewReviews.startTimer() called twice");
4553
}
4654
}
47-
55+
4856
private ServerAccess serverAccess;
4957
private CourseDb courseDb;
5058
private ReviewDb reviewDb;
5159
private ConvenientDialogDisplayer dialogs;
5260
private boolean beQuiet;
5361
private boolean resetNotifications;
5462
private boolean notifyAboutNoNewReviews;
55-
63+
5664
CheckForNewReviews() {
5765
this(false, true, true);
5866
}
@@ -71,13 +79,13 @@ public static void startTimer() {
7179
public void actionPerformed(ActionEvent e) {
7280
run();
7381
}
74-
82+
7583
@Override
7684
public void run() {
7785
if (resetNotifications) {
7886
reviewDb.forgetReviewsNotifiedAbout();
7987
}
80-
88+
8189
Course course = courseDb.getCurrentCourse();
8290
if (course == null) {
8391
if (!beQuiet) {
@@ -88,28 +96,43 @@ public void run() {
8896
if (course.getReviewsUrl() == null) {
8997
return;
9098
}
91-
92-
BgTask.start("Checking for code reviews", serverAccess.getDownloadingReviewListTask(course), new BgTaskListener<List<Review>>() {
93-
@Override
94-
public void bgTaskReady(List<Review> result) {
95-
boolean newReviews = reviewDb.setReviews(result);
96-
if (!newReviews && notifyAboutNoNewReviews) {
97-
dialogs.displayMessage("You have no unread code reviews.");
99+
getReviews(course);
100+
101+
}
102+
103+
private void getReviews(Course course){
104+
try {
105+
ListenableFuture<List<Review>> reviews = TmcCoreSingleton.getInstance().getNewReviews(course, NBTmcSettings.getDefault());
106+
Futures.addCallback(reviews, new FutureCallback<List<Review>>() {
107+
108+
@Override
109+
public void onSuccess(List<Review> v) {
110+
success(v);
98111
}
99-
}
100112

101-
@Override
102-
public void bgTaskFailed(final Throwable ex) {
103-
final String msg = "Failed to check for code reviews";
104-
log.log(Level.INFO, msg, ex);
105-
if (!beQuiet) {
106-
dialogs.displayError(msg, ex);
113+
@Override
114+
public void onFailure(Throwable thrwbl) {
115+
fail(thrwbl);
107116
}
108-
}
109117

110-
@Override
111-
public void bgTaskCancelled() {
112-
}
113-
});
118+
});
119+
} catch (TmcCoreException ex) {
120+
Exceptions.printStackTrace(ex);
121+
}
122+
}
123+
124+
private void success(List<Review> list) {
125+
boolean newReviews = reviewDb.setReviews(list);
126+
if (!newReviews && notifyAboutNoNewReviews) {
127+
dialogs.displayMessage("You have no unread code reviews.");
128+
}
129+
}
130+
131+
private void fail(Throwable thrwbl) {
132+
final String msg = "Failed to check for code reviews";
133+
log.log(Level.INFO, msg, thrwbl);
134+
if (!beQuiet) {
135+
dialogs.displayError(msg, thrwbl);
136+
}
114137
}
115138
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package fi.helsinki.cs.tmc.actions;
22

33
import com.google.gson.Gson;
4-
import fi.helsinki.cs.tmc.data.Review;
4+
import hy.tmc.core.domain.Review;
55
import fi.helsinki.cs.tmc.events.TmcEventBus;
66
import fi.helsinki.cs.tmc.events.TmcEventListener;
77
import fi.helsinki.cs.tmc.model.CourseDb;

tmc-plugin/src/fi/helsinki/cs/tmc/data/Review.java

Lines changed: 0 additions & 129 deletions
This file was deleted.

tmc-plugin/src/fi/helsinki/cs/tmc/data/serialization/ReviewListParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.google.gson.Gson;
44
import com.google.gson.GsonBuilder;
5-
import fi.helsinki.cs.tmc.data.Review;
5+
import hy.tmc.core.domain.Review;
66
import java.util.Arrays;
77
import java.util.Date;
88
import java.util.List;

tmc-plugin/src/fi/helsinki/cs/tmc/model/ReviewDb.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package fi.helsinki.cs.tmc.model;
22

3-
import fi.helsinki.cs.tmc.data.Review;
3+
import hy.tmc.core.domain.Review;
44
import fi.helsinki.cs.tmc.events.TmcEvent;
55
import fi.helsinki.cs.tmc.events.TmcEventBus;
66
import java.util.ArrayList;

tmc-plugin/src/fi/helsinki/cs/tmc/model/ServerAccess.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import hy.tmc.core.domain.Course;
1212
import hy.tmc.core.domain.Exercise;
1313
import fi.helsinki.cs.tmc.data.FeedbackAnswer;
14-
import fi.helsinki.cs.tmc.data.Review;
14+
import hy.tmc.core.domain.Review;
1515
import fi.helsinki.cs.tmc.data.serialization.CourseInfoParser;
1616
import fi.helsinki.cs.tmc.data.serialization.CourseListParser;
1717
import fi.helsinki.cs.tmc.data.serialization.ReviewListParser;

tmc-plugin/src/fi/helsinki/cs/tmc/ui/CodeReviewDialog.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package fi.helsinki.cs.tmc.ui;
22

3-
import fi.helsinki.cs.tmc.data.Review;
3+
import hy.tmc.core.domain.Review;
44
import java.awt.Dimension;
55
import java.awt.Toolkit;
66
import java.awt.event.ActionListener;

0 commit comments

Comments
 (0)