Skip to content

Commit 078b355

Browse files
committed
Merge branch 'core_integration' of github.com:rage/tmc-netbeans into core_integration
Conflicts: tmc-plugin/src/fi/helsinki/cs/tmc/actions/RefreshCoursesAction.java
2 parents 49daeb7 + 38a30f6 commit 078b355

24 files changed

+214
-127
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import fi.helsinki.cs.tmc.model.LocalExerciseStatus;
77
import fi.helsinki.cs.tmc.model.ObsoleteClientException;
88
import fi.helsinki.cs.tmc.model.ServerAccess;
9-
import fi.helsinki.cs.tmc.model.TmcSettings;
9+
import fi.helsinki.cs.tmc.model.NBTmcSettings;
1010
import fi.helsinki.cs.tmc.ui.DownloadOrUpdateExercisesDialog;
1111
import fi.helsinki.cs.tmc.ui.ConvenientDialogDisplayer;
1212
import fi.helsinki.cs.tmc.ui.TmcNotificationDisplayer;
@@ -74,7 +74,7 @@ public void actionPerformed(ActionEvent e) {
7474
public void run() {
7575
final Course currentCourseBeforeUpdate = courseDb.getCurrentCourse();
7676

77-
if (backgroundCheck && !TmcSettings.getDefault().isCheckingForUpdatesInTheBackground()) {
77+
if (backgroundCheck && !NBTmcSettings.getDefault().isCheckingForUpdatesInTheBackground()) {
7878
return;
7979
}
8080

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import fi.helsinki.cs.tmc.model.CourseDb;
55
import fi.helsinki.cs.tmc.model.ProjectMediator;
66
import fi.helsinki.cs.tmc.model.TmcProjectInfo;
7-
import fi.helsinki.cs.tmc.model.TmcSettings;
7+
import fi.helsinki.cs.tmc.model.NBTmcSettings;
88
import fi.helsinki.cs.tmc.ui.TmcNotificationDisplayer;
99
import java.awt.event.ActionEvent;
1010
import java.awt.event.ActionListener;
@@ -16,7 +16,7 @@
1616

1717
public class CheckForUnopenedExercises implements ActionListener {
1818
public static boolean shouldRunOnStartup() {
19-
return TmcSettings.getDefault().isCheckingForUnopenedAtStartup();
19+
return NBTmcSettings.getDefault().isCheckingForUnopenedAtStartup();
2020
}
2121

2222
private static final TmcNotificationDisplayer.SingletonToken notifierToken = TmcNotificationDisplayer.createSingletonToken();

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@
1010
import fi.helsinki.cs.tmc.ui.DownloadOrUpdateExercisesDialog;
1111
import fi.helsinki.cs.tmc.utilities.BgTask;
1212
import fi.helsinki.cs.tmc.utilities.BgTaskListener;
13+
import hy.tmc.core.exceptions.TmcCoreException;
1314
import java.awt.event.ActionEvent;
1415
import java.awt.event.ActionListener;
1516
import java.util.Collections;
1617
import java.util.List;
1718
import org.openide.awt.ActionID;
1819
import org.openide.awt.ActionReference;
1920
import org.openide.awt.ActionRegistration;
21+
import org.openide.util.Exceptions;
2022
import org.openide.util.NbBundle.Messages;
2123

2224
@ActionID(category = "TMC", id = "fi.helsinki.cs.tmc.actions.DownloadCompletedExercises")
@@ -28,13 +30,13 @@ public final class DownloadCompletedExercises implements ActionListener {
2830
private ServerAccess serverAccess;
2931
private CourseDb courseDb;
3032
private ConvenientDialogDisplayer dialogs;
31-
33+
3234
public DownloadCompletedExercises() {
3335
this.serverAccess = new ServerAccess();
3436
this.courseDb = CourseDb.getInstance();
3537
this.dialogs = ConvenientDialogDisplayer.getDefault();
3638
}
37-
39+
3840
@Override
3941
public void actionPerformed(ActionEvent e) {
4042
final Course currentCourse = courseDb.getCurrentCourse();

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import fi.helsinki.cs.tmc.model.ProjectMediator;
77
import fi.helsinki.cs.tmc.model.ServerAccess;
88
import fi.helsinki.cs.tmc.model.TmcProjectInfo;
9-
import fi.helsinki.cs.tmc.model.TmcSettings;
9+
import fi.helsinki.cs.tmc.model.NBTmcSettings;
1010
import fi.helsinki.cs.tmc.ui.ConvenientDialogDisplayer;
1111
import fi.helsinki.cs.tmc.utilities.BgTask;
1212
import fi.helsinki.cs.tmc.utilities.BgTaskListener;
@@ -119,7 +119,7 @@ public Void apply(Boolean yes) {
119119
}
120120

121121
private void downloadSolution(final Exercise ex, final TmcProjectInfo proj) {
122-
ServerAccess serverAccess = new ServerAccess(TmcSettings.getDefault());
122+
ServerAccess serverAccess = new ServerAccess(NBTmcSettings.getDefault());
123123
CancellableCallable<byte[]> downloadTask = serverAccess.getDownloadingExerciseSolutionZipTask(ex);
124124
BgTask.start("Downloading solution for " + ex.getName(), downloadTask, new BgTaskListener<byte[]>() {
125125
@Override

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import fi.helsinki.cs.tmc.model.ProjectMediator;
66
import fi.helsinki.cs.tmc.model.ServerAccess;
77
import fi.helsinki.cs.tmc.model.TmcProjectInfo;
8-
import fi.helsinki.cs.tmc.model.TmcSettings;
8+
import fi.helsinki.cs.tmc.model.NBTmcSettings;
99
import fi.helsinki.cs.tmc.ui.ConvenientDialogDisplayer;
1010
import fi.helsinki.cs.tmc.ui.PastebinDialog;
1111
import fi.helsinki.cs.tmc.ui.PastebinResponseDialog;
@@ -46,13 +46,13 @@
4646
public final class PastebinAction extends AbstractExerciseSensitiveAction {
4747

4848
private static final Logger log = Logger.getLogger(RequestReviewAction.class.getName());
49-
private TmcSettings settings;
49+
private NBTmcSettings settings;
5050
private CourseDb courseDb;
5151
private ProjectMediator projectMediator;
5252
private ConvenientDialogDisplayer dialogs;
5353

5454
public PastebinAction() {
55-
this.settings = TmcSettings.getDefault();
55+
this.settings = NBTmcSettings.getDefault();
5656
this.courseDb = CourseDb.getInstance();
5757
this.projectMediator = ProjectMediator.getInstance();
5858
this.dialogs = ConvenientDialogDisplayer.getDefault();

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

Lines changed: 65 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
import fi.helsinki.cs.tmc.data.CourseListUtils;
88
import fi.helsinki.cs.tmc.model.CourseDb;
99
import fi.helsinki.cs.tmc.model.ServerAccess;
10-
import fi.helsinki.cs.tmc.model.TmcSettings;
10+
import fi.helsinki.cs.tmc.model.TmcCoreSingleton;
11+
import fi.helsinki.cs.tmc.model.NBTmcSettings;
1112
import fi.helsinki.cs.tmc.utilities.BgTaskListener;
1213
import fi.helsinki.cs.tmc.ui.ConvenientDialogDisplayer;
1314
import fi.helsinki.cs.tmc.utilities.BgTask;
@@ -25,29 +26,30 @@
2526
* Refreshes the course list in the background.
2627
*/
2728
public final class RefreshCoursesAction {
29+
2830
private final static Logger log = Logger.getLogger(RefreshCoursesAction.class.getName());
2931

3032
private ServerAccess serverAccess;
3133
private CourseDb courseDb;
3234
private ConvenientDialogDisplayer dialogs;
33-
35+
3436
private BgTaskListenerList<List<Course>> listeners;
3537
private final TmcCore tmcCore;
36-
private final TmcSettings tmcSettings;
38+
private final NBTmcSettings tmcSettings;
3739

3840
public RefreshCoursesAction() {
39-
this(TmcSettings.getDefault());
41+
this(NBTmcSettings.getDefault());
4042
}
41-
42-
public RefreshCoursesAction(TmcSettings settings) {
43+
44+
public RefreshCoursesAction(NBTmcSettings settings) {
4345
this.tmcSettings = settings;
4446
this.serverAccess = new ServerAccess(settings);
4547
this.serverAccess.setSettings(settings);
4648
this.courseDb = CourseDb.getInstance();
4749
this.dialogs = ConvenientDialogDisplayer.getDefault();
4850

4951
this.listeners = new BgTaskListenerList<List<Course>>();
50-
this.tmcCore = new TmcCore();
52+
this.tmcCore = TmcCoreSingleton.getInstance();
5153
}
5254

5355
public RefreshCoursesAction addDefaultListener(boolean showDialogOnError, boolean updateCourseDb) {
@@ -59,46 +61,70 @@ public RefreshCoursesAction addListener(BgTaskListener<List<Course>> listener) {
5961
this.listeners.addListener(listener);
6062
return this;
6163
}
62-
63-
public void run() {
64-
// try {
65-
// Credentials credentials = new Credentials(this.tmcSettings.getUsername(),
66-
// this.tmcSettings.getPassword()) {};
67-
// System.out.println(credentials);
68-
// ListenableFuture<Boolean> login = this.tmcCore.login(credentials, tmcSettings.getServerBaseUrl()+"/user");
69-
// Futures.addCallback(login, new FutureCallback<Boolean>() {
70-
// @Override
71-
// public void onSuccess(Boolean loginSuccess) {
72-
//
73-
// }
74-
//
75-
// @Override
76-
// public void onFailure(Throwable thrwbl) {
77-
// System.out.println("LOGIN LATAUS FEILASI1: " );
78-
// Exceptions.printStackTrace(thrwbl);
79-
// }
80-
// });
81-
// } catch (TmcCoreException ex) {
82-
// Exceptions.printStackTrace(ex);
83-
// }
64+
65+
//HUOM metodissa oldRun on vanha toteutus. Se hakee palvelmelta nykyisen kurssin "fullcourse info".
66+
public void newrun() {
67+
try {
68+
ListenableFuture<List<Course>> listCourses = this.tmcCore.listCourses(tmcSettings);
69+
Futures.addCallback(listCourses, new FutureCallback<List<Course>>() {
70+
@Override
71+
public void onSuccess(List<Course> courses) {
72+
Course currentCourse = CourseListUtils.getCourseByName(courses, courseDb.getCurrentCourseName());
73+
if (currentCourse != null) {
74+
ListenableFuture<Course> courseFuture = tmcCore.getCourse(tmcSettings, currentCourse.getDetailsUrl());
75+
Futures.addCallback(courseFuture, new FutureCallback<Course>()
76+
@Override
77+
public void onSuccess(Course detailedCourse) {
78+
detailedCourse.setExercisesLoaded(true);
79+
ArrayList<Course> finalCourses = new ArrayList<Course>();
80+
for(Course course: courses){
81+
if(course.getName().equals(detailedCourse.getName())){
82+
finalCourses.add(detailedCourses);
83+
} else {
84+
finalCourses.add(course);
85+
}
86+
}
87+
listeners.bgTaskReady(finalCourses);
88+
}
89+
@Override
90+
public void onFailure() {
91+
92+
}
93+
);
94+
} else {
95+
listeners.bgTaskReady(courses);
96+
}
97+
}
98+
99+
@Override
100+
public void onFailure(Throwable ex) {
101+
log.log(Level.INFO, "Failed to download current course info.", ex);
102+
listeners.bgTaskFailed(ex);
103+
}
104+
}
105+
);
106+
} catch (TmcCoreException ex) {
107+
Exceptions.printStackTrace(ex);
108+
}
84109
}
85110

86-
public void oldRun() {
87-
111+
public void run() {
88112
CancellableCallable<List<Course>> courseListTask = serverAccess.getDownloadingCourseListTask();
89113
BgTask.start("Refreshing course list", courseListTask, new BgTaskListener<List<Course>>() {
90-
114+
91115
@Override
92116
public void bgTaskReady(final List<Course> courses) {
93117
Course currentCourseStub = CourseListUtils.getCourseByName(courses, courseDb.getCurrentCourseName());
118+
// CurrentCourseStub on null jos on vanhentunut/ ei enää olemassa servulla
94119
if (currentCourseStub != null) {
120+
// Jos on olemassa servulla, päivitetään lokaali kurssi servun kurssia vastaavaksi
95121
CancellableCallable<Course> currentCourseTask = serverAccess.getFullCourseInfoTask(currentCourseStub);
96-
122+
97123
BgTask.start("Loading course", currentCourseTask, new BgTaskListener<Course>() {
98124
@Override
99125
public void bgTaskReady(Course currentCourse) {
100126
currentCourse.setExercisesLoaded(true);
101-
127+
102128
ArrayList<Course> finalCourses = new ArrayList<Course>();
103129
for (Course course : courses) {
104130
if (course.getName().equals(currentCourse.getName())) {
@@ -109,29 +135,28 @@ public void bgTaskReady(Course currentCourse) {
109135
}
110136
listeners.bgTaskReady(finalCourses);
111137
}
112-
138+
113139
@Override
114140
public void bgTaskCancelled() {
115141
listeners.bgTaskCancelled();
116142
}
117-
143+
118144
@Override
119145
public void bgTaskFailed(Throwable ex) {
120146
log.log(Level.INFO, "Failed to download current course info.", ex);
121147
listeners.bgTaskFailed(ex);
122148
}
123149
});
124-
125150
} else {
126151
listeners.bgTaskReady(courses);
127152
}
128153
}
129-
154+
130155
@Override
131156
public void bgTaskCancelled() {
132157
listeners.bgTaskCancelled();
133158
}
134-
159+
135160
@Override
136161
public void bgTaskFailed(Throwable ex) {
137162
log.log(Level.INFO, "Failed to download course list.", ex);
@@ -141,6 +166,7 @@ public void bgTaskFailed(Throwable ex) {
141166
}
142167

143168
private class DefaultListener implements BgTaskListener<List<Course>> {
169+
144170
private final boolean showDialogOnError;
145171
private final boolean updateCourseDb;
146172

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import fi.helsinki.cs.tmc.model.ProjectMediator;
88
import fi.helsinki.cs.tmc.model.ServerAccess;
99
import fi.helsinki.cs.tmc.model.TmcProjectInfo;
10-
import fi.helsinki.cs.tmc.model.TmcSettings;
10+
import fi.helsinki.cs.tmc.model.NBTmcSettings;
1111
import fi.helsinki.cs.tmc.spyware.LoggableEvent;
1212
import fi.helsinki.cs.tmc.ui.CodeReviewRequestDialog;
1313
import fi.helsinki.cs.tmc.ui.ConvenientDialogDisplayer;
@@ -44,14 +44,14 @@
4444
public class RequestReviewAction extends AbstractExerciseSensitiveAction {
4545

4646
private static final Logger log = Logger.getLogger(RequestReviewAction.class.getName());
47-
private TmcSettings settings;
47+
private NBTmcSettings settings;
4848
private CourseDb courseDb;
4949
private ProjectMediator projectMediator;
5050
private ConvenientDialogDisplayer dialogs;
5151
private TmcEventBus eventBus;
5252

5353
public RequestReviewAction() {
54-
this.settings = TmcSettings.getDefault();
54+
this.settings = NBTmcSettings.getDefault();
5555
this.courseDb = CourseDb.getInstance();
5656
this.projectMediator = ProjectMediator.getInstance();
5757
this.dialogs = ConvenientDialogDisplayer.getDefault();

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import fi.helsinki.cs.tmc.utilities.BgTask;
1515
import fi.helsinki.cs.tmc.utilities.BgTaskListener;
1616
import fi.helsinki.cs.tmc.utilities.CancellableCallable;
17+
import hy.tmc.core.exceptions.TmcCoreException;
1718
import java.awt.Image;
1819
import java.awt.event.ActionEvent;
1920
import java.awt.event.ActionListener;
@@ -24,6 +25,7 @@
2425
import javax.imageio.ImageIO;
2526
import javax.swing.Icon;
2627
import javax.swing.SwingUtilities;
28+
import org.openide.util.Exceptions;
2729
import org.openide.util.ImageUtilities;
2830

2931
public class ReviewEventListener extends TmcEventListener {
@@ -68,7 +70,11 @@ public void receive(ReviewDb.NewUnreadReviewEvent e) throws Throwable {
6870
SwingUtilities.invokeLater(new Runnable() {
6971
@Override
7072
public void run() {
71-
refreshCourseDb();
73+
try {
74+
refreshCourseDb();
75+
} catch (TmcCoreException ex) {
76+
Exceptions.printStackTrace(ex);
77+
}
7278

7379
String title = "Code review";
7480
String msg = "Code review for " + review.getExerciseName() + " ready.";
@@ -90,7 +96,7 @@ public void actionPerformed(ActionEvent e) {
9096
});
9197
}
9298

93-
private void refreshCourseDb() {
99+
private void refreshCourseDb() throws TmcCoreException {
94100
// Exercise properties have probably changed
95101
new RefreshCoursesAction().addDefaultListener(false, true).run();
96102
}

0 commit comments

Comments
 (0)