12
12
import fi .helsinki .cs .tmc .utilities .BgTaskListener ;
13
13
import fi .helsinki .cs .tmc .ui .ConvenientDialogDisplayer ;
14
14
import fi .helsinki .cs .tmc .utilities .BgTask ;
15
- import fi .helsinki .cs .tmc .utilities .BgTaskListenerList ;
16
15
import fi .helsinki .cs .tmc .utilities .CancellableCallable ;
16
+ import fi .helsinki .cs .tmc .utilities .FutureCallbackList ;
17
17
import hy .tmc .core .TmcCore ;
18
18
import hy .tmc .core .exceptions .TmcCoreException ;
19
19
import java .util .ArrayList ;
@@ -33,7 +33,8 @@ public final class RefreshCoursesAction {
33
33
private CourseDb courseDb ;
34
34
private ConvenientDialogDisplayer dialogs ;
35
35
36
- private BgTaskListenerList <List <Course >> listeners ;
36
+ //private BgTaskListenerList<List<Course>> listeners;
37
+ private FutureCallbackList <List <Course >> callbacks ;
37
38
private final TmcCore tmcCore ;
38
39
private final NBTmcSettings tmcSettings ;
39
40
@@ -48,124 +49,134 @@ public RefreshCoursesAction(NBTmcSettings settings) {
48
49
this .courseDb = CourseDb .getInstance ();
49
50
this .dialogs = ConvenientDialogDisplayer .getDefault ();
50
51
51
- this .listeners = new BgTaskListenerList <List <Course >>();
52
+ //this.listeners = new BgTaskListenerList<List<Course>>();
53
+ this .callbacks = new FutureCallbackList <List <Course >>();
52
54
this .tmcCore = TmcCoreSingleton .getInstance ();
53
55
}
54
56
55
57
public RefreshCoursesAction addDefaultListener (boolean showDialogOnError , boolean updateCourseDb ) {
56
- this .listeners .addListener (new DefaultListener (showDialogOnError , updateCourseDb ));
58
+ this .callbacks .addListener (new DefaultListener (showDialogOnError , updateCourseDb ));
57
59
return this ;
58
60
}
59
61
60
- public RefreshCoursesAction addListener (BgTaskListener <List <Course >> listener ) {
61
- this .listeners .addListener (listener );
62
+ public RefreshCoursesAction addListener (FutureCallback <List <Course >> callbacks ) {
63
+ this .callbacks .addListener (callbacks );
62
64
return this ;
63
65
}
64
66
65
67
//HUOM metodissa oldRun on vanha toteutus. Se hakee palvelmelta nykyisen kurssin "fullcourse info".
66
- public void newrun () {
68
+ public void run () {
67
69
try {
68
70
ListenableFuture <List <Course >> listCourses = this .tmcCore .listCourses (tmcSettings );
69
71
Futures .addCallback (listCourses , new FutureCallback <List <Course >>() {
70
72
@ Override
71
- public void onSuccess (List <Course > courses ) {
73
+ public void onSuccess (final List <Course > courses ) {
72
74
Course currentCourse = CourseListUtils .getCourseByName (courses , courseDb .getCurrentCourseName ());
73
75
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
- );
76
+ try {
77
+ System .out .println ("DETAILS URL: " + currentCourse .getDetailsUrl ());
78
+ ListenableFuture <Course > courseFuture = tmcCore .getCourse (tmcSettings , currentCourse .getDetailsUrl ());
79
+ Futures .addCallback (courseFuture , new FutureCallback <Course >() {
80
+ @ Override
81
+ public void onSuccess (Course detailedCourse ) {
82
+ detailedCourse .setExercisesLoaded (true );
83
+ ArrayList <Course > finalCourses = new ArrayList <Course >();
84
+ for (Course course : courses ){
85
+ if (course .getName ().equals (detailedCourse .getName ())) {
86
+ finalCourses .add (detailedCourse );
87
+ } else {
88
+ finalCourses .add (course );
89
+ }
90
+ }
91
+ callbacks .onSuccess (finalCourses );
92
+ }
93
+
94
+ @ Override
95
+ public void onFailure (Throwable ex ) {
96
+ log .log (Level .INFO , "Failed to download current course info." , ex );
97
+ callbacks .onFailure (ex );
98
+ }
99
+ });
100
+ } catch (TmcCoreException ex ) {
101
+ Exceptions .printStackTrace (ex );
102
+ callbacks .onFailure (ex );
103
+ }
94
104
} else {
95
- listeners . bgTaskReady (courses );
105
+ callbacks . onSuccess (courses );
96
106
}
97
107
}
98
108
99
109
@ Override
100
110
public void onFailure (Throwable ex ) {
101
111
log .log (Level .INFO , "Failed to download current course info." , ex );
102
- listeners . bgTaskFailed (ex );
112
+ callbacks . onFailure (ex );
103
113
}
104
114
}
105
115
);
106
116
} catch (TmcCoreException ex ) {
107
117
Exceptions .printStackTrace (ex );
118
+ callbacks .onFailure (ex );
108
119
}
109
120
}
110
121
111
- public void run () {
112
- CancellableCallable <List <Course >> courseListTask = serverAccess .getDownloadingCourseListTask ();
113
- BgTask .start ("Refreshing course list" , courseListTask , new BgTaskListener <List <Course >>() {
114
-
115
- @ Override
116
- public void bgTaskReady (final List <Course > courses ) {
117
- Course currentCourseStub = CourseListUtils .getCourseByName (courses , courseDb .getCurrentCourseName ());
118
- // CurrentCourseStub on null jos on vanhentunut/ ei enää olemassa servulla
119
- if (currentCourseStub != null ) {
120
- // Jos on olemassa servulla, päivitetään lokaali kurssi servun kurssia vastaavaksi
121
- CancellableCallable <Course > currentCourseTask = serverAccess .getFullCourseInfoTask (currentCourseStub );
122
-
123
- BgTask .start ("Loading course" , currentCourseTask , new BgTaskListener <Course >() {
124
- @ Override
125
- public void bgTaskReady (Course currentCourse ) {
126
- currentCourse .setExercisesLoaded (true );
127
-
128
- ArrayList <Course > finalCourses = new ArrayList <Course >();
129
- for (Course course : courses ) {
130
- if (course .getName ().equals (currentCourse .getName ())) {
131
- finalCourses .add (currentCourse );
132
- } else {
133
- finalCourses .add (course );
134
- }
135
- }
136
- listeners .bgTaskReady (finalCourses );
137
- }
138
-
139
- @ Override
140
- public void bgTaskCancelled () {
141
- listeners .bgTaskCancelled ();
142
- }
143
-
144
- @ Override
145
- public void bgTaskFailed (Throwable ex ) {
146
- log .log (Level .INFO , "Failed to download current course info." , ex );
147
- listeners .bgTaskFailed (ex );
148
- }
149
- });
150
- } else {
151
- listeners .bgTaskReady (courses );
152
- }
153
- }
154
-
155
- @ Override
156
- public void bgTaskCancelled () {
157
- listeners .bgTaskCancelled ();
158
- }
159
-
160
- @ Override
161
- public void bgTaskFailed (Throwable ex ) {
162
- log .log (Level .INFO , "Failed to download course list." , ex );
163
- listeners .bgTaskFailed (ex );
164
- }
165
- });
166
- }
167
-
168
- private class DefaultListener implements BgTaskListener <List <Course >> {
122
+ // public void run() {
123
+ // CancellableCallable<List<Course>> courseListTask = serverAccess.getDownloadingCourseListTask();
124
+ // BgTask.start("Refreshing course list", courseListTask, new BgTaskListener<List<Course>>() {
125
+ //
126
+ // @Override
127
+ // public void bgTaskReady(final List<Course> courses) {
128
+ // Course currentCourseStub = CourseListUtils.getCourseByName(courses, courseDb.getCurrentCourseName());
129
+ // // CurrentCourseStub on null jos on vanhentunut/ ei enää olemassa servulla
130
+ // if (currentCourseStub != null) {
131
+ // // Jos on olemassa servulla, päivitetään lokaali kurssi servun kurssia vastaavaksi
132
+ // CancellableCallable<Course> currentCourseTask = serverAccess.getFullCourseInfoTask(currentCourseStub);
133
+ //
134
+ // BgTask.start("Loading course", currentCourseTask, new BgTaskListener<Course>() {
135
+ // @Override
136
+ // public void bgTaskReady(Course currentCourse) {
137
+ // currentCourse.setExercisesLoaded(true);
138
+ //
139
+ // ArrayList<Course> finalCourses = new ArrayList<Course>();
140
+ // for (Course course : courses) {
141
+ // if (course.getName().equals(currentCourse.getName())) {
142
+ // finalCourses.add(currentCourse);
143
+ // } else {
144
+ // finalCourses.add(course);
145
+ // }
146
+ // }
147
+ // listeners.bgTaskReady(finalCourses);
148
+ // }
149
+ //
150
+ // @Override
151
+ // public void bgTaskCancelled() {
152
+ // listeners.bgTaskCancelled();
153
+ // }
154
+ //
155
+ // @Override
156
+ // public void bgTaskFailed(Throwable ex) {
157
+ // log.log(Level.INFO, "Failed to download current course info.", ex);
158
+ // listeners.bgTaskFailed(ex);
159
+ // }
160
+ // });
161
+ // } else {
162
+ // listeners.bgTaskReady(courses);
163
+ // }
164
+ // }
165
+ //
166
+ // @Override
167
+ // public void bgTaskCancelled() {
168
+ // listeners.bgTaskCancelled();
169
+ // }
170
+ //
171
+ // @Override
172
+ // public void bgTaskFailed(Throwable ex) {
173
+ // log.log(Level.INFO, "Failed to download course list.", ex);
174
+ // listeners.bgTaskFailed(ex);
175
+ // }
176
+ // });
177
+ // }
178
+
179
+ private class DefaultListener implements FutureCallback <List <Course >> {
169
180
170
181
private final boolean showDialogOnError ;
171
182
private final boolean updateCourseDb ;
@@ -175,19 +186,33 @@ public DefaultListener(boolean showDialogOnError, boolean updateCourseDb) {
175
186
this .updateCourseDb = updateCourseDb ;
176
187
}
177
188
189
+ // @Override
190
+ // public void bgTaskReady(List<Course> result) {
191
+ // if (updateCourseDb) {
192
+ // courseDb.setAvailableCourses(result);
193
+ // }
194
+ // }
195
+ //
196
+ // @Override
197
+ // public void bgTaskCancelled() {
198
+ // }
199
+ //
200
+ // @Override
201
+ // public void bgTaskFailed(Throwable ex) {
202
+ // if (showDialogOnError) {
203
+ // dialogs.displayError("Course refresh failed.\n" + ServerErrorHelper.getServerExceptionMsg(ex));
204
+ // }
205
+ // }
206
+
178
207
@ Override
179
- public void bgTaskReady (List <Course > result ) {
208
+ public void onSuccess (List <Course > result ) {
180
209
if (updateCourseDb ) {
181
210
courseDb .setAvailableCourses (result );
182
211
}
183
212
}
184
213
185
214
@ Override
186
- public void bgTaskCancelled () {
187
- }
188
-
189
- @ Override
190
- public void bgTaskFailed (Throwable ex ) {
215
+ public void onFailure (Throwable ex ) {
191
216
if (showDialogOnError ) {
192
217
dialogs .displayError ("Course refresh failed.\n " + ServerErrorHelper .getServerExceptionMsg (ex ));
193
218
}
0 commit comments