Lecturer feching delayed
This commit is contained in:
@@ -312,12 +312,19 @@ public class ModulesList extends HTTPService {
|
||||
return;
|
||||
}
|
||||
final int[] latch = {sites[0].length()};
|
||||
// fetching lecturers takes a lot of time, send success twice: first without lecturers
|
||||
final int[] latchNoLecturers = {sites[0].length()};
|
||||
if (sites[0].length() == 0) {
|
||||
successCallback.onResponse(modulesKVV);
|
||||
return;
|
||||
}
|
||||
for (int i = 0; i < sites[0].length(); i++) {
|
||||
try {
|
||||
JSONObject site = sites[0].getJSONObject(i);
|
||||
String courseId = site.getString("courseId");
|
||||
if (cacheBBCourse().hasKVVCourseID(courseId)) {
|
||||
if (--latch[0] == 0) successCallback.onResponse(modulesKVV);
|
||||
if (--latchNoLecturers[0] == 0) successCallback.onResponse(modulesKVV);
|
||||
continue;
|
||||
}
|
||||
Modules.Module bbCourse = cacheBBCourse().getBBCourse(courseId);
|
||||
@@ -325,12 +332,13 @@ public class ModulesList extends HTTPService {
|
||||
bbCourse = bbCourse.clone();
|
||||
modulesKVV.addModule(bbCourse);
|
||||
if (--latch[0] == 0) successCallback.onResponse(modulesKVV);
|
||||
if (--latchNoLecturers[0] == 0) successCallback.onResponse(modulesKVV);
|
||||
continue;
|
||||
}
|
||||
get(String.format("https://lms.fu-berlin.de/learn/api/v1/courses/%s?fields=name,courseId,description", courseId), mLogin.getLoginTokenBB().getCookies(), response1 -> {
|
||||
String body1 = response1.getParsed();
|
||||
if (body1 == null) {
|
||||
errorCallback.onError(new NetworkError(101124, 403, "No module list retrieved!"));
|
||||
errorCallback.onError(new NetworkError(101124, 403, "No course entry retrieved!"));
|
||||
return;
|
||||
}
|
||||
try {
|
||||
@@ -360,27 +368,30 @@ public class ModulesList extends HTTPService {
|
||||
type = "Projekt";
|
||||
}
|
||||
if (!found) {
|
||||
Semester finalSemester = semester;
|
||||
String finalType = type;
|
||||
Modules.Module module = modulesKVV.addModule(semester, lvNumberSet, name, new LinkedHashSet<>(), type, description, courseId, Modules.TYPE_BB);
|
||||
lecturer().getBBLecturers(courseId, success -> {
|
||||
Modules.Module module = modulesKVV.addModule(finalSemester, lvNumberSet, name, success, finalType, description, courseId, Modules.TYPE_BB);
|
||||
module.setLecturers(success);
|
||||
cacheBBCourse().setBBCourse(courseId, module.clone());
|
||||
if (--latch[0] == 0) successCallback.onResponse(modulesKVV);
|
||||
}, error -> {
|
||||
log.e(error);
|
||||
if (--latch[0] == 0) successCallback.onResponse(modulesKVV);
|
||||
});
|
||||
if (--latchNoLecturers[0] == 0) successCallback.onResponse(modulesKVV);
|
||||
} else {
|
||||
cacheBBCourse().addKVVCourseID(courseId);
|
||||
if (--latch[0] == 0) successCallback.onResponse(modulesKVV);
|
||||
if (--latchNoLecturers[0] == 0) successCallback.onResponse(modulesKVV);
|
||||
}
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
errorCallback.onError(new NetworkError(101125, 403, "Cannot parse module list!"));
|
||||
log.e(new NetworkError(101125, 403, "Cannot parse course entry!"));
|
||||
if (--latch[0] == 0) successCallback.onResponse(modulesKVV);
|
||||
if (--latchNoLecturers[0] == 0) successCallback.onResponse(modulesKVV);
|
||||
}
|
||||
}, error -> errorCallback.onError(new NetworkError(101126, error.networkResponse.statusCode, "Cannot get module list!")));
|
||||
} catch (JSONException e) {
|
||||
log.e(new NetworkError(101123, 403, "Cannot parse module list!"));
|
||||
log.e(new NetworkError(101123, 403, "Cannot parse course entry"));
|
||||
log.e("ID:", i, "JSON:", sites[0]);
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@ public class Modules implements Iterable<Modules.Module>, Serializable {
|
||||
@NotNull public final HashSet<String> lvNumber;
|
||||
@NotNull public final String title;
|
||||
@NotNull
|
||||
public final ArrayList<Lecturer> lecturer;
|
||||
public ArrayList<Lecturer> lecturer;
|
||||
@Nullable public final String type;
|
||||
@Nullable public final String description;
|
||||
@NotNull private final String ID;
|
||||
@@ -209,6 +209,10 @@ public class Modules implements Iterable<Modules.Module>, Serializable {
|
||||
this.moduleType = moduleType;
|
||||
}
|
||||
|
||||
public void setLecturers(LinkedHashSet<Lecturer> lecturers) {
|
||||
this.lecturer = new ArrayList<>(lecturers);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public String getID() {
|
||||
return ID;
|
||||
|
||||
Reference in New Issue
Block a user